baseline-foundry 0.1.3 → 0.1.4

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.
Files changed (43) hide show
  1. package/README.md +568 -552
  2. package/config/experiments/ibm-plex-engine-smoke.json +115 -115
  3. package/config/experiments/ubuntu-engine-smoke.json +115 -115
  4. package/config/foundation-theme.json +110 -110
  5. package/config/tiers/app.json +116 -116
  6. package/config/tiers/documentation.json +116 -116
  7. package/config/tiers/editorial.json +116 -116
  8. package/config/tiers/os.json +116 -116
  9. package/dist/baseline-grid-overlay.js +43 -43
  10. package/dist/css-app-tier.js +73 -73
  11. package/dist/css-components/article-pagination.js +140 -140
  12. package/dist/css-components/button-actions.js +161 -161
  13. package/dist/css-components/cards-options.js +176 -176
  14. package/dist/css-components/chip-badge-status.js +158 -158
  15. package/dist/css-components/content-card.js +490 -490
  16. package/dist/css-components/control-row.js +14 -14
  17. package/dist/css-components/cta-figure-aspect.js +120 -120
  18. package/dist/css-components/document-navigation.js +390 -390
  19. package/dist/css-components/editorial-content.js +42 -42
  20. package/dist/css-components/icon.js +72 -72
  21. package/dist/css-components/interactive-feedback.js +217 -217
  22. package/dist/css-components/interactive-tables.js +155 -155
  23. package/dist/css-components/legacy-navigation.d.ts +9 -0
  24. package/dist/css-components/legacy-navigation.js +763 -0
  25. package/dist/css-components/linked-logo-site-layout.js +177 -177
  26. package/dist/css-components/list-tree.js +94 -94
  27. package/dist/css-components/logo-media.js +201 -201
  28. package/dist/css-components/navigation-layout.js +144 -144
  29. package/dist/css-components/panel.js +144 -144
  30. package/dist/css-components/search-box-and-filter.js +263 -263
  31. package/dist/css-components/sites-editorial-ports.js +243 -243
  32. package/dist/css-components/sites-foundation.js +146 -146
  33. package/dist/css-components/sites-rich-lists.js +344 -344
  34. package/dist/css-components/static-content-ports.js +182 -182
  35. package/dist/css-components/tab-section.js +82 -82
  36. package/dist/css-components/table.js +75 -75
  37. package/dist/css-components/tabs-choice-breadcrumbs.js +303 -303
  38. package/dist/css-components/tiered-list-equal-height-row.js +271 -271
  39. package/dist/css-components.js +1791 -2542
  40. package/dist/css-grid.js +172 -172
  41. package/dist/css.js +240 -240
  42. package/docs/publishing.md +30 -13
  43. package/package.json +119 -108
@@ -1,307 +1,307 @@
1
1
  export function tabsChoiceBreadcrumbsCss(options) {
2
2
  const { bodyCaseTypeStyles, bodyStrongTypeStyles, bodyTypeStyles, buttonMarginBottom, buttonPadding, } = options;
3
- return `:where(.bf-theme) :where(.bf-tabs) {
4
- display: grid;
5
- min-inline-size: 0;
6
- }
7
-
8
- :where(.bf-theme) :where(.bf-tabs-list) {
9
- border-bottom: var(--bf-border-width) solid var(--bf-color-border-default);
10
- display: flex;
11
- gap: 0;
12
- list-style: none;
13
- /* Tabs keep their occupied block on the grid at the list boundary rather
14
- than leaving each link's control compensation between its active rule and
15
- the list rule. */
16
- margin: 0 0 calc((var(--bf-baseline) * 2) - var(--bf-border-width));
17
- min-inline-size: 0;
18
- overflow-x: auto;
19
- padding: 0;
20
- white-space: nowrap;
21
- }
22
-
23
- :where(.bf-theme) :where(.bf-tabs-item) {
24
- margin: 0;
25
- min-inline-size: 0;
26
- padding: 0;
27
- }
28
-
29
- :where(.bf-theme) :where(.bf-tabs-link) {
30
- ${bodyTypeStyles} align-items: center;
31
- background: transparent;
32
- border: 0;
33
- border-bottom: var(--bf-bar-thickness) solid transparent;
34
- color: var(--bf-color-text-muted);
35
- cursor: pointer;
36
- display: inline-flex;
37
- gap: calc(var(--bf-baseline) * 0.5);
38
- justify-content: center;
39
- margin-bottom: 0;
40
- padding-block-end: calc(var(--bf-body-nudge-end) + var(--bf-baseline) - var(--bf-bar-thickness));
41
- padding-block-start: var(--bf-body-nudge-start);
42
- padding-inline: var(--bf-control-inline-padding-action);
43
- text-decoration: none;
44
- }
45
-
46
- :where(.bf-theme) :where(.bf-tabs-link:hover) {
47
- background: var(--bf-color-background-hover);
48
- color: var(--bf-color-text-default);
49
- }
50
-
51
- :where(.bf-theme) :where(.bf-tabs-link:focus:not(:focus-visible)) {
52
- outline: none;
53
- }
54
-
55
- :where(.bf-theme) :where(.bf-tabs-link:focus-visible) {
56
- color: var(--bf-color-text-default);
57
- outline: 2px solid var(--bf-color-focus);
58
- outline-offset: -2px;
59
- }
60
-
61
- :where(.bf-theme) :where(.bf-tabs-link.is-active, .bf-tabs-link[aria-selected='true']) {
62
- border-bottom-color: var(--bf-color-text-default);
63
- color: var(--bf-color-text-default);
64
- }
65
-
66
- :where(.bf-theme) :where(.bf-tabs-panel) {
67
- min-inline-size: 0;
68
- }
69
-
70
- :where(.bf-theme) :where(.bf-tabs-panel)[aria-hidden='true'] {
71
- display: none;
72
- }
73
-
74
- :where(.bf-theme) :where(.bf-tabs.is-equal) {
75
- --bf-ui-tabs-equal-min: 8rem;
76
- }
77
-
78
- :where(.bf-theme) :where(.bf-tabs.is-equal) :where(.bf-tabs-list) {
79
- display: grid;
80
- gap: calc(var(--bf-baseline) * 2);
81
- grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--bf-ui-tabs-equal-min)), 1fr));
82
- overflow: visible;
83
- white-space: normal;
84
- }
85
-
86
- :where(.bf-theme) :where(.bf-tabs.is-equal) :where(.bf-tabs-item) {
87
- min-inline-size: 0;
88
- white-space: normal;
89
- }
90
-
91
- :where(.bf-theme) :where(.bf-tabs.is-equal) :where(.bf-tabs-link) {
92
- display: flex;
93
- inline-size: 100%;
94
- text-align: center;
95
- white-space: normal;
96
- }
97
-
98
- :where(.bf-theme) :where(.bf-choice-list) {
99
- display: grid;
100
- gap: var(--bf-field-gap);
101
- }
102
-
103
- :where(.bf-theme) :where(.bf-choice-row) {
104
- align-items: center;
105
- background: var(--bf-color-background-default);
106
- border: var(--bf-border-width) solid var(--bf-color-border-default);
107
- color: var(--bf-color-text-default);
108
- cursor: pointer;
109
- display: grid;
110
- gap: calc(var(--bf-baseline) * 0.75);
111
- grid-template-columns: auto minmax(0, 1fr) auto;
112
- margin: 0 0 ${buttonMarginBottom};
113
- min-inline-size: 0;
114
- ${buttonPadding} padding-inline: var(--bf-control-inline-padding-field);
115
- }
116
-
117
- :where(.bf-theme) :where(.bf-choice-row:hover) {
118
- background: var(--bf-color-background-hover);
119
- }
120
-
121
- :where(.bf-theme) :where(.bf-choice-row:has(:focus-visible)) {
122
- outline: 2px solid var(--bf-color-focus);
123
- outline-offset: -2px;
124
- }
125
-
126
- :where(.bf-theme) :where(.bf-choice-row input[type='radio']) {
127
- margin: 0;
128
- }
129
-
130
- :where(.bf-theme) :where(.bf-choice-row-name) {
131
- ${bodyStrongTypeStyles} display: block;
132
- margin: 0;
133
- min-inline-size: 0;
134
- overflow: hidden;
135
- text-overflow: ellipsis;
136
- }
137
-
138
- :where(.bf-theme) :where(.bf-choice-row-meta) {
139
- ${bodyTypeStyles} color: var(--bf-color-text-muted);
140
- display: block;
141
- margin: 0;
142
- min-inline-size: 0;
143
- overflow: hidden;
144
- text-overflow: ellipsis;
145
- white-space: nowrap;
146
- }
147
-
148
- :where(.bf-theme) :where(.bf-choice-row.is-active),
149
- :where(.bf-theme) :where(.bf-choice-row:has(input[type='radio']:checked)) {
150
- background: var(--bf-color-background-active);
151
- border-color: var(--bf-color-focus);
152
- }
153
-
154
- :where(.bf-theme) :where(.bf-inline-options) {
155
- border-bottom: var(--bf-border-width) solid var(--bf-color-border-default);
156
- display: grid;
157
- gap: var(--bf-field-gap);
158
- padding-block-end: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
159
- padding-block-start: var(--bf-panel-padding-block);
160
- padding-inline: var(--bf-panel-padding-inline);
161
- }
162
-
163
- :where(.bf-theme) :where(.bf-inline-options-heading) {
164
- ${bodyCaseTypeStyles} color: var(--bf-color-text-muted);
165
- display: block;
166
- margin: 0;
167
- }
168
-
169
- :where(.bf-theme) :where(.bf-inline-options-heading) :where(.bf-form-label) {
170
- color: inherit;
171
- }
172
-
173
- :where(.bf-theme) :where(.bf-inline-options-options) {
174
- display: flex;
175
- flex-wrap: wrap;
176
- gap: calc(var(--bf-baseline) * 3);
177
- }
178
-
179
- :where(.bf-theme) :where(.bf-inline-options-option) {
180
- align-items: center;
181
- cursor: pointer;
182
- display: flex;
183
- gap: var(--bf-field-gap);
184
- }
185
-
186
- :where(.bf-theme) :where(.bf-inline-options-option) input[type='radio'] {
187
- margin: 0;
188
- }
189
-
190
- :where(.bf-theme) :where(.bf-segmented-control, .bf-tab-buttons) {
191
- display: block;
192
- min-inline-size: 0;
193
- }
194
-
195
- :where(.bf-theme) :where(.bf-segmented-control-list, .bf-tab-buttons-list) {
196
- display: flex;
197
- flex-wrap: wrap;
198
- list-style: none;
199
- margin: 0;
200
- min-inline-size: 0;
201
- padding: 0;
202
- }
203
-
204
- :where(.bf-theme) :where(.bf-segmented-control-item, .bf-tab-buttons-item) {
205
- margin: 0;
206
- min-inline-size: 0;
207
- padding: 0;
208
- }
209
-
210
- :where(.bf-theme) :where(.bf-segmented-control-item + .bf-segmented-control-item, .bf-tab-buttons-item + .bf-tab-buttons-item) {
211
- margin-inline-start: calc(var(--bf-border-width) * -1);
212
- }
213
-
214
- :where(.bf-theme) :where(.bf-segmented-control-button, .bf-tab-buttons-button) {
215
- ${bodyTypeStyles} align-items: center;
216
- appearance: none;
217
- background-color: var(--bf-color-background-default);
218
- border: var(--bf-border-width) solid var(--bf-color-border-high-contrast);
219
- border-radius: 0;
220
- color: var(--bf-color-text-default);
221
- cursor: pointer;
222
- display: inline-flex;
223
- justify-content: center;
224
- margin-bottom: ${buttonMarginBottom};
225
- max-inline-size: 100%;
226
- overflow: hidden;
227
- ${buttonPadding} padding-inline: var(--bf-control-inline-padding-action);
228
- text-align: center;
229
- text-decoration: none;
230
- text-overflow: ellipsis;
231
- white-space: nowrap;
232
- }
233
-
234
- :where(.bf-theme) :where(.bf-segmented-control-item:first-child .bf-segmented-control-button, .bf-tab-buttons-item:first-child .bf-tab-buttons-button) {
235
- border-end-start-radius: var(--bf-radius);
236
- border-start-start-radius: var(--bf-radius);
237
- }
238
-
239
- :where(.bf-theme) :where(.bf-segmented-control-item:last-child .bf-segmented-control-button, .bf-tab-buttons-item:last-child .bf-tab-buttons-button) {
240
- border-end-end-radius: var(--bf-radius);
241
- border-start-end-radius: var(--bf-radius);
242
- }
243
-
244
- :where(.bf-theme) :where(.bf-segmented-control-button:hover, .bf-tab-buttons-button:hover) {
245
- background-color: var(--bf-color-background-hover);
246
- }
247
-
248
- :where(.bf-theme) :where(.bf-segmented-control-button:focus:not(:focus-visible), .bf-tab-buttons-button:focus:not(:focus-visible)) {
249
- outline: none;
250
- }
251
-
252
- :where(.bf-theme) :where(.bf-segmented-control-button:focus-visible, .bf-tab-buttons-button:focus-visible) {
253
- outline: 2px solid var(--bf-color-focus);
254
- outline-offset: -2px;
255
- z-index: 2;
256
- }
257
-
258
- :where(.bf-theme) :where(.bf-segmented-control-button.is-active, .bf-tab-buttons-button.is-active, .bf-segmented-control-button[aria-pressed='true'], .bf-tab-buttons-button[aria-pressed='true'], .bf-segmented-control-button[aria-selected='true'], .bf-tab-buttons-button[aria-selected='true']) {
259
- background-color: var(--bf-color-background-active);
260
- color: var(--bf-color-text-default);
261
- z-index: 1;
262
- }
263
-
264
- :where(.bf-theme) :where(.bf-breadcrumbs) {
265
- display: block;
266
- margin: 0;
267
- width: 100%;
268
- }
269
-
270
- :where(.bf-theme) :where(.bf-breadcrumbs-items) {
271
- align-items: center;
272
- display: flex;
273
- flex-wrap: wrap;
274
- gap: calc(var(--bf-baseline) * 0.5) calc(var(--bf-baseline) * 1.25);
275
- list-style: none;
276
- margin: 0;
277
- min-inline-size: 0;
278
- padding: 0;
279
- }
280
-
281
- :where(.bf-theme) :where(.bf-breadcrumbs-item) {
282
- ${bodyCaseTypeStyles} color: var(--bf-color-text-muted);
283
- margin: 0;
284
- min-inline-size: 0;
285
- }
286
-
287
- :where(.bf-theme) :where(.bf-breadcrumbs-item) + :where(.bf-breadcrumbs-item)::before {
288
- color: var(--bf-color-text-muted);
289
- content: "/";
290
- margin-inline-end: calc(var(--bf-baseline) * 0.75);
291
- }
292
-
293
- :where(.bf-theme) :where(.bf-breadcrumbs-item) a {
294
- color: inherit;
295
- text-decoration: none;
296
- }
297
-
298
- :where(.bf-theme) :where(.bf-breadcrumbs-item) a:hover {
299
- color: var(--bf-color-text-default);
300
- text-decoration: underline;
301
- }
302
-
303
- :where(.bf-theme) :where(.bf-breadcrumbs-item [aria-current='page'], .bf-breadcrumbs-item.is-active) {
304
- color: var(--bf-color-text-default);
305
- }
3
+ return `:where(.bf-theme) :where(.bf-tabs) {
4
+ display: grid;
5
+ min-inline-size: 0;
6
+ }
7
+
8
+ :where(.bf-theme) :where(.bf-tabs-list) {
9
+ border-bottom: var(--bf-border-width) solid var(--bf-color-border-default);
10
+ display: flex;
11
+ gap: 0;
12
+ list-style: none;
13
+ /* Tabs keep their occupied block on the grid at the list boundary rather
14
+ than leaving each link's control compensation between its active rule and
15
+ the list rule. */
16
+ margin: 0 0 calc((var(--bf-baseline) * 2) - var(--bf-border-width));
17
+ min-inline-size: 0;
18
+ overflow-x: auto;
19
+ padding: 0;
20
+ white-space: nowrap;
21
+ }
22
+
23
+ :where(.bf-theme) :where(.bf-tabs-item) {
24
+ margin: 0;
25
+ min-inline-size: 0;
26
+ padding: 0;
27
+ }
28
+
29
+ :where(.bf-theme) :where(.bf-tabs-link) {
30
+ ${bodyTypeStyles} align-items: center;
31
+ background: transparent;
32
+ border: 0;
33
+ border-bottom: var(--bf-bar-thickness) solid transparent;
34
+ color: var(--bf-color-text-muted);
35
+ cursor: pointer;
36
+ display: inline-flex;
37
+ gap: calc(var(--bf-baseline) * 0.5);
38
+ justify-content: center;
39
+ margin-bottom: 0;
40
+ padding-block-end: calc(var(--bf-body-nudge-end) + var(--bf-baseline) - var(--bf-bar-thickness));
41
+ padding-block-start: var(--bf-body-nudge-start);
42
+ padding-inline: var(--bf-control-inline-padding-action);
43
+ text-decoration: none;
44
+ }
45
+
46
+ :where(.bf-theme) :where(.bf-tabs-link:hover) {
47
+ background: var(--bf-color-background-hover);
48
+ color: var(--bf-color-text-default);
49
+ }
50
+
51
+ :where(.bf-theme) :where(.bf-tabs-link:focus:not(:focus-visible)) {
52
+ outline: none;
53
+ }
54
+
55
+ :where(.bf-theme) :where(.bf-tabs-link:focus-visible) {
56
+ color: var(--bf-color-text-default);
57
+ outline: 2px solid var(--bf-color-focus);
58
+ outline-offset: -2px;
59
+ }
60
+
61
+ :where(.bf-theme) :where(.bf-tabs-link.is-active, .bf-tabs-link[aria-selected='true']) {
62
+ border-bottom-color: var(--bf-color-text-default);
63
+ color: var(--bf-color-text-default);
64
+ }
65
+
66
+ :where(.bf-theme) :where(.bf-tabs-panel) {
67
+ min-inline-size: 0;
68
+ }
69
+
70
+ :where(.bf-theme) :where(.bf-tabs-panel)[aria-hidden='true'] {
71
+ display: none;
72
+ }
73
+
74
+ :where(.bf-theme) :where(.bf-tabs.is-equal) {
75
+ --bf-ui-tabs-equal-min: 8rem;
76
+ }
77
+
78
+ :where(.bf-theme) :where(.bf-tabs.is-equal) :where(.bf-tabs-list) {
79
+ display: grid;
80
+ gap: calc(var(--bf-baseline) * 2);
81
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--bf-ui-tabs-equal-min)), 1fr));
82
+ overflow: visible;
83
+ white-space: normal;
84
+ }
85
+
86
+ :where(.bf-theme) :where(.bf-tabs.is-equal) :where(.bf-tabs-item) {
87
+ min-inline-size: 0;
88
+ white-space: normal;
89
+ }
90
+
91
+ :where(.bf-theme) :where(.bf-tabs.is-equal) :where(.bf-tabs-link) {
92
+ display: flex;
93
+ inline-size: 100%;
94
+ text-align: center;
95
+ white-space: normal;
96
+ }
97
+
98
+ :where(.bf-theme) :where(.bf-choice-list) {
99
+ display: grid;
100
+ gap: var(--bf-field-gap);
101
+ }
102
+
103
+ :where(.bf-theme) :where(.bf-choice-row) {
104
+ align-items: center;
105
+ background: var(--bf-color-background-default);
106
+ border: var(--bf-border-width) solid var(--bf-color-border-default);
107
+ color: var(--bf-color-text-default);
108
+ cursor: pointer;
109
+ display: grid;
110
+ gap: calc(var(--bf-baseline) * 0.75);
111
+ grid-template-columns: auto minmax(0, 1fr) auto;
112
+ margin: 0 0 ${buttonMarginBottom};
113
+ min-inline-size: 0;
114
+ ${buttonPadding} padding-inline: var(--bf-control-inline-padding-field);
115
+ }
116
+
117
+ :where(.bf-theme) :where(.bf-choice-row:hover) {
118
+ background: var(--bf-color-background-hover);
119
+ }
120
+
121
+ :where(.bf-theme) :where(.bf-choice-row:has(:focus-visible)) {
122
+ outline: 2px solid var(--bf-color-focus);
123
+ outline-offset: -2px;
124
+ }
125
+
126
+ :where(.bf-theme) :where(.bf-choice-row input[type='radio']) {
127
+ margin: 0;
128
+ }
129
+
130
+ :where(.bf-theme) :where(.bf-choice-row-name) {
131
+ ${bodyStrongTypeStyles} display: block;
132
+ margin: 0;
133
+ min-inline-size: 0;
134
+ overflow: hidden;
135
+ text-overflow: ellipsis;
136
+ }
137
+
138
+ :where(.bf-theme) :where(.bf-choice-row-meta) {
139
+ ${bodyTypeStyles} color: var(--bf-color-text-muted);
140
+ display: block;
141
+ margin: 0;
142
+ min-inline-size: 0;
143
+ overflow: hidden;
144
+ text-overflow: ellipsis;
145
+ white-space: nowrap;
146
+ }
147
+
148
+ :where(.bf-theme) :where(.bf-choice-row.is-active),
149
+ :where(.bf-theme) :where(.bf-choice-row:has(input[type='radio']:checked)) {
150
+ background: var(--bf-color-background-active);
151
+ border-color: var(--bf-color-focus);
152
+ }
153
+
154
+ :where(.bf-theme) :where(.bf-inline-options) {
155
+ border-bottom: var(--bf-border-width) solid var(--bf-color-border-default);
156
+ display: grid;
157
+ gap: var(--bf-field-gap);
158
+ padding-block-end: calc(var(--bf-panel-padding-block) - var(--bf-border-width));
159
+ padding-block-start: var(--bf-panel-padding-block);
160
+ padding-inline: var(--bf-panel-padding-inline);
161
+ }
162
+
163
+ :where(.bf-theme) :where(.bf-inline-options-heading) {
164
+ ${bodyCaseTypeStyles} color: var(--bf-color-text-muted);
165
+ display: block;
166
+ margin: 0;
167
+ }
168
+
169
+ :where(.bf-theme) :where(.bf-inline-options-heading) :where(.bf-form-label) {
170
+ color: inherit;
171
+ }
172
+
173
+ :where(.bf-theme) :where(.bf-inline-options-options) {
174
+ display: flex;
175
+ flex-wrap: wrap;
176
+ gap: calc(var(--bf-baseline) * 3);
177
+ }
178
+
179
+ :where(.bf-theme) :where(.bf-inline-options-option) {
180
+ align-items: center;
181
+ cursor: pointer;
182
+ display: flex;
183
+ gap: var(--bf-field-gap);
184
+ }
185
+
186
+ :where(.bf-theme) :where(.bf-inline-options-option) input[type='radio'] {
187
+ margin: 0;
188
+ }
189
+
190
+ :where(.bf-theme) :where(.bf-segmented-control, .bf-tab-buttons) {
191
+ display: block;
192
+ min-inline-size: 0;
193
+ }
194
+
195
+ :where(.bf-theme) :where(.bf-segmented-control-list, .bf-tab-buttons-list) {
196
+ display: flex;
197
+ flex-wrap: wrap;
198
+ list-style: none;
199
+ margin: 0;
200
+ min-inline-size: 0;
201
+ padding: 0;
202
+ }
203
+
204
+ :where(.bf-theme) :where(.bf-segmented-control-item, .bf-tab-buttons-item) {
205
+ margin: 0;
206
+ min-inline-size: 0;
207
+ padding: 0;
208
+ }
209
+
210
+ :where(.bf-theme) :where(.bf-segmented-control-item + .bf-segmented-control-item, .bf-tab-buttons-item + .bf-tab-buttons-item) {
211
+ margin-inline-start: calc(var(--bf-border-width) * -1);
212
+ }
213
+
214
+ :where(.bf-theme) :where(.bf-segmented-control-button, .bf-tab-buttons-button) {
215
+ ${bodyTypeStyles} align-items: center;
216
+ appearance: none;
217
+ background-color: var(--bf-color-background-default);
218
+ border: var(--bf-border-width) solid var(--bf-color-border-high-contrast);
219
+ border-radius: 0;
220
+ color: var(--bf-color-text-default);
221
+ cursor: pointer;
222
+ display: inline-flex;
223
+ justify-content: center;
224
+ margin-bottom: ${buttonMarginBottom};
225
+ max-inline-size: 100%;
226
+ overflow: hidden;
227
+ ${buttonPadding} padding-inline: var(--bf-control-inline-padding-action);
228
+ text-align: center;
229
+ text-decoration: none;
230
+ text-overflow: ellipsis;
231
+ white-space: nowrap;
232
+ }
233
+
234
+ :where(.bf-theme) :where(.bf-segmented-control-item:first-child .bf-segmented-control-button, .bf-tab-buttons-item:first-child .bf-tab-buttons-button) {
235
+ border-end-start-radius: var(--bf-radius);
236
+ border-start-start-radius: var(--bf-radius);
237
+ }
238
+
239
+ :where(.bf-theme) :where(.bf-segmented-control-item:last-child .bf-segmented-control-button, .bf-tab-buttons-item:last-child .bf-tab-buttons-button) {
240
+ border-end-end-radius: var(--bf-radius);
241
+ border-start-end-radius: var(--bf-radius);
242
+ }
243
+
244
+ :where(.bf-theme) :where(.bf-segmented-control-button:hover, .bf-tab-buttons-button:hover) {
245
+ background-color: var(--bf-color-background-hover);
246
+ }
247
+
248
+ :where(.bf-theme) :where(.bf-segmented-control-button:focus:not(:focus-visible), .bf-tab-buttons-button:focus:not(:focus-visible)) {
249
+ outline: none;
250
+ }
251
+
252
+ :where(.bf-theme) :where(.bf-segmented-control-button:focus-visible, .bf-tab-buttons-button:focus-visible) {
253
+ outline: 2px solid var(--bf-color-focus);
254
+ outline-offset: -2px;
255
+ z-index: 2;
256
+ }
257
+
258
+ :where(.bf-theme) :where(.bf-segmented-control-button.is-active, .bf-tab-buttons-button.is-active, .bf-segmented-control-button[aria-pressed='true'], .bf-tab-buttons-button[aria-pressed='true'], .bf-segmented-control-button[aria-selected='true'], .bf-tab-buttons-button[aria-selected='true']) {
259
+ background-color: var(--bf-color-background-active);
260
+ color: var(--bf-color-text-default);
261
+ z-index: 1;
262
+ }
263
+
264
+ :where(.bf-theme) :where(.bf-breadcrumbs) {
265
+ display: block;
266
+ margin: 0;
267
+ width: 100%;
268
+ }
269
+
270
+ :where(.bf-theme) :where(.bf-breadcrumbs-items) {
271
+ align-items: center;
272
+ display: flex;
273
+ flex-wrap: wrap;
274
+ gap: calc(var(--bf-baseline) * 0.5) calc(var(--bf-baseline) * 1.25);
275
+ list-style: none;
276
+ margin: 0;
277
+ min-inline-size: 0;
278
+ padding: 0;
279
+ }
280
+
281
+ :where(.bf-theme) :where(.bf-breadcrumbs-item) {
282
+ ${bodyCaseTypeStyles} color: var(--bf-color-text-muted);
283
+ margin: 0;
284
+ min-inline-size: 0;
285
+ }
286
+
287
+ :where(.bf-theme) :where(.bf-breadcrumbs-item) + :where(.bf-breadcrumbs-item)::before {
288
+ color: var(--bf-color-text-muted);
289
+ content: "/";
290
+ margin-inline-end: calc(var(--bf-baseline) * 0.75);
291
+ }
292
+
293
+ :where(.bf-theme) :where(.bf-breadcrumbs-item) a {
294
+ color: inherit;
295
+ text-decoration: none;
296
+ }
297
+
298
+ :where(.bf-theme) :where(.bf-breadcrumbs-item) a:hover {
299
+ color: var(--bf-color-text-default);
300
+ text-decoration: underline;
301
+ }
302
+
303
+ :where(.bf-theme) :where(.bf-breadcrumbs-item [aria-current='page'], .bf-breadcrumbs-item.is-active) {
304
+ color: var(--bf-color-text-default);
305
+ }
306
306
  `;
307
307
  }