Skip to content

Commit 202bb7b

Browse files
author
julioest
committed
fix: Clean up library-item CSS #2204
Reorganize by variant with co-located breakpoints, remove redundant declarations, fix card border visibility in dark mode.
1 parent edad85a commit 202bb7b

2 files changed

Lines changed: 102 additions & 110 deletions

File tree

static/css/v3/category-tags.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@
9999
/* Dark theme: use semantic variables from themes.css only (no raw primitives) */
100100
html.dark .category-tag--neutral {
101101
background: var(--color-tag-neutral-bg);
102-
border-color: var(--color-tag-stroke);
102+
border-color: var(--color-tag-neutral-border);
103103
color: var(--color-text-secondary);
104104
}
105105

static/css/v3/library-item.css

Lines changed: 101 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,32 @@
66
Lookbook/examples so the item surface colours are visible. Remove when
77
the component is used on a real page with its own background. */
88
.v3-examples-section__example-box:has(.library-item-list) {
9-
background: #F7FDFE;
9+
background: var(--color-surface-mid);
1010
}
1111

12-
/* ---------- Base / reset ---------- */
12+
/* ---------- Containers ---------- */
1313

1414
.library-item-list {
1515
list-style: none;
1616
margin: 0;
1717
padding: 0;
1818
display: grid;
19-
grid-template-columns: 160px 3fr minmax(180px, 2fr) minmax(180px, 2fr) auto auto;
19+
grid-template-columns: 160px 2fr 1fr 1fr 1fr auto;
2020
column-gap: var(--space-xl);
2121
max-width: 1408px;
2222
width: 100%;
2323
}
2424

25-
.library-item {
26-
box-sizing: border-box;
25+
.library-item-card-grid {
26+
display: grid;
27+
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
28+
gap: var(--space-large);
2729
}
2830

29-
.library-item p {
30-
margin: 0;
31-
padding: 0;
31+
@media (max-width: 1024px) {
32+
.library-item-card-grid {
33+
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
34+
}
3235
}
3336

3437
/* ---------- Shared element styles ---------- */
@@ -47,11 +50,16 @@ a.library-item__name:hover {
4750
text-decoration: underline;
4851
}
4952

53+
.library-item p {
54+
margin: 0;
55+
padding: 0;
56+
}
57+
5058
.library-item__description {
5159
font-size: var(--font-size-small);
5260
font-weight: var(--font-weight-regular);
5361
line-height: var(--line-height-default);
54-
letter-spacing: -0.14px; /* no matching design token available */
62+
letter-spacing: var(--letter-spacing-tight);
5563
color: var(--color-text-secondary);
5664
}
5765

@@ -75,12 +83,16 @@ a.library-item__name:hover {
7583

7684
.library-item__cpp-version--desktop {
7785
display: inline-flex;
86+
width: fit-content;
87+
justify-self: center;
7888
}
7989

8090
/* ==========================================================================
81-
List variant — horizontal row (desktop)
91+
List variant
8292
========================================================================== */
8393

94+
/* ---------- Desktop ---------- */
95+
8496
.library-item--list {
8597
display: grid;
8698
grid-column: 1 / -1;
@@ -102,12 +114,13 @@ a.library-item__name:hover {
102114
display: flex;
103115
flex-wrap: wrap;
104116
align-items: center;
117+
justify-self: start;
105118
gap: var(--space-s);
106119
}
107120

108121
.library-item--list .library-item__contributor {
109122
display: flex;
110-
align-items: center;
123+
align-items: start;
111124
gap: var(--space-default);
112125
}
113126

@@ -121,91 +134,27 @@ a.library-item__name:hover {
121134
margin-left: var(--space-xl);
122135
}
123136

124-
/* ---------- Card grid — equal-width columns, equal-height rows ---------- */
125-
126-
.library-item-card-grid {
127-
display: grid;
128-
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
129-
gap: var(--space-large);
130-
}
131-
132-
/* ==========================================================================
133-
Card variant — vertical stack
134-
========================================================================== */
135-
136-
.library-item--card {
137-
display: grid;
138-
grid-template-columns: 1fr auto;
139-
column-gap: var(--space-large);
140-
width: 100%;
141-
border-radius: var(--border-radius-xl);
142-
border: 1px solid var(--color-stroke-weak);
143-
background: var(--color-surface-weak);
144-
padding: var(--space-large);
145-
}
146-
147-
.library-item--card .library-item__header {
148-
grid-column: 1;
149-
grid-row: 1;
150-
display: flex;
151-
flex-direction: column;
152-
gap: var(--space-large);
153-
}
154-
155-
.library-item--card .library-item__actions {
156-
grid-column: 2;
157-
grid-row: 1;
158-
display: flex;
159-
align-items: start;
160-
justify-content: end;
161-
}
162-
163-
.library-item--card .library-item__cpp-version--desktop {
164-
display: none;
165-
}
166-
167-
.library-item--card .library-item__cpp-version {
168-
display: inline-flex;
169-
}
170-
171-
.library-item--card .library-item__tags {
172-
display: flex;
173-
flex-wrap: wrap;
174-
align-items: center;
175-
gap: var(--space-s);
176-
}
177-
178-
.library-item--card .library-item__contributor {
179-
grid-column: 1 / -1;
180-
grid-row: 2;
181-
display: flex;
182-
align-items: center;
183-
gap: var(--space-default);
184-
margin-top: auto;
185-
padding-top: var(--space-large);
186-
}
187-
188-
/* ==========================================================================
189-
Tablet (≤ 1024px)
190-
========================================================================== */
137+
/* ---------- Tablet (≤ 1024px) ---------- */
191138

192139
@media (max-width: 1024px) {
193140
.library-item-list {
194-
grid-template-columns: 120px 2fr minmax(100px, 1fr) minmax(140px, 1fr) min-content auto;
141+
grid-template-columns: auto 2fr 1fr 1fr min-content auto;
195142
/* Figma specifies --space-large here, but long descriptions cause overflow
196143
at tablet widths. Using --space-default until content constraints are
197144
defined. */
198145
column-gap: var(--space-default);
199146
}
200147

148+
.library-item--list .user-profile {
149+
align-items: normal;
150+
}
151+
201152
.library-item--list .library-item__actions > .btn-icon-library {
202153
margin-left: var(--space-default);
203154
}
204155
}
205156

206-
/* ==========================================================================
207-
Mobile (≤ 767px) — list items switch to card-like layout
208-
========================================================================== */
157+
/* ---------- Mobile (≤ 767px) — switches to card-like layout ---------- */
209158

210159
@media (max-width: 767px) {
211160
.library-item-list {
@@ -217,6 +166,7 @@ a.library-item__name:hover {
217166
.library-item--list {
218167
display: grid;
219168
grid-template-columns: 1fr auto;
169+
row-gap: var(--space-medium);
220170
border-bottom: 1px solid var(--color-stroke-weak);
221171
border-radius: 0;
222172
background: var(--color-surface-weak);
@@ -242,20 +192,14 @@ a.library-item__name:hover {
242192
grid-row: 1;
243193
display: flex;
244194
flex-direction: column;
245-
gap: var(--space-default);
246-
247-
padding-bottom: 0;
195+
gap: var(--space-card);
248196
}
249197

250198
/* Actions — doc icon only, top-right */
251199
.library-item--list .library-item__actions {
252200
grid-column: 2;
253201
grid-row: 1;
254-
display: flex;
255-
align-items: start;
256-
justify-content: end;
257202
min-width: unset;
258-
padding: 0;
259203
}
260204

261205
/* Version tag swap — hide desktop, show mobile (inline with tags) */
@@ -271,38 +215,86 @@ a.library-item__name:hover {
271215
.library-item--list .library-item__tags {
272216
grid-column: 1 / -1;
273217
grid-row: 2;
274-
display: flex;
275-
flex-wrap: wrap;
276-
align-items: center;
277-
gap: var(--space-s);
278-
279218
}
280219

281220
/* Contributor — full width, bottom */
282221
.library-item--list .library-item__contributor {
283222
grid-column: 1 / -1;
284223
grid-row: 3;
285-
display: flex;
286-
align-items: center;
287-
gap: var(--space-default);
288-
border-top: none;
289-
290224
margin-top: auto;
291225
}
226+
}
292227

293-
/* ---------- Card variant — mobile overrides ---------- */
228+
/* ==========================================================================
229+
Card variant
230+
========================================================================== */
294231

295-
.library-item--card {
296-
max-width: none;
297-
padding: var(--space-large);
298-
gap: var(--space-large);
232+
/* ---------- Desktop ---------- */
233+
234+
.library-item--card {
235+
display: grid;
236+
grid-template-columns: 1fr auto;
237+
column-gap: var(--space-large);
238+
width: 100%;
239+
border-radius: var(--border-radius-xl);
240+
border: 1px solid var(--color-stroke-mid);
241+
background: var(--color-surface-weak);
242+
padding: var(--space-large);
243+
}
244+
245+
.library-item--card .library-item__header {
246+
grid-column: 1;
247+
grid-row: 1;
248+
display: flex;
249+
flex-direction: column;
250+
gap: var(--space-large);
251+
}
252+
253+
.library-item--card .library-item__actions {
254+
grid-column: 2;
255+
grid-row: 1;
256+
display: flex;
257+
align-items: start;
258+
justify-content: end;
259+
}
260+
261+
.library-item--card .library-item__cpp-version--desktop {
262+
display: none;
263+
}
264+
265+
.library-item--card .library-item__cpp-version {
266+
display: inline-flex;
267+
}
268+
269+
.library-item--card .library-item__tags {
270+
display: flex;
271+
flex-wrap: wrap;
272+
align-items: center;
273+
gap: var(--space-s);
274+
}
275+
276+
.library-item--card .library-item__contributor {
277+
grid-column: 1 / -1;
278+
grid-row: 2;
279+
display: flex;
280+
align-items: center;
281+
gap: var(--space-default);
282+
margin-top: auto;
283+
padding-top: var(--space-large);
284+
}
285+
286+
/* ---------- Mobile (≤ 767px) ---------- */
287+
288+
@media (max-width: 767px) {
289+
.library-item-card-grid {
290+
gap: var(--space-medium);
299291
}
300292

301-
.library-item--card .library-item__header,
302-
.library-item--card .library-item__actions,
303-
.library-item--card .library-item__tags,
304-
.library-item--card .library-item__contributor {
305-
padding: 0;
293+
.library-item--card .library-item__header {
294+
gap: var(--space-card);
306295
}
307296

297+
.library-item--card .library-item__contributor {
298+
padding-top: var(--space-card);
299+
}
308300
}

0 commit comments

Comments
 (0)