baseline-foundry 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +577 -553
- package/config/experiments/ibm-plex-engine-smoke.json +115 -115
- package/config/experiments/ubuntu-engine-smoke.json +115 -115
- package/config/foundation-theme.json +110 -110
- package/config/tiers/app.json +116 -116
- package/config/tiers/documentation.json +116 -116
- package/config/tiers/editorial.json +116 -116
- package/config/tiers/os.json +116 -116
- package/dist/baseline-grid-overlay.js +43 -43
- package/dist/build.js +4 -4
- package/dist/code-snippet.js +1 -1
- package/dist/css-app-tier.js +78 -73
- package/dist/css-components/article-pagination.js +141 -140
- package/dist/css-components/button-actions.js +181 -161
- package/dist/css-components/cards-options.js +176 -176
- package/dist/css-components/chip-badge-status.d.ts +0 -3
- package/dist/css-components/chip-badge-status.js +174 -159
- package/dist/css-components/content-card.d.ts +7 -7
- package/dist/css-components/content-card.js +498 -497
- package/dist/css-components/control-row.d.ts +1 -1
- package/dist/css-components/control-row.js +15 -15
- package/dist/css-components/cta-figure-aspect.js +120 -120
- package/dist/css-components/document-navigation.js +427 -390
- package/dist/css-components/editorial-content.js +42 -42
- package/dist/css-components/icon.js +72 -72
- package/dist/css-components/interactive-feedback.js +239 -217
- package/dist/css-components/interactive-tables.js +160 -155
- package/dist/css-components/legacy-navigation.d.ts +8 -0
- package/dist/css-components/legacy-navigation.js +816 -0
- package/dist/css-components/linked-logo-site-layout.d.ts +3 -3
- package/dist/css-components/linked-logo-site-layout.js +177 -180
- package/dist/css-components/list-tree.js +96 -94
- package/dist/css-components/list.js +9 -7
- package/dist/css-components/logo-media.d.ts +6 -6
- package/dist/css-components/logo-media.js +218 -207
- package/dist/css-components/navigation-layout.js +144 -144
- package/dist/css-components/panel.js +148 -144
- package/dist/css-components/search-box-and-filter.d.ts +0 -1
- package/dist/css-components/search-box-and-filter.js +263 -264
- package/dist/css-components/sites-editorial-ports.d.ts +3 -4
- package/dist/css-components/sites-editorial-ports.js +279 -247
- package/dist/css-components/sites-foundation.js +142 -146
- package/dist/css-components/sites-rich-lists.d.ts +5 -5
- package/dist/css-components/sites-rich-lists.js +339 -349
- package/dist/css-components/static-content-ports.d.ts +3 -3
- package/dist/css-components/static-content-ports.js +200 -186
- package/dist/css-components/tab-section.d.ts +3 -3
- package/dist/css-components/tab-section.js +93 -85
- package/dist/css-components/table.js +76 -75
- package/dist/css-components/tabs-choice-breadcrumbs.js +307 -303
- package/dist/css-components/tiered-list-equal-height-row.js +271 -271
- package/dist/css-components.js +1881 -2554
- package/dist/css-grid.d.ts +1 -1
- package/dist/css-grid.js +183 -173
- package/dist/css.js +317 -241
- package/dist/experiments/ibm-plex-engine-smoke/styles.css +894 -538
- package/dist/experiments/ibm-plex-engine-smoke/surfaces.json +2 -2
- package/dist/experiments/ibm-plex-engine-smoke/tokens.json +1 -1
- package/dist/in-page-navigation.js +1 -1
- package/dist/presets/app-tier/styles.css +928 -568
- package/dist/presets/app-tier/surfaces.json +17 -17
- package/dist/presets/app-tier/tokens.json +7 -7
- package/dist/presets/prose/styles.css +919 -562
- package/dist/presets/prose/surfaces.json +17 -17
- package/dist/presets/prose/tokens.json +1 -1
- package/dist/resizable-aside.js +12 -4
- package/dist/styles.css +919 -562
- package/dist/surfaces.json +17 -17
- package/dist/tiers/app/styles.css +928 -568
- package/dist/tiers/app/surfaces.json +17 -17
- package/dist/tiers/app/tokens.json +7 -7
- package/dist/tiers/documentation/styles.css +920 -563
- package/dist/tiers/documentation/surfaces.json +17 -17
- package/dist/tiers/documentation/tokens.json +2 -2
- package/dist/tiers/editorial/styles.css +919 -562
- package/dist/tiers/editorial/surfaces.json +17 -17
- package/dist/tiers/editorial/tokens.json +1 -1
- package/dist/tiers/os/styles.css +925 -568
- package/dist/tiers/os/surfaces.json +17 -17
- package/dist/tiers/os/tokens.json +7 -7
- package/dist/tokens.json +1 -1
- package/dist/types.d.ts +1 -1
- package/docs/publishing.md +31 -14
- package/package.json +119 -108
|
@@ -7,258 +7,290 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Vanilla → BF spacing mapping:
|
|
9
9
|
* - Hero's `$spv--large` / `$spv--x-large` top boundary → `space-2` /
|
|
10
|
-
* `space-3`;
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* and gutter token at Vanilla's 620px / 1036px composition thresholds.
|
|
10
|
+
* `space-3`; the surrounding stack owns the section exit.
|
|
11
|
+
* - The default 50/50 relationship remains viable from a measured 45rem
|
|
12
|
+
* allocation; explicit 25/75 and 75/25 variants retain their own thresholds.
|
|
14
13
|
* - Quote-wrapper's signpost/content and quote/citation relationships use
|
|
15
14
|
* the same 25/75 and 2/1 proportions. A quotation itself remains the
|
|
16
15
|
* existing semantic BF prose `blockquote`; it is not recreated as a
|
|
17
16
|
* heading-styled paragraph.
|
|
18
17
|
*/
|
|
19
18
|
export function sitesEditorialPortsCss() {
|
|
20
|
-
return `/* ------------------------------------------------------------------ */
|
|
21
|
-
/* Sites editorial compositions — hero and quote wrapper. */
|
|
22
|
-
/* Section boundaries and grid tracks are structural; nested stacks own */
|
|
23
|
-
/* semantic gaps and every text child keeps metric compensation. */
|
|
24
|
-
/* ------------------------------------------------------------------ */
|
|
25
|
-
|
|
26
|
-
/* Hero:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
:where(.bf-theme) :where(.bf-hero) {
|
|
30
|
-
border-block-start: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
31
|
-
container-name: bf-hero;
|
|
32
|
-
container-type: inline-size;
|
|
33
|
-
min-inline-size: 0;
|
|
34
|
-
padding-block-end:
|
|
35
|
-
padding-block-start: calc(var(--bf-space-2) - var(--bf-border-width));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* The hero owns its entry rule so consumers do not need a loose sibling.
|
|
39
|
-
The established borderless modifier removes only that visual boundary. */
|
|
40
|
-
:where(.bf-theme) :where(.bf-hero.is-borderless) {
|
|
41
|
-
border-block-start: 0;
|
|
42
|
-
padding-block-start: var(--bf-space-2);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
:where(.bf-theme) :where(.bf-hero-layout) {
|
|
46
|
-
display: grid;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
:
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
:
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
:
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
:
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
:
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
:where(.bf-theme) :where(.bf-quote-wrapper-
|
|
243
|
-
column
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
grid-template-columns: repeat(
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
19
|
+
return `/* ------------------------------------------------------------------ */
|
|
20
|
+
/* Sites editorial compositions — hero and quote wrapper. */
|
|
21
|
+
/* Section boundaries and grid tracks are structural; nested stacks own */
|
|
22
|
+
/* semantic gaps and every text child keeps metric compensation. */
|
|
23
|
+
/* ------------------------------------------------------------------ */
|
|
24
|
+
|
|
25
|
+
/* Hero: the compact arrival space belongs inside its entry rule. The outer
|
|
26
|
+
stack owns the section exit, and the rule replaces one pixel of padding so
|
|
27
|
+
it never changes the rhythm. */
|
|
28
|
+
:where(.bf-theme) :where(.bf-hero) {
|
|
29
|
+
border-block-start: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
30
|
+
container-name: bf-hero;
|
|
31
|
+
container-type: inline-size;
|
|
32
|
+
min-inline-size: 0;
|
|
33
|
+
padding-block-end: 0;
|
|
34
|
+
padding-block-start: calc(var(--bf-space-2) - var(--bf-border-width));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* The hero owns its entry rule so consumers do not need a loose sibling.
|
|
38
|
+
The established borderless modifier removes only that visual boundary. */
|
|
39
|
+
:where(.bf-theme) :where(.bf-hero.is-borderless) {
|
|
40
|
+
border-block-start: 0;
|
|
41
|
+
padding-block-start: var(--bf-space-2);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:where(.bf-theme) :where(.bf-hero-layout) {
|
|
45
|
+
display: grid;
|
|
46
|
+
gap: var(--bf-section-space-shallow);
|
|
47
|
+
grid-template-columns: minmax(0, 1fr);
|
|
48
|
+
min-inline-size: 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.bf-theme) :where(.bf-hero-copy, .bf-hero-title, .bf-hero-content, .bf-hero-media, .bf-hero-signpost, .bf-hero-intro, .bf-hero-lead) {
|
|
52
|
+
min-inline-size: 0;
|
|
53
|
+
overflow-wrap: anywhere;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Legacy copy slots remain valid for signpost variants. The default arrival
|
|
57
|
+
composition separates a title area from its supporting content area, and
|
|
58
|
+
the demo composes each area with the public stack density modifiers. */
|
|
59
|
+
:where(.bf-theme) :where(.bf-hero-copy) {
|
|
60
|
+
align-content: start;
|
|
61
|
+
display: grid;
|
|
62
|
+
grid-template-columns: minmax(0, 1fr);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
:where(.bf-theme) :where(.bf-hero-chip) {
|
|
66
|
+
margin-block: 0 var(--bf-body-margin-bottom);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Current Vanilla scopes a one-spacing-unit icon/value gap to the hero. */
|
|
70
|
+
:where(.bf-theme) :where(.bf-hero-chip.bf-chip) {
|
|
71
|
+
column-gap: var(--bf-space-1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:where(.bf-theme) :where(.bf-hero-media > :where(img, picture, video, canvas, svg), .bf-hero-signpost > :where(img, picture, video, canvas, svg)) {
|
|
75
|
+
block-size: auto;
|
|
76
|
+
display: block;
|
|
77
|
+
inline-size: 100%;
|
|
78
|
+
max-inline-size: 100%;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Intrinsic media ratios commonly resolve to fractional pixels once a hero is
|
|
82
|
+
allocated a fluid grid track. Snap only the media block to the active tier
|
|
83
|
+
baseline so the following semantic text remains on-grid; its inline track
|
|
84
|
+
and the surrounding Vanilla proportions remain unchanged. */
|
|
85
|
+
@supports (block-size: calc-size(auto, round(up, size, 0.0625rem))) {
|
|
86
|
+
:where(.bf-theme) :where(.bf-hero-media > .bf-aspect, .bf-hero-signpost > :where(img, picture, video, canvas, svg)) {
|
|
87
|
+
block-size: calc-size(auto, round(up, size, var(--bf-baseline)));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* A signpost is a compact associated mark, not a decorative background. */
|
|
92
|
+
:where(.bf-theme) :where(.bf-hero-signpost) {
|
|
93
|
+
align-self: start;
|
|
94
|
+
max-inline-size: var(--bf-measure);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* Full-width media follows the paired title/content tracks. */
|
|
98
|
+
:where(.bf-theme) :where(.bf-hero-media.is-full) {
|
|
99
|
+
grid-column: 1 / -1;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* A closing visual remains inside the hero after its lead. The hero's stack
|
|
103
|
+
owns their shallow internal separation. */
|
|
104
|
+
:where(.bf-theme) :where(.bf-hero) > :where(.bf-hero-media.is-full:last-child) {
|
|
105
|
+
inline-size: 100%;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* The section boundary follows the page-level desktop switch, while the
|
|
109
|
+
two-column composition uses its measured intrinsic allocation below. */
|
|
110
|
+
@media (width >= 64.75rem) {
|
|
111
|
+
:where(.bf-theme) :where(.bf-hero) {
|
|
112
|
+
padding-block-start: calc(var(--bf-space-3) - var(--bf-border-width));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
:where(.bf-theme) :where(.bf-hero.is-borderless) {
|
|
116
|
+
padding-block-start: var(--bf-space-3);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@container bf-hero (width >= 45rem) {
|
|
121
|
+
:where(.bf-theme) :where(.bf-hero-layout) {
|
|
122
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
123
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
:where(.bf-theme) :where(.bf-hero.is-25-75) :where(.bf-hero-layout) {
|
|
127
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
:where(.bf-theme) :where(.bf-hero.is-75-25) :where(.bf-hero-layout) {
|
|
131
|
+
grid-template-columns: minmax(0, 3fr) minmax(0, 1fr);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* A fallback puts its introduction above the text/media pair. */
|
|
135
|
+
:where(.bf-theme) :where(.bf-hero.is-fallback) :where(.bf-hero-intro) {
|
|
136
|
+
max-inline-size: calc((100cqi - var(--bf-grid-gap-inline)) / 2);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* The named variants retain their proportion but share the readable split
|
|
141
|
+
threshold with the default hero. The modifier changes only structural
|
|
142
|
+
tracks; it does not introduce an earlier cramped layout. */
|
|
143
|
+
@container bf-hero (width >= 45rem) {
|
|
144
|
+
:where(.bf-theme) :where(.bf-hero.is-split-medium) :where(.bf-hero-layout) {
|
|
145
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
146
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
:where(.bf-theme) :where(.bf-hero.is-split-medium.is-25-75) :where(.bf-hero-layout) {
|
|
150
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
:where(.bf-theme) :where(.bf-hero.is-split-medium.is-75-25) :where(.bf-hero-layout) {
|
|
154
|
+
grid-template-columns: minmax(0, 3fr) minmax(0, 1fr);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Quote wrapper: a heading may introduce a series of quotes. When it does,
|
|
159
|
+
its top rule belongs to the wrapper boundary, not to the quote itself. */
|
|
160
|
+
:where(.bf-theme) :where(.bf-quote-wrapper) {
|
|
161
|
+
container-name: bf-quote-wrapper;
|
|
162
|
+
container-type: inline-size;
|
|
163
|
+
margin: 0;
|
|
164
|
+
min-inline-size: 0;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header, .bf-quote-wrapper-layout, .bf-quote-wrapper-signpost, .bf-quote-wrapper-content, .bf-quote-wrapper-citation, .bf-quote-wrapper-media) {
|
|
168
|
+
min-inline-size: 0;
|
|
169
|
+
overflow-wrap: anywhere;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header) {
|
|
173
|
+
display: grid;
|
|
174
|
+
grid-template-columns: minmax(0, 1fr);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-layout) {
|
|
178
|
+
display: grid;
|
|
179
|
+
grid-template-columns: minmax(0, 1fr);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* This class is a composition rail around the built-in prose blockquote, not
|
|
183
|
+
a second quotation type scale. The source may still contain rich semantic
|
|
184
|
+
inline markup and retains BF's metric compensation. */
|
|
185
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-prose) {
|
|
186
|
+
inline-size: min(100%, var(--bf-measure));
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-citation) {
|
|
190
|
+
color: var(--bf-color-text-muted);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-citation-name) {
|
|
194
|
+
color: var(--bf-color-text-default);
|
|
195
|
+
font-weight: var(--bf-h6-font-weight);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-signpost) {
|
|
199
|
+
align-self: start;
|
|
200
|
+
max-inline-size: 100%;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-signpost > :where(img, picture, svg)) {
|
|
204
|
+
block-size: auto;
|
|
205
|
+
display: block;
|
|
206
|
+
inline-size: auto;
|
|
207
|
+
max-inline-size: 100%;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* The quote rail can also be a fractional grid track. Keep its media from
|
|
211
|
+
introducing a sub-baseline row while leaving quotation and citation rhythm
|
|
212
|
+
entirely baseline-compensated while its stack owns semantic gaps. */
|
|
213
|
+
@supports (block-size: calc-size(auto, round(up, size, 0.0625rem))) {
|
|
214
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-signpost > :where(img, picture, svg), .bf-quote-wrapper-media > .bf-aspect) {
|
|
215
|
+
block-size: calc-size(auto, round(up, size, var(--bf-baseline)));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-quote-row) {
|
|
220
|
+
display: grid;
|
|
221
|
+
grid-template-columns: minmax(0, 1fr);
|
|
222
|
+
min-inline-size: 0;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@container bf-quote-wrapper (width >= 38.75rem) {
|
|
226
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header) {
|
|
227
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
228
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header-link) {
|
|
232
|
+
grid-column: 4;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-layout) {
|
|
236
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
237
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 3fr);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Vanilla offsets a quote block without a signpost into the content rail. */
|
|
241
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-content:only-child) {
|
|
242
|
+
grid-column: 2;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-quote-row) {
|
|
246
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
247
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
@container bf-quote-wrapper (width >= 64.75rem) {
|
|
252
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header) {
|
|
253
|
+
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header) > :first-child {
|
|
257
|
+
grid-column: 1 / span 6;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-header-link) {
|
|
261
|
+
grid-column: 7 / -1;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-layout) {
|
|
265
|
+
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-signpost) {
|
|
269
|
+
grid-column: 1 / span 2;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-content, .bf-quote-wrapper-content:only-child) {
|
|
273
|
+
display: grid;
|
|
274
|
+
grid-column: 3 / -1;
|
|
275
|
+
grid-template-columns: subgrid;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-quote-row) {
|
|
279
|
+
grid-column: 1 / -1;
|
|
280
|
+
grid-template-columns: subgrid;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-prose) {
|
|
284
|
+
grid-column: 1 / span 4;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-citation) {
|
|
288
|
+
grid-column: 5 / -1;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
:where(.bf-theme) :where(.bf-quote-wrapper-content) > :where(.bf-cta-block, .bf-quote-wrapper-media) {
|
|
292
|
+
grid-column: 1 / -1;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
263
295
|
`;
|
|
264
296
|
}
|