@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,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 {
@@ -7,31 +8,25 @@ export default css`
7
8
  }
8
9
 
9
10
  .bd-installoptions-container {
10
- background: var(--color-blue-50);
11
- padding: var(--spacing-64) var(--layout-ensemble-inline-padding, var(--spacing-24));
11
+ background: var(--status-brand-surface);
12
+ /* the band is full-bleed; the column inside it is bd-ensemble */
13
+ padding-block: var(--spacing-64);
12
14
  box-sizing: border-box;
13
15
  }
14
16
 
15
17
  .bd-installoptions-eyebrow {
16
- color: var(--color-blue-600);
17
- font-weight: var(--typography-fontWeight-medium);
18
+ color: var(--color-text-brand);
18
19
  margin: 0 0 var(--spacing-24);
19
- max-width: var(--layout-ensemble-max-width, 1200px);
20
- margin-inline: auto;
21
20
  }
22
21
 
23
22
  .bd-installoptions-title {
24
23
  margin: 0 0 var(--spacing-16);
25
- color: var(--color-neutral-1000);
26
- line-height: var(--typography-lineHeight-tight);
27
- max-width: var(--layout-ensemble-max-width, 1200px);
28
- margin-inline: auto;
24
+ color: var(--color-text-primary);
29
25
  }
30
26
 
31
27
  .bd-installoptions-description {
32
- color: var(--color-neutral-700);
33
- max-width: 640px;
34
- // padding: var(--spacing-48) var(--layout-ensemble-inline-padding, var(--spacing-24))
28
+ color: var(--color-text-secondary);
29
+ max-width: var(--content-width-readable);
35
30
  }
36
31
 
37
32
  .bd-installoptions-worksin {
@@ -39,20 +34,13 @@ export default css`
39
34
  align-items: center;
40
35
  flex-wrap: wrap;
41
36
  gap: var(--spacing-16);
42
- max-width: var(--layout-ensemble-max-width, 1200px);
43
- margin: 0 auto var(--spacing-40);
44
- }
45
-
46
- /* Slot generic pentru orice continut in afara grid-ului fix de carduri */
47
- .bd-installoptions-body {
48
- max-width: var(--layout-ensemble-max-width, 1200px);
49
- margin: 0 auto;
37
+ margin: 0 0 var(--spacing-40);
50
38
  }
51
39
 
52
40
  .bd-installoptions-worksin-label {
53
- color: var(--color-neutral-500);
54
- font-family: var(--typography-fontFamily-mono, monospace);
55
- font-size: var(--typography-fontSize-xs);
41
+ color: var(--color-text-subtle);
42
+ font-family: var(--typography-fontFamily-mono);
43
+ font-size: var(--typography-body-xsmall-fontSize);
56
44
  text-transform: uppercase;
57
45
  letter-spacing: 0.06em;
58
46
  flex-shrink: 0;
@@ -69,12 +57,15 @@ export default css`
69
57
  align-items: center;
70
58
  gap: var(--spacing-8);
71
59
  padding: var(--spacing-8) var(--spacing-16);
72
- background: var(--color-neutral-0);
73
- border: var(--border-width-1) solid var(--color-neutral-200);
60
+ background: var(--color-surface-default);
61
+ border: var(--border-width-1) solid var(--color-border-subtle);
74
62
  border-radius: var(--radius-full);
75
- font-size: var(--typography-fontSize-sm);
76
- font-weight: var(--typography-fontWeight-semibold);
77
- color: var(--color-neutral-900);
63
+ font-family: var(--typography-label-default-fontFamily);
64
+ font-size: var(--typography-label-default-fontSize);
65
+ font-weight: var(--typography-label-default-fontWeight);
66
+ line-height: var(--typography-label-default-lineHeight);
67
+ letter-spacing: var(--typography-label-default-letterSpacing);
68
+ color: var(--color-text-primary);
78
69
  }
79
70
 
80
71
  /*
@@ -87,11 +78,14 @@ export default css`
87
78
  display: inline-flex;
88
79
  align-items: center;
89
80
  justify-content: center;
90
- width: 20px;
91
- height: 20px;
81
+ width: var(--dimension-20);
82
+ height: var(--dimension-20);
92
83
  border-radius: var(--radius-md);
93
- color: var(--color-neutral-0);
84
+ color: var(--color-text-inverse);
85
+ /* no role: a glyph, not text -- an initial standing in for a brand mark
86
+ until the real logos exist (see above). */
94
87
  font-size: var(--typography-fontSize-xxs);
88
+ /* no role: the weight of the same glyph. */
95
89
  font-weight: var(--typography-fontWeight-bold);
96
90
  flex-shrink: 0;
97
91
  }
@@ -100,13 +94,11 @@ export default css`
100
94
  display: grid;
101
95
  grid-template-columns: repeat(3, 1fr);
102
96
  gap: var(--spacing-24);
103
- max-width: var(--layout-ensemble-max-width, 1200px);
104
- margin-inline: auto;
105
97
  }
106
98
 
107
99
  .bd-installoptions-card {
108
- background: var(--color-neutral-0);
109
- border: var(--border-width-1) solid var(--color-neutral-100);
100
+ background: var(--color-surface-default);
101
+ border: var(--border-width-1) solid var(--color-border-container);
110
102
  border-radius: var(--radius-xl);
111
103
  padding: var(--spacing-24);
112
104
  box-sizing: border-box;
@@ -124,31 +116,33 @@ export default css`
124
116
 
125
117
  .bd-installoptions-card-title {
126
118
  margin: 0;
127
- color: var(--color-neutral-900);
119
+ color: var(--color-text-primary);
128
120
  }
129
121
 
130
122
  .bd-installoptions-badge {
131
123
  flex-shrink: 0;
132
124
  padding: var(--spacing-4) var(--spacing-8);
133
- background: var(--color-blue-50);
134
- color: var(--color-blue-700);
125
+ background: var(--status-brand-surface);
126
+ color: var(--status-brand-text);
135
127
  border-radius: var(--radius-md);
136
- font-size: var(--typography-fontSize-xxs);
137
- font-weight: var(--typography-fontWeight-bold);
128
+ font-family: var(--typography-label-extra-small-fontFamily);
129
+ font-size: var(--typography-label-extra-small-fontSize);
130
+ font-weight: var(--typography-label-extra-small-fontWeight);
131
+ line-height: var(--typography-label-extra-small-lineHeight);
132
+ letter-spacing: var(--typography-label-extra-small-letterSpacing);
138
133
  text-transform: uppercase;
139
- letter-spacing: 0.04em;
140
134
  white-space: nowrap;
141
135
  }
142
136
 
143
137
  .bd-installoptions-card-description {
144
- color: var(--color-neutral-600);
138
+ color: var(--color-text-muted);
145
139
  margin: 0;
146
140
  flex-grow: 1;
147
141
  }
148
142
 
149
143
  .bd-installoptions-code {
150
144
  position: relative;
151
- background: var(--color-neutral-900);
145
+ background: var(--color-surface-inverse);
152
146
  border-radius: var(--radius-md);
153
147
  padding: var(--spacing-16);
154
148
  box-sizing: border-box;
@@ -156,9 +150,12 @@ export default css`
156
150
 
157
151
  .bd-installoptions-code-text {
158
152
  margin: 0;
159
- color: var(--color-neutral-0);
160
- font-family: var(--typography-fontFamily-mono, monospace);
161
- font-size: var(--typography-fontSize-sm);
153
+ color: var(--color-text-inverse);
154
+ font-family: var(--typography-code-block-fontFamily);
155
+ font-size: var(--typography-code-block-fontSize);
156
+ font-weight: var(--typography-code-block-fontWeight);
157
+ line-height: var(--typography-code-block-lineHeight);
158
+ letter-spacing: var(--typography-code-block-letterSpacing);
162
159
  white-space: pre-wrap;
163
160
  word-break: break-word;
164
161
  padding-right: var(--spacing-56);
@@ -169,19 +166,25 @@ export default css`
169
166
  top: var(--spacing-12);
170
167
  right: var(--spacing-12);
171
168
  padding: var(--spacing-4) var(--spacing-10);
172
- background: rgba(255, 255, 255, 0.12);
173
- color: var(--color-neutral-0);
169
+ /* no role: a control fill on an inverse ground -- the vocabulary gap
170
+ button.css.js's SURFACE block records. Mixed from the inverse ink so
171
+ it follows the code block if the ground ever flips. */
172
+ background: color-mix(in srgb, var(--color-text-inverse) 12%, transparent);
173
+ color: var(--color-text-inverse);
174
174
  border: none;
175
175
  border-radius: var(--radius-sm);
176
- font-family: var(--typography-fontFamily-sans);
177
- font-size: var(--typography-fontSize-xs);
178
- font-weight: var(--typography-fontWeight-semibold);
176
+ font-family: var(--typography-control-label-small-fontFamily);
177
+ font-size: var(--typography-control-label-small-fontSize);
178
+ font-weight: var(--typography-control-label-small-fontWeight);
179
+ line-height: var(--typography-control-label-small-lineHeight);
180
+ letter-spacing: var(--typography-control-label-small-letterSpacing);
179
181
  cursor: pointer;
180
182
  transition: background var(--transition-duration-fast) var(--transition-easing-smooth);
181
183
  }
182
184
 
183
185
  .bd-installoptions-copy:hover {
184
- background: rgba(255, 255, 255, 0.2);
186
+ /* no role: as the resting fill above, one step stronger. */
187
+ background: color-mix(in srgb, var(--color-text-inverse) 20%, transparent);
185
188
  }
186
189
 
187
190
  .bd-installoptions-copy:focus-visible {
@@ -190,34 +193,31 @@ export default css`
190
193
  }
191
194
 
192
195
  .bd-installoptions-card-link {
193
- font-weight: var(--typography-fontWeight-semibold);
194
196
  margin-top: auto;
195
197
  }
196
198
 
197
199
  /* === "Then just ask" prompt panel (prompt-panel attribute) === */
198
200
 
199
201
  .bd-installoptions-promptpanel {
200
- max-width: var(--layout-ensemble-max-width, 1200px);
201
- margin: var(--spacing-64) auto 0;
202
+ margin: var(--spacing-64) 0 0;
202
203
  }
203
204
 
204
205
  .bd-installoptions-prompt-title {
205
206
  margin: 0 0 var(--spacing-16);
206
- color: var(--color-neutral-1000);
207
- line-height: var(--typography-lineHeight-tight);
207
+ color: var(--color-text-primary);
208
208
  }
209
209
 
210
210
  .bd-installoptions-prompt-description {
211
- color: var(--color-neutral-700);
212
- max-width: 640px;
211
+ color: var(--color-text-secondary);
212
+ max-width: var(--content-width-readable);
213
213
  margin: 0 0 var(--spacing-24);
214
214
  }
215
215
 
216
216
  .bd-installoptions-prompt-label {
217
217
  display: block;
218
- color: var(--color-neutral-500);
219
- font-family: var(--typography-fontFamily-mono, monospace);
220
- font-size: var(--typography-fontSize-xs);
218
+ color: var(--color-text-subtle);
219
+ font-family: var(--typography-fontFamily-mono);
220
+ font-size: var(--typography-body-xsmall-fontSize);
221
221
  text-transform: uppercase;
222
222
  letter-spacing: 0.06em;
223
223
  margin-bottom: var(--spacing-8);
@@ -225,8 +225,8 @@ export default css`
225
225
 
226
226
  .bd-installoptions-prompt-code {
227
227
  position: relative;
228
- background: var(--color-neutral-900);
229
- border: var(--border-width-2) solid var(--color-blue-500);
228
+ background: var(--color-surface-inverse);
229
+ border: var(--border-width-2) solid var(--color-border-brand);
230
230
  border-radius: var(--radius-md);
231
231
  padding: var(--spacing-16);
232
232
  padding-right: var(--spacing-64);
@@ -235,10 +235,12 @@ export default css`
235
235
  }
236
236
 
237
237
  .bd-installoptions-prompt-code-text {
238
- color: var(--color-neutral-0);
239
- font-family: var(--typography-fontFamily-mono, monospace);
240
- font-size: var(--typography-fontSize-sm);
241
- line-height: var(--typography-lineHeight-normal);
238
+ color: var(--color-text-inverse);
239
+ font-family: var(--typography-code-block-fontFamily);
240
+ font-size: var(--typography-code-block-fontSize);
241
+ font-weight: var(--typography-code-block-fontWeight);
242
+ line-height: var(--typography-code-block-lineHeight);
243
+ letter-spacing: var(--typography-code-block-letterSpacing);
242
244
  }
243
245
 
244
246
  .bd-installoptions-prompt-code-text ::slotted(*) {
@@ -253,13 +255,16 @@ export default css`
253
255
  }
254
256
 
255
257
  .bd-installoptions-prompt-note {
256
- background: var(--color-yellow-50, #fffbeb);
257
- border: var(--border-width-1) solid var(--color-yellow-300, #fcd34d);
258
+ background: var(--status-warning-surface);
259
+ border: var(--border-width-1) solid var(--status-warning-border);
258
260
  border-radius: var(--radius-md);
259
261
  padding: var(--spacing-16) var(--spacing-20);
260
- color: var(--color-yellow-800, #92400e);
261
- font-size: var(--typography-fontSize-sm);
262
- line-height: var(--typography-lineHeight-normal);
262
+ color: var(--status-warning-text);
263
+ font-family: var(--typography-body-small-fontFamily);
264
+ font-size: var(--typography-body-small-fontSize);
265
+ font-weight: var(--typography-body-small-fontWeight);
266
+ line-height: var(--typography-body-small-lineHeight);
267
+ letter-spacing: var(--typography-body-small-letterSpacing);
263
268
  margin-bottom: var(--spacing-24);
264
269
  }
265
270
 
@@ -270,11 +275,13 @@ export default css`
270
275
  }
271
276
 
272
277
  .bd-installoptions-prompt-footer {
273
- color: var(--color-neutral-600);
278
+ color: var(--color-text-muted);
274
279
  margin: 0;
275
280
  }
276
281
 
277
- @media (max-width: 899px) {
282
+ /* below lg, not the 899px main shipped: three cards with code blocks need
283
+ the room, so they stack across 900-991 as well. */
284
+ @media ${unsafeCSS(below('lg'))} {
278
285
  .bd-installoptions-grid {
279
286
  grid-template-columns: 1fr;
280
287
  }
@@ -4,6 +4,7 @@ import "../heading/heading.js";
4
4
  import "../link/link.js";
5
5
  import "../paragraph/paragraph.js";
6
6
  import installOptionsCSS from "./install-options.css.js";
7
+ import { ensembleCSS } from "../shared/ensemble.css.js";
7
8
 
8
9
  class BdInstallOptions extends LitElement {
9
10
  static properties = {
@@ -19,7 +20,7 @@ class BdInstallOptions extends LitElement {
19
20
  promptLabel: { type: String, attribute: "prompt-label" } // small mono label above the prompt block
20
21
  };
21
22
 
22
- static styles = [tokens, installOptionsCSS];
23
+ static styles = [tokens, ensembleCSS, installOptionsCSS];
23
24
 
24
25
  constructor() {
25
26
  super();
@@ -126,7 +127,7 @@ class BdInstallOptions extends LitElement {
126
127
  <slot name="prompt-title"></slot>
127
128
  </bd-h>
128
129
 
129
- <bd-p kind="regular" class="bd-installoptions-prompt-description">
130
+ <bd-p variant="regular" class="bd-installoptions-prompt-description">
130
131
  <slot name="prompt-description"></slot>
131
132
  </bd-p>
132
133
 
@@ -149,7 +150,7 @@ class BdInstallOptions extends LitElement {
149
150
  <slot name="prompt-note"></slot>
150
151
  </div>
151
152
 
152
- <bd-p kind="regular" class="bd-installoptions-prompt-footer">
153
+ <bd-p variant="regular" class="bd-installoptions-prompt-footer">
153
154
  <slot name="prompt-footer"></slot>
154
155
  </bd-p>
155
156
  </div>
@@ -159,38 +160,40 @@ class BdInstallOptions extends LitElement {
159
160
  render() {
160
161
  return html`
161
162
  <div class="bd-installoptions-container">
162
- ${this.eyebrow
163
- ? html`<bd-p kind="normal" class="bd-installoptions-eyebrow">${this.eyebrow}</bd-p>`
164
- : nothing}
163
+ <div class="bd-ensemble">
164
+ ${this.eyebrow
165
+ ? html`<bd-p variant="regular" class="bd-installoptions-eyebrow">${this.eyebrow}</bd-p>`
166
+ : nothing}
165
167
 
166
- <bd-h as="h2" class="bd-installoptions-title">${this.title}</bd-h>
168
+ <bd-h as="h2" class="bd-installoptions-title">${this.title}</bd-h>
167
169
 
168
- ${this.description
169
- ? html`<bd-p kind="regular" class="bd-installoptions-description">${this.description}</bd-p>`
170
- : nothing}
170
+ ${this.description
171
+ ? html`<bd-p variant="regular" class="bd-installoptions-description">${this.description}</bd-p>`
172
+ : nothing}
171
173
 
172
- ${this._renderWorksIn()}
173
-
174
- <!--
175
- Slot generic (fara nume) -- pentru orice continut care nu se
176
- potriveste cu grid-ul fix de carduri (ex: un tabel, o casuta
177
- checklist, o nota de avertizare). Cardurile ramase implicite
178
- (this.cards) tot se randeaza mai jos daca sunt pasate; cele doua
179
- pot coexista sau poti folosi doar unul din ele.
180
- -->
181
- <div class="bd-installoptions-body">
182
- <slot></slot>
183
- </div>
174
+ ${this._renderWorksIn()}
175
+
176
+ <!--
177
+ Slot generic (fara nume) -- pentru orice continut care nu se
178
+ potriveste cu grid-ul fix de carduri (ex: un tabel, o casuta
179
+ checklist, o nota de avertizare). Cardurile ramase implicite
180
+ (this.cards) tot se randeaza mai jos daca sunt pasate; cele doua
181
+ pot coexista sau poti folosi doar unul din ele.
182
+ -->
183
+ <div class="bd-installoptions-body">
184
+ <slot></slot>
185
+ </div>
184
186
 
185
- ${this.cards.length
186
- ? html`
187
- <div class="bd-installoptions-grid">
188
- ${this.cards.map((card) => this._renderCard(card))}
189
- </div>
190
- `
191
- : nothing}
187
+ ${this.cards.length
188
+ ? html`
189
+ <div class="bd-installoptions-grid">
190
+ ${this.cards.map((card) => this._renderCard(card))}
191
+ </div>
192
+ `
193
+ : nothing}
192
194
 
193
- ${this._renderPromptPanel()}
195
+ ${this._renderPromptPanel()}
196
+ </div>
194
197
  </div>
195
198
  `;
196
199
  }
@@ -188,17 +188,17 @@ export const GenericSlotContent = {
188
188
  <bd-h as="h3" style="margin: 0 0 16px;">The contract the agent is held to</bd-h>
189
189
  <ul style="list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px;">
190
190
  <li style="display: flex; align-items: flex-start; gap: 12px;">
191
- <span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600, #16a34a); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 2px;">✓</span>
191
+ <span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 2px;">✓</span>
192
192
  <bd-p kind="regular" style="margin:0;">Scan mode is the default: a casual request never uploads your files.</bd-p>
193
193
  </li>
194
194
  <li style="display: flex; align-items: flex-start; gap: 12px;">
195
- <span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600, #16a34a); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 2px;">✓</span>
195
+ <span aria-hidden="true" style="flex-shrink: 0; width: 20px; height: 20px; border-radius: 999px; background: var(--color-green-600); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 2px;">✓</span>
196
196
  <bd-p kind="regular" style="margin:0;">Submit is opt-in only: the agent won't upload the full archive unless you explicitly ask.</bd-p>
197
197
  </li>
198
198
  </ul>
199
199
  </div>
200
200
 
201
- <div style="background: var(--color-yellow-50, #fffbeb); border: 1px solid var(--color-yellow-300, #fcd34d); border-radius: var(--radius-md); padding: 16px 20px; color: var(--color-yellow-800, #92400e); margin-top: 24px;">
201
+ <div style="background: var(--color-yellow-50); border: 1px solid var(--color-yellow-300); border-radius: var(--radius-md); padding: 16px 20px; color: var(--color-yellow-800); margin-top: 24px;">
202
202
  <bd-p kind="small" style="margin:0;">A scan that returns no findings means no known threat patterns were detected — not that the skill is safe.</bd-p>
203
203
  </div>
204
204
  </bd-install-options>
@@ -0,0 +1,35 @@
1
+ import { css } from 'lit';
2
+
3
+ /** Styled entirely from design tokens — see npm run lint:tokens. */
4
+ export const labelCSS = css`
5
+ :host { display: block; }
6
+
7
+ label {
8
+ display: block;
9
+ font-family: var(--form-label-default-fontFamily);
10
+ font-size: var(--form-label-default-fontSize);
11
+ font-weight: var(--form-label-default-fontWeight);
12
+ line-height: var(--form-label-default-lineHeight);
13
+ letter-spacing: var(--form-label-default-letterSpacing);
14
+ color: var(--form-label-default-color);
15
+ margin-bottom: var(--form-label-default-marginBottom);
16
+ }
17
+
18
+ :host([size='sm']) label {
19
+ font-size: var(--form-label-small-fontSize);
20
+ letter-spacing: var(--form-label-small-letterSpacing);
21
+ margin-bottom: var(--form-label-small-marginBottom);
22
+ }
23
+
24
+ :host([size='lg']) label {
25
+ font-size: var(--form-label-large-fontSize);
26
+ margin-bottom: var(--form-label-large-marginBottom);
27
+ }
28
+
29
+ .required {
30
+ color: var(--form-label-required-color);
31
+ margin-left: var(--form-label-required-marginLeft);
32
+ }
33
+ `;
34
+
35
+ export default labelCSS;
@@ -0,0 +1,38 @@
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 { labelCSS } from './label.css.js';
5
+ import { resolveSize } from '../shared/prop-vocabulary.js';
6
+
7
+ export class BdLabel extends LitElement {
8
+ static styles = [labelCSS];
9
+
10
+ static properties = {
11
+ size : { type: String, reflect: true },
12
+ for : { type: String },
13
+ required: { type: Boolean, reflect: true }
14
+ };
15
+
16
+ constructor() {
17
+ super();
18
+ this.size = 'md';
19
+ this.required = false;
20
+ }
21
+
22
+ willUpdate(changed) {
23
+ // small / default / large still resolve; see shared/prop-vocabulary.js
24
+ if (changed.has('size')) this.size = resolveSize(this.size, 'md');
25
+ }
26
+
27
+ render() {
28
+ return html`
29
+ <label for=${this.for || nothing}>
30
+ <slot></slot>${this.required
31
+ ? html`<span class="required" aria-hidden="true">*</span>`
32
+ : nothing}
33
+ </label>
34
+ `;
35
+ }
36
+ }
37
+
38
+ customElements.define('bd-label', BdLabel);
@@ -0,0 +1,82 @@
1
+ import { html } from 'lit';
2
+ import './label.js';
3
+
4
+ export default {
5
+ title : 'Atoms/Label',
6
+ tags : ['autodocs'],
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component: `
11
+ **BdLabel** is the caption for a form control, with an optional required
12
+ marker.
13
+
14
+ ### Usage
15
+ \`\`\`html
16
+ <bd-label>Email address</bd-label>
17
+ <bd-label required>Email address</bd-label>
18
+ <bd-label size="sm">Postcode</bd-label>
19
+ \`\`\`
20
+
21
+ ### Props
22
+ | Prop | Values | Default |
23
+ |---|---|---|
24
+ | \`size\` | \`small\`, \`default\`, \`large\` | \`default\` |
25
+ | \`required\` | boolean — appends a \`*\` marker | \`false\` |
26
+ | \`for\` | id of the control being labelled | \`''\` |
27
+
28
+ ### \`for\` does not cross the shadow boundary
29
+ The \`for\` attribute is applied to a \`<label>\` inside this element's shadow
30
+ root, and a \`for\` reference can only resolve within the same tree. **It will
31
+ not associate with an \`<input id="…">\` in your page.**
32
+
33
+ Until that is addressed, associate the control by nesting or by
34
+ \`aria-labelledby\`:
35
+
36
+ \`\`\`html
37
+ <bd-label id="email-label">Email address</bd-label>
38
+ <input aria-labelledby="email-label">
39
+ \`\`\`
40
+
41
+ ### The required marker is decorative
42
+ The \`*\` carries \`aria-hidden="true"\`, so it is not announced. That is correct
43
+ only if the control itself is marked \`required\` or \`aria-required\` — a screen
44
+ reader user learns the field is required from the input, never from this label.
45
+ Set both.
46
+ `
47
+ }
48
+ }
49
+ },
50
+ argTypes: {
51
+ size: {
52
+ control : { type: 'select' },
53
+ options : ['small', 'default', 'large'],
54
+ description: 'Type size of the label.',
55
+ table : { type: { summary: 'string' }, defaultValue: { summary: "default" }, category: 'Appearance' }
56
+ },
57
+ required: {
58
+ control : 'boolean',
59
+ description: 'Appends a decorative asterisk. Mark the control itself required too — the asterisk is aria-hidden.',
60
+ table : { type: { summary: 'boolean' }, defaultValue: { summary: "false" }, category: 'State' }
61
+ },
62
+ for: {
63
+ control : 'text',
64
+ description: 'Id of the labelled control. Note it cannot cross the shadow boundary — see the notes.',
65
+ table : { type: { summary: 'string' }, defaultValue: { summary: "" }, category: 'Accessibility' }
66
+ }
67
+ }
68
+ };
69
+
70
+ export const Default = () => html`
71
+ <bd-label>Email address</bd-label>
72
+ `;
73
+
74
+ export const Required = () => html`
75
+ <bd-label required>Email address</bd-label>
76
+ `;
77
+
78
+ export const Sizes = () => html`
79
+ <bd-label size="sm">Small</bd-label>
80
+ <bd-label>Default</bd-label>
81
+ <bd-label size="lg">Large</bd-label>
82
+ `;