gabriel / musehub public
_repo_cards.scss
263 lines 6.2 KB
Raw
sha256:0997d6250ae6476362f6fe2025af7789f46d03df3e9f34356d5e8ee79b201923 fix(issues): use issue number as pagination cursor, not cre… Sonnet 4.6 patch 8 days ago
1 // ── Enriched repo cards — domain detail grid ─────────────────────────────────
2 //
3 // .rc-card full enriched repo card wrapper
4 // .rc-card__* internal layout sections
5 // .rc-sparkline inline SVG pulse sparkline
6 // .rc-stat single intel stat pill
7 // .rc-health health badge (clean / warn / risk)
8
9 .rc-grid {
10 display: grid;
11 grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
12 gap: var(--space-4);
13 }
14
15 .rc-card {
16 display: flex;
17 flex-direction: column;
18 gap: var(--space-3);
19 padding: var(--space-4);
20 background: var(--surface-1);
21 border: 1px solid var(--border-subtle);
22 border-radius: var(--radius-lg);
23 text-decoration: none;
24 color: inherit;
25 transition: border-color 120ms, box-shadow 120ms;
26
27 &:hover {
28 border-color: var(--color-accent);
29 box-shadow: 0 0 0 1px var(--color-accent);
30 }
31 }
32
33 // ── Header row: name + health badge ──────────────────────────────────────────
34
35 .rc-card__header {
36 display: flex;
37 align-items: center;
38 justify-content: space-between;
39 gap: var(--space-2);
40 min-width: 0;
41 }
42
43 .rc-card__name {
44 font-size: 13px;
45 font-weight: 500;
46 color: var(--text-primary);
47 line-height: 1.3;
48 white-space: nowrap;
49 overflow: hidden;
50 text-overflow: ellipsis;
51 min-width: 0;
52 }
53
54 .rc-card__desc {
55 font-size: 12px;
56 color: var(--text-secondary);
57 line-height: 1.5;
58 margin: 0;
59 display: -webkit-box;
60 -webkit-line-clamp: 1;
61 -webkit-box-orient: vertical;
62 overflow: hidden;
63 }
64
65 // ── Health gauge — mini donut (reuses intel-health-fill--* colour classes) ────
66
67 .rc-gauge {
68 flex-shrink: 0;
69 width: 32px;
70 height: 32px;
71 overflow: visible;
72
73 // Thinner stroke than the full-size intel gauge
74 .intel-health-track { stroke-width: 10; }
75 .intel-health-fill { stroke-width: 10; }
76 }
77
78 // ── Pulse: label + sparkline ──────────────────────────────────────────────────
79
80 .rc-pulse {
81 display: flex;
82 flex-direction: column;
83 gap: 4px;
84 }
85
86 .rc-pulse__label {
87 font-size: 10px;
88 font-weight: 600;
89 letter-spacing: 0.05em;
90 text-transform: uppercase;
91 color: var(--text-tertiary, var(--text-secondary));
92 }
93
94 .rc-sparkline {
95 display: block;
96 width: 100%;
97 height: 28px;
98 overflow: visible;
99 }
100
101 // ── Autonomy bar ──────────────────────────────────────────────────────────────
102
103 .rc-autonomy {
104 display: flex;
105 flex-direction: column;
106 gap: 5px;
107 }
108
109 .rc-autonomy__header {
110 display: flex;
111 align-items: center;
112 justify-content: space-between;
113 }
114
115 .rc-autonomy__label {
116 font-size: 10px;
117 font-weight: 600;
118 letter-spacing: 0.05em;
119 text-transform: uppercase;
120 color: var(--text-tertiary, var(--text-secondary));
121 display: flex;
122 align-items: center;
123 gap: 4px;
124 }
125
126 .rc-autonomy__pct {
127 font-size: 11px;
128 font-weight: 600;
129 font-family: var(--font-mono);
130 color: var(--text-primary);
131 }
132
133 .rc-autonomy__track {
134 width: 100%;
135 height: 4px;
136 background: var(--surface-2, var(--bg-overlay));
137 border-radius: var(--radius-full);
138 overflow: hidden;
139 }
140
141 .rc-autonomy__fill {
142 height: 100%;
143 background: var(--color-accent);
144 border-radius: var(--radius-full);
145 transition: width 300ms ease;
146 min-width: 0;
147 }
148
149 // ── Autonomy icon ─────────────────────────────────────────────────────────────
150
151 .rc-autonomy__icon {
152 display: flex;
153 align-items: center;
154 color: var(--color-accent);
155 }
156
157 // ── Symbol intel rows ─────────────────────────────────────────────────────────
158
159 .rc-intel {
160 display: flex;
161 flex-direction: column;
162 gap: 3px;
163 padding-top: var(--space-2);
164 border-top: 1px solid var(--border-subtle);
165 }
166
167 .rc-intel__row {
168 display: flex;
169 align-items: baseline;
170 gap: var(--space-2);
171 font-size: 11px;
172 }
173
174 .rc-intel__label {
175 flex-shrink: 0;
176 color: var(--text-tertiary, var(--text-secondary));
177 white-space: nowrap;
178 display: flex;
179 align-items: center;
180 gap: 3px;
181 // fixed width so val column aligns across rows
182 width: 62px;
183 }
184
185 .rc-intel__icon {
186 display: flex;
187 align-items: center;
188 flex-shrink: 0;
189
190 &--flame { color: #f97316; }
191 &--blast { color: #ef4444; }
192 }
193
194 .rc-intel__val {
195 font-family: var(--font-mono);
196 font-size: 10.5px;
197 color: var(--color-accent);
198 white-space: nowrap;
199 overflow: hidden;
200 text-overflow: ellipsis;
201 min-width: 0;
202 flex: 1;
203 }
204
205 .rc-intel__meta {
206 opacity: 0.5;
207 }
208
209 // ── Counts row: 3 equal fixed slots (dead · errors · warns) ──────────────────
210
211 .rc-intel__counts {
212 display: grid;
213 grid-template-columns: repeat(3, 1fr);
214 gap: 0;
215 padding-top: var(--space-1);
216 font-size: 10.5px;
217 color: var(--text-secondary);
218 }
219
220 .rc-count {
221 display: flex;
222 align-items: center;
223 gap: 3px;
224
225 // icon colored, text stays secondary
226 &__icon { display: flex; align-items: center; }
227
228 &--dead .rc-count__icon { color: var(--text-secondary); }
229 &--error .rc-count__icon { color: var(--color-danger, #ef4444); }
230 &--warn .rc-count__icon { color: var(--color-warning, #f59e0b); }
231 }
232
233 // ── Footer: tags + timestamp ──────────────────────────────────────────────────
234
235 .rc-card__footer {
236 display: flex;
237 align-items: center;
238 justify-content: space-between;
239 gap: var(--space-2);
240 padding-top: var(--space-2);
241 border-top: 1px solid var(--border-subtle);
242 }
243
244 .rc-card__tags {
245 display: flex;
246 flex-wrap: wrap;
247 gap: 4px;
248 }
249
250 .rc-card__tag {
251 font-size: 10px;
252 padding: 1px 6px;
253 border-radius: var(--radius-full);
254 background: var(--surface-2);
255 color: var(--text-secondary);
256 border: 1px solid var(--border-subtle);
257 }
258
259 .rc-card__time {
260 font-size: 11px;
261 color: var(--text-tertiary, var(--text-secondary));
262 white-space: nowrap;
263 }
File History 1 commit
sha256:0997d6250ae6476362f6fe2025af7789f46d03df3e9f34356d5e8ee79b201923 fix(issues): use issue number as pagination cursor, not cre… Sonnet 4.6 patch 8 days ago