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
|
@@ -3,149 +3,149 @@
|
|
|
3
3
|
* primitives without changing their interaction ownership.
|
|
4
4
|
*/
|
|
5
5
|
export function navigationLayoutCss() {
|
|
6
|
-
return `/* ------------------------------------------------------------------ */
|
|
7
|
-
/* Navigation layout and page shell */
|
|
8
|
-
/* ------------------------------------------------------------------ */
|
|
9
|
-
|
|
10
|
-
/* The row is only a layout owner. Interactive children own the occupied
|
|
11
|
-
* block; row padding would leave an unpainted strip below their highlights. */
|
|
12
|
-
:where(.bf-theme) :where(.bf-top-navigation-row) {
|
|
13
|
-
padding-block: 0;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/* The tagged treatment is opt-in. The Circle of Friends is aligned to the
|
|
17
|
-
* first title line, then the
|
|
18
|
-
* Its
|
|
19
|
-
* tag must not stretch to the full occupied navigation row. */
|
|
20
|
-
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) {
|
|
21
|
-
min-inline-size: 0;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) > :where(.bf-top-navigation-link) {
|
|
25
|
-
align-items: start;
|
|
26
|
-
column-gap: 0;
|
|
27
|
-
display: inline-flex;
|
|
28
|
-
inline-size: 100%;
|
|
29
|
-
justify-content: flex-start;
|
|
30
|
-
padding-block: 0;
|
|
31
|
-
padding-inline: 0;
|
|
32
|
-
padding-inline-start: calc(var(--bf-top-navigation-logo-tag-inline-size) + var(--bf-top-navigation-logo-tag-gap));
|
|
33
|
-
position: relative;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) :where(.bf-top-navigation-logo-tag) {
|
|
37
|
-
align-items: flex-end;
|
|
38
|
-
background: var(--bf-color-brand);
|
|
39
|
-
block-size: var(--bf-top-navigation-logo-tag-block-size);
|
|
40
|
-
box-sizing: border-box;
|
|
41
|
-
display: flex;
|
|
42
|
-
inline-size: var(--bf-top-navigation-logo-tag-inline-size);
|
|
43
|
-
inset-block-start: 0;
|
|
44
|
-
inset-inline-start: 0;
|
|
45
|
-
justify-content: center;
|
|
46
|
-
padding-block: 0 var(--bf-top-navigation-logo-icon-bottom-offset);
|
|
47
|
-
padding-inline: 0;
|
|
48
|
-
position: absolute;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) ~ :where(.bf-top-navigation-list.is-banner-actions) :where(.bf-top-navigation-menu-toggle, .bf-top-navigation-search-toggle),
|
|
52
|
-
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-nav) :where(.bf-top-navigation-link, .bf-top-navigation-search-toggle) {
|
|
53
|
-
block-size: 100%;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) :where(.bf-top-navigation-logo-icon) {
|
|
57
|
-
block-size: var(--bf-top-navigation-logo-icon-size);
|
|
58
|
-
display: block;
|
|
59
|
-
flex: 0 0 auto;
|
|
60
|
-
inline-size: var(--bf-top-navigation-logo-icon-size);
|
|
61
|
-
transform: translateX(var(--bf-top-navigation-logo-icon-optical-offset-inline));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) :where(.bf-top-navigation-logo-title) {
|
|
65
|
-
align-self: start;
|
|
66
|
-
color: var(--bf-color-text-default);
|
|
67
|
-
font-size: var(--bf-top-navigation-logo-title-font-size, var(--bf-body-font-size, 1rem));
|
|
68
|
-
font-weight: 300;
|
|
69
|
-
line-height: var(--bf-top-navigation-logo-title-line-height, var(--bf-body-line-height, 1.5));
|
|
70
|
-
overflow: visible;
|
|
71
|
-
overflow-wrap: anywhere;
|
|
72
|
-
/* The first title line and the
|
|
73
|
-
* tag block-end minus the
|
|
74
|
-
* padding keeps the occupied row stable across all four type-density tiers. */
|
|
75
|
-
padding-block: calc(
|
|
76
|
-
var(--bf-top-navigation-logo-tag-block-size)
|
|
77
|
-
- var(--bf-top-navigation-logo-icon-bottom-offset)
|
|
78
|
-
- (var(--bf-top-navigation-logo-icon-size) / 2)
|
|
79
|
-
- (var(--bf-top-navigation-logo-title-line-height, var(--bf-body-line-height, 1.5rem)) / 2)
|
|
80
|
-
);
|
|
81
|
-
text-overflow: clip;
|
|
82
|
-
white-space: normal;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/* A grid-aligned header uses the same eight tracks and gutter as page content.
|
|
86
|
-
* The brand/banner owns columns one and two; primary navigation starts at
|
|
87
|
-
* column three. No independent brand-width token can drift from that grid. */
|
|
88
|
-
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) {
|
|
89
|
-
container-type: inline-size;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
@media (min-width: 64.75rem) {
|
|
93
|
-
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-row) {
|
|
94
|
-
column-gap: var(--bf-grid-gap-inline);
|
|
95
|
-
display: grid;
|
|
96
|
-
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-banner) {
|
|
100
|
-
grid-column: 1 / span 2;
|
|
101
|
-
min-inline-size: 0;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-nav) {
|
|
105
|
-
grid-column: 3 / -1;
|
|
106
|
-
min-inline-size: 0;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-dropdown) {
|
|
110
|
-
top: 100%;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/* Documentation composition stays single-column until its own container can
|
|
115
|
-
* support the intentional 2/6 navigation/content split. The optional
|
|
116
|
-
* navigation slot never creates a mobile rail. */
|
|
117
|
-
:where(.bf-theme) :where(.bf-docs-layout) {
|
|
118
|
-
align-items: start;
|
|
119
|
-
column-gap: var(--bf-grid-gap-inline);
|
|
120
|
-
container-type: inline-size;
|
|
121
|
-
display: grid;
|
|
122
|
-
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
123
|
-
min-inline-size: 0;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
:where(.bf-theme) :where(.bf-docs-layout-navigation, .bf-docs-layout-content) {
|
|
127
|
-
grid-column: 1 / -1;
|
|
128
|
-
min-inline-size: 0;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
@media (min-width: 64.75rem) {
|
|
132
|
-
@container (width >= 38.75rem) {
|
|
133
|
-
:where(.bf-theme) :where(.bf-docs-layout:has(> .bf-docs-layout-navigation)) > :where(.bf-docs-layout-navigation) {
|
|
134
|
-
grid-column: span 2;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
:where(.bf-theme) :where(.bf-docs-layout:has(> .bf-docs-layout-navigation)) > :where(.bf-docs-layout-content) {
|
|
138
|
-
grid-column: span 6;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/* This is deliberately scoped to an explicit page shell. Importing a BF tier
|
|
144
|
-
* alone never changes the consuming document body's user-agent margin. */
|
|
145
|
-
:where(body.bf-theme.bf-page-shell) {
|
|
146
|
-
background: var(--bf-color-background-default);
|
|
147
|
-
margin: 0;
|
|
148
|
-
min-block-size: 100dvb;
|
|
149
|
-
}
|
|
6
|
+
return `/* ------------------------------------------------------------------ */
|
|
7
|
+
/* Navigation layout and page shell */
|
|
8
|
+
/* ------------------------------------------------------------------ */
|
|
9
|
+
|
|
10
|
+
/* The row is only a layout owner. Interactive children own the occupied
|
|
11
|
+
* block; row padding would leave an unpainted strip below their highlights. */
|
|
12
|
+
:where(.bf-theme) :where(.bf-top-navigation-row) {
|
|
13
|
+
padding-block: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* The tagged treatment is opt-in. The Circle of Friends is aligned to the
|
|
17
|
+
* first title line, then the 2.375rem tag extends upward to the navigation edge.
|
|
18
|
+
* Its 1.375rem inline size preserves the established 38:22 (~1.73) tag ratio; the
|
|
19
|
+
* tag must not stretch to the full occupied navigation row. */
|
|
20
|
+
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) {
|
|
21
|
+
min-inline-size: 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) > :where(.bf-top-navigation-link) {
|
|
25
|
+
align-items: start;
|
|
26
|
+
column-gap: 0;
|
|
27
|
+
display: inline-flex;
|
|
28
|
+
inline-size: 100%;
|
|
29
|
+
justify-content: flex-start;
|
|
30
|
+
padding-block: 0;
|
|
31
|
+
padding-inline: 0;
|
|
32
|
+
padding-inline-start: calc(var(--bf-top-navigation-logo-tag-inline-size) + var(--bf-top-navigation-logo-tag-gap));
|
|
33
|
+
position: relative;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) :where(.bf-top-navigation-logo-tag) {
|
|
37
|
+
align-items: flex-end;
|
|
38
|
+
background: var(--bf-color-brand);
|
|
39
|
+
block-size: var(--bf-top-navigation-logo-tag-block-size);
|
|
40
|
+
box-sizing: border-box;
|
|
41
|
+
display: flex;
|
|
42
|
+
inline-size: var(--bf-top-navigation-logo-tag-inline-size);
|
|
43
|
+
inset-block-start: 0;
|
|
44
|
+
inset-inline-start: 0;
|
|
45
|
+
justify-content: center;
|
|
46
|
+
padding-block: 0 var(--bf-top-navigation-logo-icon-bottom-offset);
|
|
47
|
+
padding-inline: 0;
|
|
48
|
+
position: absolute;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) ~ :where(.bf-top-navigation-list.is-banner-actions) :where(.bf-top-navigation-menu-toggle, .bf-top-navigation-search-toggle),
|
|
52
|
+
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-nav) :where(.bf-top-navigation-link, .bf-top-navigation-search-toggle) {
|
|
53
|
+
block-size: 100%;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) :where(.bf-top-navigation-logo-icon) {
|
|
57
|
+
block-size: var(--bf-top-navigation-logo-icon-size);
|
|
58
|
+
display: block;
|
|
59
|
+
flex: 0 0 auto;
|
|
60
|
+
inline-size: var(--bf-top-navigation-logo-icon-size);
|
|
61
|
+
transform: translateX(var(--bf-top-navigation-logo-icon-optical-offset-inline));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:where(.bf-theme) :where(.bf-top-navigation-logo.is-canonical-tagged) :where(.bf-top-navigation-logo-title) {
|
|
65
|
+
align-self: start;
|
|
66
|
+
color: var(--bf-color-text-default);
|
|
67
|
+
font-size: var(--bf-top-navigation-logo-title-font-size, var(--bf-body-font-size, 1rem));
|
|
68
|
+
font-weight: 300;
|
|
69
|
+
line-height: var(--bf-top-navigation-logo-title-line-height, var(--bf-body-line-height, 1.5));
|
|
70
|
+
overflow: visible;
|
|
71
|
+
overflow-wrap: anywhere;
|
|
72
|
+
/* The first title line and the 1rem mark share the mark's fixed centre:
|
|
73
|
+
* tag block-end minus the 0.375rem inset minus half the mark. Symmetric title
|
|
74
|
+
* padding keeps the occupied row stable across all four type-density tiers. */
|
|
75
|
+
padding-block: calc(
|
|
76
|
+
var(--bf-top-navigation-logo-tag-block-size)
|
|
77
|
+
- var(--bf-top-navigation-logo-icon-bottom-offset)
|
|
78
|
+
- (var(--bf-top-navigation-logo-icon-size) / 2)
|
|
79
|
+
- (var(--bf-top-navigation-logo-title-line-height, var(--bf-body-line-height, 1.5rem)) / 2)
|
|
80
|
+
);
|
|
81
|
+
text-overflow: clip;
|
|
82
|
+
white-space: normal;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* A grid-aligned header uses the same eight tracks and gutter as page content.
|
|
86
|
+
* The brand/banner owns columns one and two; primary navigation starts at
|
|
87
|
+
* column three. No independent brand-width token can drift from that grid. */
|
|
88
|
+
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) {
|
|
89
|
+
container-type: inline-size;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@media (min-width: 64.75rem) {
|
|
93
|
+
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-row) {
|
|
94
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
95
|
+
display: grid;
|
|
96
|
+
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-banner) {
|
|
100
|
+
grid-column: 1 / span 2;
|
|
101
|
+
min-inline-size: 0;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-nav) {
|
|
105
|
+
grid-column: 3 / -1;
|
|
106
|
+
min-inline-size: 0;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
:where(.bf-theme) :where(.bf-top-navigation.is-grid-aligned) :where(.bf-top-navigation-dropdown) {
|
|
110
|
+
top: 100%;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Documentation composition stays single-column until its own container can
|
|
115
|
+
* support the intentional 2/6 navigation/content split. The optional
|
|
116
|
+
* navigation slot never creates a mobile rail. */
|
|
117
|
+
:where(.bf-theme) :where(.bf-docs-layout) {
|
|
118
|
+
align-items: start;
|
|
119
|
+
column-gap: var(--bf-grid-gap-inline);
|
|
120
|
+
container-type: inline-size;
|
|
121
|
+
display: grid;
|
|
122
|
+
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
123
|
+
min-inline-size: 0;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
:where(.bf-theme) :where(.bf-docs-layout-navigation, .bf-docs-layout-content) {
|
|
127
|
+
grid-column: 1 / -1;
|
|
128
|
+
min-inline-size: 0;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@media (min-width: 64.75rem) {
|
|
132
|
+
@container (width >= 38.75rem) {
|
|
133
|
+
:where(.bf-theme) :where(.bf-docs-layout:has(> .bf-docs-layout-navigation)) > :where(.bf-docs-layout-navigation) {
|
|
134
|
+
grid-column: span 2;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
:where(.bf-theme) :where(.bf-docs-layout:has(> .bf-docs-layout-navigation)) > :where(.bf-docs-layout-content) {
|
|
138
|
+
grid-column: span 6;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* This is deliberately scoped to an explicit page shell. Importing a BF tier
|
|
144
|
+
* alone never changes the consuming document body's user-agent margin. */
|
|
145
|
+
:where(body.bf-theme.bf-page-shell) {
|
|
146
|
+
background: var(--bf-color-background-default);
|
|
147
|
+
margin: 0;
|
|
148
|
+
min-block-size: 100dvb;
|
|
149
|
+
}
|
|
150
150
|
`;
|
|
151
151
|
}
|
|
@@ -1,148 +1,152 @@
|
|
|
1
1
|
export function panelCss(options) {
|
|
2
2
|
const { bodyTypeStyles, h4TypeStyles } = options;
|
|
3
|
-
return `:where(.bf-theme) :where(.bf-panel) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
inline-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
:where(.bf-theme) :where(.bf-panel-header.is-navigation-brand) :where(.bf-top-navigation-logo-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
:where(.bf-theme) :where(.bf-panel-header)
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
:where(.bf-theme) :where(.bf-panel-header.
|
|
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
|
-
:where(.bf-theme) :where(.bf-panel-toggle:
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
:where(.bf-theme) :where(.bf-panel-toggle:focus-visible) {
|
|
130
|
-
outline:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
:
|
|
143
|
-
padding-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
3
|
+
return `:where(.bf-theme) :where(.bf-panel) {
|
|
4
|
+
--bf-panel-content-padding-inline: var(--bf-component-inline-inset-continuation);
|
|
5
|
+
background: var(--bf-color-background-default);
|
|
6
|
+
color: var(--bf-color-text-default);
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
inline-size: 100%;
|
|
10
|
+
max-inline-size: 100%;
|
|
11
|
+
min-block-size: 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:where(.bf-theme) :where(.bf-panel.is-fill) {
|
|
15
|
+
block-size: 100%;
|
|
16
|
+
max-inline-size: none;
|
|
17
|
+
min-block-size: 0;
|
|
18
|
+
resize: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:where(.bf-theme) :where(.bf-panel.is-fill) > :where(.bf-panel-content) {
|
|
22
|
+
min-block-size: 0;
|
|
23
|
+
overflow: auto;
|
|
24
|
+
overscroll-behavior: contain;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Panel chrome and content consume the live page-grid gutter through a local
|
|
28
|
+
* derived property, so their internal text rails follow the same
|
|
29
|
+
* viewport brackets as surrounding page content. */
|
|
30
|
+
:where(.bf-theme) :where(.bf-panel-header) {
|
|
31
|
+
align-items: start;
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-wrap: wrap;
|
|
34
|
+
gap: var(--bf-field-gap);
|
|
35
|
+
justify-content: space-between;
|
|
36
|
+
padding-block-end: var(--bf-panel-padding-block);
|
|
37
|
+
padding-block-start: var(--bf-panel-padding-block);
|
|
38
|
+
padding-inline: var(--bf-panel-content-padding-inline, var(--bf-panel-padding-inline));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* A navigation brand keeps the Canonical tag attached to the panel's top edge
|
|
42
|
+
* while sharing the panel-content inline inset used by the opposing main
|
|
43
|
+
* region. Ordinary content-panel headers retain their complete padding. */
|
|
44
|
+
:where(.bf-theme) :where(.bf-panel-header.is-navigation-brand) {
|
|
45
|
+
gap: 0;
|
|
46
|
+
padding-block: 0;
|
|
47
|
+
padding-inline-end: 0;
|
|
48
|
+
padding-inline-start: var(--bf-panel-content-padding-inline, var(--bf-panel-padding-inline));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.bf-theme) :where(.bf-panel-header.is-navigation-brand) > :where(.bf-top-navigation-logo.is-canonical-tagged) {
|
|
52
|
+
inline-size: 100%;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:where(.bf-theme) :where(.bf-panel-header.is-navigation-brand) :where(.bf-top-navigation-logo-title) {
|
|
56
|
+
transform: translateY(var(--bf-navigation-brand-title-optical-offset-block));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where(.bf-theme) :where(.bf-panel-header) > :where(.bf-panel-title) {
|
|
60
|
+
min-inline-size: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:where(.bf-theme) :where(.bf-panel-header.is-sticky) {
|
|
64
|
+
background: var(--bf-color-background-default);
|
|
65
|
+
position: sticky;
|
|
66
|
+
top: 0;
|
|
67
|
+
z-index: 5;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Panel chrome that remains outside the panel's scrolling content. */
|
|
71
|
+
:where(.bf-theme) :where(.bf-panel-footer) {
|
|
72
|
+
align-items: center;
|
|
73
|
+
border-block-start: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
|
|
74
|
+
display: flex;
|
|
75
|
+
flex: 0 0 auto;
|
|
76
|
+
flex-wrap: wrap;
|
|
77
|
+
gap: var(--bf-field-gap);
|
|
78
|
+
justify-content: space-between;
|
|
79
|
+
min-block-size: calc(var(--bf-control-box-size-compact) + var(--bf-panel-padding-block));
|
|
80
|
+
padding-block-end: var(--bf-panel-padding-block);
|
|
81
|
+
padding-block-start: 0;
|
|
82
|
+
padding-inline: var(--bf-panel-content-padding-inline, var(--bf-panel-padding-inline));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:where(.bf-theme) :where(.bf-panel-footer.is-sticky) {
|
|
86
|
+
background: var(--bf-color-background-default);
|
|
87
|
+
bottom: 0;
|
|
88
|
+
position: sticky;
|
|
89
|
+
z-index: 5;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
:where(.bf-theme) :where(.bf-panel-title) {
|
|
93
|
+
${h4TypeStyles} margin: 0 0 var(--bf-h4-margin-bottom);
|
|
94
|
+
min-inline-size: 0;
|
|
95
|
+
padding-block-end: 0;
|
|
96
|
+
padding-block-start: var(--bf-h4-nudge-start);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:where(.bf-theme) :where(.bf-panel-controls) {
|
|
100
|
+
align-items: start;
|
|
101
|
+
display: flex;
|
|
102
|
+
flex-wrap: wrap;
|
|
103
|
+
gap: var(--bf-field-gap);
|
|
104
|
+
margin-inline-start: auto;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
:where(.bf-theme) :where(.bf-panel-toggle) {
|
|
108
|
+
${bodyTypeStyles} align-items: center;
|
|
109
|
+
appearance: none;
|
|
110
|
+
background: transparent;
|
|
111
|
+
border: 0;
|
|
112
|
+
color: var(--bf-color-text-default);
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
display: inline-flex;
|
|
115
|
+
gap: calc(var(--bf-baseline) * 0.5);
|
|
116
|
+
justify-content: flex-start;
|
|
117
|
+
margin: 0;
|
|
118
|
+
min-block-size: var(--bf-control-box-size-compact);
|
|
119
|
+
min-inline-size: 0;
|
|
120
|
+
padding-block: var(--bf-control-block-padding-compact);
|
|
121
|
+
padding-inline: 0;
|
|
122
|
+
text-align: left;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
:where(.bf-theme) :where(.bf-panel-toggle:hover) {
|
|
126
|
+
color: var(--bf-color-link-default);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:where(.bf-theme) :where(.bf-panel-toggle:focus:not(:focus-visible)) {
|
|
130
|
+
outline: none;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
:where(.bf-theme) :where(.bf-panel-toggle:focus-visible) {
|
|
134
|
+
outline: 0.125rem solid var(--bf-color-focus);
|
|
135
|
+
outline-offset: 0.125rem;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
:where(.bf-theme) :where(.bf-panel-content) {
|
|
139
|
+
flex: 1 1 auto;
|
|
140
|
+
min-block-size: 0;
|
|
141
|
+
padding-block-end: var(--bf-panel-padding-block);
|
|
142
|
+
padding-block-start: var(--bf-panel-padding-block);
|
|
143
|
+
padding-inline: var(--bf-panel-content-padding-inline, var(--bf-panel-padding-inline));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
:where(.bf-theme) :where(.bf-panel-content.is-flush) {
|
|
147
|
+
padding-block: 0;
|
|
148
|
+
padding-inline: 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
147
151
|
`;
|
|
148
152
|
}
|
|
@@ -2,7 +2,6 @@ type SearchBoxAndFilterCssOptions = {
|
|
|
2
2
|
bodySelectedStartNudge: string;
|
|
3
3
|
bodyTypeStyles: string;
|
|
4
4
|
buttonBlockPaddingVar: string;
|
|
5
|
-
h6TypeStyles: string;
|
|
6
5
|
inputMarginBottom: string;
|
|
7
6
|
};
|
|
8
7
|
export declare function searchBoxAndFilterCss(options: SearchBoxAndFilterCssOptions): string;
|