baseline-foundry 0.1.4 → 0.1.6
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 +17 -9
- package/config/experiments/ibm-plex-engine-smoke.json +1 -1
- package/config/experiments/ubuntu-engine-smoke.json +1 -1
- package/config/foundation-theme.json +1 -1
- package/config/tiers/app.json +6 -6
- package/config/tiers/documentation.json +2 -2
- package/config/tiers/editorial.json +1 -1
- package/config/tiers/os.json +6 -6
- package/dist/baseline-grid-overlay.js +2 -2
- package/dist/build.js +4 -4
- package/dist/code-snippet.js +1 -1
- package/dist/css-app-tier.js +16 -5
- package/dist/css-components/article-pagination.js +9 -8
- package/dist/css-components/button-actions.js +24 -4
- package/dist/css-components/cards-options.js +8 -8
- package/dist/css-components/chip-badge-status.d.ts +0 -3
- package/dist/css-components/chip-badge-status.js +57 -10
- package/dist/css-components/content-card.d.ts +7 -7
- package/dist/css-components/content-card.js +17 -16
- package/dist/css-components/control-row.d.ts +1 -1
- package/dist/css-components/control-row.js +1 -1
- package/dist/css-components/document-navigation.js +66 -29
- package/dist/css-components/editorial-content.js +1 -1
- package/dist/css-components/interactive-feedback.js +50 -28
- package/dist/css-components/interactive-tables.js +13 -8
- package/dist/css-components/legacy-navigation.d.ts +0 -1
- package/dist/css-components/legacy-navigation.js +108 -32
- package/dist/css-components/linked-logo-site-layout.d.ts +3 -3
- package/dist/css-components/linked-logo-site-layout.js +17 -20
- package/dist/css-components/list-tree.js +21 -19
- 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 +38 -27
- package/dist/css-components/navigation-layout.js +6 -8
- package/dist/css-components/panel.js +12 -12
- package/dist/css-components/search-box-and-filter.d.ts +0 -1
- package/dist/css-components/search-box-and-filter.js +18 -19
- package/dist/css-components/sites-editorial-ports.d.ts +3 -4
- package/dist/css-components/sites-editorial-ports.js +61 -29
- package/dist/css-components/sites-foundation.js +15 -19
- package/dist/css-components/sites-rich-lists.d.ts +5 -5
- package/dist/css-components/sites-rich-lists.js +26 -36
- package/dist/css-components/static-content-ports.d.ts +3 -3
- package/dist/css-components/static-content-ports.js +51 -37
- package/dist/css-components/tab-section.d.ts +3 -3
- package/dist/css-components/tab-section.js +34 -26
- package/dist/css-components/table.js +4 -7
- package/dist/css-components/tabs-choice-breadcrumbs.js +25 -21
- package/dist/css-components/tiered-list-equal-height-row.js +10 -10
- package/dist/css-components.js +243 -124
- package/dist/css-grid.d.ts +1 -1
- package/dist/css-grid.js +18 -8
- package/dist/css.js +94 -18
- package/dist/experiments/ibm-plex-engine-smoke/styles.css +1005 -563
- 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 +1046 -593
- package/dist/presets/app-tier/surfaces.json +17 -17
- package/dist/presets/app-tier/tokens.json +7 -7
- package/dist/presets/prose/styles.css +1036 -587
- 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 +1036 -587
- package/dist/surfaces.json +17 -17
- package/dist/tiers/app/styles.css +1046 -593
- package/dist/tiers/app/surfaces.json +17 -17
- package/dist/tiers/app/tokens.json +7 -7
- package/dist/tiers/documentation/styles.css +1037 -588
- package/dist/tiers/documentation/surfaces.json +17 -17
- package/dist/tiers/documentation/tokens.json +2 -2
- package/dist/tiers/editorial/styles.css +1036 -587
- package/dist/tiers/editorial/surfaces.json +17 -17
- package/dist/tiers/editorial/tokens.json +1 -1
- package/dist/tiers/os/styles.css +1042 -593
- 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 +1 -1
- package/package.json +2 -2
|
@@ -1,11 +1,54 @@
|
|
|
1
1
|
export function legacyNavigationCss(options) {
|
|
2
|
-
const { bodyMediumTypeStyles, bodySemiboldTypeStyles, bodyTypeStyles, buttonMarginBottom, buttonPadding
|
|
2
|
+
const { bodyMediumTypeStyles, bodySemiboldTypeStyles, bodyTypeStyles, buttonMarginBottom, buttonPadding } = options;
|
|
3
3
|
return `:where(.bf-theme) :where(.bf-side-navigation, .bf-side-navigation.is-icons, .bf-side-navigation.is-accordion, .bf-side-navigation.is-raw-html) {
|
|
4
|
+
/* Plain navigation commands use the action rail. Icon-led rows move only their mark canvas,
|
|
5
|
+
so their copy reaches the shared continuation rail without a fourth
|
|
6
|
+
component inset. Navigation depth is added separately below. */
|
|
7
|
+
/* Navigation copy uses one continuation rail whether a row has a leading
|
|
8
|
+
disclosure/icon slot or not. The mark canvas is derived backwards from
|
|
9
|
+
that rail, so iconless rows never introduce a fourth text start. */
|
|
10
|
+
--bf-side-navigation-content-inset: var(--bf-component-inline-inset-continuation);
|
|
11
|
+
--bf-side-navigation-disclosure-inset: max(0rem, calc(var(--bf-component-inline-inset-continuation) - var(--bf-disclosure-icon-inline-size) - var(--bf-disclosure-gap)));
|
|
12
|
+
--bf-side-navigation-depth-step: var(--bf-space-2);
|
|
13
|
+
--bf-side-navigation-group-gap: 1.5rem;
|
|
14
|
+
--bf-side-navigation-heading-list-gap: 0.5rem;
|
|
4
15
|
color: var(--bf-color-text-inactive);
|
|
5
16
|
display: block;
|
|
6
17
|
inline-size: 100%;
|
|
7
18
|
}
|
|
8
19
|
|
|
20
|
+
:where(.bf-theme) :where(.bf-side-navigation-groups) {
|
|
21
|
+
align-content: start;
|
|
22
|
+
display: grid;
|
|
23
|
+
gap: var(--bf-side-navigation-group-gap);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:where(.bf-theme) :where(.bf-side-navigation-group) {
|
|
27
|
+
display: grid;
|
|
28
|
+
gap: var(--bf-side-navigation-heading-list-gap);
|
|
29
|
+
min-inline-size: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Keep the divider and heading as one tight header. The group owns only the
|
|
33
|
+
larger transition from that header to its list, so the compensated rule
|
|
34
|
+
cannot change the heading/list phase. */
|
|
35
|
+
:where(.bf-theme) :where(.bf-side-navigation-group-header) {
|
|
36
|
+
display: grid;
|
|
37
|
+
gap: 0rem;
|
|
38
|
+
min-inline-size: 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:where(.bf-theme) :where(.bf-side-navigation-group-header) > hr {
|
|
42
|
+
inline-size: auto;
|
|
43
|
+
margin-inline: var(--bf-side-navigation-content-inset) 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* A single-line group heading occupies four baselines. min-block-size keeps
|
|
47
|
+
that phase exact while still allowing a long heading to wrap and grow. */
|
|
48
|
+
:where(.bf-theme) :where(.bf-side-navigation-group-header) > :where(.bf-side-navigation-heading) {
|
|
49
|
+
min-block-size: calc((var(--bf-baseline) * 4) - var(--bf-body-margin-bottom));
|
|
50
|
+
}
|
|
51
|
+
|
|
9
52
|
:where(.bf-theme) :where(.bf-side-navigation-drawer) {
|
|
10
53
|
background: var(--bf-color-background-default);
|
|
11
54
|
bottom: 0;
|
|
@@ -22,7 +65,7 @@ export function legacyNavigationCss(options) {
|
|
|
22
65
|
}
|
|
23
66
|
|
|
24
67
|
:where(.bf-theme) :where(.bf-side-navigation, .bf-side-navigation.is-icons, .bf-side-navigation.is-accordion, .bf-side-navigation.is-raw-html):where(.is-drawer-expanded) :where(.bf-side-navigation-drawer) {
|
|
25
|
-
box-shadow: 0
|
|
68
|
+
box-shadow: 0 1.5rem 4.5rem rgba(0, 0, 0, 0.38);
|
|
26
69
|
transform: translateX(0);
|
|
27
70
|
}
|
|
28
71
|
|
|
@@ -52,7 +95,7 @@ export function legacyNavigationCss(options) {
|
|
|
52
95
|
border-bottom: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
53
96
|
margin-bottom: calc(var(--bf-baseline) * 2);
|
|
54
97
|
padding-bottom: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
|
|
55
|
-
padding-inline: var(--bf-
|
|
98
|
+
padding-inline: var(--bf-component-inline-inset-continuation);
|
|
56
99
|
padding-top: var(--bf-panel-padding-block);
|
|
57
100
|
position: sticky;
|
|
58
101
|
top: 0;
|
|
@@ -71,7 +114,7 @@ ${bodyTypeStyles} align-items: center;
|
|
|
71
114
|
gap: calc(var(--bf-baseline) * 0.5);
|
|
72
115
|
justify-content: center;
|
|
73
116
|
margin: 0 0 ${buttonMarginBottom};
|
|
74
|
-
${buttonPadding} padding-inline: var(--bf-control-inline-padding-action);
|
|
117
|
+
${buttonPadding} padding-inline: var(--bf-control-inline-padding-action-bordered);
|
|
75
118
|
text-decoration: none;
|
|
76
119
|
}
|
|
77
120
|
|
|
@@ -106,52 +149,57 @@ ${buttonPadding} padding-inline: var(--bf-control-inline-padding-action);
|
|
|
106
149
|
}
|
|
107
150
|
|
|
108
151
|
:where(.bf-theme) :where(.bf-side-navigation-toggle:focus-visible) {
|
|
109
|
-
outline:
|
|
110
|
-
outline-offset: -
|
|
152
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
153
|
+
outline-offset: -0.125rem;
|
|
111
154
|
}
|
|
112
155
|
|
|
113
156
|
:where(.bf-theme) :where(.bf-side-navigation-heading, .bf-side-navigation-heading.is-linked) {
|
|
114
157
|
${bodySemiboldTypeStyles} display: block;
|
|
115
158
|
margin: 0 0 var(--bf-body-margin-bottom);
|
|
116
159
|
padding-block: var(--bf-body-nudge-start) 0;
|
|
160
|
+
padding-inline: var(--bf-side-navigation-content-inset);
|
|
117
161
|
}
|
|
118
162
|
|
|
119
|
-
:where(.bf-theme) :where(.bf-side-navigation-
|
|
120
|
-
|
|
121
|
-
list-style: none;
|
|
122
|
-
margin: 0 0 calc(var(--bf-baseline) * 2);
|
|
123
|
-
padding: 0 0 calc((var(--bf-baseline) * 2) - var(--bf-border-width));
|
|
163
|
+
:where(.bf-theme) :where(.bf-side-navigation-heading.is-linked) {
|
|
164
|
+
padding-inline: 0;
|
|
124
165
|
}
|
|
125
166
|
|
|
126
|
-
:where(.bf-theme) :where(.bf-side-navigation-list
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
167
|
+
:where(.bf-theme) :where(.bf-side-navigation-list) {
|
|
168
|
+
display: grid;
|
|
169
|
+
grid-auto-rows: var(--bf-single-line-row-block-size);
|
|
170
|
+
list-style: none;
|
|
171
|
+
margin: 0;
|
|
172
|
+
padding: 0;
|
|
130
173
|
}
|
|
131
174
|
|
|
132
175
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title) {
|
|
176
|
+
display: grid;
|
|
133
177
|
margin: 0;
|
|
134
178
|
position: relative;
|
|
135
179
|
}
|
|
136
180
|
|
|
137
181
|
:where(.bf-theme) :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
138
182
|
${bodyTypeStyles} align-items: center;
|
|
183
|
+
align-self: start;
|
|
139
184
|
background: transparent;
|
|
140
185
|
border: 0;
|
|
186
|
+
border-block: var(--bf-border-width) solid transparent;
|
|
141
187
|
color: var(--bf-color-text-inactive);
|
|
142
188
|
display: flex;
|
|
143
189
|
gap: calc(var(--bf-baseline) * 0.5);
|
|
144
190
|
inline-size: 100%;
|
|
145
191
|
justify-content: flex-start;
|
|
146
|
-
margin: 0;
|
|
147
|
-
|
|
148
|
-
|
|
192
|
+
margin: 0 0 var(--bf-single-line-row-margin-block-end);
|
|
193
|
+
padding-block: var(--bf-single-line-row-padding-block);
|
|
194
|
+
padding-inline: var(--bf-side-navigation-content-inset);
|
|
195
|
+
--bf-side-navigation-row-inset: var(--bf-side-navigation-content-inset);
|
|
149
196
|
position: relative;
|
|
150
197
|
text-align: left;
|
|
151
198
|
text-decoration: none;
|
|
152
199
|
}
|
|
153
200
|
|
|
154
201
|
:where(.bf-theme) :where(.bf-side-navigation-accordion-button) {
|
|
202
|
+
--bf-side-navigation-row-inset: var(--bf-side-navigation-disclosure-inset);
|
|
155
203
|
gap: var(--bf-disclosure-gap);
|
|
156
204
|
}
|
|
157
205
|
|
|
@@ -160,22 +208,21 @@ ${compactButtonPadding} padding-inline: var(--bf-panel-padding-inline);
|
|
|
160
208
|
font-weight: 600;
|
|
161
209
|
}
|
|
162
210
|
|
|
163
|
-
:where(.bf-theme) :where(.bf-side-navigation-heading, .bf-side-navigation-heading.is-linked),
|
|
164
211
|
:where(.bf-theme) :where(.bf-side-navigation-list) > :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title) > :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
165
|
-
padding-inline-start: var(--bf-
|
|
212
|
+
padding-inline-start: var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset));
|
|
166
213
|
}
|
|
167
214
|
|
|
168
215
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
169
216
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
170
217
|
> :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
171
|
-
padding-inline-start: calc(var(--bf-
|
|
218
|
+
padding-inline-start: calc(var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset)) + var(--bf-side-navigation-depth-step));
|
|
172
219
|
}
|
|
173
220
|
|
|
174
221
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
175
222
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
176
223
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
177
224
|
> :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
178
|
-
padding-inline-start: calc(var(--bf-
|
|
225
|
+
padding-inline-start: calc(var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset)) + (var(--bf-side-navigation-depth-step) * 2));
|
|
179
226
|
}
|
|
180
227
|
|
|
181
228
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
@@ -183,7 +230,7 @@ ${compactButtonPadding} padding-inline: var(--bf-panel-padding-inline);
|
|
|
183
230
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
184
231
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
185
232
|
> :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
186
|
-
padding-inline-start: calc(var(--bf-
|
|
233
|
+
padding-inline-start: calc(var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset)) + (var(--bf-side-navigation-depth-step) * 3));
|
|
187
234
|
}
|
|
188
235
|
|
|
189
236
|
:where(.bf-theme) :where(.bf-side-navigation-link:hover, .bf-side-navigation-accordion-button:hover) {
|
|
@@ -192,13 +239,17 @@ ${compactButtonPadding} padding-inline: var(--bf-panel-padding-inline);
|
|
|
192
239
|
text-decoration: none;
|
|
193
240
|
}
|
|
194
241
|
|
|
242
|
+
:where(.bf-theme) :where(a.bf-side-navigation-link:is(:hover, :active)) {
|
|
243
|
+
text-decoration: none;
|
|
244
|
+
}
|
|
245
|
+
|
|
195
246
|
:where(.bf-theme) :where(.bf-side-navigation-link:focus:not(:focus-visible), .bf-side-navigation-accordion-button:focus:not(:focus-visible)) {
|
|
196
247
|
outline: none;
|
|
197
248
|
}
|
|
198
249
|
|
|
199
250
|
:where(.bf-theme) :where(.bf-side-navigation-link:focus-visible, .bf-side-navigation-accordion-button:focus-visible) {
|
|
200
|
-
outline:
|
|
201
|
-
outline-offset: -
|
|
251
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
252
|
+
outline-offset: -0.125rem;
|
|
202
253
|
}
|
|
203
254
|
|
|
204
255
|
:where(.bf-theme) :where(.bf-side-navigation-link.is-active, .bf-side-navigation-link[aria-current='page'], .bf-side-navigation-link[aria-current='true']) {
|
|
@@ -359,13 +410,17 @@ ${bodyTypeStyles} align-items: center;
|
|
|
359
410
|
text-decoration: none;
|
|
360
411
|
}
|
|
361
412
|
|
|
413
|
+
:where(.bf-theme) :where(a.bf-top-navigation-link:is(:hover, :active)) {
|
|
414
|
+
text-decoration: none;
|
|
415
|
+
}
|
|
416
|
+
|
|
362
417
|
:where(.bf-theme) :where(.bf-top-navigation-link:focus:not(:focus-visible), .bf-top-navigation-menu-toggle:focus:not(:focus-visible), .bf-top-navigation-search-toggle:focus:not(:focus-visible)) {
|
|
363
418
|
outline: none;
|
|
364
419
|
}
|
|
365
420
|
|
|
366
421
|
:where(.bf-theme) :where(.bf-top-navigation-link:focus-visible, .bf-top-navigation-menu-toggle:focus-visible, .bf-top-navigation-search-toggle:focus-visible) {
|
|
367
|
-
outline:
|
|
368
|
-
outline-offset: -
|
|
422
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
423
|
+
outline-offset: -0.125rem;
|
|
369
424
|
}
|
|
370
425
|
|
|
371
426
|
:where(.bf-theme) :where(.bf-top-navigation-item.is-selected) > :where(.bf-top-navigation-link),
|
|
@@ -484,8 +539,8 @@ ${bodyTypeStyles} align-items: center;
|
|
|
484
539
|
}
|
|
485
540
|
|
|
486
541
|
:where(.bf-theme) :where(.bf-top-navigation-dropdown-item:focus-visible) {
|
|
487
|
-
outline:
|
|
488
|
-
outline-offset: -
|
|
542
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
543
|
+
outline-offset: -0.125rem;
|
|
489
544
|
}
|
|
490
545
|
|
|
491
546
|
:where(.bf-theme) :where(.bf-top-navigation-search-label) {
|
|
@@ -656,11 +711,12 @@ ${bodyTypeStyles} align-items: center;
|
|
|
656
711
|
content: "";
|
|
657
712
|
flex: 0 0 var(--bf-disclosure-icon-inline-size);
|
|
658
713
|
inline-size: var(--bf-disclosure-icon-inline-size);
|
|
714
|
+
transform: translateY(var(--bf-disclosure-icon-optical-offset-block));
|
|
659
715
|
transition: transform 120ms ease;
|
|
660
716
|
}
|
|
661
717
|
|
|
662
718
|
:where(.bf-theme) :where(.bf-side-navigation-accordion-button[aria-expanded='false'], .bf-side-navigation-expand[aria-expanded='false'])::before {
|
|
663
|
-
transform: rotate(-90deg);
|
|
719
|
+
transform: translateY(var(--bf-disclosure-icon-optical-offset-block)) rotate(-90deg);
|
|
664
720
|
}
|
|
665
721
|
|
|
666
722
|
:where(.bf-theme) :where(.bf-side-navigation-expand) {
|
|
@@ -720,14 +776,34 @@ ${bodyTypeStyles} background: transparent;
|
|
|
720
776
|
}
|
|
721
777
|
|
|
722
778
|
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
779
|
+
--bf-side-navigation-row-inset: max(0rem, calc(var(--bf-component-inline-inset-continuation) - 1rem - var(--bf-side-navigation-icon-gap)));
|
|
723
780
|
align-items: baseline;
|
|
724
781
|
column-gap: var(--bf-side-navigation-icon-gap);
|
|
725
782
|
}
|
|
726
783
|
|
|
784
|
+
/* Icon navigation keeps one stable label edge. Rows may omit a decorative
|
|
785
|
+
icon without collapsing the shared icon track and pulling their copy left. */
|
|
786
|
+
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-link, .bf-side-navigation-text):not(:has(> .bf-side-navigation-icon))::before {
|
|
787
|
+
content: "";
|
|
788
|
+
flex: 0 0 1rem;
|
|
789
|
+
inline-size: 1rem;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
/* A collapsed icon rail cannot communicate an iconless destination. Remove
|
|
793
|
+
the alignment spacer with the hidden label so it cannot become a blank
|
|
794
|
+
visual affordance in that state. */
|
|
795
|
+
:where(.bf-theme) :where(.bf-navigation.is-collapsed) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-link, .bf-side-navigation-text):not(:has(> .bf-side-navigation-icon))::before {
|
|
796
|
+
content: none;
|
|
797
|
+
}
|
|
798
|
+
|
|
727
799
|
/* Icon-navigation headings share the label edge, not the icon edge. This
|
|
728
800
|
keeps section names aligned with both the menu copy and a tagged wordmark. */
|
|
729
|
-
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-heading
|
|
730
|
-
padding-inline-start:
|
|
801
|
+
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-heading:not(.is-linked)) {
|
|
802
|
+
padding-inline-start: var(--bf-component-inline-inset-continuation);
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-heading.is-linked) > :where(.bf-side-navigation-link) {
|
|
806
|
+
padding-inline-start: var(--bf-component-inline-inset-continuation);
|
|
731
807
|
}
|
|
732
808
|
|
|
733
809
|
:where(.bf-theme) :where(.bf-side-navigation-icon) > svg {
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
* link/mark contract; the additional card slots are semantic link content,
|
|
9
9
|
* not the deprecated `logo-block` API.
|
|
10
10
|
*
|
|
11
|
-
* Vanilla → BF mapping (Vanilla's
|
|
11
|
+
* Vanilla → BF mapping (Vanilla's 0.5rem spacing unit):
|
|
12
12
|
* - linked-logo image container: retained 16:9 aspect relationship;
|
|
13
|
-
* - muted rule to copy:
|
|
14
|
-
* - grid gutter:
|
|
13
|
+
* - muted rule to copy: 0.5rem → `--bf-space-1`, compensating its border;
|
|
14
|
+
* - grid gutter: 1.5rem / 2rem breakpoint values → existing
|
|
15
15
|
* `--bf-grid-gap-inline` (BF's tier-aware grid geometry);
|
|
16
16
|
* - macro section boundaries: existing shallow/default/deep section tokens.
|
|
17
17
|
*
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
* link/mark contract; the additional card slots are semantic link content,
|
|
9
9
|
* not the deprecated `logo-block` API.
|
|
10
10
|
*
|
|
11
|
-
* Vanilla → BF mapping (Vanilla's
|
|
11
|
+
* Vanilla → BF mapping (Vanilla's 0.5rem spacing unit):
|
|
12
12
|
* - linked-logo image container: retained 16:9 aspect relationship;
|
|
13
|
-
* - muted rule to copy:
|
|
14
|
-
* - grid gutter:
|
|
13
|
+
* - muted rule to copy: 0.5rem → `--bf-space-1`, compensating its border;
|
|
14
|
+
* - grid gutter: 1.5rem / 2rem breakpoint values → existing
|
|
15
15
|
* `--bf-grid-gap-inline` (BF's tier-aware grid geometry);
|
|
16
16
|
* - macro section boundaries: existing shallow/default/deep section tokens.
|
|
17
17
|
*
|
|
@@ -26,20 +26,13 @@ export function linkedLogoSiteLayoutCss() {
|
|
|
26
26
|
:where(.bf-theme) :where(.bf-linked-logo-section) {
|
|
27
27
|
container-name: bf-linked-logo-section;
|
|
28
28
|
container-type: inline-size;
|
|
29
|
-
margin
|
|
29
|
+
margin: 0;
|
|
30
30
|
min-inline-size: 0;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
:where(.bf-theme) :where(.bf-linked-logo-section.is-shallow) {
|
|
34
|
-
margin-block-end: var(--bf-section-space-shallow);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
:where(.bf-theme) :where(.bf-linked-logo-section.is-deep) {
|
|
38
|
-
margin-block-end: var(--bf-section-space-deep);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
33
|
:where(.bf-theme) :where(.bf-linked-logo-section-layout) {
|
|
42
34
|
display: grid;
|
|
35
|
+
gap: var(--bf-section-space-shallow);
|
|
43
36
|
grid-template-columns: minmax(0, 1fr);
|
|
44
37
|
min-inline-size: 0;
|
|
45
38
|
}
|
|
@@ -72,7 +65,7 @@ export function linkedLogoSiteLayoutCss() {
|
|
|
72
65
|
max-inline-size: none;
|
|
73
66
|
}
|
|
74
67
|
|
|
75
|
-
:where(.bf-theme) :where(.bf-linked-logo-section-card) {
|
|
68
|
+
:where(.bf-theme) :where(a.bf-linked-logo-section-card) {
|
|
76
69
|
align-content: start;
|
|
77
70
|
align-items: stretch;
|
|
78
71
|
color: inherit;
|
|
@@ -84,7 +77,7 @@ export function linkedLogoSiteLayoutCss() {
|
|
|
84
77
|
text-decoration: none;
|
|
85
78
|
}
|
|
86
79
|
|
|
87
|
-
:where(.bf-theme) :where(.bf-linked-logo-section-card:hover) :where(.bf-linked-logo-section-card-copy) {
|
|
80
|
+
:where(.bf-theme) :where(a.bf-linked-logo-section-card:hover) :where(.bf-linked-logo-section-card-copy) {
|
|
88
81
|
text-decoration: underline;
|
|
89
82
|
}
|
|
90
83
|
|
|
@@ -103,7 +96,7 @@ export function linkedLogoSiteLayoutCss() {
|
|
|
103
96
|
of baselines tall. Keep the visual ratio exact and put only the residual
|
|
104
97
|
rhythm compensation after the mark; the copy keeps its own semantic
|
|
105
98
|
spacing and the occupied card still lands on the tier grid. */
|
|
106
|
-
@supports (margin-block-end: round(up,
|
|
99
|
+
@supports (margin-block-end: round(up, 0.0625rem, 0.0625rem)) {
|
|
107
100
|
:where(.bf-theme) :where(.bf-linked-logo-section-mark) {
|
|
108
101
|
margin-block-end: calc(
|
|
109
102
|
round(up, calc(100cqi * 9 / 16), var(--bf-baseline))
|
|
@@ -135,21 +128,25 @@ export function linkedLogoSiteLayoutCss() {
|
|
|
135
128
|
overflow-wrap: anywhere;
|
|
136
129
|
}
|
|
137
130
|
|
|
138
|
-
/*
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
131
|
+
/* The linked-logo block moves from one to two cards per row at the 4-column
|
|
132
|
+
medium grid. The balanced 50/50 section split uses the shared readable
|
|
133
|
+
threshold; the 25/75 content rail and four-card density retain their
|
|
134
|
+
separately measured wide threshold. The root establishes the query context;
|
|
135
|
+
only descendants change. */
|
|
142
136
|
@container bf-linked-logo-section (width >= 38.75rem) {
|
|
143
137
|
:where(.bf-theme) :where(.bf-linked-logo-section-logos) :where(.bf-logo-section-items) {
|
|
144
138
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
145
139
|
}
|
|
146
140
|
}
|
|
147
141
|
|
|
148
|
-
@container bf-linked-logo-section (width >=
|
|
142
|
+
@container bf-linked-logo-section (width >= 45rem) {
|
|
149
143
|
:where(.bf-theme) :where(.bf-linked-logo-section.is-50-50) :where(.bf-linked-logo-section-layout) {
|
|
150
144
|
column-gap: var(--bf-grid-gap-inline);
|
|
151
145
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
152
146
|
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@container bf-linked-logo-section (width >= 64.75rem) {
|
|
153
150
|
|
|
154
151
|
:where(.bf-theme) :where(.bf-linked-logo-section.is-25-75) :where(.bf-linked-logo-section-layout) {
|
|
155
152
|
column-gap: var(--bf-grid-gap-inline);
|
|
@@ -3,7 +3,7 @@ export function listTreeCss(options) {
|
|
|
3
3
|
return `:where(.bf-theme) :where(.bf-list-tree) {
|
|
4
4
|
list-style: none;
|
|
5
5
|
margin: 0;
|
|
6
|
-
padding-left:
|
|
6
|
+
padding-left: 0;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
:where(.bf-theme) :where(.bf-list-tree) :where(.bf-list-tree) {
|
|
@@ -17,22 +17,24 @@ export function listTreeCss(options) {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
:where(.bf-theme) :where(.bf-list-tree-item) {
|
|
20
|
+
display: grid;
|
|
20
21
|
margin: 0;
|
|
21
|
-
padding-left:
|
|
22
|
+
padding-left: 0;
|
|
22
23
|
position: relative;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
:where(.bf-theme) :where(.bf-list-tree-link) {
|
|
26
|
+
:where(.bf-theme) :where(a.bf-list-tree-link) {
|
|
26
27
|
${bodyTypeStyles} color: var(--bf-color-text-default);
|
|
28
|
+
border-block: var(--bf-border-width) solid transparent;
|
|
27
29
|
cursor: pointer;
|
|
28
30
|
display: block;
|
|
29
|
-
margin: 0;
|
|
30
|
-
|
|
31
|
-
padding-
|
|
31
|
+
margin: 0 0 var(--bf-single-line-row-margin-block-end);
|
|
32
|
+
padding-block: var(--bf-single-line-row-padding-block);
|
|
33
|
+
padding-inline: var(--bf-component-inline-inset-continuation) var(--bf-component-inline-inset-action);
|
|
32
34
|
text-decoration: none;
|
|
33
35
|
}
|
|
34
36
|
|
|
35
|
-
:where(.bf-theme) :where(.bf-list-tree-link
|
|
37
|
+
:where(.bf-theme) :where(a.bf-list-tree-link:hover) {
|
|
36
38
|
color: var(--bf-color-link-default);
|
|
37
39
|
text-decoration: underline;
|
|
38
40
|
}
|
|
@@ -46,22 +48,22 @@ ${bodyTypeStyles} color: var(--bf-color-text-default);
|
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
:where(.bf-theme) :where(.bf-list-tree-link):focus-visible {
|
|
49
|
-
outline:
|
|
50
|
-
outline-offset: -
|
|
51
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
52
|
+
outline-offset: -0.125rem;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
:where(.bf-theme) :where(.bf-list-tree-toggle) {
|
|
54
56
|
${bodyTypeStyles} align-items: center;
|
|
55
57
|
background: transparent;
|
|
56
58
|
border: 0;
|
|
59
|
+
border-block: var(--bf-border-width) solid transparent;
|
|
57
60
|
color: var(--bf-color-text-default);
|
|
58
61
|
cursor: pointer;
|
|
59
|
-
display:
|
|
60
|
-
gap:
|
|
61
|
-
margin: 0 0
|
|
62
|
-
|
|
63
|
-
padding-
|
|
64
|
-
padding-inline: calc(var(--bf-baseline) * 0.25) calc(var(--bf-baseline) * 0.5);
|
|
62
|
+
display: flex;
|
|
63
|
+
gap: var(--bf-disclosure-gap);
|
|
64
|
+
margin: 0 0 var(--bf-single-line-row-margin-block-end);
|
|
65
|
+
padding-block: var(--bf-single-line-row-padding-block);
|
|
66
|
+
padding-inline: 0 calc(var(--bf-baseline) * 0.5);
|
|
65
67
|
text-align: left;
|
|
66
68
|
width: 100%;
|
|
67
69
|
}
|
|
@@ -75,8 +77,8 @@ ${bodyTypeStyles} align-items: center;
|
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
:where(.bf-theme) :where(.bf-list-tree-toggle):focus-visible {
|
|
78
|
-
outline:
|
|
79
|
-
outline-offset: -
|
|
80
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
81
|
+
outline-offset: -0.125rem;
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
:where(.bf-theme) :where(.bf-list-tree-toggle)::before {
|
|
@@ -88,11 +90,11 @@ ${bodyTypeStyles} align-items: center;
|
|
|
88
90
|
content: "";
|
|
89
91
|
flex: 0 0 1rem;
|
|
90
92
|
inline-size: 1rem;
|
|
91
|
-
transform: rotate(-90deg);
|
|
93
|
+
transform: translateY(var(--bf-disclosure-icon-optical-offset-block)) rotate(-90deg);
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
:where(.bf-theme) :where(.bf-list-tree-toggle[aria-expanded='true'])::before {
|
|
95
|
-
transform: rotate(0deg);
|
|
97
|
+
transform: translateY(var(--bf-disclosure-icon-optical-offset-block)) rotate(0deg);
|
|
96
98
|
}
|
|
97
99
|
`;
|
|
98
100
|
}
|
|
@@ -7,6 +7,10 @@ export function listCss({ bodyTypeStyles }) {
|
|
|
7
7
|
padding: 0;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
:where(.bf-theme) :where(.bf-list:has(> .bf-list-item:is(.is-ticked, .is-crossed)), ol.bf-list.is-divided) {
|
|
11
|
+
padding-inline-start: var(--bf-leading-mark-group-inset);
|
|
12
|
+
}
|
|
13
|
+
|
|
10
14
|
:where(.bf-theme) :where(.bf-list-item) {
|
|
11
15
|
${bodyTypeStyles} color: var(--bf-color-text-default);
|
|
12
16
|
margin: 0 0 var(--bf-body-margin-bottom);
|
|
@@ -17,8 +21,10 @@ ${bodyTypeStyles} color: var(--bf-color-text-default);
|
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
:where(.bf-theme) :where(.bf-list.is-divided) > :where(.bf-list-item) {
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
border-block: var(--bf-border-width) solid transparent;
|
|
25
|
+
box-shadow: inset 0 0.0625rem 0 var(--bf-color-border-low-contrast);
|
|
26
|
+
margin-block-end: var(--bf-single-line-row-margin-block-end);
|
|
27
|
+
padding-block: var(--bf-single-line-row-padding-block);
|
|
22
28
|
}
|
|
23
29
|
|
|
24
30
|
:where(.bf-theme) :where(.bf-list.is-divided) > :where(.bf-list-item:first-child) {
|
|
@@ -26,7 +32,7 @@ ${bodyTypeStyles} color: var(--bf-color-text-default);
|
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
:where(.bf-theme) :where(.bf-list-item.is-ticked, .bf-list-item.is-crossed) {
|
|
29
|
-
padding-inline-start:
|
|
35
|
+
padding-inline-start: var(--bf-leading-mark-offset);
|
|
30
36
|
position: relative;
|
|
31
37
|
}
|
|
32
38
|
|
|
@@ -51,10 +57,6 @@ ${bodyTypeStyles} color: var(--bf-color-text-default);
|
|
|
51
57
|
background-image: var(--bf-ui-icon-error-grey);
|
|
52
58
|
}
|
|
53
59
|
|
|
54
|
-
:where(.bf-theme) :where(.bf-list.is-divided) > :where(.bf-list-item.is-ticked, .bf-list-item.is-crossed)::before {
|
|
55
|
-
top: calc(var(--bf-leading-icon-offset) + (var(--bf-baseline) * 0.5));
|
|
56
|
-
}
|
|
57
|
-
|
|
58
60
|
:where(.bf-theme) :where(ol.bf-list.is-divided) {
|
|
59
61
|
counter-reset: bf-list-counter;
|
|
60
62
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Vanilla parity ports: logo section and media object.
|
|
3
3
|
*
|
|
4
|
-
* Vanilla → BF rhythm mapping (at Vanilla's
|
|
5
|
-
* - Logo mark heights
|
|
4
|
+
* Vanilla → BF rhythm mapping (at Vanilla's 0.5rem unit):
|
|
5
|
+
* - Logo mark heights 4.5rem / 6.5rem → `space-8 + space-1` / `space-12 +
|
|
6
6
|
* space-1` (nine / thirteen BF baselines).
|
|
7
|
-
* - Logo
|
|
7
|
+
* - Logo 2rem inline gap → `space-4`; Vanilla's 0.5rem / 1rem negative row pull
|
|
8
8
|
* and matching wrapper compensation → `space-1` / `space-2`.
|
|
9
|
-
* - Media thumbnails
|
|
10
|
-
* gap → `space-2`; trailing
|
|
11
|
-
*
|
|
9
|
+
* - Media thumbnails 3rem / 6rem → `space-6` / `space-12`; their 1rem
|
|
10
|
+
* gap → `space-2`; trailing 1.5rem → `section-space-shallow`; metadata top
|
|
11
|
+
* 0.5rem → `space-1`.
|
|
12
12
|
*
|
|
13
13
|
* Those are relative values, rather than fixed pixels, so the same semantics
|
|
14
14
|
* retain the deliberately denser documentation, app, and OS tiers.
|