@repobit/dex-system-design 0.25.12 → 0.26.0

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 (336) hide show
  1. package/CHANGELOG.md +187 -0
  2. package/README.md +131 -8
  3. package/package.json +95 -13
  4. package/schemas/component-manifest.json +3294 -405
  5. package/schemas/manifest-omissions.json +173 -0
  6. package/src/blog/src/breakpoints.js +6 -6
  7. package/src/blog/src/content/blog-atoms-showcase.js +1 -1
  8. package/src/blog/src/content/blog-page-layout.js +2 -2
  9. package/src/blog/src/lib/article-toc.js +7 -7
  10. package/src/blog/src/shell/blog-shell.js +1 -1
  11. package/src/blog/src/tokens/blog.js +2 -2
  12. package/src/blog/src/tokens/core.js +34 -35
  13. package/src/blog/src/tokens/legacy.js +0 -9
  14. package/src/blog/tokens/blog.js +2 -2
  15. package/src/blog/tokens/core.js +34 -35
  16. package/src/blog/tokens/legacy.js +0 -9
  17. package/src/blog/tokens.css +36 -46
  18. package/src/components/accordion/accordion-bg.css.js +83 -59
  19. package/src/components/accordion/accordion-bg.js +29 -10
  20. package/src/components/accordion/accordion-bg.stories.js +67 -67
  21. package/src/components/accordion/accordion-keyboard.js +80 -0
  22. package/src/components/accordion/accordion.css.js +142 -80
  23. package/src/components/accordion/accordion.js +37 -10
  24. package/src/components/accordion/accordion.stories.js +7 -7
  25. package/src/components/agent-endpoints/agent-endpoints.css.js +36 -39
  26. package/src/components/agent-endpoints/agent-endpoints.js +30 -20
  27. package/src/components/agent-endpoints/agent-endpoints.stories.js +1 -1
  28. package/src/components/ai-guardian-demo.stories.js +91 -91
  29. package/src/components/alert/alert.css.js +198 -0
  30. package/src/components/alert/alert.js +103 -0
  31. package/src/components/alert/alert.stories.js +206 -0
  32. package/src/components/anchor/anchor-nav.css.js +213 -101
  33. package/src/components/anchor/anchor-nav.js +26 -40
  34. package/src/components/anchor/anchor.stories.js +22 -12
  35. package/src/components/annotation/annotation.css.js +58 -0
  36. package/src/components/annotation/annotation.js +67 -0
  37. package/src/components/annotation/annotation.stories.js +63 -0
  38. package/src/components/architecture.stories.js +285 -0
  39. package/src/components/atoms.stories.js +342 -0
  40. package/src/components/avatar/avatar.css.js +67 -0
  41. package/src/components/avatar/avatar.js +42 -0
  42. package/src/components/avatar/avatar.stories.js +95 -0
  43. package/src/components/awards/awards-flex.css.js +209 -23
  44. package/src/components/awards/awards-flex.js +66 -7
  45. package/src/components/awards/awards-flex.stories.js +1 -1
  46. package/src/components/awards/{awards-light.stories.js → awards-summary.stories.js} +54 -64
  47. package/src/components/awards/awards.css.js +116 -58
  48. package/src/components/awards/awards.js +102 -28
  49. package/src/components/awards/awards.stories.js +1 -1
  50. package/src/components/back/back.css.js +51 -22
  51. package/src/components/back/back.js +28 -7
  52. package/src/components/back/back.stories.js +9 -3
  53. package/src/components/badge/badge.css.js +158 -46
  54. package/src/components/badge/badge.js +62 -74
  55. package/src/components/badge/badge.stories.js +176 -248
  56. package/src/components/bento-grid/bento-grid.css.js +21 -16
  57. package/src/components/bento-grid/bento-grid.js +16 -4
  58. package/src/components/bento-grid/bento-grid.stories.js +19 -18
  59. package/src/components/bento-grid/bento-item.css.js +52 -28
  60. package/src/components/bento-grid/bento-item.js +2 -2
  61. package/src/components/blockquote/blockquote.css.js +47 -0
  62. package/src/components/blockquote/blockquote.js +29 -0
  63. package/src/components/blockquote/blockquote.stories.js +62 -0
  64. package/src/components/breadcrumb/breadcrumb.css.js +92 -22
  65. package/src/components/breadcrumb/breadcrumb.js +56 -11
  66. package/src/components/button/button.css.js +531 -161
  67. package/src/components/button/button.js +206 -214
  68. package/src/components/button/button.stories.js +322 -174
  69. package/src/components/caption/caption.css.js +21 -0
  70. package/src/components/caption/caption.js +31 -0
  71. package/src/components/caption/caption.stories.js +62 -0
  72. package/src/components/card-features/card-features.css.js +14 -22
  73. package/src/components/card-features/card-features.js +68 -9
  74. package/src/components/card-features/card-features.stories.js +11 -11
  75. package/src/components/cards/card.css.js +60 -81
  76. package/src/components/cards/card.js +56 -25
  77. package/src/components/cards/card.stories.js +39 -39
  78. package/src/components/carousel/carousel.css.js +93 -99
  79. package/src/components/carousel/carousel.js +32 -4
  80. package/src/components/checkbox/checkbox.css.js +111 -93
  81. package/src/components/checkbox/checkbox.js +64 -90
  82. package/src/components/checkbox/checkbox.stories.js +96 -29
  83. package/src/components/code/code.css.js +70 -0
  84. package/src/components/code/code.js +40 -0
  85. package/src/components/code/code.stories.js +73 -0
  86. package/src/components/compare/compare.css.js +179 -43
  87. package/src/components/compare/compare.js +52 -25
  88. package/src/components/compare/compare.stories.js +61 -4
  89. package/src/components/comparison-panel/comparison-panel.css.js +38 -51
  90. package/src/components/comparison-panel/comparison-panel.js +5 -4
  91. package/src/components/comparison-panel/comparison-panel.stories.js +1 -1
  92. package/src/components/compatibility-table/compatibility-table.css.js +180 -80
  93. package/src/components/compatibility-table/compatibility-table.js +37 -9
  94. package/src/components/control-alignment.stories.js +393 -0
  95. package/src/components/cta-banner/cta-banner.css.js +41 -13
  96. package/src/components/cta-banner/cta-banner.js +6 -5
  97. package/src/components/cta-banner/cta-banner.stories.js +43 -98
  98. package/src/components/display/display.css.js +25 -1
  99. package/src/components/display/display.js +46 -13
  100. package/src/components/display/display.stories.js +270 -40
  101. package/src/components/divider/divider-horizontal.js +21 -5
  102. package/src/components/divider/divider-vertical.js +15 -7
  103. package/src/components/divider/divider.css.js +2 -2
  104. package/src/components/divider/divider.stories.js +38 -34
  105. package/src/components/dropdown/dropdown.css.js +93 -126
  106. package/src/components/dropdown/dropdown.js +114 -34
  107. package/src/components/dropdown/dropdown.stories.js +56 -24
  108. package/src/components/features/features.css.js +24 -11
  109. package/src/components/features/features.js +7 -3
  110. package/src/components/features/features.stories.js +37 -37
  111. package/src/components/features-tab/features-tab.css.js +19 -8
  112. package/src/components/features-tab/features-tab.js +6 -5
  113. package/src/components/features-tab/features-tab.stories.js +23 -23
  114. package/src/components/fieldset/fieldset.css.js +30 -0
  115. package/src/components/fieldset/fieldset.js +28 -0
  116. package/src/components/fieldset/fieldset.stories.js +84 -0
  117. package/src/components/footer/footer-links-group.css.js +10 -14
  118. package/src/components/footer/footer-links-group.js +4 -3
  119. package/src/components/footer/footer-lp.css.js +59 -30
  120. package/src/components/footer/footer-lp.js +17 -12
  121. package/src/components/footer/footer-lp.stories.js +63 -75
  122. package/src/components/footer/footer-nav-menu.css.js +26 -4
  123. package/src/components/footer/footer-nav-menu.js +3 -2
  124. package/src/components/footer/footer.css.js +146 -264
  125. package/src/components/footer/footer.js +176 -106
  126. package/src/components/footer/footer.stories.js +9 -9
  127. package/src/components/footer/localeMap.js +1 -1
  128. package/src/components/grid/grid.css.js +1 -1
  129. package/src/components/grid/grid.js +49 -7
  130. package/src/components/grid/grid.stories.js +111 -0
  131. package/src/components/header/header-code.css.js +61 -51
  132. package/src/components/header/header-code.js +28 -14
  133. package/src/components/header/header-code.stories.js +5 -5
  134. package/src/components/header/header.css.js +655 -176
  135. package/src/components/header/header.js +269 -36
  136. package/src/components/header/header.stories.js +841 -18
  137. package/src/components/heading/heading.css.js +14 -17
  138. package/src/components/heading/heading.js +48 -33
  139. package/src/components/heading/heading.stories.js +27 -25
  140. package/src/components/help-text/help-text.css.js +21 -0
  141. package/src/components/help-text/help-text.js +25 -0
  142. package/src/components/help-text/help-text.stories.js +66 -0
  143. package/src/components/highlight/highlight.css.js +86 -64
  144. package/src/components/highlight/highlight.js +18 -27
  145. package/src/components/highlight/highlight.stories.js +14 -3
  146. package/src/components/icons/analysis-icon.js +6 -16
  147. package/src/components/icons/arrow-down-icon.js +6 -19
  148. package/src/components/icons/arrow-icon.js +44 -0
  149. package/src/components/icons/arrow-right-icon.js +30 -23
  150. package/src/components/icons/arrow-up-icon.js +19 -18
  151. package/src/components/icons/bd-ai-icon.js +1 -1
  152. package/src/components/icons/brand-marks.stories.js +279 -0
  153. package/src/components/icons/brand-signature-icon.js +42 -0
  154. package/src/components/icons/check-icon.js +27 -0
  155. package/src/components/icons/circle-info-icon.js +33 -0
  156. package/src/components/icons/close-icon.js +6 -18
  157. package/src/components/icons/family-icon.js +8 -20
  158. package/src/components/icons/globe-icon.js +6 -18
  159. package/src/components/icons/guide-icon.js +6 -18
  160. package/src/components/icons/icon-element.js +99 -0
  161. package/src/components/icons/icons.js +36 -0
  162. package/src/components/icons/icons.stories.js +184 -52
  163. package/src/components/icons/individual-icon.js +6 -18
  164. package/src/components/icons/laurel-icon.js +9 -19
  165. package/src/components/icons/machine-learning-icon.js +6 -17
  166. package/src/components/icons/marks.js +41 -0
  167. package/src/components/icons/minus-icon.js +7 -21
  168. package/src/components/icons/missing-icon.js +52 -0
  169. package/src/components/icons/plus-icon.js +7 -21
  170. package/src/components/icons/quote-icon.js +19 -19
  171. package/src/components/image/image.css.js +72 -25
  172. package/src/components/image/image.js +11 -6
  173. package/src/components/image/image.stories.js +2 -2
  174. package/src/components/input/custom-form.stories.js +214 -62
  175. package/src/components/input/input-clipboard.css.js +51 -144
  176. package/src/components/input/input-clipboard.js +31 -15
  177. package/src/components/input/input.css.js +8 -146
  178. package/src/components/input/input.js +93 -38
  179. package/src/components/install-options/install-options.css.js +84 -77
  180. package/src/components/install-options/install-options.js +33 -30
  181. package/src/components/install-options/install-options.stories.js +3 -3
  182. package/src/components/label/label.css.js +35 -0
  183. package/src/components/label/label.js +38 -0
  184. package/src/components/label/label.stories.js +82 -0
  185. package/src/components/light-carousel/light-carousel.css.js +111 -63
  186. package/src/components/light-carousel/light-carousel.js +85 -11
  187. package/src/components/light-carousel/light-carousel.stories.js +126 -82
  188. package/src/components/link/link.css.js +150 -99
  189. package/src/components/link/link.js +86 -11
  190. package/src/components/link/link.stories.js +124 -30
  191. package/src/components/list/list-item/list-item.css.js +74 -22
  192. package/src/components/list/list-item/list-item.js +32 -10
  193. package/src/components/list/list-item/list-item.stories.js +23 -23
  194. package/src/components/list/list.css.js +8 -2
  195. package/src/components/list/list.js +3 -2
  196. package/src/components/list/list.stories.js +222 -0
  197. package/src/components/modal/modal.css.js +114 -24
  198. package/src/components/modal/modal.js +83 -7
  199. package/src/components/modal/modal.stories.js +9 -9
  200. package/src/components/overview/overview.css.js +19 -14
  201. package/src/components/overview/overview.js +6 -5
  202. package/src/components/overview/overview.stories.js +10 -10
  203. package/src/components/page-switcher/page-switcher.css.js +97 -40
  204. package/src/components/page-switcher/page-switcher.js +28 -5
  205. package/src/components/page-switcher/page-switcher.stories.js +95 -0
  206. package/src/components/paragraph/paragraph.css.js +15 -10
  207. package/src/components/paragraph/paragraph.js +41 -44
  208. package/src/components/paragraph/paragraph.stories.js +56 -21
  209. package/src/components/picture/picture.css.js +103 -44
  210. package/src/components/picture/picture.js +100 -30
  211. package/src/components/picture/picture.stories.js +1 -1
  212. package/src/components/pricing-cards/new-pricing-card.js +3 -3
  213. package/src/components/pricing-cards/new-pricing.css.js +24 -15
  214. package/src/components/pricing-cards/pricing-card-actions.css.js +1 -1
  215. package/src/components/pricing-cards/pricing-card-actions.js +3 -4
  216. package/src/components/pricing-cards/pricing-card-container.css.js +3 -3
  217. package/src/components/pricing-cards/pricing-card-container.js +3 -2
  218. package/src/components/pricing-cards/pricing-card-header.css.js +10 -8
  219. package/src/components/pricing-cards/pricing-card-header.js +6 -7
  220. package/src/components/pricing-cards/pricing-card-pricing.css.js +16 -9
  221. package/src/components/pricing-cards/pricing-card-pricing.js +8 -6
  222. package/src/components/pricing-cards/pricing-card-show-more.css.js +11 -3
  223. package/src/components/pricing-cards/pricing-card-show-more.js +8 -3
  224. package/src/components/pricing-cards/pricing-card.css.js +244 -190
  225. package/src/components/pricing-cards/pricing-card.js +54 -70
  226. package/src/components/pricing-cards/pricing-feature-item.css.js +25 -8
  227. package/src/components/pricing-cards/pricing-feature-item.js +8 -3
  228. package/src/components/process-steps/process-steps.css.js +26 -14
  229. package/src/components/process-steps/process-steps.js +23 -6
  230. package/src/components/process-steps/process-steps.stories.js +1 -1
  231. package/src/components/progress/progress.css.js +80 -0
  232. package/src/components/progress/progress.js +42 -0
  233. package/src/components/progress/progress.stories.js +79 -0
  234. package/src/components/quick-answer/quick-answer.css.js +75 -13
  235. package/src/components/quick-answer/quick-answer.js +8 -3
  236. package/src/components/radio/radio.css.js +92 -128
  237. package/src/components/radio/radio.js +106 -127
  238. package/src/components/radio/radio.stories.js +54 -19
  239. package/src/components/review/review-grid.css.js +5 -6
  240. package/src/components/review/review-grid.js +14 -11
  241. package/src/components/review/review.css.js +11 -6
  242. package/src/components/review/review.js +3 -8
  243. package/src/components/shared/ensemble.css.js +93 -0
  244. package/src/components/shared/form-field.css.js +206 -0
  245. package/src/components/shared/prop-vocabulary.js +48 -0
  246. package/src/components/shared/token-scales.js +306 -0
  247. package/src/components/skeleton/skeleton.css.js +34 -0
  248. package/src/components/skeleton/skeleton.js +32 -0
  249. package/src/components/skeleton/skeleton.stories.js +70 -0
  250. package/src/components/spinner/spinner.css.js +62 -0
  251. package/src/components/spinner/spinner.js +38 -0
  252. package/src/components/spinner/spinner.stories.js +92 -0
  253. package/src/components/spotlight-section/spotlight-section.css.js +14 -13
  254. package/src/components/spotlight-section/spotlight-section.js +42 -39
  255. package/src/components/switch/switch.css.js +103 -0
  256. package/src/components/switch/switch.js +44 -0
  257. package/src/components/switch/switch.stories.js +86 -0
  258. package/src/components/tab-list/content-switcher.stories.js +189 -0
  259. package/src/components/tab-list/tab-list.css.js +250 -0
  260. package/src/components/tab-list/tab-list.js +184 -0
  261. package/src/components/tab-list/tab-list.stories.js +221 -0
  262. package/src/components/tabs/tabs.css.js +14 -123
  263. package/src/components/tabs/tabs.js +16 -19
  264. package/src/components/tabs/tabs.stories.js +95 -95
  265. package/src/components/tag/tag.css.js +54 -0
  266. package/src/components/tag/tag.js +32 -0
  267. package/src/components/tag/tag.stories.js +126 -0
  268. package/src/components/terminal/terminal-message.css.js +164 -60
  269. package/src/components/terminal/terminal-message.js +5 -5
  270. package/src/components/terminal/terminal-message.stories.js +70 -1
  271. package/src/components/termsOfUse/terms.css.js +25 -20
  272. package/src/components/termsOfUse/terms.js +13 -9
  273. package/src/components/termsOfUse/terms.stories.js +1 -1
  274. package/src/components/textarea/textarea.css.js +51 -0
  275. package/src/components/textarea/textarea.js +136 -0
  276. package/src/components/textarea/textarea.stories.js +191 -0
  277. package/src/components/tooltip/tooltip.css.js +75 -0
  278. package/src/components/tooltip/tooltip.js +156 -0
  279. package/src/components/tooltip/tooltip.stories.js +161 -0
  280. package/src/components/trust-panel/trust-panel.css.js +85 -33
  281. package/src/components/trust-panel/trust-panel.js +18 -10
  282. package/src/components/trust-panel/trust-panel.stories.js +1 -1
  283. package/src/components/ultimate-security-demo.stories.js +431 -0
  284. package/src/components/video/video.css.js +17 -0
  285. package/src/components/video/video.js +40 -0
  286. package/src/components/video/video.stories.js +106 -0
  287. package/src/components/video-player/video-player.css.js +67 -11
  288. package/src/components/video-player/video-player.js +35 -4
  289. package/src/components/video-player/video-player.stories.js +1 -1
  290. package/src/components/visual-alignment.stories.js +411 -0
  291. package/src/components/visually-hidden/visually-hidden.css.js +24 -0
  292. package/src/components/visually-hidden/visually-hidden.js +16 -0
  293. package/src/components/visually-hidden/visually-hidden.stories.js +56 -0
  294. package/src/stories/Button.stories.js +17 -17
  295. package/src/stories/Header.stories.js +10 -10
  296. package/src/stories/Page.js +1 -1
  297. package/src/stories/Page.stories.js +6 -6
  298. package/src/tokens/borders.stories.js +339 -0
  299. package/src/tokens/color-responsibilities.stories.js +227 -0
  300. package/src/tokens/dark-derivation.js +309 -0
  301. package/src/tokens/dark-findings.js +197 -0
  302. package/src/tokens/dark-mode.stories.js +207 -0
  303. package/src/tokens/dimension.stories.js +251 -0
  304. package/src/tokens/elevation.stories.js +143 -0
  305. package/src/tokens/focus.stories.js +276 -0
  306. package/src/tokens/fonts.css +20 -20
  307. package/src/tokens/fonts.stories.js +354 -374
  308. package/src/tokens/layout.css +25 -11
  309. package/src/tokens/motion.stories.js +231 -0
  310. package/src/tokens/shape.stories.js +272 -0
  311. package/src/tokens/spacing-rhythm.stories.js +359 -0
  312. package/src/tokens/spacing.stories.js +208 -703
  313. package/src/tokens/story-chrome.js +503 -0
  314. package/src/tokens/surfaces.stories.js +224 -0
  315. package/src/tokens/text-on-surface.stories.js +164 -0
  316. package/src/tokens/token-map.js +220 -0
  317. package/src/tokens/token-map.stories.js +257 -0
  318. package/src/tokens/token-purposes.js +266 -0
  319. package/src/tokens/tokens-grid.stories.js +388 -900
  320. package/src/tokens/tokens.css +1633 -1045
  321. package/src/tokens/tokens.js +1130 -492
  322. package/src/tokens/tokens.stories.js +137 -47
  323. package/src/tokens/type-ceiling-words.js +299 -0
  324. package/src/tokens/typography.stories.js +1003 -965
  325. package/src/tokens/vertical-rhythm.stories.js +224 -0
  326. package/src/components/awards/awards-icon.js +0 -56
  327. package/src/components/awards/awards-light.js +0 -240
  328. package/src/components/banner/banner.js +0 -60
  329. package/src/components/banner/banner.stories.js +0 -51
  330. package/src/components/button/icons.js +0 -24
  331. package/src/components/input/index.js +0 -0
  332. package/src/components/light-carousel/light-carousel-simple.css.js +0 -183
  333. package/src/components/light-carousel/light-carousel-simple.js +0 -74
  334. package/src/tokens/colors.js +0 -121
  335. package/src/tokens/typography.css.js +0 -207
  336. package/src/tokens/typography.js +0 -0
@@ -53,14 +53,14 @@ Toate elementele sunt sloturi pentru consistență maximă.
53
53
  };
54
54
 
55
55
  const heading = html`
56
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">
56
+ <bd-h as="h4" slot="heading" color="primary">
57
57
  Keep your loved ones protected.
58
58
  </bd-h>
59
59
  `;
60
60
 
61
61
  const content = html`
62
62
  <div slot="content">
63
- <bd-p kind="regular">
63
+ <bd-p variant="regular">
64
64
  As the Subscription Manager, you can oversee and adjust online safety
65
65
  through an intuitive dashboard. Effortlessly manage settings, monitor
66
66
  real-time alerts, and maintain control without compromising simplicity
@@ -69,7 +69,7 @@ const content = html`
69
69
  </div>
70
70
  `;
71
71
 
72
- const mediaStyle = "width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg,16px);object-fit:cover;display:block;";
72
+ const mediaStyle = "width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg);object-fit:cover;display:block;";
73
73
 
74
74
  // ─── Imagine ──────────────────────────────────────────────────────────────────
75
75
 
@@ -107,7 +107,7 @@ export const WithPicture = {
107
107
  ${content}
108
108
  <picture slot="media" style="display:block;width:100%;max-width:520px;">
109
109
  <source type="image/webp" srcset="/assets/tabs-img1.png?width=2000&format=webp&optimize=medium" media="(min-width: 600px)" />
110
- <img src="/assets/tabs-img1.png" alt="Admin using laptop" loading="lazy" style="width:100%;height:auto;border-radius:var(--radius-lg,16px);object-fit:cover;display:block;" />
110
+ <img src="/assets/tabs-img1.png" alt="Admin using laptop" loading="lazy" style="width:100%;height:auto;border-radius:var(--radius-lg);object-fit:cover;display:block;" />
111
111
  </picture>
112
112
  </bd-features-tab>
113
113
  `,
@@ -122,7 +122,7 @@ export const WithYouTube = {
122
122
  <bd-features-tab cta-label="Learn more" cta-href="#" cta-kind="danger">
123
123
  ${heading}
124
124
  ${content}
125
- <div slot="media" style="position:relative;width:100%;max-width:520px;padding-bottom:56.25%;border-radius:var(--radius-lg,16px);overflow:hidden;">
125
+ <div slot="media" style="position:relative;width:100%;max-width:520px;padding-bottom:56.25%;border-radius:var(--radius-lg);overflow:hidden;">
126
126
  <iframe
127
127
  style="position:absolute;top:0;left:0;width:100%;height:100%;border:none;"
128
128
  src="https://www.youtube.com/embed/zal9Mt02ErM"
@@ -189,7 +189,7 @@ export const WithVideoNative = {
189
189
  src="https://www.bitdefender.com/content/dam/bitdefender/consumers/solutions/ultimate-small-business-security/Bitdefender_Final_1080p_V.webm"
190
190
  controls
191
191
  playsinline
192
- style="width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg,16px);display:block;"
192
+ style="width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg);display:block;"
193
193
  ></video>
194
194
  </bd-features-tab>
195
195
  `,
@@ -257,7 +257,7 @@ export const WithCTASlot = {
257
257
  ${heading}
258
258
  ${content}
259
259
  <img slot="media" src="/assets/tabs-img1.png" alt="Admin" loading="lazy" style="${mediaStyle}" />
260
- <bd-button-link slot="cta" href="#" kind="primary" size="md">Custom CTA button</bd-button-link>
260
+ <bd-button-link slot="cta" href="#" variant="primary" size="md">Custom CTA button</bd-button-link>
261
261
  </bd-features-tab>
262
262
  `,
263
263
  parameters: { docs: { description: { story: 'Buton CTA custom via `slot="cta"`.' } } }
@@ -275,9 +275,9 @@ export const WithTabs = {
275
275
  >
276
276
  <bd-tab-panel title="Imagine">
277
277
  <bd-features-tab cta-label="Stay worry free" cta-href="#" cta-kind="danger">
278
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">Keep your loved ones protected.</bd-h>
278
+ <bd-h as="h4" slot="heading" color="primary">Keep your loved ones protected.</bd-h>
279
279
  <div slot="content">
280
- <bd-p kind="regular">As the Subscription Manager, you can oversee and adjust online safety.</bd-p>
280
+ <bd-p variant="regular">As the Subscription Manager, you can oversee and adjust online safety.</bd-p>
281
281
  </div>
282
282
  <img slot="media" src="/assets/tabs-img1.png" alt="Admin using laptop" loading="lazy" style="${mediaStyle}" />
283
283
  </bd-features-tab>
@@ -285,9 +285,9 @@ export const WithTabs = {
285
285
 
286
286
  <bd-tab-panel title="YouTube">
287
287
  <bd-features-tab cta-label="Learn more" cta-href="#" cta-kind="danger">
288
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">Watch how it works.</bd-h>
288
+ <bd-h as="h4" slot="heading" color="primary">Watch how it works.</bd-h>
289
289
  <div slot="content">
290
- <bd-p kind="regular">See Bitdefender in action with our video walkthrough.</bd-p>
290
+ <bd-p variant="regular">See Bitdefender in action with our video walkthrough.</bd-p>
291
291
  </div>
292
292
  <bd-video-player
293
293
  slot="media"
@@ -301,9 +301,9 @@ export const WithTabs = {
301
301
 
302
302
  <bd-tab-panel title="Video">
303
303
  <bd-features-tab cta-label="Get started" cta-href="#" cta-kind="danger">
304
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">See the full demo.</bd-h>
304
+ <bd-h as="h4" slot="heading" color="primary">See the full demo.</bd-h>
305
305
  <div slot="content">
306
- <bd-p kind="regular">Watch our full product demo and discover all features.</bd-p>
306
+ <bd-p variant="regular">Watch our full product demo and discover all features.</bd-p>
307
307
  </div>
308
308
  <bd-video-player
309
309
  slot="media"
@@ -366,25 +366,25 @@ export const WithFeaturesTabVideo = {
366
366
  >
367
367
  <bd-tab-panel title="Admin">
368
368
  <bd-features-tab cta-label="Stay worry free" cta-href="#" cta-kind="danger">
369
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">Keep your loved ones protected.</bd-h>
369
+ <bd-h as="h4" slot="heading" color="primary">Keep your loved ones protected.</bd-h>
370
370
  <div slot="content">
371
- <bd-p kind="regular">As the Subscription Manager, you can oversee and adjust online safety through an intuitive dashboard.</bd-p>
371
+ <bd-p variant="regular">As the Subscription Manager, you can oversee and adjust online safety through an intuitive dashboard.</bd-p>
372
372
  </div>
373
373
  <img
374
374
  slot="media"
375
375
  src="/assets/tabs-img1.png"
376
376
  alt="Admin using laptop"
377
377
  loading="lazy"
378
- style="width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg,16px);object-fit:cover;display:block;"
378
+ style="width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg);object-fit:cover;display:block;"
379
379
  />
380
380
  </bd-features-tab>
381
381
  </bd-tab-panel>
382
382
 
383
383
  <bd-tab-panel title="YouTube">
384
384
  <bd-features-tab cta-label="Learn more" cta-href="#" cta-kind="danger">
385
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">Watch how it works.</bd-h>
385
+ <bd-h as="h4" slot="heading" color="primary">Watch how it works.</bd-h>
386
386
  <div slot="content">
387
- <bd-p kind="regular">See Bitdefender in action with our full video walkthrough.</bd-p>
387
+ <bd-p variant="regular">See Bitdefender in action with our full video walkthrough.</bd-p>
388
388
  </div>
389
389
  <bd-video-player
390
390
  slot="media"
@@ -398,9 +398,9 @@ export const WithFeaturesTabVideo = {
398
398
 
399
399
  <bd-tab-panel title="Video">
400
400
  <bd-features-tab cta-label="Get started" cta-href="#" cta-kind="danger">
401
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">See the full demo.</bd-h>
401
+ <bd-h as="h4" slot="heading" color="primary">See the full demo.</bd-h>
402
402
  <div slot="content">
403
- <bd-p kind="regular">Watch our full product demo and discover all the features available.</bd-p>
403
+ <bd-p variant="regular">Watch our full product demo and discover all the features available.</bd-p>
404
404
  </div>
405
405
  <bd-video-player
406
406
  slot="media"
@@ -414,16 +414,16 @@ export const WithFeaturesTabVideo = {
414
414
 
415
415
  <bd-tab-panel title="Teen">
416
416
  <bd-features-tab cta-label="Explore features" cta-href="#" cta-kind="danger">
417
- <bd-h as="h4" slot="heading" color="var(--color-blue-500)">Safe browsing for teens.</bd-h>
417
+ <bd-h as="h4" slot="heading" color="primary">Safe browsing for teens.</bd-h>
418
418
  <div slot="content">
419
- <bd-p kind="regular">Give teens the freedom to explore online while keeping them protected from threats.</bd-p>
419
+ <bd-p variant="regular">Give teens the freedom to explore online while keeping them protected from threats.</bd-p>
420
420
  </div>
421
421
  <img
422
422
  slot="media"
423
423
  src="/assets/tabs-img3.png"
424
424
  alt="Teen protection"
425
425
  loading="lazy"
426
- style="width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg,16px);object-fit:cover;display:block;"
426
+ style="width:100%;max-width:520px;height:auto;border-radius:var(--radius-lg);object-fit:cover;display:block;"
427
427
  />
428
428
  </bd-features-tab>
429
429
  </bd-tab-panel>
@@ -0,0 +1,30 @@
1
+ import { css } from 'lit';
2
+
3
+ /** Styled entirely from design tokens — see npm run lint:tokens. */
4
+ export const fieldsetCSS = css`
5
+ :host { display: block; }
6
+
7
+ fieldset {
8
+ margin: 0;
9
+ padding: var(--spacing-16);
10
+ border: var(--border-width-1) solid var(--color-border-subtle);
11
+ border-radius: var(--radius-md);
12
+ }
13
+
14
+ legend {
15
+ padding: 0 var(--spacing-8);
16
+ font-family: var(--form-label-large-fontFamily);
17
+ font-size: var(--form-label-large-fontSize);
18
+ font-weight: var(--form-label-large-fontWeight);
19
+ line-height: var(--form-label-large-lineHeight);
20
+ color: var(--form-label-large-color);
21
+ }
22
+
23
+ .fields {
24
+ display: flex;
25
+ flex-direction: column;
26
+ gap: var(--form-fieldSpacing);
27
+ }
28
+ `;
29
+
30
+ export default fieldsetCSS;
@@ -0,0 +1,28 @@
1
+ import { LitElement, html, nothing } from 'lit';
2
+ // Installs the design tokens into document scope; see src/tokens/tokens.js
3
+ import '../../tokens/tokens.js';
4
+ import { fieldsetCSS } from './fieldset.css.js';
5
+
6
+ export class BdFieldset extends LitElement {
7
+ static styles = [fieldsetCSS];
8
+
9
+ static properties = {
10
+ legend: { type: String }
11
+ };
12
+
13
+ constructor() {
14
+ super();
15
+ this.legend = '';
16
+ }
17
+
18
+ render() {
19
+ return html`
20
+ <fieldset>
21
+ ${this.legend ? html`<legend>${this.legend}</legend>` : nothing}
22
+ <div class="fields"><slot></slot></div>
23
+ </fieldset>
24
+ `;
25
+ }
26
+ }
27
+
28
+ customElements.define('bd-fieldset', BdFieldset);
@@ -0,0 +1,84 @@
1
+ import { html } from 'lit';
2
+ import './fieldset.js';
3
+ import '../switch/switch.js';
4
+ import '../label/label.js';
5
+ import '../help-text/help-text.js';
6
+ import '../input/input.js';
7
+
8
+ export default {
9
+ title : 'Atoms/Fieldset',
10
+ tags : ['autodocs'],
11
+ parameters: {
12
+ docs: {
13
+ description: {
14
+ component: `
15
+ **BdFieldset** groups related form controls under a shared caption.
16
+
17
+ ### Usage
18
+ \`\`\`html
19
+ <bd-fieldset legend="Choose your plan">
20
+ <bd-radio name="plan" value="basic" label="Basic"></bd-radio>
21
+ <bd-radio name="plan" value="premium" label="Premium"></bd-radio>
22
+ </bd-fieldset>
23
+ \`\`\`
24
+
25
+ ### Props
26
+ | Prop | Values | Default |
27
+ |---|---|---|
28
+ | \`legend\` | the group caption — omit for an unlabelled group | \`''\` |
29
+
30
+ The controls go in the default slot.
31
+
32
+ ### Why group at all
33
+ A screen reader reads a control's own label, not the question above it. Without
34
+ a group caption, "Basic" and "Premium" are announced with no indication of what
35
+ they are choosing between. The \`legend\` is what supplies that.
36
+
37
+ Because slotted controls sit inside the \`<fieldset>\` in the flattened tree, the
38
+ native grouping does apply here — unlike a \`for\` reference, which cannot cross
39
+ the shadow boundary.
40
+ `
41
+ }
42
+ }
43
+ },
44
+ argTypes: {
45
+ legend: {
46
+ control : 'text',
47
+ description: 'The group caption. Omit for an unlabelled group, though a group without one is rarely useful.',
48
+ table : { type: { summary: 'string' }, defaultValue: { summary: "" }, category: 'Content' }
49
+ }
50
+ }
51
+ };
52
+
53
+ export const Default = () => html`
54
+ <bd-fieldset legend="Notifications">
55
+ <bd-switch label="Email"></bd-switch>
56
+ <bd-switch label="SMS"></bd-switch>
57
+ </bd-fieldset>
58
+ `;
59
+
60
+ /**
61
+ * The gap between fields comes from `--form-fieldSpacing`, and the gap inside
62
+ * each field from `--form-label-default-marginBottom` and
63
+ * `--form-help-text-default-marginTop`. None of those three is visible in a
64
+ * fieldset of bare switches, so this story is the one that shows them — it is
65
+ * where a change to the form spacing tokens actually appears.
66
+ */
67
+ export const FieldStack = () => html`
68
+ <bd-fieldset legend="Billing address">
69
+ <div>
70
+ <bd-label for="line1" required>Street</bd-label>
71
+ <bd-custom-input label="" size="md" placeholder="221B Baker Street"></bd-custom-input>
72
+ <bd-help-text>Include the building number.</bd-help-text>
73
+ </div>
74
+ <div>
75
+ <bd-label for="city" required>City</bd-label>
76
+ <bd-custom-input label="" size="md" placeholder="London"></bd-custom-input>
77
+ </div>
78
+ <div>
79
+ <bd-label for="post">Postcode</bd-label>
80
+ <bd-custom-input label="" size="md" placeholder="NW1 6XE"></bd-custom-input>
81
+ <bd-help-text tone="error">We could not find that postcode.</bd-help-text>
82
+ </div>
83
+ </bd-fieldset>
84
+ `;
@@ -1,4 +1,5 @@
1
- import { css } from 'lit';
1
+ import { css, unsafeCSS } from 'lit';
2
+ import { below } from '../shared/token-scales.js';
2
3
 
3
4
  export default css`
4
5
  :host {
@@ -8,28 +9,23 @@ export default css`
8
9
  padding-right: var(--spacing-64);
9
10
  }
10
11
 
11
- h4 {
12
- font-size: var(--font-size-sm);
13
- font-weight: var(--font-weight-bold);
14
- color: #ffffff;
15
- margin: 0;
16
- }
17
-
12
+ /* No type here: this needs a directly-slotted raw anchor, and every consumer
13
+ slots bd-link -- measured, 2 instances, assigned [bd-link], 0 raw anchors.
14
+ The fourth rule in this component family to name the anchor tag where the
15
+ markup is bd-link. The remaining two declarations are dead by the same
16
+ proof and are left for a follow-up. */
18
17
  ::slotted(a) {
19
- color: #ffffff;
18
+ color: var(--color-text-inverse);
20
19
  text-decoration: none;
21
- font-size: var(--typography-body-regular-fontSize);
22
- line-height: 1.8;
23
20
  }
24
21
 
25
22
  .group-title {
26
23
  font-size: var(--typography-body-regular-fontSize);
27
- font-family: var(--typography-fontFamily-sans, 'IBM Plex Sans');
24
+ font-family: var(--typography-fontFamily-sans);
28
25
  font-weight: var(--typography-heading-h1-fontWeight);
29
- color: #ffffff;
30
26
  }
31
27
 
32
- @media (max-width: 768px) {
28
+ @media ${unsafeCSS(below('md'))} {
33
29
 
34
30
  :host(:nth-of-type(2)) .group-title {
35
31
  display: none !important;
@@ -1,5 +1,6 @@
1
1
  import { LitElement, html } from 'lit';
2
- import { tokens } from '../../tokens/tokens.js';
2
+ // Installs the design tokens into document scope; see src/tokens/tokens.js
3
+ import "../../tokens/tokens.js";
3
4
  import '../heading/heading.js';
4
5
  import footerCSS from './footer-links-group.css.js';
5
6
 
@@ -15,11 +16,11 @@ export class BdFooterLinksGroup extends LitElement {
15
16
 
16
17
  render() {
17
18
  return html`
18
- ${this.title ? html`<bd-h as="h6" fontWeight="700" color="#ffffff" class="group-title">${this.title}</bd-h>` : html`&nbsp;`}
19
+ ${this.title ? html`<bd-h as="h6" fontWeight="bold" color="inverse" class="group-title">${this.title}</bd-h>` : html`&nbsp;`}
19
20
  <slot></slot>
20
21
  `;
21
22
  }
22
23
  }
23
- BdFooterLinksGroup.styles = [tokens, footerCSS];
24
+ BdFooterLinksGroup.styles = [footerCSS];
24
25
 
25
26
  customElements.define('bd-footer-links-group', BdFooterLinksGroup);
@@ -1,32 +1,51 @@
1
- import { css } from 'lit';
1
+ import { css, unsafeCSS } from 'lit';
2
+ import { below } from '../shared/token-scales.js';
2
3
 
3
4
  export default css`
4
5
  :host {
5
6
  display: block;
7
+ /* no role: the masthead's ground, and it stays a primitive on purpose.
8
+ blue-600 is this system's brand INK step -- six roles resolve to it
9
+ (--color-text-brand, --status-brand-text, --status-brand-accent,
10
+ --status-info-text, --color-action-primary-hover and
11
+ --citation-reference-color) and every one of them is ink or an action,
12
+ not a surface.
13
+ .
14
+ So a --color-surface-brand-strong at this value would not be a missing
15
+ role, it would be a trap: brand ink on a brand-strong surface measures
16
+ 1.00:1 -- identical colours, invisible text -- and the primary action
17
+ colour on it is 1.36:1, which is where a button in a footer sits. The
18
+ role that reads here is --color-text-inverse at 6.18:1, which is what
19
+ the next line uses.
20
+ .
21
+ Two consumers, both footers, against the twelve that justified
22
+ --color-surface-container. See plans/reports/phase-2-vocab-e-has-role-pass.md
23
+ question E2. */
6
24
  background-color: var(--color-blue-600);
7
- color: var(--color-neutral-0);
8
- font-family: 'IBM Plex Sans', sans-serif;
25
+ color: var(--color-text-inverse);
26
+ font-family: var(--typography-fontFamily-sans);
9
27
  font-size: var(--typography-body-small-fontSize);
10
- line-height: var(--typography-lineHeight-normal);
28
+ /* The role's own leading -- see footer.css.js's :host. Deleting it was
29
+ measured to drop this footer to the font metric too. */
30
+ line-height: var(--typography-body-small-lineHeight);
11
31
  }
12
32
 
13
33
  bd-divider-vertical {
14
34
  display: inline-block;
15
35
  width: var(--form-input-default-borderWidth);
16
- height: var(--dimension-20px);
17
- background-color: var(--color-neutral-0);
36
+ height: var(--dimension-20);
37
+ background-color: var(--color-surface-default);
18
38
  }
19
39
 
20
40
  bd-divider-horizontal {
21
41
  display: block;
22
- background-color: var(--color-neutral-0);
42
+ background-color: var(--color-surface-default);
23
43
  opacity: 0.25;
24
44
  margin: var(--spacing-16) 0;
25
45
  }
26
46
 
27
47
  footer {
28
48
  padding: var(--spacing-32) var(--spacing-16);
29
- max-width: 1200px;
30
49
  margin: auto;
31
50
  }
32
51
 
@@ -34,7 +53,7 @@ export default css`
34
53
  display: flex;
35
54
  justify-content: space-between;
36
55
  align-items: center;
37
- background-color: var(--color-blue-500);
56
+ background-color: var(--color-surface-brand);
38
57
  padding: var(--spacing-24) 0;
39
58
  }
40
59
 
@@ -64,8 +83,20 @@ export default css`
64
83
  }
65
84
 
66
85
  .footer-copy {
67
- font-size: var(--typography-fontSize-sm);
68
- color: var(--color-gray-400);
86
+ /* No font-size: as footer.css.js's twin of this rule -- :host already
87
+ resolves --typography-body-small-fontSize and this restated the same
88
+ 14px as the primitive. The colour stays. */
89
+ /* no role: --color-text-muted-inverse is the role for this job -- dimmed ink
90
+ on a dark ground -- and it CANNOT be used here. Measured against the
91
+ host's blue-600: neutral-100 is 4.80:1 and passes body text; the role's
92
+ neutral-300 is 2.72:1 and fails. The role was built against
93
+ surface-inverse (neutral-900), where neutral-300 reaches 7.92:1; on a
94
+ brand ground two steps lighter it runs out of room.
95
+ .
96
+ So the value stays a primitive deliberately. Adopting the role here would
97
+ be a category-correct, job-correct, ACCESSIBILITY-BREAKING change, which
98
+ is the case worth a marker rather than a silent primitive. */
99
+ color: var(--color-neutral-100);
69
100
  }
70
101
 
71
102
  .footer-anpc-lp {
@@ -74,32 +105,28 @@ export default css`
74
105
  }
75
106
 
76
107
  .container {
77
- max-width: 1600px;
78
108
  margin: 0 auto;
79
- padding: 0 var(--spacing-16);
80
109
  }
81
110
 
82
111
  .footer-top-bleed {
83
- background: var(--color-blue-500);
112
+ background: var(--color-surface-brand);
84
113
  }
85
114
 
86
- a {
87
- color: var(--color-neutral-0);
88
- text-decoration: none;
89
- }
90
-
91
- a:hover {
92
- text-decoration: underline;
93
- }
115
+ /* No a, a:hover, a:focus or .footer-nav-main rules. This template renders no
116
+ anchor of its own -- the links are slotted, and bd-footer-nav renders
117
+ .footer-nav-main into its own shadow root -- so none of the four could
118
+ match: measured 0 across the 22 built footer stories in 11 bd-footer-lp
119
+ roots. The secondary nav's ink and focus ring are footer-nav-menu.css.js',
120
+ which is the sheet in the same tree as the anchors.
94
121
 
95
- a:focus {
96
- outline: none;
97
- border: 2px solid var(--color-blue-500);
98
- box-shadow: var(--focus-outline-primary, 0 0 0 2px rgba(0, 109, 255, 0.3));
99
- border-radius: 4px;
100
- }
122
+ One of them expressed an intent worth recording rather than resurrecting:
123
+ the mobile query dropped .footer-nav-main to gap 8, where the live sheet
124
+ keeps 16 at both. So the composed rhythm today is 16px stacked and 33px in
125
+ a row -- 16 either side of a 1px divider -- and tightening stacked tap
126
+ targets from 40px of pitch to 32 is a decision, not a repair. */
101
127
 
102
- @media (max-width: 768px) {
128
+ /* Responsive styles */
129
+ @media ${unsafeCSS(below('md'))} {
103
130
  .footer-top {
104
131
  flex-direction: column;
105
132
  gap: var(--spacing-16);
@@ -117,13 +144,15 @@ export default css`
117
144
  margin-bottom: var(--spacing-16);
118
145
  }
119
146
 
147
+ /* Stacked on a phone. The slot is display: contents, so the slotted
148
+ links are this flex box's items -- and only ::slotted reaches them. */
120
149
  .footer-secondary-nav {
121
150
  flex-direction: column;
122
151
  align-items: flex-start;
123
152
  gap: var(--spacing-8);
124
153
  }
125
154
 
126
- .footer-secondary-nav bd-divider-vertical {
155
+ .footer-secondary-nav ::slotted(bd-divider-vertical) {
127
156
  display: none !important;
128
157
  }
129
158
  }
@@ -1,11 +1,18 @@
1
1
  import { LitElement, html } from 'lit';
2
+ // Installs the design tokens into document scope; see src/tokens/tokens.js
3
+ import "../../tokens/tokens.js";
4
+ /* The md boundary comes from the shared breakpoint source so the CSS and the
5
+ JS cannot drift apart again: bd-footer switched at 767 while bd-footer-lp,
6
+ sharing footer-nav-menu.css.js, switched at 768 — so at exactly 768px the
7
+ LP footer rendered its mobile markup under the desktop stylesheet. */
8
+ import { matchesBelow } from '../shared/token-scales.js';
2
9
  import '../../components/divider/divider-horizontal.js';
3
10
  import '../../components/divider/divider-vertical.js';
4
11
  import '../../components/footer/footer-links-group.js';
5
12
  import '../../components/footer/footer-nav-menu.js';
6
13
  import '../../components/grid/grid.js';
7
- import { tokens } from "../../tokens/tokens.js";
8
14
  import footerCSS from './footer.css.js';
15
+ import { ensembleCSS } from '../shared/ensemble.css.js';
9
16
  import { localeMap } from './localeMap.js';
10
17
 
11
18
  export class BdFooterLP extends LitElement {
@@ -17,7 +24,7 @@ export class BdFooterLP extends LitElement {
17
24
  constructor() {
18
25
  super();
19
26
  this.currentLocale = 'en';
20
- this._isMobile = window.innerWidth <= 768;
27
+ this._isMobile = matchesBelow('md');
21
28
  }
22
29
 
23
30
  connectedCallback() {
@@ -75,13 +82,11 @@ export class BdFooterLP extends LitElement {
75
82
  });
76
83
 
77
84
  if (exactRegionMatch) {
78
- country = exactRegionMatch[1];
79
85
  const originalKey = Object.keys(localeMap).find(k =>
80
86
  k.toLowerCase() === exactRegionMatch[0]
81
87
  );
82
88
  this.currentLocale = originalKey || exactRegionMatch[0];
83
89
  } else {
84
- country = possibleMatches[0][1];
85
90
  const originalKey = Object.keys(localeMap).find(k =>
86
91
  k.toLowerCase() === possibleMatches[0][0]
87
92
  );
@@ -111,9 +116,9 @@ export class BdFooterLP extends LitElement {
111
116
  if (impressumLink) {
112
117
  impressumDivider = impressumLink.previousElementSibling;
113
118
 
114
- if (impressumDivider && impressumDivider.tagName === 'BD-DIVIDER-VERTICAL' &&
115
- impressumDivider.nextElementSibling === impressumLink) {
116
- } else {
119
+ // Keep it only if it is the divider immediately before the link
120
+ if (!(impressumDivider && impressumDivider.tagName === 'BD-DIVIDER-VERTICAL' &&
121
+ impressumDivider.nextElementSibling === impressumLink)) {
117
122
  impressumDivider = null;
118
123
  }
119
124
  }
@@ -129,7 +134,7 @@ export class BdFooterLP extends LitElement {
129
134
  }
130
135
 
131
136
  _handleResize() {
132
- this._isMobile = window.innerWidth <= 768;
137
+ this._isMobile = matchesBelow('md');
133
138
  }
134
139
 
135
140
  get locale() {
@@ -152,7 +157,7 @@ export class BdFooterLP extends LitElement {
152
157
 
153
158
  return html`
154
159
  <div class="footer-top-bleed">
155
- <div class="container">
160
+ <div class="bd-ensemble container">
156
161
  <div class="footer-top">
157
162
  <div class="footer-logo">
158
163
  <slot name="logo">
@@ -172,7 +177,7 @@ export class BdFooterLP extends LitElement {
172
177
  </div>
173
178
  </div>
174
179
 
175
- <footer class="container">
180
+ <footer class="bd-ensemble container">
176
181
  <div class="footer-main-content">
177
182
  <slot name="content"></slot>
178
183
  </div>
@@ -180,7 +185,7 @@ export class BdFooterLP extends LitElement {
180
185
  <div class="footer-secondary-nav">
181
186
  <slot name="secondary-nav"></slot>
182
187
  </div>
183
- <bd-divider-horizontal width="100%" color="white" opacity="0.25"></bd-divider-horizontal>
188
+ <bd-divider-horizontal width="100%" color="inverse" opacity="0.25"></bd-divider-horizontal>
184
189
  <div class="footer-extra">
185
190
  <div class="footer-copy">
186
191
  <slot name="copyright">
@@ -230,7 +235,7 @@ export class BdFooterLP extends LitElement {
230
235
  !(assignedNodes.length === 1 && assignedNodes[0].nodeType === Node.TEXT_NODE && assignedNodes[0].textContent.trim() === '');
231
236
  }
232
237
 
233
- static styles = [tokens, footerCSS];
238
+ static styles = [ensembleCSS, footerCSS];
234
239
  }
235
240
 
236
241
  customElements.define('bd-footer-lp', BdFooterLP);