@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
@@ -1,122 +1,67 @@
1
1
  import { html } from "lit";
2
- import "../button/button.js";
3
2
  import "./cta-banner.js";
3
+ import "../button/button.js";
4
4
 
5
5
  export default {
6
- title : "Components/CtaBanner",
6
+ title : "Modules/CTA Banner",
7
+ component : "bd-cta-banner",
7
8
  tags : ["autodocs"],
8
9
  parameters: {
9
10
  layout: "fullscreen",
10
11
  docs : {
11
12
  description: {
12
13
  component: `
13
- Full-width closing call-to-action banner on a blue gradient background —
14
- centered title, description, one or two buttons, and an optional small
15
- mono caption underneath.
16
-
17
- \`\`\`html
18
- <bd-cta-banner
19
- title="Run your AI agents with a guardrail"
20
- description="AI Guardian is in open BETA on macOS. Download the BETA and secure your agentic workflows."
21
- caption="Downloads the macOS BETA (.dmg). Free during BETA."
22
- >
23
- <bd-button-link slot="primary-button" kind="white" strong>Download BETA Today</bd-button-link>
24
- <bd-button-link slot="secondary-button" kind="outline-white" strong>Read the docs</bd-button-link>
25
- </bd-cta-banner>
26
- \`\`\`
14
+ **CtaBanner** is a full-width closing call to action on a brand gradient: a title, a
15
+ supporting line, one or two buttons, and an optional caption underneath.
27
16
 
28
- ### Attribute table
29
- | Attribute / slot | Type | Description |
30
- |---|---|---|
31
- | \`title\` / \`slot="title"\` | String | Large centred heading |
32
- | \`description\` / \`slot="description"\` | String | Paragraph under the title |
33
- | \`slot="primary-button"\` | — | First button, typically \`kind="white"\` |
34
- | \`slot="secondary-button"\` | — | Second button, typically \`kind="outline-white"\` |
35
- | \`caption\` / \`slot="caption"\` | String | Optional small mono line under the buttons |
36
-
37
- Buttons are expected to use \`bd-button-link\` with \`kind="white"\` /
38
- \`kind="outline-white"\` and \`strong\`, so they read against the blue
39
- background — that pairing isn't enforced by the component, just the
40
- convention used everywhere it's been placed so far.
17
+ It had no story until P5H.1, which is why nothing measured it. Its text sits on a
18
+ gradient rather than a flat surface, and a gradient is judged at its lightest point —
19
+ see \`Foundations/Text on a surface\`.
41
20
  `
42
21
  }
43
22
  }
23
+ },
24
+ argTypes: {
25
+ title : { control: "text", description: "Headline. Slot `title` overrides it." },
26
+ description: { control: "text", description: "Supporting line. Slot `description` overrides it." },
27
+ caption : { control: "text", description: "Small print under the buttons. Slot `caption` overrides it." }
44
28
  }
45
29
  };
46
30
 
47
- // ─── Cu caption (AI Guardian) ──────────────────────────────────────────────
48
-
49
- export const WithCaption = {
50
- name : "Cu caption",
51
- render: () => html`
52
- <bd-cta-banner
53
- title="Run your AI agents with a guardrail"
54
- description="AI Guardian is in open BETA on macOS. Download the BETA and secure your agentic workflows."
55
- caption="Downloads the macOS BETA (.dmg). Free during BETA."
56
- >
57
- <bd-button-link
58
- slot="primary-button"
59
- label="Download BETA Today"
60
- kind="white"
61
- size="md"
62
- strong
63
- >Download BETA Today</bd-button-link>
64
-
65
- <bd-button-link
66
- slot="secondary-button"
67
- label="Read the docs"
68
- kind="outline-white"
69
- size="md"
70
- strong
71
- >Read the docs</bd-button-link>
72
- </bd-cta-banner>
73
- `
31
+ const ARGS = {
32
+ title : "Ready to secure your AI agents?",
33
+ description: "AI Guardian watches what your agents actually do, and tells you when it should not have happened.",
34
+ caption : "Open BETA · macOS · no card required"
74
35
  };
75
36
 
76
- // ─── Fara caption (Skill Scanner) ──────────────────────────────────────────
37
+ export const Default = {
38
+ args : ARGS,
39
+ render: (a) => html`
40
+ <bd-cta-banner title="${a.title}" description="${a.description}" caption="${a.caption}">
41
+ <bd-button slot="primary-button" variant="primary">Get started</bd-button>
42
+ <bd-button slot="secondary-button" variant="outline-white">Read the docs</bd-button>
43
+ </bd-cta-banner>`
44
+ };
77
45
 
78
46
  export const WithoutCaption = {
79
- name : "Fără caption",
80
- render: () => html`
81
- <bd-cta-banner
82
- title="Scan before you trust"
83
- description="A skill is code you hand to your agent. One command stands between you and running it blind."
84
- >
85
- <bd-button-link
86
- slot="primary-button"
87
- label="Install with npx"
88
- kind="white"
89
- size="md"
90
- strong
91
- >Install with npx</bd-button-link>
92
-
93
- <bd-button-link
94
- slot="secondary-button"
95
- label="View on GitHub"
96
- kind="outline-white"
97
- size="md"
98
- strong
99
- >View on GitHub</bd-button-link>
100
- </bd-cta-banner>
101
- `
47
+ name : "Without caption",
48
+ args : { ...ARGS, caption: "" },
49
+ render : Default.render,
50
+ parameters: { docs: { description: { story: "The caption is the smallest tier and the one that fails contrast on the lighter end of the gradient. This story is the same banner without it." } } }
102
51
  };
103
52
 
104
- // ─── Un singur buton ────────────────────────────────────────────────────────
53
+ export const TitleOnly = {
54
+ name : "Title only",
55
+ args : { title: ARGS.title, description: "", caption: "" },
56
+ render: Default.render
57
+ };
105
58
 
106
- export const SingleButton = {
107
- name : "Un singur buton",
108
- render: () => html`
109
- <bd-cta-banner
110
- title="Ready to get started?"
111
- description="Free during BETA, no waitlist and no licence key."
112
- >
113
- <bd-button-link
114
- slot="primary-button"
115
- label="Install now"
116
- kind="white"
117
- size="md"
118
- strong
119
- >Install now</bd-button-link>
120
- </bd-cta-banner>
121
- `
122
- };
59
+ export const LongCopy = {
60
+ name: "Long copy",
61
+ args: {
62
+ title : "Ready to secure every autonomous agent running on your fleet, on every machine, in every team?",
63
+ description: "AI Guardian inspects tool calls, file access, prompts and skills against a policy baseline you set, and returns a verdict of allowed, flagged or blocked — so an agent that starts doing something it should not is stopped while it is still trying.",
64
+ caption : "Open BETA · macOS 13 and later · no card required · cancel any time"
65
+ },
66
+ render: Default.render
67
+ };
@@ -6,7 +6,31 @@ export default css`
6
6
  margin: 0;
7
7
  padding: 0;
8
8
  font-family: var(--typography-display-lg-fontFamily);
9
- color: var(--color-neutral-900);
9
+ color: var(--color-text-primary);
10
+ /* Display type is large enough that a single word can be wider than a
11
+ phone, and with overflow-wrap: normal there is no break opportunity
12
+ inside a word -- so the word painted outside the box and widened the
13
+ document. Measured at 320 and 375 with "Award-winning cybersecurity":
14
+
15
+ step size 320 375 576 768+
16
+ sm 36px ok ok ok ok
17
+ md 48px ok ok ok ok
18
+ lg 60px +61px +6px ok ok
19
+ xl 72px +134px +79px ok ok
20
+ xxl 96px +280px +225px +24px ok
21
+ xxxl 128px +475px +420px +219px ok
22
+
23
+ lg is this component's default, so the out-of-the-box configuration
24
+ made a phone scroll sideways on a thirteen-character word. break-word
25
+ only breaks where there is no break opportunity at all, so every case
26
+ that already fitted is untouched -- the same rule, and the same reason,
27
+ as the tooltip bubble in P7F.1.
28
+
29
+ Containment only. WHICH step belongs at which breakpoint stays the
30
+ consuming page's choice: this atom maps a variant onto a
31
+ --typography-display-* role and deliberately knows nothing about
32
+ viewports, and six steps exist so that choice can be made. */
33
+ overflow-wrap: break-word;
10
34
  }
11
35
 
12
36
 
@@ -1,38 +1,71 @@
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 displayCSS from "./display.css.js";
5
+ import { color as colorRole } from "../shared/token-scales.js";
6
+
7
+ /** The six display roles the stylesheet carries, largest first. */
8
+ const VARIANTS = ["xxxl", "xxl", "xl", "lg", "md", "sm"];
4
9
 
5
10
  export class BdDisplay extends LitElement {
6
11
  static properties = {
7
- kind : { type: String, reflect: true }, // "xxxl", "xxl", "xl", "lg", "md", "sm"
8
- color: { type: String, reflect: true }, // Custom text color
9
- align: { type: String, reflect: true } // "left", "center", "right"
12
+ /* `variant`, matching bd-p and bd-li, which name their type steps the
13
+ same way. This was `kind` — the word that meant four unrelated things
14
+ before the vocabulary was settled, and the one atom the settling missed.
15
+ These are type roles rather than the sm/md/lg size scale, which is why
16
+ they are a variant and not a `size`. */
17
+ variant: { type: String, reflect: true },
18
+ /** @deprecated pass `variant`. */
19
+ kind : { type: String },
20
+ color : { type: String, reflect: true }, // semantic role, see COLOR_ROLES
21
+ align : { type: String, reflect: true } // "left", "center", "right"
10
22
  };
11
23
 
12
24
  constructor() {
13
25
  super();
14
- this.kind = "lg"; // Default medium display
26
+ /* `md`, not `lg`, since 2026-09-17 -- plans/LATER.md entry 14.
27
+ lg is 60px with no mobile endpoint, so the out-of-the-box configuration
28
+ used to be the largest step a phone cannot take: measured on a 288px
29
+ column, "Cybersecurity" at 60 needs 373px and breaks across two lines.
30
+ md is fluid -- clamp(30px, .., 48px) -- so it is the largest step that
31
+ fits at every width, which is what a default should be.
32
+ This DOES change what a bare <bd-display> renders on desktop, 60 to 48.
33
+ Nothing in this package moved, because no component consumes the atom;
34
+ a page that wants 60 says variant="lg" and always could. */
35
+ this.variant = "md";
36
+ this.kind = "";
15
37
  this.color = "";
16
38
  this.align = "left"; // Default left alignment
17
39
  }
18
40
 
41
+ willUpdate(changed) {
42
+ if (changed.has("kind") && this.kind) this.variant = this.kind;
43
+ if (changed.has("variant") || changed.has("kind")) {
44
+ /* An unrecognised variant lands on the default rather than on lg: a typo
45
+ should not render LARGER than what was asked for, which is the trap
46
+ the default itself just stopped being. */
47
+ if (!VARIANTS.includes(this.variant)) this.variant = "md";
48
+ }
49
+ }
50
+
19
51
  render() {
52
+ // color is a semantic role resolved to a token reference by
53
+ // shared/token-scales.js. It took a raw CSS colour before and call sites
54
+ // were passing hex straight through, which the manifest never surfaced
55
+ // because bd-display was absent from it.
20
56
  const styles = [];
21
- if (this.color) {
22
- styles.push(`color: ${this.color}`);
23
- }
24
- if (this.align) {
25
- styles.push(`text-align: ${this.align}`);
26
- }
57
+ const resolved = colorRole(this.color);
58
+ if (resolved) styles.push(`color: ${resolved}`);
59
+ if (this.align) styles.push(`text-align: ${this.align}`);
27
60
 
28
61
  return html`
29
- <div class="bd-display ${this.kind}" style="${styles.join('; ')}">
62
+ <div class="bd-display ${this.variant}" style="${styles.join('; ')}">
30
63
  <slot></slot>
31
64
  </div>
32
65
  `;
33
66
  }
34
67
 
35
- static styles = [tokens, displayCSS];
68
+ static styles = [displayCSS];
36
69
  }
37
70
 
38
71
  customElements.define("bd-display", BdDisplay);