@repobit/dex-system-design 0.25.12 → 1.0.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 +204 -0
  2. package/README.md +131 -8
  3. package/package.json +96 -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
@@ -1,6 +1,6 @@
1
1
  import { html } from 'lit';
2
2
  import '../badge/badge.js';
3
- import './light-carousel-simple.js';
3
+ import '../paragraph/paragraph.js';
4
4
  import './light-carousel.js';
5
5
 
6
6
  export default {
@@ -13,11 +13,11 @@ export default {
13
13
  Two light carousel variants are available:
14
14
 
15
15
  - \`<bd-light-carousel-section>\` — carousel with icon, title, optional badge, and slotted \`<bd-p>\` content
16
- - \`<bd-light-carousel-simple-section>\` — simplified carousel with icon, title, and slotted content, no badge support
16
+ - \`<bd-light-carousel-section variant="simple">\` — simplified carousel with icon, title, and slotted content, no badge support
17
17
 
18
18
  Both use corresponding item components:
19
19
  - \`<bd-light-carousel-item>\` — for the standard variant
20
- - \`<bd-light-carousel-simple-item>\` — for the simple variant
20
+ - \`<bd-light-carousel-item variant="simple">\` — for the simple variant
21
21
 
22
22
  ### Usage
23
23
  \`\`\`html
@@ -27,18 +27,31 @@ Both use corresponding item components:
27
27
  icon="/assets/icon.png"
28
28
  badge="FAQ"
29
29
  >
30
- <bd-p kind="small">Protection details here.</bd-p>
30
+ <bd-p variant="small">Protection details here.</bd-p>
31
31
  </bd-light-carousel-item>
32
32
  </bd-light-carousel-section>
33
33
  \`\`\`
34
34
 
35
35
  ### Standard vs Simple
36
- | Feature | bd-light-carousel-section | bd-light-carousel-simple-section |
36
+
37
+ One component, one stylesheet, two value sets chosen by \`variant\`. They were two
38
+ element pairs until P6E.1; they were never two components.
39
+
40
+ | | variant="standard" (default) | variant="simple" |
37
41
  |---|---|---|
38
- | Badge support | Yes | No |
39
- | Icon | Yes | Yes |
40
- | Title | Yes | Yes |
41
- | Slotted content | Yes | Yes |
42
+ | Badge support | Yes | No — \`badge\` is ignored |
43
+ | Columns | 3 | 4 |
44
+ | Track gap | 30px | 1.5rem |
45
+ | Icon size | \`--spacing-32\` | \`--spacing-44\` |
46
+ | Item header | row, centre-aligned | column, start-aligned |
47
+ | Item title | h5, bold, 10px vertical padding | h4, regular, no padding |
48
+ | Title alignment | start | centre |
49
+ | Section padding block | 0 | \`--spacing-32\` |
50
+ | Track padding top | \`--spacing-32\` | 0 |
51
+
52
+ Omitting \`badge\` on the standard variant does **not** produce the simple one:
53
+ the two disagree on the eight layout values above and on the type of the item
54
+ title.
42
55
 
43
56
  ### Notes
44
57
  - Both carousels are static layout — no scroll arrows, no drag behavior
@@ -102,15 +115,15 @@ export const Default = {
102
115
  icon="/assets/light-carousel-img1.png"
103
116
  badge="FAQ"
104
117
  >
105
- <bd-p kind="small">Bitdefender Internet Security provides the best protection...</bd-p>
106
- <bd-p kind="small">Advanced AI and behavior-based detection ensure safety online and offline.</bd-p>
118
+ <bd-p variant="small">Bitdefender Internet Security provides the best protection...</bd-p>
119
+ <bd-p variant="small">Advanced AI and behavior-based detection ensure safety online and offline.</bd-p>
107
120
  </bd-light-carousel-item>
108
121
 
109
122
  <bd-light-carousel-item
110
123
  title="How to install Bitdefender on another device?"
111
124
  icon="/assets/light-carousel-img1.png"
112
125
  >
113
- <bd-p kind="small">You can install Bitdefender on other devices by logging into your Central account and using the 'My Devices' tab.</bd-p>
126
+ <bd-p variant="small">You can install Bitdefender on other devices by logging into your Central account and using the 'My Devices' tab.</bd-p>
114
127
  </bd-light-carousel-item>
115
128
 
116
129
  <bd-light-carousel-item
@@ -118,7 +131,7 @@ export const Default = {
118
131
  icon="/assets/light-carousel-img1.png"
119
132
  badge="How To"
120
133
  >
121
- <bd-p kind="small">Yes, just remove the license from the old device via Central and activate it on the new one.</bd-p>
134
+ <bd-p variant="small">Yes, just remove the license from the old device via Central and activate it on the new one.</bd-p>
122
135
  </bd-light-carousel-item>
123
136
  </bd-light-carousel-section>
124
137
  `,
@@ -140,14 +153,14 @@ export const StandardNoTitle = {
140
153
  icon="/assets/light-carousel-img1.png"
141
154
  badge="FAQ"
142
155
  >
143
- <bd-p kind="small">Bitdefender uses AI-powered threat detection to keep you safe.</bd-p>
156
+ <bd-p variant="small">Bitdefender uses AI-powered threat detection to keep you safe.</bd-p>
144
157
  </bd-light-carousel-item>
145
158
  <bd-light-carousel-item
146
159
  title="Can I use one license on multiple devices?"
147
160
  icon="/assets/light-carousel-img1.png"
148
161
  badge="Licensing"
149
162
  >
150
- <bd-p kind="small">Yes, depending on your plan you can protect multiple devices.</bd-p>
163
+ <bd-p variant="small">Yes, depending on your plan you can protect multiple devices.</bd-p>
151
164
  </bd-light-carousel-item>
152
165
  </bd-light-carousel-section>
153
166
  `,
@@ -168,19 +181,19 @@ export const StandardNoBadges = {
168
181
  title="What is included in my plan?"
169
182
  icon="/assets/light-carousel-img1.png"
170
183
  >
171
- <bd-p kind="small">All core features are included in every Bitdefender plan.</bd-p>
184
+ <bd-p variant="small">All core features are included in every Bitdefender plan.</bd-p>
172
185
  </bd-light-carousel-item>
173
186
  <bd-light-carousel-item
174
187
  title="How do I renew my subscription?"
175
188
  icon="/assets/light-carousel-img1.png"
176
189
  >
177
- <bd-p kind="small">You can renew from your Bitdefender Central account at any time.</bd-p>
190
+ <bd-p variant="small">You can renew from your Bitdefender Central account at any time.</bd-p>
178
191
  </bd-light-carousel-item>
179
192
  <bd-light-carousel-item
180
193
  title="Is there a free trial available?"
181
194
  icon="/assets/light-carousel-img1.png"
182
195
  >
183
- <bd-p kind="small">Yes, a 30-day free trial is available for most Bitdefender products.</bd-p>
196
+ <bd-p variant="small">Yes, a 30-day free trial is available for most Bitdefender products.</bd-p>
184
197
  </bd-light-carousel-item>
185
198
  </bd-light-carousel-section>
186
199
  `,
@@ -198,13 +211,13 @@ export const StandardNoIcons = {
198
211
  render: () => html`
199
212
  <bd-light-carousel-section title="Help Topics">
200
213
  <bd-light-carousel-item title="Installation Guide" badge="Guide">
201
- <bd-p kind="small">Step-by-step installation instructions for all platforms.</bd-p>
214
+ <bd-p variant="small">Step-by-step installation instructions for all platforms.</bd-p>
202
215
  </bd-light-carousel-item>
203
216
  <bd-light-carousel-item title="Billing & Payments" badge="Account">
204
- <bd-p kind="small">Everything you need to know about your subscription billing.</bd-p>
217
+ <bd-p variant="small">Everything you need to know about your subscription billing.</bd-p>
205
218
  </bd-light-carousel-item>
206
219
  <bd-light-carousel-item title="Technical Support" badge="Support">
207
- <bd-p kind="small">Contact our support team for technical issues.</bd-p>
220
+ <bd-p variant="small">Contact our support team for technical issues.</bd-p>
208
221
  </bd-light-carousel-item>
209
222
  </bd-light-carousel-section>
210
223
  `,
@@ -226,7 +239,7 @@ export const StandardSingleItem = {
226
239
  icon="/assets/light-carousel-img1.png"
227
240
  badge="Support"
228
241
  >
229
- <bd-p kind="small">You can reach our support team 24/7 via live chat or email from your Central account.</bd-p>
242
+ <bd-p variant="small">You can reach our support team 24/7 via live chat or email from your Central account.</bd-p>
230
243
  </bd-light-carousel-item>
231
244
  </bd-light-carousel-section>
232
245
  `,
@@ -248,7 +261,7 @@ export const StandardRichContent = {
248
261
  icon="/assets/light-carousel-img1.png"
249
262
  badge="Features"
250
263
  >
251
- <bd-p kind="small">Total Security includes:</bd-p>
264
+ <bd-p variant="small">Total Security includes:</bd-p>
252
265
  <ul style="font-size:13px; padding-left:16px; margin:4px 0;">
253
266
  <li>Antivirus & anti-malware</li>
254
267
  <li>Unlimited VPN</li>
@@ -261,8 +274,8 @@ export const StandardRichContent = {
261
274
  icon="/assets/light-carousel-img1.png"
262
275
  badge="Compatibility"
263
276
  >
264
- <bd-p kind="small">Available on Windows, macOS, Android, and iOS.</bd-p>
265
- <bd-p kind="small">Visit <a href="#">our compatibility page</a> for full details.</bd-p>
277
+ <bd-p variant="small">Available on Windows, macOS, Android, and iOS.</bd-p>
278
+ <bd-p variant="small">Visit <a href="#">our compatibility page</a> for full details.</bd-p>
266
279
  </bd-light-carousel-item>
267
280
  </bd-light-carousel-section>
268
281
  `,
@@ -283,37 +296,37 @@ export const Simple = {
283
296
  title: "Our AI-powered platform that detects and fights scams. In real time."
284
297
  },
285
298
  render: (args) => html`
286
- <bd-light-carousel-simple-section title="${args.title}">
287
- <bd-light-carousel-simple-item
299
+ <bd-light-carousel-section variant="simple" title="${args.title}">
300
+ <bd-light-carousel-item variant="simple"
288
301
  title="Scam Copilot Chatbot"
289
302
  icon="/assets/light-carousel-img1.png"
290
303
  >
291
- <bd-p kind="small">
304
+ <bd-p variant="small">
292
305
  Specialized AI chatbot that helps you identify suspicious online
293
306
  interactions so you don't become a victim.
294
307
  </bd-p>
295
- </bd-light-carousel-simple-item>
308
+ </bd-light-carousel-item>
296
309
 
297
- <bd-light-carousel-simple-item
310
+ <bd-light-carousel-item variant="simple"
298
311
  title="Scam Wave Alerts"
299
312
  icon="/assets/light-carousel-img1.png"
300
313
  >
301
- <bd-p kind="small">
314
+ <bd-p variant="small">
302
315
  Stay informed with real-time alerts about ongoing scam outbreaks
303
316
  detected in your area automatically.
304
317
  </bd-p>
305
- </bd-light-carousel-simple-item>
318
+ </bd-light-carousel-item>
306
319
 
307
- <bd-light-carousel-simple-item
320
+ <bd-light-carousel-item variant="simple"
308
321
  title="Online Scam Protection"
309
322
  icon="/assets/light-carousel-img1.png"
310
323
  >
311
- <bd-p kind="small">
324
+ <bd-p variant="small">
312
325
  Focused on browsing activities, it specializes in detecting the newest
313
326
  scam patterns and tactics.
314
327
  </bd-p>
315
- </bd-light-carousel-simple-item>
316
- </bd-light-carousel-simple-section>
328
+ </bd-light-carousel-item>
329
+ </bd-light-carousel-section>
317
330
  `,
318
331
  parameters: {
319
332
  docs: {
@@ -327,20 +340,20 @@ export const Simple = {
327
340
  export const SimpleNoTitle = {
328
341
  name : 'Simple — No Title',
329
342
  render: () => html`
330
- <bd-light-carousel-simple-section>
331
- <bd-light-carousel-simple-item
343
+ <bd-light-carousel-section variant="simple">
344
+ <bd-light-carousel-item variant="simple"
332
345
  title="Scam Copilot Chatbot"
333
346
  icon="/assets/light-carousel-img1.png"
334
347
  >
335
- <bd-p kind="small">AI chatbot that helps you identify suspicious online interactions.</bd-p>
336
- </bd-light-carousel-simple-item>
337
- <bd-light-carousel-simple-item
348
+ <bd-p variant="small">AI chatbot that helps you identify suspicious online interactions.</bd-p>
349
+ </bd-light-carousel-item>
350
+ <bd-light-carousel-item variant="simple"
338
351
  title="Real-time Alerts"
339
352
  icon="/assets/light-carousel-img1.png"
340
353
  >
341
- <bd-p kind="small">Get notified instantly about scam outbreaks in your area.</bd-p>
342
- </bd-light-carousel-simple-item>
343
- </bd-light-carousel-simple-section>
354
+ <bd-p variant="small">Get notified instantly about scam outbreaks in your area.</bd-p>
355
+ </bd-light-carousel-item>
356
+ </bd-light-carousel-section>
344
357
  `,
345
358
  parameters: {
346
359
  docs: {
@@ -354,17 +367,17 @@ export const SimpleNoTitle = {
354
367
  export const SimpleNoIcons = {
355
368
  name : 'Simple — No Icons',
356
369
  render: () => html`
357
- <bd-light-carousel-simple-section title="Protection Features">
358
- <bd-light-carousel-simple-item title="Scam Detection">
359
- <bd-p kind="small">AI-powered scam detection across all browsing activities.</bd-p>
360
- </bd-light-carousel-simple-item>
361
- <bd-light-carousel-simple-item title="Wave Alerts">
362
- <bd-p kind="small">Real-time alerts about scam outbreaks in your area.</bd-p>
363
- </bd-light-carousel-simple-item>
364
- <bd-light-carousel-simple-item title="Online Protection">
365
- <bd-p kind="small">Continuous protection against the latest scam patterns.</bd-p>
366
- </bd-light-carousel-simple-item>
367
- </bd-light-carousel-simple-section>
370
+ <bd-light-carousel-section variant="simple" title="Protection Features">
371
+ <bd-light-carousel-item variant="simple" title="Scam Detection">
372
+ <bd-p variant="small">AI-powered scam detection across all browsing activities.</bd-p>
373
+ </bd-light-carousel-item>
374
+ <bd-light-carousel-item variant="simple" title="Wave Alerts">
375
+ <bd-p variant="small">Real-time alerts about scam outbreaks in your area.</bd-p>
376
+ </bd-light-carousel-item>
377
+ <bd-light-carousel-item variant="simple" title="Online Protection">
378
+ <bd-p variant="small">Continuous protection against the latest scam patterns.</bd-p>
379
+ </bd-light-carousel-item>
380
+ </bd-light-carousel-section>
368
381
  `,
369
382
  parameters: {
370
383
  docs: {
@@ -378,14 +391,14 @@ export const SimpleNoIcons = {
378
391
  export const SimpleSingleItem = {
379
392
  name : 'Simple — Single Item (edge case)',
380
393
  render: () => html`
381
- <bd-light-carousel-simple-section title="Key Feature">
382
- <bd-light-carousel-simple-item
394
+ <bd-light-carousel-section variant="simple" title="Key Feature">
395
+ <bd-light-carousel-item variant="simple"
383
396
  title="Scam Copilot Chatbot"
384
397
  icon="/assets/light-carousel-img1.png"
385
398
  >
386
- <bd-p kind="small">AI chatbot specialized in identifying suspicious online interactions.</bd-p>
387
- </bd-light-carousel-simple-item>
388
- </bd-light-carousel-simple-section>
399
+ <bd-p variant="small">AI chatbot specialized in identifying suspicious online interactions.</bd-p>
400
+ </bd-light-carousel-item>
401
+ </bd-light-carousel-section>
389
402
  `,
390
403
  parameters: {
391
404
  docs: {
@@ -406,23 +419,23 @@ export const BothVariants = {
406
419
  <p style="font-weight:600; font-size:14px; margin-bottom:8px; color:#026DFF;">Standard (with badge support)</p>
407
420
  <bd-light-carousel-section title="Help & FAQ">
408
421
  <bd-light-carousel-item title="How do I install?" icon="/assets/light-carousel-img1.png" badge="FAQ">
409
- <bd-p kind="small">Download from Central and follow the setup wizard.</bd-p>
422
+ <bd-p variant="small">Download from Central and follow the setup wizard.</bd-p>
410
423
  </bd-light-carousel-item>
411
424
  <bd-light-carousel-item title="How do I renew?" icon="/assets/light-carousel-img1.png" badge="Account">
412
- <bd-p kind="small">Renew anytime from your Bitdefender Central account.</bd-p>
425
+ <bd-p variant="small">Renew anytime from your Bitdefender Central account.</bd-p>
413
426
  </bd-light-carousel-item>
414
427
  </bd-light-carousel-section>
415
428
  </div>
416
429
  <div>
417
430
  <p style="font-weight:600; font-size:14px; margin-bottom:8px; color:#026DFF;">Simple (no badge)</p>
418
- <bd-light-carousel-simple-section title="AI Features">
419
- <bd-light-carousel-simple-item title="Scam Copilot" icon="/assets/light-carousel-img1.png">
420
- <bd-p kind="small">AI chatbot that detects suspicious interactions.</bd-p>
421
- </bd-light-carousel-simple-item>
422
- <bd-light-carousel-simple-item title="Wave Alerts" icon="/assets/light-carousel-img1.png">
423
- <bd-p kind="small">Real-time scam outbreak notifications.</bd-p>
424
- </bd-light-carousel-simple-item>
425
- </bd-light-carousel-simple-section>
431
+ <bd-light-carousel-section variant="simple" title="AI Features">
432
+ <bd-light-carousel-item variant="simple" title="Scam Copilot" icon="/assets/light-carousel-img1.png">
433
+ <bd-p variant="small">AI chatbot that detects suspicious interactions.</bd-p>
434
+ </bd-light-carousel-item>
435
+ <bd-light-carousel-item variant="simple" title="Wave Alerts" icon="/assets/light-carousel-img1.png">
436
+ <bd-p variant="small">Real-time scam outbreak notifications.</bd-p>
437
+ </bd-light-carousel-item>
438
+ </bd-light-carousel-section>
426
439
  </div>
427
440
  </div>
428
441
  `,
@@ -435,6 +448,37 @@ export const BothVariants = {
435
448
  }
436
449
  };
437
450
 
451
+ export const HeadingComposition = {
452
+ name : 'Heading composition (a11y)',
453
+ render: () => html`
454
+ <h1 style="font-family: var(--typography-fontFamily-sans)">Page title (the only h1)</h1>
455
+
456
+ <bd-light-carousel-section title="Section at the default level">
457
+ <bd-light-carousel-item title="Item heading" badge="FAQ">
458
+ <bd-p variant="small">Renders h3, one level below its section.</bd-p>
459
+ </bd-light-carousel-item>
460
+ </bd-light-carousel-section>
461
+
462
+ <bd-light-carousel-section variant="simple" heading-level="3" title="Nested section, told it sits deeper">
463
+ <bd-light-carousel-item variant="simple" heading-level="4" title="Item heading">
464
+ <bd-p variant="small">The consumer moved both levels; the type scale did not move with them.</bd-p>
465
+ </bd-light-carousel-item>
466
+ </bd-light-carousel-section>
467
+ `,
468
+ parameters: {
469
+ docs: {
470
+ description: {
471
+ story: `Heading level is a page-composition question, so the section takes it as \`heading-level\`
472
+ and defaults to 2 -- a reusable section cannot know it is the only thing on the page. Two of these
473
+ used to render an h1 each, which put two page-level headings on one page and then skipped to h6.
474
+
475
+ The type scale does not move with the level: both sections above look exactly as they did when they
476
+ were h1s. Inspect the accessibility tree and the outline should read h1 -> h2 -> h3 -> h3 -> h4.`
477
+ }
478
+ }
479
+ }
480
+ };
481
+
438
482
  export const MobileView = {
439
483
  name : 'Mobile View (375px)',
440
484
  render: () => html`
@@ -444,14 +488,14 @@ export const MobileView = {
444
488
  icon="/assets/light-carousel-img1.png"
445
489
  badge="FAQ"
446
490
  >
447
- <bd-p kind="small">AI and behavior-based detection keep you safe online and offline.</bd-p>
491
+ <bd-p variant="small">AI and behavior-based detection keep you safe online and offline.</bd-p>
448
492
  </bd-light-carousel-item>
449
493
  <bd-light-carousel-item
450
494
  title="How to install on another device?"
451
495
  icon="/assets/light-carousel-img1.png"
452
496
  badge="How To"
453
497
  >
454
- <bd-p kind="small">Log into Central and use the My Devices tab to install on more devices.</bd-p>
498
+ <bd-p variant="small">Log into Central and use the My Devices tab to install on more devices.</bd-p>
455
499
  </bd-light-carousel-item>
456
500
  </bd-light-carousel-section>
457
501
  `,
@@ -480,13 +524,13 @@ export const PlaygroundStandard = {
480
524
  icon="${args.icon}"
481
525
  badge="${args.badge}"
482
526
  >
483
- <bd-p kind="small">Bitdefender uses AI-powered detection to keep you safe online and offline.</bd-p>
527
+ <bd-p variant="small">Bitdefender uses AI-powered detection to keep you safe online and offline.</bd-p>
484
528
  </bd-light-carousel-item>
485
529
  <bd-light-carousel-item
486
530
  title="How do I renew my subscription?"
487
531
  icon="${args.icon}"
488
532
  >
489
- <bd-p kind="small">You can renew from your Bitdefender Central account at any time.</bd-p>
533
+ <bd-p variant="small">You can renew from your Bitdefender Central account at any time.</bd-p>
490
534
  </bd-light-carousel-item>
491
535
  </bd-light-carousel-section>
492
536
  `,
@@ -507,20 +551,20 @@ export const PlaygroundSimple = {
507
551
  icon : '/assets/light-carousel-img1.png'
508
552
  },
509
553
  render: (args) => html`
510
- <bd-light-carousel-simple-section title="${args.title}">
511
- <bd-light-carousel-simple-item
554
+ <bd-light-carousel-section variant="simple" title="${args.title}">
555
+ <bd-light-carousel-item variant="simple"
512
556
  title="${args.itemTitle}"
513
557
  icon="${args.icon}"
514
558
  >
515
- <bd-p kind="small">Specialized AI chatbot that helps you identify suspicious online interactions.</bd-p>
516
- </bd-light-carousel-simple-item>
517
- <bd-light-carousel-simple-item
559
+ <bd-p variant="small">Specialized AI chatbot that helps you identify suspicious online interactions.</bd-p>
560
+ </bd-light-carousel-item>
561
+ <bd-light-carousel-item variant="simple"
518
562
  title="Scam Wave Alerts"
519
563
  icon="${args.icon}"
520
564
  >
521
- <bd-p kind="small">Real-time alerts about ongoing scam outbreaks detected in your area.</bd-p>
522
- </bd-light-carousel-simple-item>
523
- </bd-light-carousel-simple-section>
565
+ <bd-p variant="small">Real-time alerts about ongoing scam outbreaks detected in your area.</bd-p>
566
+ </bd-light-carousel-item>
567
+ </bd-light-carousel-section>
524
568
  `,
525
569
  parameters: {
526
570
  docs: {