baseline-foundry 0.1.4 → 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 +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 +10 -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 +24 -9
- 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 +85 -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 +4 -4
- package/dist/css-components/panel.js +12 -8
- 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 -3
- 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 +189 -111
- 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 +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 +1 -1
- package/package.json +2 -2
|
@@ -1,11 +1,33 @@
|
|
|
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;
|
|
4
14
|
color: var(--bf-color-text-inactive);
|
|
5
15
|
display: block;
|
|
6
16
|
inline-size: 100%;
|
|
7
17
|
}
|
|
8
18
|
|
|
19
|
+
:where(.bf-theme) :where(.bf-side-navigation-groups) {
|
|
20
|
+
align-content: start;
|
|
21
|
+
display: grid;
|
|
22
|
+
gap: var(--bf-side-navigation-group-gap);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:where(.bf-theme) :where(.bf-side-navigation-group) {
|
|
26
|
+
display: grid;
|
|
27
|
+
gap: 0rem;
|
|
28
|
+
min-inline-size: 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
9
31
|
:where(.bf-theme) :where(.bf-side-navigation-drawer) {
|
|
10
32
|
background: var(--bf-color-background-default);
|
|
11
33
|
bottom: 0;
|
|
@@ -22,7 +44,7 @@ export function legacyNavigationCss(options) {
|
|
|
22
44
|
}
|
|
23
45
|
|
|
24
46
|
: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
|
|
47
|
+
box-shadow: 0 1.5rem 4.5rem rgba(0, 0, 0, 0.38);
|
|
26
48
|
transform: translateX(0);
|
|
27
49
|
}
|
|
28
50
|
|
|
@@ -52,7 +74,7 @@ export function legacyNavigationCss(options) {
|
|
|
52
74
|
border-bottom: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
53
75
|
margin-bottom: calc(var(--bf-baseline) * 2);
|
|
54
76
|
padding-bottom: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
|
|
55
|
-
padding-inline: var(--bf-
|
|
77
|
+
padding-inline: var(--bf-component-inline-inset-continuation);
|
|
56
78
|
padding-top: var(--bf-panel-padding-block);
|
|
57
79
|
position: sticky;
|
|
58
80
|
top: 0;
|
|
@@ -71,7 +93,7 @@ ${bodyTypeStyles} align-items: center;
|
|
|
71
93
|
gap: calc(var(--bf-baseline) * 0.5);
|
|
72
94
|
justify-content: center;
|
|
73
95
|
margin: 0 0 ${buttonMarginBottom};
|
|
74
|
-
${buttonPadding} padding-inline: var(--bf-control-inline-padding-action);
|
|
96
|
+
${buttonPadding} padding-inline: var(--bf-control-inline-padding-action-bordered);
|
|
75
97
|
text-decoration: none;
|
|
76
98
|
}
|
|
77
99
|
|
|
@@ -106,30 +128,30 @@ ${buttonPadding} padding-inline: var(--bf-control-inline-padding-action);
|
|
|
106
128
|
}
|
|
107
129
|
|
|
108
130
|
:where(.bf-theme) :where(.bf-side-navigation-toggle:focus-visible) {
|
|
109
|
-
outline:
|
|
110
|
-
outline-offset: -
|
|
131
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
132
|
+
outline-offset: -0.125rem;
|
|
111
133
|
}
|
|
112
134
|
|
|
113
135
|
:where(.bf-theme) :where(.bf-side-navigation-heading, .bf-side-navigation-heading.is-linked) {
|
|
114
136
|
${bodySemiboldTypeStyles} display: block;
|
|
115
137
|
margin: 0 0 var(--bf-body-margin-bottom);
|
|
116
138
|
padding-block: var(--bf-body-nudge-start) 0;
|
|
139
|
+
padding-inline: var(--bf-side-navigation-content-inset);
|
|
117
140
|
}
|
|
118
141
|
|
|
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));
|
|
142
|
+
:where(.bf-theme) :where(.bf-side-navigation-heading.is-linked) {
|
|
143
|
+
padding-inline: 0;
|
|
124
144
|
}
|
|
125
145
|
|
|
126
|
-
:where(.bf-theme) :where(.bf-side-navigation-list
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
146
|
+
:where(.bf-theme) :where(.bf-side-navigation-list) {
|
|
147
|
+
display: grid;
|
|
148
|
+
list-style: none;
|
|
149
|
+
margin: 0;
|
|
150
|
+
padding: 0;
|
|
130
151
|
}
|
|
131
152
|
|
|
132
153
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title) {
|
|
154
|
+
display: grid;
|
|
133
155
|
margin: 0;
|
|
134
156
|
position: relative;
|
|
135
157
|
}
|
|
@@ -138,20 +160,23 @@ ${bodySemiboldTypeStyles} display: block;
|
|
|
138
160
|
${bodyTypeStyles} align-items: center;
|
|
139
161
|
background: transparent;
|
|
140
162
|
border: 0;
|
|
163
|
+
border-block: var(--bf-border-width) solid transparent;
|
|
141
164
|
color: var(--bf-color-text-inactive);
|
|
142
165
|
display: flex;
|
|
143
166
|
gap: calc(var(--bf-baseline) * 0.5);
|
|
144
167
|
inline-size: 100%;
|
|
145
168
|
justify-content: flex-start;
|
|
146
|
-
margin: 0;
|
|
147
|
-
|
|
148
|
-
|
|
169
|
+
margin: 0 0 var(--bf-single-line-row-margin-block-end);
|
|
170
|
+
padding-block: var(--bf-single-line-row-padding-block);
|
|
171
|
+
padding-inline: var(--bf-side-navigation-content-inset);
|
|
172
|
+
--bf-side-navigation-row-inset: var(--bf-side-navigation-content-inset);
|
|
149
173
|
position: relative;
|
|
150
174
|
text-align: left;
|
|
151
175
|
text-decoration: none;
|
|
152
176
|
}
|
|
153
177
|
|
|
154
178
|
:where(.bf-theme) :where(.bf-side-navigation-accordion-button) {
|
|
179
|
+
--bf-side-navigation-row-inset: var(--bf-side-navigation-disclosure-inset);
|
|
155
180
|
gap: var(--bf-disclosure-gap);
|
|
156
181
|
}
|
|
157
182
|
|
|
@@ -160,22 +185,21 @@ ${compactButtonPadding} padding-inline: var(--bf-panel-padding-inline);
|
|
|
160
185
|
font-weight: 600;
|
|
161
186
|
}
|
|
162
187
|
|
|
163
|
-
:where(.bf-theme) :where(.bf-side-navigation-heading, .bf-side-navigation-heading.is-linked),
|
|
164
188
|
: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-
|
|
189
|
+
padding-inline-start: var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset));
|
|
166
190
|
}
|
|
167
191
|
|
|
168
192
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
169
193
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
170
194
|
> :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
171
|
-
padding-inline-start: calc(var(--bf-
|
|
195
|
+
padding-inline-start: calc(var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset)) + var(--bf-side-navigation-depth-step));
|
|
172
196
|
}
|
|
173
197
|
|
|
174
198
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
175
199
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
176
200
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
177
201
|
> :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
178
|
-
padding-inline-start: calc(var(--bf-
|
|
202
|
+
padding-inline-start: calc(var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset)) + (var(--bf-side-navigation-depth-step) * 2));
|
|
179
203
|
}
|
|
180
204
|
|
|
181
205
|
:where(.bf-theme) :where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
@@ -183,7 +207,7 @@ ${compactButtonPadding} padding-inline: var(--bf-panel-padding-inline);
|
|
|
183
207
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
184
208
|
:where(.bf-side-navigation-item, .bf-side-navigation-item.is-title)
|
|
185
209
|
> :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
186
|
-
padding-inline-start: calc(var(--bf-
|
|
210
|
+
padding-inline-start: calc(var(--bf-side-navigation-row-inset, var(--bf-side-navigation-content-inset)) + (var(--bf-side-navigation-depth-step) * 3));
|
|
187
211
|
}
|
|
188
212
|
|
|
189
213
|
:where(.bf-theme) :where(.bf-side-navigation-link:hover, .bf-side-navigation-accordion-button:hover) {
|
|
@@ -192,13 +216,17 @@ ${compactButtonPadding} padding-inline: var(--bf-panel-padding-inline);
|
|
|
192
216
|
text-decoration: none;
|
|
193
217
|
}
|
|
194
218
|
|
|
219
|
+
:where(.bf-theme) :where(a.bf-side-navigation-link:is(:hover, :active)) {
|
|
220
|
+
text-decoration: none;
|
|
221
|
+
}
|
|
222
|
+
|
|
195
223
|
:where(.bf-theme) :where(.bf-side-navigation-link:focus:not(:focus-visible), .bf-side-navigation-accordion-button:focus:not(:focus-visible)) {
|
|
196
224
|
outline: none;
|
|
197
225
|
}
|
|
198
226
|
|
|
199
227
|
:where(.bf-theme) :where(.bf-side-navigation-link:focus-visible, .bf-side-navigation-accordion-button:focus-visible) {
|
|
200
|
-
outline:
|
|
201
|
-
outline-offset: -
|
|
228
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
229
|
+
outline-offset: -0.125rem;
|
|
202
230
|
}
|
|
203
231
|
|
|
204
232
|
: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 +387,17 @@ ${bodyTypeStyles} align-items: center;
|
|
|
359
387
|
text-decoration: none;
|
|
360
388
|
}
|
|
361
389
|
|
|
390
|
+
:where(.bf-theme) :where(a.bf-top-navigation-link:is(:hover, :active)) {
|
|
391
|
+
text-decoration: none;
|
|
392
|
+
}
|
|
393
|
+
|
|
362
394
|
: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
395
|
outline: none;
|
|
364
396
|
}
|
|
365
397
|
|
|
366
398
|
: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: -
|
|
399
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
400
|
+
outline-offset: -0.125rem;
|
|
369
401
|
}
|
|
370
402
|
|
|
371
403
|
:where(.bf-theme) :where(.bf-top-navigation-item.is-selected) > :where(.bf-top-navigation-link),
|
|
@@ -484,8 +516,8 @@ ${bodyTypeStyles} align-items: center;
|
|
|
484
516
|
}
|
|
485
517
|
|
|
486
518
|
:where(.bf-theme) :where(.bf-top-navigation-dropdown-item:focus-visible) {
|
|
487
|
-
outline:
|
|
488
|
-
outline-offset: -
|
|
519
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
520
|
+
outline-offset: -0.125rem;
|
|
489
521
|
}
|
|
490
522
|
|
|
491
523
|
:where(.bf-theme) :where(.bf-top-navigation-search-label) {
|
|
@@ -656,11 +688,12 @@ ${bodyTypeStyles} align-items: center;
|
|
|
656
688
|
content: "";
|
|
657
689
|
flex: 0 0 var(--bf-disclosure-icon-inline-size);
|
|
658
690
|
inline-size: var(--bf-disclosure-icon-inline-size);
|
|
691
|
+
transform: translateY(var(--bf-disclosure-icon-optical-offset-block));
|
|
659
692
|
transition: transform 120ms ease;
|
|
660
693
|
}
|
|
661
694
|
|
|
662
695
|
:where(.bf-theme) :where(.bf-side-navigation-accordion-button[aria-expanded='false'], .bf-side-navigation-expand[aria-expanded='false'])::before {
|
|
663
|
-
transform: rotate(-90deg);
|
|
696
|
+
transform: translateY(var(--bf-disclosure-icon-optical-offset-block)) rotate(-90deg);
|
|
664
697
|
}
|
|
665
698
|
|
|
666
699
|
:where(.bf-theme) :where(.bf-side-navigation-expand) {
|
|
@@ -720,14 +753,34 @@ ${bodyTypeStyles} background: transparent;
|
|
|
720
753
|
}
|
|
721
754
|
|
|
722
755
|
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-link, .bf-side-navigation-text, .bf-side-navigation-accordion-button) {
|
|
756
|
+
--bf-side-navigation-row-inset: max(0rem, calc(var(--bf-component-inline-inset-continuation) - 1rem - var(--bf-side-navigation-icon-gap)));
|
|
723
757
|
align-items: baseline;
|
|
724
758
|
column-gap: var(--bf-side-navigation-icon-gap);
|
|
725
759
|
}
|
|
726
760
|
|
|
761
|
+
/* Icon navigation keeps one stable label edge. Rows may omit a decorative
|
|
762
|
+
icon without collapsing the shared icon track and pulling their copy left. */
|
|
763
|
+
: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 {
|
|
764
|
+
content: "";
|
|
765
|
+
flex: 0 0 1rem;
|
|
766
|
+
inline-size: 1rem;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
/* A collapsed icon rail cannot communicate an iconless destination. Remove
|
|
770
|
+
the alignment spacer with the hidden label so it cannot become a blank
|
|
771
|
+
visual affordance in that state. */
|
|
772
|
+
: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 {
|
|
773
|
+
content: none;
|
|
774
|
+
}
|
|
775
|
+
|
|
727
776
|
/* Icon-navigation headings share the label edge, not the icon edge. This
|
|
728
777
|
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:
|
|
778
|
+
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-heading:not(.is-linked)) {
|
|
779
|
+
padding-inline-start: var(--bf-component-inline-inset-continuation);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
:where(.bf-theme) :where(.bf-side-navigation.is-icons) :where(.bf-side-navigation-heading.is-linked) > :where(.bf-side-navigation-link) {
|
|
783
|
+
padding-inline-start: var(--bf-component-inline-inset-continuation);
|
|
731
784
|
}
|
|
732
785
|
|
|
733
786
|
: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.
|