baseline-foundry 0.1.3

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 (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +588 -0
  3. package/config/experiments/ibm-plex-engine-smoke.json +115 -0
  4. package/config/experiments/ubuntu-engine-smoke.json +115 -0
  5. package/config/foundation-theme.json +117 -0
  6. package/config/tiers/app.json +120 -0
  7. package/config/tiers/documentation.json +120 -0
  8. package/config/tiers/editorial.json +120 -0
  9. package/config/tiers/os.json +120 -0
  10. package/dist/accordion.d.ts +5 -0
  11. package/dist/accordion.js +32 -0
  12. package/dist/application-layout.d.ts +4 -0
  13. package/dist/application-layout.js +181 -0
  14. package/dist/baseline-grid-overlay.d.ts +5 -0
  15. package/dist/baseline-grid-overlay.js +50 -0
  16. package/dist/baseline-grid-theme.d.ts +3 -0
  17. package/dist/baseline-grid-theme.js +3 -0
  18. package/dist/baseline-grid.d.ts +7 -0
  19. package/dist/baseline-grid.js +35 -0
  20. package/dist/build.d.ts +21 -0
  21. package/dist/build.js +440 -0
  22. package/dist/code-snippet.d.ts +6 -0
  23. package/dist/code-snippet.js +95 -0
  24. package/dist/contextual-menu.d.ts +4 -0
  25. package/dist/contextual-menu.js +156 -0
  26. package/dist/css-app-tier.d.ts +1 -0
  27. package/dist/css-app-tier.js +77 -0
  28. package/dist/css-components/article-pagination.d.ts +13 -0
  29. package/dist/css-components/article-pagination.js +151 -0
  30. package/dist/css-components/button-actions.d.ts +7 -0
  31. package/dist/css-components/button-actions.js +165 -0
  32. package/dist/css-components/cards-options.d.ts +6 -0
  33. package/dist/css-components/cards-options.js +180 -0
  34. package/dist/css-components/chip-badge-status.d.ts +10 -0
  35. package/dist/css-components/chip-badge-status.js +162 -0
  36. package/dist/css-components/content-card.d.ts +25 -0
  37. package/dist/css-components/content-card.js +517 -0
  38. package/dist/css-components/control-row.d.ts +2 -0
  39. package/dist/css-components/control-row.js +18 -0
  40. package/dist/css-components/cta-figure-aspect.d.ts +1 -0
  41. package/dist/css-components/cta-figure-aspect.js +123 -0
  42. package/dist/css-components/document-navigation.d.ts +13 -0
  43. package/dist/css-components/document-navigation.js +400 -0
  44. package/dist/css-components/editorial-content.d.ts +6 -0
  45. package/dist/css-components/editorial-content.js +52 -0
  46. package/dist/css-components/icon.d.ts +1 -0
  47. package/dist/css-components/icon.js +75 -0
  48. package/dist/css-components/interactive-feedback.d.ts +2 -0
  49. package/dist/css-components/interactive-feedback.js +230 -0
  50. package/dist/css-components/interactive-tables.d.ts +7 -0
  51. package/dist/css-components/interactive-tables.js +164 -0
  52. package/dist/css-components/linked-logo-site-layout.d.ts +21 -0
  53. package/dist/css-components/linked-logo-site-layout.js +214 -0
  54. package/dist/css-components/list-tree.d.ts +5 -0
  55. package/dist/css-components/list-tree.js +98 -0
  56. package/dist/css-components/list.d.ts +3 -0
  57. package/dist/css-components/list.js +119 -0
  58. package/dist/css-components/logo-media.d.ts +16 -0
  59. package/dist/css-components/logo-media.js +219 -0
  60. package/dist/css-components/navigation-layout.d.ts +5 -0
  61. package/dist/css-components/navigation-layout.js +151 -0
  62. package/dist/css-components/panel.d.ts +6 -0
  63. package/dist/css-components/panel.js +148 -0
  64. package/dist/css-components/search-box-and-filter.d.ts +9 -0
  65. package/dist/css-components/search-box-and-filter.js +267 -0
  66. package/dist/css-components/sites-editorial-ports.d.ts +19 -0
  67. package/dist/css-components/sites-editorial-ports.js +264 -0
  68. package/dist/css-components/sites-foundation.d.ts +17 -0
  69. package/dist/css-components/sites-foundation.js +173 -0
  70. package/dist/css-components/sites-rich-lists.d.ts +18 -0
  71. package/dist/css-components/sites-rich-lists.js +364 -0
  72. package/dist/css-components/static-content-ports.d.ts +14 -0
  73. package/dist/css-components/static-content-ports.js +206 -0
  74. package/dist/css-components/tab-section.d.ts +19 -0
  75. package/dist/css-components/tab-section.js +103 -0
  76. package/dist/css-components/table.d.ts +7 -0
  77. package/dist/css-components/table.js +79 -0
  78. package/dist/css-components/tabs-choice-breadcrumbs.d.ts +9 -0
  79. package/dist/css-components/tabs-choice-breadcrumbs.js +307 -0
  80. package/dist/css-components/tiered-list-equal-height-row.d.ts +1 -0
  81. package/dist/css-components/tiered-list-equal-height-row.js +286 -0
  82. package/dist/css-components.d.ts +2 -0
  83. package/dist/css-components.js +2701 -0
  84. package/dist/css-grid.d.ts +1 -0
  85. package/dist/css-grid.js +179 -0
  86. package/dist/css.d.ts +6 -0
  87. package/dist/css.js +431 -0
  88. package/dist/experiments/ibm-plex-engine-smoke/styles.css +8969 -0
  89. package/dist/experiments/ibm-plex-engine-smoke/surfaces.json +604 -0
  90. package/dist/experiments/ibm-plex-engine-smoke/tokens.json +217 -0
  91. package/dist/in-page-navigation.d.ts +7 -0
  92. package/dist/in-page-navigation.js +136 -0
  93. package/dist/index.d.ts +37 -0
  94. package/dist/index.js +18 -0
  95. package/dist/interactive-feedback.d.ts +14 -0
  96. package/dist/interactive-feedback.js +96 -0
  97. package/dist/interactive-tables.d.ts +28 -0
  98. package/dist/interactive-tables.js +184 -0
  99. package/dist/list-tree.d.ts +4 -0
  100. package/dist/list-tree.js +44 -0
  101. package/dist/panel-drawer.d.ts +4 -0
  102. package/dist/panel-drawer.js +171 -0
  103. package/dist/presets/app-tier/styles.css +9459 -0
  104. package/dist/presets/app-tier/surfaces.json +1225 -0
  105. package/dist/presets/app-tier/tokens.json +221 -0
  106. package/dist/presets/prose/styles.css +9442 -0
  107. package/dist/presets/prose/surfaces.json +1225 -0
  108. package/dist/presets/prose/tokens.json +221 -0
  109. package/dist/presets.d.ts +6 -0
  110. package/dist/presets.js +27 -0
  111. package/dist/range-controls.d.ts +9 -0
  112. package/dist/range-controls.js +73 -0
  113. package/dist/resizable-aside.d.ts +4 -0
  114. package/dist/resizable-aside.js +328 -0
  115. package/dist/side-navigation.d.ts +4 -0
  116. package/dist/side-navigation.js +219 -0
  117. package/dist/styles.css +9442 -0
  118. package/dist/surfaces.json +1225 -0
  119. package/dist/tabs.d.ts +4 -0
  120. package/dist/tabs.js +88 -0
  121. package/dist/tier-registry.d.ts +10 -0
  122. package/dist/tier-registry.js +25 -0
  123. package/dist/tiers/app/styles.css +9459 -0
  124. package/dist/tiers/app/surfaces.json +1225 -0
  125. package/dist/tiers/app/tokens.json +221 -0
  126. package/dist/tiers/documentation/styles.css +9442 -0
  127. package/dist/tiers/documentation/surfaces.json +1225 -0
  128. package/dist/tiers/documentation/tokens.json +221 -0
  129. package/dist/tiers/editorial/styles.css +9442 -0
  130. package/dist/tiers/editorial/surfaces.json +1225 -0
  131. package/dist/tiers/editorial/tokens.json +221 -0
  132. package/dist/tiers/os/styles.css +9442 -0
  133. package/dist/tiers/os/surfaces.json +1225 -0
  134. package/dist/tiers/os/tokens.json +221 -0
  135. package/dist/tokens.json +221 -0
  136. package/dist/tooltip.d.ts +4 -0
  137. package/dist/tooltip.js +70 -0
  138. package/dist/top-navigation.d.ts +4 -0
  139. package/dist/top-navigation.js +354 -0
  140. package/dist/types.d.ts +155 -0
  141. package/dist/types.js +1 -0
  142. package/dist/vanilla-theme-colors.d.ts +5 -0
  143. package/dist/vanilla-theme-colors.js +208 -0
  144. package/docs/publishing.md +66 -0
  145. package/package.json +108 -0
@@ -0,0 +1,400 @@
1
+ /**
2
+ * Document-navigation ports keep the useful rendered hierarchy from current
3
+ * Vanilla while using BF roles, logical properties and intrinsic breakpoints.
4
+ * Behaviour remains deliberately external: controllers synchronise their
5
+ * aria-expanded state with the matching is-expanded modifier.
6
+ */
7
+ export function documentNavigationCss(options) {
8
+ const { bodyCaseTypeStyles, bodyTypeStyles, headingTypeStyles } = options;
9
+ return `/* ------------------------------------------------------------------ */
10
+ /* Document navigation (Vanilla parity) */
11
+ /* ------------------------------------------------------------------ */
12
+
13
+ :where(.bf-theme) :where(.bf-in-page-navigation) {
14
+ container-name: bf-in-page-navigation;
15
+ container-type: inline-size;
16
+ margin-block: 0 var(--bf-section-space-shallow);
17
+ min-inline-size: 0;
18
+ }
19
+
20
+ :where(.bf-theme) :where(.bf-in-page-navigation-nav) {
21
+ max-block-size: 100dvb;
22
+ min-inline-size: 0;
23
+ overflow: auto;
24
+ position: sticky;
25
+ top: var(--bf-space-3);
26
+ }
27
+
28
+ :where(.bf-theme) :where(.bf-in-page-navigation-heading) {
29
+ ${headingTypeStyles} color: var(--bf-color-text-muted);
30
+ display: block;
31
+ margin: 0 0 var(--bf-space-1);
32
+ padding-block: var(--bf-h6-nudge-start) var(--bf-h6-nudge-end);
33
+ }
34
+
35
+ :where(.bf-theme) :where(.bf-in-page-navigation-list) {
36
+ border-inline-start: var(--bf-bar-thickness) solid var(--bf-color-border-low-contrast);
37
+ list-style: none;
38
+ margin: 0;
39
+ min-inline-size: 0;
40
+ padding: 0;
41
+ }
42
+
43
+ :where(.bf-theme) :where(.bf-in-page-navigation-item) {
44
+ margin: 0;
45
+ min-inline-size: 0;
46
+ padding: 0;
47
+ position: relative;
48
+ }
49
+
50
+ :where(.bf-theme) :where(.bf-in-page-navigation-link) {
51
+ ${bodyTypeStyles} color: var(--bf-color-text-muted);
52
+ display: -webkit-box;
53
+ line-clamp: 2;
54
+ margin: 0;
55
+ min-inline-size: 0;
56
+ overflow: hidden;
57
+ overflow-wrap: anywhere;
58
+ padding-block: calc(var(--bf-body-nudge-start) + var(--bf-space-half)) calc(var(--bf-body-nudge-end) + var(--bf-space-half));
59
+ padding-inline: var(--bf-space-2) 0;
60
+ position: relative;
61
+ text-decoration: none;
62
+ text-overflow: ellipsis;
63
+ -webkit-box-orient: vertical;
64
+ }
65
+
66
+ :where(.bf-theme) :where(.bf-in-page-navigation-link:hover) {
67
+ color: var(--bf-color-text-default);
68
+ text-decoration: none;
69
+ }
70
+
71
+ :where(.bf-theme) :where(.bf-in-page-navigation-link:focus:not(:focus-visible)) {
72
+ outline: none;
73
+ }
74
+
75
+ :where(.bf-theme) :where(.bf-in-page-navigation-link:focus-visible) {
76
+ outline: 2px solid var(--bf-color-focus);
77
+ outline-offset: 2px;
78
+ }
79
+
80
+ :where(.bf-theme) :where(.bf-in-page-navigation-link.is-active, .bf-in-page-navigation-link[aria-current]) {
81
+ color: var(--bf-color-text-default);
82
+ font-weight: 600;
83
+ }
84
+
85
+ :where(.bf-theme) :where(.bf-in-page-navigation-link.is-active, .bf-in-page-navigation-link[aria-current])::before {
86
+ background: currentColor;
87
+ block-size: 100%;
88
+ content: "";
89
+ inline-size: var(--bf-bar-thickness);
90
+ inset-block: 0;
91
+ inset-inline-start: calc(var(--bf-bar-thickness) * -1);
92
+ position: absolute;
93
+ }
94
+
95
+ :where(.bf-theme) :where(.bf-in-page-navigation-list .bf-in-page-navigation-list) {
96
+ border: 0;
97
+ margin: 0;
98
+ padding: 0;
99
+ }
100
+
101
+ :where(.bf-theme) :where(.bf-in-page-navigation-list .bf-in-page-navigation-list .bf-in-page-navigation-link) {
102
+ padding-inline-start: var(--bf-space-4);
103
+ }
104
+
105
+ :where(.bf-theme) :where(.bf-in-page-navigation-toggle) {
106
+ ${bodyCaseTypeStyles} align-items: center;
107
+ background: var(--bf-color-background-default);
108
+ border: 0;
109
+ color: var(--bf-color-text-default);
110
+ cursor: pointer;
111
+ display: none;
112
+ justify-content: center;
113
+ margin: 0;
114
+ min-block-size: var(--bf-control-box-size-compact);
115
+ padding-block: var(--bf-control-block-padding-compact);
116
+ padding-inline: var(--bf-space-1);
117
+ }
118
+
119
+ :where(.bf-theme) :where(.bf-in-page-navigation-toggle:hover) {
120
+ background: var(--bf-color-background-hover);
121
+ }
122
+
123
+ :where(.bf-theme) :where(.bf-in-page-navigation-toggle:focus:not(:focus-visible)) {
124
+ outline: none;
125
+ }
126
+
127
+ :where(.bf-theme) :where(.bf-in-page-navigation-toggle:focus-visible) {
128
+ outline: 2px solid var(--bf-color-focus);
129
+ outline-offset: -2px;
130
+ }
131
+
132
+ :where(.bf-theme) :where(.bf-in-page-navigation-toggle > .bf-icon) {
133
+ --bf-icon-size: var(--bf-icon-size-default);
134
+ }
135
+
136
+ @container bf-in-page-navigation (width < 40rem) {
137
+ :where(.bf-theme) :where(.bf-in-page-navigation-nav) {
138
+ align-items: center;
139
+ background: var(--bf-color-background-default);
140
+ border-block-end: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
141
+ display: grid;
142
+ grid-template-columns: minmax(0, 1fr) auto;
143
+ max-block-size: none;
144
+ overflow: visible;
145
+ position: static;
146
+ }
147
+
148
+ :where(.bf-theme) :where(.bf-in-page-navigation-heading) {
149
+ display: none;
150
+ }
151
+
152
+ :where(.bf-theme) :where(.bf-in-page-navigation-list) {
153
+ border: 0;
154
+ display: flex;
155
+ grid-column: 1;
156
+ grid-row: 1;
157
+ margin: 0;
158
+ overflow-x: auto;
159
+ overscroll-behavior-inline: contain;
160
+ scrollbar-width: none;
161
+ white-space: nowrap;
162
+ }
163
+
164
+ :where(.bf-theme) :where(.bf-in-page-navigation-list::-webkit-scrollbar) {
165
+ display: none;
166
+ }
167
+
168
+ :where(.bf-theme) :where(.bf-in-page-navigation-item) {
169
+ display: inline-block;
170
+ flex: 0 0 auto;
171
+ max-inline-size: min(50cqi, 18rem);
172
+ }
173
+
174
+ :where(.bf-theme) :where(.bf-in-page-navigation-link) {
175
+ display: block;
176
+ overflow: hidden;
177
+ padding-block: calc(var(--bf-control-block-padding-compact) - var(--bf-border-width));
178
+ padding-inline: var(--bf-space-1);
179
+ text-overflow: ellipsis;
180
+ white-space: nowrap;
181
+ }
182
+
183
+ :where(.bf-theme) :where(.bf-in-page-navigation-link.is-active, .bf-in-page-navigation-link[aria-current])::before {
184
+ block-size: 50%;
185
+ inset-block: 25%;
186
+ inset-inline-start: 0;
187
+ }
188
+
189
+ :where(.bf-theme) :where(.bf-in-page-navigation-list .bf-in-page-navigation-list) {
190
+ display: none;
191
+ }
192
+
193
+ :where(.bf-theme) :where(.bf-in-page-navigation-toggle) {
194
+ display: inline-flex;
195
+ grid-column: 2;
196
+ grid-row: 1;
197
+ }
198
+
199
+ :where(.bf-theme) :where(.bf-in-page-navigation.is-expanded .bf-in-page-navigation-nav, .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) .bf-in-page-navigation-nav) {
200
+ align-items: start;
201
+ background: var(--bf-color-background-alt);
202
+ max-block-size: 100dvb;
203
+ overflow: auto;
204
+ position: relative;
205
+ }
206
+
207
+ :where(.bf-theme) :where(.bf-in-page-navigation.is-expanded .bf-in-page-navigation-heading, .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) .bf-in-page-navigation-heading) {
208
+ display: block;
209
+ grid-column: 1;
210
+ grid-row: 1;
211
+ margin: 0;
212
+ padding-block: calc(var(--bf-h6-nudge-start) + var(--bf-space-1)) calc(var(--bf-h6-nudge-end) + var(--bf-space-1));
213
+ padding-inline: var(--bf-space-2);
214
+ }
215
+
216
+ :where(.bf-theme) :where(.bf-in-page-navigation.is-expanded > .bf-in-page-navigation-nav > .bf-in-page-navigation-list, .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) > .bf-in-page-navigation-nav > .bf-in-page-navigation-list) {
217
+ background: var(--bf-color-background-alt);
218
+ border-inline-start: var(--bf-bar-thickness) solid var(--bf-color-border-low-contrast);
219
+ display: block;
220
+ grid-column: 1 / -1;
221
+ grid-row: 2;
222
+ /* The mobile nav owns a bottom rule; reserve its thickness within the
223
+ list's trailing space so the expanded state keeps its baseline phase. */
224
+ margin-block-end: calc(var(--bf-space-2) - var(--bf-border-width));
225
+ overflow: visible;
226
+ white-space: normal;
227
+ }
228
+
229
+ :where(.bf-theme) :where(.bf-in-page-navigation.is-expanded .bf-in-page-navigation-item, .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) .bf-in-page-navigation-item) {
230
+ display: block;
231
+ max-inline-size: none;
232
+ }
233
+
234
+ :where(.bf-theme) :where(.bf-in-page-navigation.is-expanded .bf-in-page-navigation-link, .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) .bf-in-page-navigation-link) {
235
+ display: -webkit-box;
236
+ overflow-wrap: anywhere;
237
+ padding-block: calc(var(--bf-body-nudge-start) + var(--bf-space-half)) calc(var(--bf-body-nudge-end) + var(--bf-space-half));
238
+ padding-inline: var(--bf-space-2) 0;
239
+ white-space: normal;
240
+ }
241
+
242
+ :where(.bf-theme) :where(.bf-in-page-navigation.is-expanded .bf-in-page-navigation-list .bf-in-page-navigation-list, .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) .bf-in-page-navigation-list .bf-in-page-navigation-list) {
243
+ display: block;
244
+ }
245
+
246
+ :where(.bf-theme) :where(.bf-in-page-navigation.is-expanded .bf-in-page-navigation-link.is-active, .bf-in-page-navigation.is-expanded .bf-in-page-navigation-link[aria-current], .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) .bf-in-page-navigation-link.is-active, .bf-in-page-navigation:has(.bf-in-page-navigation-toggle[aria-expanded='true']) .bf-in-page-navigation-link[aria-current])::before {
247
+ block-size: 100%;
248
+ inset-block: 0;
249
+ inset-inline-start: calc(var(--bf-border-width) * -3);
250
+ }
251
+ }
252
+
253
+ /* ------------------------------------------------------------------ */
254
+ /* Reduced top navigation */
255
+ /* ------------------------------------------------------------------ */
256
+
257
+ /* This is a modifier of BF's existing top-navigation structure, not a
258
+ * second navigation API. It retains the existing menu, dropdown and search
259
+ * controller contracts while matching Vanilla's reduced chrome. */
260
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) {
261
+ background: var(--bf-color-background-alt);
262
+ --bf-top-navigation-link-padding-block: var(--bf-control-block-padding-compact);
263
+ }
264
+
265
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-logo-tag) {
266
+ display: none;
267
+ }
268
+
269
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-row) {
270
+ min-block-size: 0;
271
+ }
272
+
273
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-logo) > :where(.bf-top-navigation-link),
274
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-link, .bf-top-navigation-menu-toggle, .bf-top-navigation-search-toggle) {
275
+ color: var(--bf-color-text-muted);
276
+ font-size: var(--bf-body-font-size);
277
+ line-height: var(--bf-body-line-height);
278
+ padding-block: var(--bf-top-navigation-link-padding-block);
279
+ }
280
+
281
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-logo.is-canonical-tagged) > :where(.bf-top-navigation-link) {
282
+ align-items: center;
283
+ padding-inline-start: 0;
284
+ }
285
+
286
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-logo-title) {
287
+ font-size: var(--bf-body-font-size);
288
+ font-weight: 400;
289
+ line-height: var(--bf-body-line-height);
290
+ padding-block: 0;
291
+ }
292
+
293
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-banner .bf-top-navigation-link, .bf-top-navigation-banner .bf-top-navigation-menu-toggle, .bf-top-navigation-banner .bf-top-navigation-search-toggle) {
294
+ color: var(--bf-color-text-muted);
295
+ }
296
+
297
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-search-label) {
298
+ display: none;
299
+ }
300
+
301
+ @media (min-width: 64.75rem) {
302
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-dropdown) {
303
+ top: calc((var(--bf-top-navigation-link-padding-block) * 2) + var(--bf-body-line-height));
304
+ }
305
+
306
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced) :where(.bf-top-navigation-search) {
307
+ background: var(--bf-color-background-alt);
308
+ border: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
309
+ box-shadow: 0 calc(var(--bf-baseline) * 0.5) calc(var(--bf-baseline) * 2) rgba(0, 0, 0, 0.16);
310
+ inset-block-start: 100%;
311
+ inset-inline-end: 0;
312
+ padding: var(--bf-control-block-padding-compact) var(--bf-top-navigation-link-padding-inline);
313
+ position: absolute;
314
+ }
315
+
316
+ :where(.bf-theme) :where(.bf-top-navigation.is-reduced:has(.bf-top-navigation-search[aria-hidden='false'])) :where(.bf-top-navigation-nav) > :where(.bf-top-navigation-list) {
317
+ display: flex;
318
+ }
319
+ }
320
+
321
+ /* ------------------------------------------------------------------ */
322
+ /* Table of contents */
323
+ /* ------------------------------------------------------------------ */
324
+
325
+ :where(.bf-theme) :where(.bf-table-of-contents) {
326
+ container-name: bf-table-of-contents;
327
+ container-type: inline-size;
328
+ margin-block: 0 var(--bf-section-space-shallow);
329
+ min-inline-size: 0;
330
+ }
331
+
332
+ :where(.bf-theme) :where(.bf-table-of-contents-section) {
333
+ margin: 0;
334
+ min-inline-size: 0;
335
+ padding-block-end: var(--bf-space-2);
336
+ }
337
+
338
+ :where(.bf-theme) :where(.bf-table-of-contents-section + .bf-table-of-contents-section) {
339
+ border-block-start: var(--bf-border-width) solid var(--bf-color-border-low-contrast);
340
+ padding-block-start: calc(var(--bf-space-2) - var(--bf-border-width));
341
+ }
342
+
343
+ :where(.bf-theme) :where(.bf-table-of-contents-heading) {
344
+ ${headingTypeStyles} color: var(--bf-color-text-muted);
345
+ margin: 0 0 var(--bf-space-1);
346
+ padding-block: var(--bf-h6-nudge-start) var(--bf-h6-nudge-end);
347
+ }
348
+
349
+ :where(.bf-theme) :where(.bf-table-of-contents-list) {
350
+ list-style: none;
351
+ margin: 0;
352
+ min-inline-size: 0;
353
+ padding: 0;
354
+ }
355
+
356
+ :where(.bf-theme) :where(.bf-table-of-contents-item) {
357
+ margin: 0;
358
+ min-inline-size: 0;
359
+ padding: 0;
360
+ }
361
+
362
+ :where(.bf-theme) :where(.bf-table-of-contents-link) {
363
+ ${bodyTypeStyles} color: var(--bf-color-link-default);
364
+ display: block;
365
+ margin: 0;
366
+ overflow-wrap: anywhere;
367
+ padding-block: calc(var(--bf-body-nudge-start) + var(--bf-space-half)) calc(var(--bf-body-nudge-end) + var(--bf-space-half));
368
+ text-decoration: none;
369
+ }
370
+
371
+ :where(.bf-theme) :where(.bf-table-of-contents-link:hover) {
372
+ color: var(--bf-color-text-default);
373
+ text-decoration: underline;
374
+ }
375
+
376
+ :where(.bf-theme) :where(.bf-table-of-contents-link:focus:not(:focus-visible)) {
377
+ outline: none;
378
+ }
379
+
380
+ :where(.bf-theme) :where(.bf-table-of-contents-link:focus-visible) {
381
+ outline: 2px solid var(--bf-color-focus);
382
+ outline-offset: 2px;
383
+ }
384
+
385
+ :where(.bf-theme) :where(.bf-table-of-contents-link.is-active, .bf-table-of-contents-link[aria-current]) {
386
+ color: var(--bf-color-text-default);
387
+ font-weight: 600;
388
+ }
389
+
390
+ :where(.bf-theme) :where(.bf-table-of-contents-list .bf-table-of-contents-list) {
391
+ margin-inline-start: var(--bf-space-2);
392
+ }
393
+
394
+ @container bf-table-of-contents (width < 20rem) {
395
+ :where(.bf-theme) :where(.bf-table-of-contents-list .bf-table-of-contents-list) {
396
+ margin-inline-start: var(--bf-space-1);
397
+ }
398
+ }
399
+ `;
400
+ }
@@ -0,0 +1,6 @@
1
+ type EditorialContentCssOptions = {
2
+ noticeTitleTypeStyles: string;
3
+ };
4
+ /** Content-level editorial roles kept separate from layout composition. */
5
+ export declare function editorialContentCss(options: EditorialContentCssOptions): string;
6
+ export {};
@@ -0,0 +1,52 @@
1
+ /** Content-level editorial roles kept separate from layout composition. */
2
+ export function editorialContentCss(options) {
3
+ const { noticeTitleTypeStyles } = options;
4
+ return `/* ------------------------------------------------------------------ */
5
+ /* Editorial content roles */
6
+ /* ------------------------------------------------------------------ */
7
+
8
+ :where(.bf-theme) :where(.bf-notice, .bf-notice.is-information, .bf-notice.is-positive, .bf-notice.is-caution, .bf-notice.is-negative) {
9
+ --bf-notice-background: var(--bf-color-background-neutral-default);
10
+ --bf-notice-border: var(--bf-color-border-neutral);
11
+ background: var(--bf-notice-background);
12
+ border-inline-start: var(--bf-bar-thickness) solid var(--bf-notice-border);
13
+ color: var(--bf-color-text-default);
14
+ display: flow-root;
15
+ margin-block: 0 var(--bf-section-space-shallow);
16
+ max-inline-size: 100%;
17
+ padding-block: var(--bf-space-2);
18
+ padding-inline: var(--bf-space-2);
19
+ }
20
+
21
+ :where(.bf-theme) :where(.bf-notice.is-information) {
22
+ --bf-notice-background: var(--bf-color-background-information-default);
23
+ --bf-notice-border: var(--bf-color-border-information);
24
+ }
25
+
26
+ :where(.bf-theme) :where(.bf-notice.is-positive) {
27
+ --bf-notice-background: var(--bf-color-background-positive-default);
28
+ --bf-notice-border: var(--bf-color-border-positive);
29
+ }
30
+
31
+ :where(.bf-theme) :where(.bf-notice.is-caution) {
32
+ --bf-notice-background: var(--bf-color-background-caution-default);
33
+ --bf-notice-border: var(--bf-color-border-caution);
34
+ }
35
+
36
+ :where(.bf-theme) :where(.bf-notice.is-negative) {
37
+ --bf-notice-background: var(--bf-color-background-negative-default);
38
+ --bf-notice-border: var(--bf-color-border-negative);
39
+ }
40
+
41
+ :where(.bf-theme) :where(.bf-notice-title, .bf-notice-content) {
42
+ max-inline-size: 100%;
43
+ overflow-wrap: anywhere;
44
+ }
45
+
46
+ :where(.bf-theme) :where(.bf-notice-title) {
47
+ ${noticeTitleTypeStyles} margin-block: 0 var(--bf-h4-margin-bottom);
48
+ padding-block-end: 0;
49
+ padding-block-start: var(--bf-h4-nudge-start);
50
+ }
51
+ `;
52
+ }
@@ -0,0 +1 @@
1
+ export declare function iconCss(): string;
@@ -0,0 +1,75 @@
1
+ export function iconCss() {
2
+ return `:where(.bf-theme) :where(.bf-icon) {
3
+ --bf-icon-image: none;
4
+ --bf-icon-size: var(--bf-icon-size-default);
5
+ --bf-icon-transform: none;
6
+ background-image: var(--bf-icon-image);
7
+ background-position: center;
8
+ background-repeat: no-repeat;
9
+ background-size: contain;
10
+ block-size: var(--bf-icon-size);
11
+ display: inline-block;
12
+ flex: 0 0 auto;
13
+ inline-size: var(--bf-icon-size);
14
+ margin: 0;
15
+ overflow: hidden;
16
+ padding: 0;
17
+ text-indent: 110vw;
18
+ transform: var(--bf-icon-transform);
19
+ transform-origin: center;
20
+ vertical-align: bottom;
21
+ white-space: nowrap;
22
+ }
23
+
24
+ :where(.bf-theme) :where(.bf-icon.is-medium) {
25
+ --bf-icon-size: var(--bf-icon-size-medium);
26
+ }
27
+
28
+ :where(.bf-theme) :where(.bf-icon.is-large) {
29
+ --bf-icon-size: var(--bf-icon-size-large);
30
+ }
31
+
32
+ :where(.bf-theme) :where(.bf-icon.is-x-large) {
33
+ --bf-icon-size: var(--bf-icon-size-x-large);
34
+ }
35
+
36
+ :where(.bf-theme) :where(.bf-icon.is-xx-large) {
37
+ --bf-icon-size: var(--bf-icon-size-xx-large);
38
+ }
39
+
40
+ :where(.bf-theme) :where(.bf-icon.is-search) {
41
+ --bf-icon-image: var(--bf-ui-icon-search);
42
+ }
43
+
44
+ :where(.bf-theme) :where(.bf-icon.is-close) {
45
+ --bf-icon-image: var(--bf-ui-icon-close);
46
+ }
47
+
48
+ :where(.bf-theme) :where(.bf-icon.is-error-grey) {
49
+ --bf-icon-image: var(--bf-ui-icon-error-grey);
50
+ }
51
+
52
+ :where(.bf-theme) :where(.bf-icon.is-chevron-down) {
53
+ --bf-icon-image: var(--bf-ui-icon-chevron-down);
54
+ }
55
+
56
+ :where(.bf-theme) :where(.bf-icon.is-chevron-up) {
57
+ --bf-icon-image: var(--bf-ui-icon-chevron-down);
58
+ --bf-icon-transform: rotate(180deg);
59
+ }
60
+
61
+ :where(.bf-theme) :where(.bf-icon.is-chevron-right) {
62
+ --bf-icon-image: var(--bf-ui-icon-chevron-down);
63
+ --bf-icon-transform: rotate(-90deg);
64
+ }
65
+
66
+ :where(.bf-theme) :where(.bf-icon.is-chevron-left) {
67
+ --bf-icon-image: var(--bf-ui-icon-chevron-down);
68
+ --bf-icon-transform: rotate(90deg);
69
+ }
70
+
71
+ :where(.bf-theme) :where(.bf-icon.is-success-grey) {
72
+ --bf-icon-image: var(--bf-ui-icon-success-grey);
73
+ }
74
+ `;
75
+ }
@@ -0,0 +1,2 @@
1
+ /** Credential and transient-feedback compositions built on BF controls and type roles. */
2
+ export declare function interactiveFeedbackCss(): string;