Skip to content

Commit 39dd03a

Browse files
author
julioest
committed
fix: Library Item responsive layout #2204
Subgrid for consistent column alignment, card layout for mobile list variant, dual version tag for desktop/mobile, and design token for icon size.
1 parent f7d8da3 commit 39dd03a

2 files changed

Lines changed: 104 additions & 39 deletions

File tree

static/css/v3/library-item.css

Lines changed: 101 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
list-style: none;
77
margin: 0;
88
padding: 0;
9-
display: flex;
10-
flex-direction: column;
9+
display: grid;
10+
grid-template-columns: 160px 3fr minmax(180px, 2fr) minmax(180px, 2fr) auto;
11+
column-gap: var(--space-xl);
12+
max-width: 1408px;
1113
width: 100%;
1214
}
1315

@@ -26,11 +28,10 @@
2628

2729
.library-item--list {
2830
display: grid;
29-
grid-template-columns: 2fr 3fr 2fr 2fr auto;
30-
max-width: 1408px;
31+
grid-column: 1 / -1;
32+
grid-template-columns: subgrid;
3133
align-items: flex-start;
3234
row-gap: var(--space-large);
33-
column-gap: var(--space-xl);
3435
padding: var(--space-large);
3536
padding-top: var(--space-default);
3637
background: var(--color-surface-weak);
@@ -57,16 +58,18 @@
5758
.library-item--list .library-item__actions {
5859
display: flex;
5960
align-items: center;
61+
justify-content: space-between;
6062
gap: var(--space-xl);
63+
min-width: 120px;
6164
}
6265

63-
.library-item .version-tag {
64-
border-radius: var(--border-radius-xxl);
65-
cursor: pointer;
66+
/* Show desktop version tag in actions, hide mobile one in tags */
67+
.library-item__cpp-version {
68+
display: none;
6669
}
6770

68-
.library-item .version-tag--default:hover {
69-
background: var(--color-tag-fill-hover);
71+
.library-item__cpp-version--desktop {
72+
display: inline-flex;
7073
}
7174

7275
.library-item .btn-icon-library {
@@ -75,13 +78,18 @@
7578
background: none;
7679
}
7780

81+
.library-item .btn-icon-library .btn-icon svg {
82+
width: var(--space-xl);
83+
height: var(--space-xl);
84+
}
85+
7886
/* ==========================================================================
79-
Card variant (vertical stack)
87+
Card layout — used by card variant and mobile list variant
8088
========================================================================== */
8189

8290
.library-item--card {
83-
display: flex;
84-
flex-direction: column;
91+
display: grid;
92+
grid-template-columns: 1fr auto;
8593
max-width: 320px;
8694
width: 100%;
8795
border-radius: var(--border-radius-xl);
@@ -90,35 +98,54 @@
9098
}
9199

92100
.library-item--card .library-item__header {
101+
grid-column: 1;
102+
grid-row: 1;
93103
display: flex;
94104
flex-direction: column;
95105
gap: var(--space-default);
96106
padding: var(--space-large);
107+
padding-bottom: 0;
97108
}
98109

99-
.library-item--card .library-item__tags {
110+
.library-item--card .library-item__actions {
111+
grid-column: 2;
112+
grid-row: 1;
100113
display: flex;
101-
flex-wrap: wrap;
102-
gap: var(--space-s);
103-
padding: 0 var(--space-large) var(--space-large);
114+
align-items: flex-start;
115+
justify-content: center;
116+
padding: var(--space-large);
117+
padding-bottom: 0;
104118
}
105119

106-
.library-item--card .library-item__actions {
120+
.library-item--card .library-item__cpp-version--desktop {
121+
display: none;
122+
}
123+
124+
.library-item--card .library-item__cpp-version {
125+
display: inline-flex;
126+
}
127+
128+
.library-item--card .library-item__tags {
129+
grid-column: 1 / -1;
130+
grid-row: 2;
107131
display: flex;
132+
flex-wrap: wrap;
108133
align-items: center;
109-
gap: var(--space-default);
110-
padding: 0 var(--space-large) var(--space-large);
134+
gap: var(--space-s);
135+
padding: var(--space-large);
111136
}
112137

113138
.library-item--card .library-item__contributor {
139+
grid-column: 1 / -1;
140+
grid-row: 3;
114141
display: flex;
115142
align-items: center;
116143
gap: var(--space-default);
117144
padding: var(--space-large);
118-
border-top: 1px solid var(--color-stroke-weak);
119145
margin-top: auto;
120146
}
121147

148+
122149
/* ==========================================================================
123150
Shared element styles
124151
========================================================================== */
@@ -151,9 +178,9 @@ a.library-item__name:hover {
151178
========================================================================== */
152179

153180
@media (max-width: 1024px) {
154-
.library-item--list {
155-
grid-template-columns: 2fr 3fr 2fr 2fr auto;
156-
column-gap: var(--space-large);
181+
.library-item-list {
182+
grid-template-columns: 120px 2fr minmax(100px, 1fr) minmax(140px, 1fr) auto;
183+
column-gap: var(--space-default);
157184
}
158185
}
159186

@@ -163,42 +190,79 @@ a.library-item__name:hover {
163190

164191
@media (max-width: 767px) {
165192
.library-item-list {
166-
gap: var(--space-large);
193+
display: flex;
194+
flex-direction: column;
167195
}
168196

169197
.library-item--list {
170-
display: flex;
171-
flex-direction: column;
198+
display: grid;
199+
grid-template-columns: 1fr auto;
200+
border-bottom: 1px solid var(--color-stroke-weak);
201+
border-radius: 0;
202+
background: var(--color-surface-weak);
203+
padding: 0;
204+
}
205+
206+
.library-item--list:first-child {
207+
border-radius: var(--border-radius-xl) var(--border-radius-xl) 0 0;
208+
}
209+
210+
.library-item--list:last-child {
211+
border-radius: 0 0 var(--border-radius-xl) var(--border-radius-xl);
172212
border-bottom: none;
213+
}
214+
215+
.library-item--list:only-child {
173216
border-radius: var(--border-radius-xl);
174-
border: 1px solid var(--color-stroke-weak);
175-
background: var(--color-surface-weak);
176217
}
177218

178219
.library-item--list .library-item__header {
220+
grid-column: 1;
221+
grid-row: 1;
179222
display: flex;
180223
flex-direction: column;
181224
gap: var(--space-default);
182225
padding: var(--space-large);
226+
padding-bottom: 0;
227+
}
228+
229+
.library-item--list .library-item__actions {
230+
grid-column: 2;
231+
grid-row: 1;
232+
display: flex;
233+
align-items: flex-start;
234+
justify-content: flex-end;
235+
min-width: unset;
236+
padding: var(--space-large);
237+
padding-bottom: 0;
238+
}
239+
240+
.library-item--list .library-item__cpp-version--desktop {
241+
display: none;
242+
}
243+
244+
.library-item--list .library-item__cpp-version {
245+
display: inline-flex;
183246
}
184247

185248
.library-item--list .library-item__tags {
249+
grid-column: 1 / -1;
250+
grid-row: 2;
186251
display: flex;
187252
flex-wrap: wrap;
253+
align-items: center;
188254
gap: var(--space-s);
189-
padding: 0 var(--space-large) var(--space-large);
255+
padding: var(--space-large);
190256
}
191257

192-
.library-item--list .library-item__actions {
258+
.library-item--list .library-item__contributor {
259+
grid-column: 1 / -1;
260+
grid-row: 3;
193261
display: flex;
194262
align-items: center;
195263
gap: var(--space-default);
196-
padding: 0 var(--space-large) var(--space-large);
197-
}
198-
199-
.library-item--list .library-item__contributor {
200-
border-top: 1px solid var(--color-stroke-weak);
201-
margin-top: auto;
264+
border-top: none;
202265
padding: var(--space-large);
266+
margin-top: auto;
203267
}
204268
}

templates/v3/includes/_library_item.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,17 @@
3131

3232
<div class="library-item__tags">
3333
{% for cat in categories %}
34-
{% include "v3/includes/_category_tag.html" with tag_label=cat.label url=cat.url variant=cat.variant size="tight" %}
34+
{% include "v3/includes/_category_tag.html" with tag_label=cat.label url=cat.url variant=cat.variant %}
3535
{% endfor %}
36+
<span class="version-tag version-tag--default library-item__cpp-version">{{ cpp_version }}</span>
3637
</div>
3738

3839
<div class="library-item__contributor">
3940
{% include "v3/includes/_user_profile.html" with author=author %}
4041
</div>
4142

4243
<div class="library-item__actions">
43-
<span class="version-tag version-tag--default">{{ cpp_version }}</span>
44+
<span class="version-tag version-tag--default library-item__cpp-version--desktop">{{ cpp_version }}</span>
4445
{% include "v3/includes/_button.html" with url=doc_url label="" icon_name="documentation" icon_size=16 style="icon-library" aria_label="View documentation for "|add:library_name %}
4546
</div>
4647

0 commit comments

Comments
 (0)