@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
@@ -0,0 +1,42 @@
1
+ // icons/brand-signature-icon.js
2
+ import { html } from "lit";
3
+ import { BdIconElement } from "./icon-element.js";
4
+
5
+ /**
6
+ * The brand signature -- the lockup that sits over the hero image.
7
+ *
8
+ * ARTWORK. Ours. Figma: `Mark/brand-signature` on the `⚛️ Icons & marks` page
9
+ * (node 357:62), exported from that node rather than redrawn, and placed by
10
+ * `Header / v2` in the bottom-right corner of the media panel.
11
+ *
12
+ * WHY IT IS HERE AND NOT WITH THE RASTER MARKS. marks.js keeps its marks
13
+ * colourless and off the icon scale for two stated reasons -- recolouring a
14
+ * third party's mark would misrepresent it, and seven of the eight are a PNG
15
+ * in a pattern fill that does not scale. Neither reason reaches this one: it
16
+ * is our own mark, so the ink is ours to choose, and it is a single path, so
17
+ * it scales. That makes it a BdIconElement like any tintable icon -- drawn in
18
+ * currentColor, sized from the icon scale, with the viewBox carrying the
19
+ * 182:24 aspect so `size` sets the height and the width follows from it.
20
+ *
21
+ * `lg` is the default because it is 24px, the height the mark is drawn at in
22
+ * the file. So <bd-brand-signature-icon> with no attributes is the 182x24 the
23
+ * design specifies, and the header does not have to name a size to get it.
24
+ *
25
+ * The export came out `fill="white"`, which is the one thing changed here. A
26
+ * baked white is how bd-close-icon came to be invisible on a white page (see
27
+ * icon-element.js's header); the ink belongs to whatever this sits on, and
28
+ * over the hero it is the scrim that guarantees the contrast -- see the
29
+ * .bd-header-scrim note in header.css.js.
30
+ */
31
+ class BrandSignatureIcon extends BdIconElement {
32
+ static defaultSize = "lg";
33
+
34
+ render() {
35
+ return html`
36
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 182 24" fill="none" aria-hidden="true">
37
+ <path d="M157.338 11.7451L158.309 15.626H158.462L159.457 11.7451L161.424 5.48926H164.947L159.789 20.9619C159.1 23.0299 157.977 24 155.679 24H153.33V21.0635H155.857L156.317 19.583L151.619 5.48926H155.372L157.338 11.7451ZM26.6562 13.583C26.6563 15.2171 27.1926 16.1357 28.5713 16.1357C29.7457 16.1356 30.9453 15.4718 30.9453 14.1953V5.48926H34.7246V18.8936H30.9453V16.6465H30.8174C30.3578 17.9997 29.2602 19.2002 27.0645 19.2002C24.3326 19.2001 22.877 17.2852 22.877 13.915V5.48926H26.6562V13.583ZM41.7207 5.18262C44.5293 5.18262 45.8323 5.94868 47.1855 7.27637L45.0146 9.49805C44.1722 8.65557 43.0491 8.11926 41.9258 8.11914C40.6494 8.11914 40.1379 8.57851 40.1377 9.24219C40.1377 9.95699 40.4445 10.3399 41.542 10.4932L43.0488 10.6982C45.9595 11.0812 47.4658 12.409 47.4658 14.7324C47.4655 17.311 45.1674 19.2002 41.7207 19.2002C39.1422 19.2001 37.4568 18.3317 36.0781 16.7998L38.2998 14.5537C39.2444 15.6003 40.3935 16.2636 41.8486 16.2637C43.3295 16.2637 43.8408 15.7788 43.8408 14.9873C43.8408 14.3235 43.4318 13.9919 42.4873 13.8643L41.0322 13.6855C37.9939 13.3026 36.5127 11.9744 36.5127 9.54883C36.5127 6.97021 38.5294 5.18279 41.7207 5.18262ZM62.8281 5.18262C67.2706 5.18271 69.0576 8.3999 69.0576 12.0254V13.1494H60.4531V13.3535C60.4532 15.115 61.3982 16.2382 63.415 16.2383C64.998 16.2383 65.8664 15.498 66.709 14.6299L68.5986 16.9785C67.3987 18.3572 65.4324 19.2001 62.9814 19.2002C58.8707 19.2002 56.5469 16.4682 56.5469 12.1787C56.5469 7.94034 58.794 5.18262 62.8281 5.18262ZM82.6631 18.8936H78.8838V16.6465H78.7568C78.3738 18.1018 76.8925 19.2002 75.1562 19.2002C71.7605 19.2001 69.999 16.7234 69.999 12.1787C69.999 7.63401 71.7605 5.18269 75.1562 5.18262C76.8925 5.18262 78.3738 6.25545 78.7568 7.73633H78.8838V0H82.6631V18.8936ZM145.009 5.18262C148.788 5.18262 150.728 6.91901 150.729 10.085V15.957H151.979V18.8936H149.886C148.533 18.8936 147.562 17.9747 147.332 16.5449H147.18C146.771 18.2811 145.29 19.2002 143.247 19.2002C140.566 19.2001 139.086 17.6172 139.086 15.2939C139.086 12.4599 141.281 11.1065 144.83 11.1064H146.949V10.2637C146.949 8.96169 146.311 8.14467 144.729 8.14453C143.222 8.14453 142.43 8.9105 141.843 9.72754L139.596 7.73633C140.668 6.15336 142.2 5.18266 145.009 5.18262ZM170.123 5.18262C172.931 5.18265 174.234 5.94872 175.587 7.27637L173.417 9.49805C172.574 8.65548 171.451 8.11915 170.327 8.11914C169.051 8.11914 168.54 8.57851 168.54 9.24219C168.54 9.95709 168.846 10.34 169.944 10.4932L171.45 10.6982C174.361 11.0812 175.867 12.409 175.867 14.7324C175.867 17.3109 173.57 19.2001 170.123 19.2002C167.544 19.2002 165.859 18.3317 164.48 16.7998L166.701 14.5537C167.646 15.6005 168.796 16.2637 170.251 16.2637C171.732 16.2636 172.242 15.7787 172.242 14.9873C172.242 14.3235 171.833 13.9919 170.889 13.8643L169.434 13.6855C166.395 13.3026 164.914 11.9744 164.914 9.54883C164.914 6.97009 166.932 5.18262 170.123 5.18262ZM87.3281 14.5791C88.86 14.5791 89.5751 15.4467 89.5752 16.6211V17.1318C89.5752 18.3063 88.8601 19.1748 87.3281 19.1748C85.7964 19.1747 85.082 18.3062 85.082 17.1318V16.6211C85.0821 15.4468 85.7965 14.5792 87.3281 14.5791ZM179.376 14.5791C180.908 14.5791 181.623 15.4467 181.623 16.6211V17.1318C181.623 18.3063 180.908 19.1748 179.376 19.1748C177.844 19.1747 177.13 18.3062 177.13 17.1318V16.6211C177.13 15.4468 177.844 14.5793 179.376 14.5791ZM13.5312 4.51855H8.70605V18.8936H4.8252V4.51855H0V1.07227H13.5312V4.51855ZM17.5508 8.39941H17.6777C17.9842 6.91867 19.0061 5.48926 21.0996 5.48926H21.7637V9.0127H20.8184C18.6227 9.01273 17.5508 9.49825 17.5508 11.0557V18.8936H13.7715V5.48926H17.5508V8.39941ZM53.2725 5.48926H55.9277V8.42578H53.2725V15.958H55.7236V18.8936H53.4766C50.8725 18.8934 49.4941 17.5404 49.4941 14.9873V8.42578H47.6045V5.48926H48.5488C49.5701 5.48926 49.8769 4.97864 49.877 4.05957V1.86328H53.2725V5.48926ZM112.16 18.8936H108.126L106.85 14.6553H100.9L99.624 18.8936H95.6924L101.564 1.07227H106.364L112.16 18.8936ZM117.137 15.957H118.822V18.8936H117.111C114.533 18.8936 113.358 17.5913 113.358 15.2168V0H117.137V15.957ZM123.601 10.9023L124.52 14.9873H124.622L125.694 10.9023L127.227 5.48926H130.673L132.23 10.9023L133.328 14.9873H133.431L134.35 10.9023L135.652 5.48926H139.15L135.447 18.8936H131.49L129.856 13.2256L128.911 9.75293H128.835L127.916 13.2256L126.281 18.8936H122.4L118.647 5.48926H122.299L123.601 10.9023ZM145.111 13.251C143.656 13.251 142.89 13.7876 142.89 14.7578V15.1406C142.89 16.1107 143.528 16.5703 144.651 16.5703C145.902 16.5703 146.949 16.0595 146.949 14.834V13.251H145.111ZM76.4072 8.24707C74.9777 8.2472 73.9309 9.34452 73.9307 11.0293V13.3535C73.9308 15.0384 74.9776 16.1366 76.4072 16.1367C77.837 16.1367 78.8838 15.3955 78.8838 14.1699V10.2129C78.8838 8.98734 77.837 8.24707 76.4072 8.24707ZM101.819 11.3613H105.905L103.913 4.5957H103.786L101.819 11.3613ZM62.9043 7.96582C61.398 7.96593 60.4531 9.06411 60.4531 10.7236V10.9277H65.1514V10.6982C65.1514 9.06417 64.4107 7.96582 62.9043 7.96582Z" fill="currentColor"/>
38
+ </svg>
39
+ `;
40
+ }
41
+ }
42
+ customElements.define("bd-brand-signature-icon", BrandSignatureIcon);
@@ -0,0 +1,27 @@
1
+ // icons/check-icon.js
2
+ import { html } from "lit";
3
+ import { BdIconElement } from "./icon-element.js";
4
+
5
+ /**
6
+ * The check the package had been drawing as a "✓" character in two places --
7
+ * list-item.css.js and pricing-feature-item.css.js -- which is type doing an
8
+ * icon's job: it changes shape with the font, renders differently on macOS and
9
+ * Windows, and has no viewBox to scale on.
10
+ *
11
+ * ARTWORK. Eclipse `checkmark fill`. The drawing it replaces was ours -- a
12
+ * 2-unit offset of a polyline, sized to match plus-icon and minus-icon. Those
13
+ * two come from Eclipse as well, so the family still agrees; it agrees on the
14
+ * library's terms rather than on ours.
15
+ */
16
+ class CheckIcon extends BdIconElement {
17
+ static defaultSize = "sm";
18
+
19
+ render() {
20
+ return html`
21
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="none" aria-hidden="true">
22
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M7.5026 12.6586L14.8319 4.28234L13.3267 2.96533L6.68028 10.5612L2.82129 6.92924L1.45056 8.38564L6.06466 12.7283C6.26237 12.9144 6.52725 13.0121 6.79844 12.999C7.06963 12.9858 7.32381 12.863 7.5026 12.6586Z" fill="currentColor"/>
23
+ </svg>
24
+ `;
25
+ }
26
+ }
27
+ customElements.define("bd-check-icon", CheckIcon);
@@ -0,0 +1,33 @@
1
+ // icons/circle-info-icon.js
2
+ import { html } from "lit";
3
+ import { BdIconElement } from "./icon-element.js";
4
+
5
+ /**
6
+ * The information mark bd-alert shows by default for every tone.
7
+ *
8
+ * It is the icon the package owed. alert.js has rendered
9
+ * <bd-missing-icon name="circle-info"> since the component was built -- the
10
+ * placeholder exists so a caller can write an icon before it is drawn and see
11
+ * an obvious gap rather than nothing -- and it was the only entry check:icons
12
+ * reported.
13
+ *
14
+ * ARTWORK. Eclipse `circle info`, exported from the Icon inventory table in the
15
+ * foundation Figma file. Three paths rather than one: the stem, the dot, and
16
+ * the ring. The ring is a single evenodd path rather than a stroked circle, so
17
+ * it fills with currentColor like the rest of the set instead of needing a
18
+ * stroke width that would not scale with the icon.
19
+ */
20
+ class CircleInfoIcon extends BdIconElement {
21
+ static defaultSize = "xl";
22
+
23
+ render() {
24
+ return html`
25
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none" aria-hidden="true">
26
+ <path d="M15 13V23H17V13H15Z" fill="currentColor"/>
27
+ <path d="M16 8.5C16.6904 8.5 17.25 9.05965 17.25 9.75C17.25 10.4404 16.6904 11 16 11C15.3096 11 14.75 10.4404 14.75 9.75C14.75 9.05965 15.3096 8.5 16 8.5Z" fill="currentColor"/>
28
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M16 2C8.26801 2 2 8.26801 2 16C2 23.732 8.26801 30 16 30C23.732 30 30 23.732 30 16C30 8.26801 23.732 2 16 2ZM4 16C4 9.37258 9.37258 4 16 4C22.6274 4 28 9.37258 28 16C28 22.6274 22.6274 28 16 28C9.37258 28 4 22.6274 4 16Z" fill="currentColor"/>
29
+ </svg>
30
+ `;
31
+ }
32
+ }
33
+ customElements.define("bd-circle-info-icon", CircleInfoIcon);
@@ -1,26 +1,14 @@
1
1
  // icons/close-icon.js
2
- import { LitElement, css, html } from "lit";
2
+ import { html } from "lit";
3
+ import { BdIconElement } from "./icon-element.js";
3
4
 
4
- class CloseIcon extends LitElement {
5
+ class CloseIcon extends BdIconElement {
6
+ static defaultSize = "md";
5
7
 
6
- static properties = {
7
- width : { type: Number },
8
- height: { type: Number },
9
- color : { type: String }
10
- };
11
-
12
- constructor() {
13
- super();
14
- this.width = 18;
15
- this.height = 18;
16
- this.color = "white";
17
- }
18
-
19
- static styles = css`:host { display: inline-flex; }`;
20
8
  render() {
21
9
  return html`
22
- <svg xmlns="http://www.w3.org/2000/svg" width="${this.width}" height="${this.height}" viewBox="0 0 18 18" aria-hidden="true">
23
- <path fill-rule="evenodd" clip-rule="evenodd" d="M7.18182 9L0.564941 15.6169L2.38322 17.4352L9.00007 10.8183L15.6169 17.4352L17.4352 15.6169L10.8183 9L17.4352 2.38317L15.6169 0.564894L9.00007 7.18174L2.38322 0.564894L0.564941 2.38317L7.18182 9Z" fill="${this.color}"/>
10
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" fill="none" aria-hidden="true">
11
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M7.40908 9.00013L1.61932 14.7899L3.21031 16.3809L9.00007 10.5911L14.7898 16.3809L16.3808 14.7899L10.5911 9.00013L16.3808 3.21037L14.7898 1.61938L9.00007 7.40914L3.21031 1.61938L1.61932 3.21037L7.40908 9.00013Z" fill="currentColor"/>
24
12
  </svg>
25
13
  `;
26
14
  }
@@ -1,28 +1,16 @@
1
1
  // icons/family-icon.js
2
- import { LitElement, css, html } from "lit";
2
+ import { html } from "lit";
3
+ import { BdIconElement } from "./icon-element.js";
3
4
 
4
- class FamilyIcon extends LitElement {
5
- static properties = {
6
- width : { type: Number },
7
- height: { type: Number },
8
- color : { type: String }
9
- };
10
-
11
- constructor() {
12
- super();
13
- this.width = 32;
14
- this.height = 32;
15
- this.color = "currentColor";
16
- }
17
-
18
- static styles = css`:host { display: inline-flex; }`;
5
+ class FamilyIcon extends BdIconElement {
6
+ static defaultSize = "xl";
19
7
 
20
8
  render() {
21
9
  return html`
22
- <svg xmlns="http://www.w3.org/2000/svg" width="${this.width}" height="${this.height}" viewBox="0 0 32 32" fill="none" aria-hidden="true">
23
- <path fill-rule="evenodd" clip-rule="evenodd" d="M16.0394 21.0955C16.5717 21.0955 17.093 21.0063 17.6014 20.8372C17.9 21.7401 18.6188 22.4693 19.5635 22.7615L20.4295 23.0294C21.3633 23.3183 22 24.1817 22 25.1591V27H24V25.1591C24 23.3048 22.792 21.6667 21.0205 21.1187L20.1545 20.8509C19.7356 20.7213 19.45 20.334 19.45 19.8955V19.7449C21.1462 18.295 21.9 16.0583 21.9 13.2778C21.9 10.8447 20.8711 9.23277 19.577 8.25708C18.3332 7.3193 16.8903 7 16 7C15.1097 7 13.6668 7.3193 12.423 8.25708C11.1289 9.23277 10.1 10.8447 10.1 13.2778C10.1 16.0583 10.8538 18.295 12.55 19.7449V19.8955C12.55 20.334 12.2644 20.7213 11.8455 20.8509L10.9795 21.1187C9.20796 21.6667 8 23.3048 8 25.1591V27H10V25.1591C10 24.1817 10.6367 23.3183 11.5705 23.0294L12.4365 22.7615C13.3896 22.4667 14.1128 21.727 14.4065 20.813C14.9375 20.9979 15.4826 21.0955 16.0394 21.0955ZM12.1 13.2778C12.1 11.4886 12.8211 10.4617 13.627 9.85403C14.4832 9.20848 15.4903 9 16 9C16.5097 9 17.5168 9.20848 18.373 9.85403C19.1789 10.4617 19.9 11.4886 19.9 13.2778C19.9 15.9088 19.1434 17.5302 17.8667 18.447L17.4753 18.728C16.9672 18.9837 16.4907 19.0955 16.0394 19.0955C15.4812 19.0955 14.8855 18.9245 14.2393 18.5231L14.1333 18.447C12.8566 17.5302 12.1 15.9088 12.1 13.2778Z" fill="${this.color}"/>
24
- <path fill-rule="evenodd" clip-rule="evenodd" d="M6 19.955C6.24301 19.955 6.50063 19.9153 6.75514 19.8475C7.0813 20.4138 7.61269 20.8554 8.26724 21.0605L8.40095 21.1024C8.52133 21.1401 8.62873 21.2028 8.71818 21.2836C9.21418 20.834 9.80066 20.4758 10.4549 20.2401C10.103 19.7558 9.59939 19.382 8.99905 19.1939L8.86534 19.152C8.71342 19.1044 8.58812 19.0057 8.50596 18.8783C9.41844 17.937 9.8 16.5994 9.8 15.0556C9.8 13.5167 9.1507 12.4609 8.30704 11.8164C7.51308 11.2099 6.59336 11 6 11C5.40664 11 4.48692 11.2099 3.69296 11.8164C2.8493 12.4609 2.2 13.5167 2.2 15.0556C2.2 16.5845 2.57424 17.9112 3.46779 18.851L3.46121 18.8574L3.48918 18.8858C3.40698 19.0095 3.28362 19.1053 3.13466 19.152L3.00095 19.1939C1.81034 19.567 1 20.6702 1 21.9179V23H3V21.9179C3 21.5444 3.2426 21.2141 3.59905 21.1024L3.73276 21.0605C4.3858 20.8558 4.91624 20.4158 5.2426 19.8514C5.49788 19.9168 5.75644 19.955 6 19.955ZM4.2 15.0556C4.2 14.15 4.5507 13.678 4.90704 13.4058C5.31308 13.0956 5.79336 13 6 13C6.20664 13 6.68692 13.0956 7.09296 13.4058C7.4493 13.678 7.8 14.15 7.8 15.0556C7.8 16.2132 7.5391 16.9456 7.13947 17.4082L7.13758 17.4065C6.99679 17.5579 6.78144 17.7035 6.53517 17.8109C6.28066 17.9219 6.07954 17.955 6 17.955C5.90858 17.955 5.70643 17.922 5.46088 17.8209C5.29102 17.751 5.14074 17.665 5.02308 17.5752C4.5331 17.1288 4.2 16.3637 4.2 15.0556Z" fill="${this.color}"/>
25
- <path fill-rule="evenodd" clip-rule="evenodd" d="M26 19.955C26.2431 19.955 26.5007 19.9153 26.7552 19.8475C27.0813 20.4138 27.6127 20.8554 28.2673 21.0605L28.401 21.1024C28.7574 21.2141 29 21.5444 29 21.9179V23H31V21.9179C31 20.6702 30.1897 19.567 28.9991 19.1939L28.8654 19.152C28.7135 19.1044 28.5882 19.0057 28.506 18.8783C29.4185 17.937 29.8 16.5994 29.8 15.0556C29.8 13.5167 29.1507 12.4609 28.3071 11.8164C27.5131 11.2099 26.5934 11 26 11C25.4067 11 24.487 11.2099 23.693 11.8164C22.8493 12.4609 22.2 13.5167 22.2 15.0556C22.2 16.5845 22.5743 17.9112 23.4678 18.851L23.4613 18.8574L23.4892 18.8858C23.407 19.0095 23.2837 19.1053 23.1347 19.152L23.001 19.1939C22.4007 19.382 21.897 19.7558 21.5452 20.2401C22.1994 20.4758 22.7859 20.834 23.2819 21.2836C23.3713 21.2028 23.4787 21.1401 23.5991 21.1024L23.7328 21.0605C24.3858 20.8558 24.9163 20.4158 25.2426 19.8514C25.4979 19.9168 25.7565 19.955 26 19.955ZM24.2 15.0556C24.2 14.15 24.5507 13.678 24.9071 13.4058C25.3131 13.0956 25.7934 13 26 13C26.2067 13 26.687 13.0956 27.093 13.4058C27.4493 13.678 27.8 14.15 27.8 15.0556C27.8 16.2132 27.5391 16.9456 27.1395 17.4082L27.1376 17.4065C26.9968 17.5579 26.7815 17.7035 26.5352 17.8109C26.2807 17.9219 26.0796 17.955 26 17.955C25.9086 17.955 25.7065 17.922 25.4609 17.8209C25.2911 17.751 25.1408 17.665 25.0231 17.5752C24.5331 17.1288 24.2 16.3637 24.2 15.0556Z" fill="${this.color}"/>
10
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none" aria-hidden="true">
11
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M16.0394 21.0955C16.5717 21.0955 17.093 21.0063 17.6014 20.8372C17.9 21.7401 18.6188 22.4693 19.5635 22.7615L20.4295 23.0294C21.3633 23.3183 22 24.1817 22 25.1591V27H24V25.1591C24 23.3048 22.792 21.6667 21.0205 21.1187L20.1545 20.8509C19.7356 20.7213 19.45 20.334 19.45 19.8955V19.7449C21.1462 18.295 21.9 16.0583 21.9 13.2778C21.9 10.8447 20.8711 9.23277 19.577 8.25708C18.3332 7.3193 16.8903 7 16 7C15.1097 7 13.6668 7.3193 12.423 8.25708C11.1289 9.23277 10.1 10.8447 10.1 13.2778C10.1 16.0583 10.8538 18.295 12.55 19.7449V19.8955C12.55 20.334 12.2644 20.7213 11.8455 20.8509L10.9795 21.1187C9.20796 21.6667 8 23.3048 8 25.1591V27H10V25.1591C10 24.1817 10.6367 23.3183 11.5705 23.0294L12.4365 22.7615C13.3896 22.4667 14.1128 21.727 14.4065 20.813C14.9375 20.9979 15.4826 21.0955 16.0394 21.0955ZM12.1 13.2778C12.1 11.4886 12.8211 10.4617 13.627 9.85403C14.4832 9.20848 15.4903 9 16 9C16.5097 9 17.5168 9.20848 18.373 9.85403C19.1789 10.4617 19.9 11.4886 19.9 13.2778C19.9 15.9088 19.1434 17.5302 17.8667 18.447L17.4753 18.728C16.9672 18.9837 16.4907 19.0955 16.0394 19.0955C15.4812 19.0955 14.8855 18.9245 14.2393 18.5231L14.1333 18.447C12.8566 17.5302 12.1 15.9088 12.1 13.2778Z" fill="currentColor"/>
12
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M6 19.955C6.24301 19.955 6.50063 19.9153 6.75514 19.8475C7.0813 20.4138 7.61269 20.8554 8.26724 21.0605L8.40095 21.1024C8.52133 21.1401 8.62873 21.2028 8.71818 21.2836C9.21418 20.834 9.80066 20.4758 10.4549 20.2401C10.103 19.7558 9.59939 19.382 8.99905 19.1939L8.86534 19.152C8.71342 19.1044 8.58812 19.0057 8.50596 18.8783C9.41844 17.937 9.8 16.5994 9.8 15.0556C9.8 13.5167 9.1507 12.4609 8.30704 11.8164C7.51308 11.2099 6.59336 11 6 11C5.40664 11 4.48692 11.2099 3.69296 11.8164C2.8493 12.4609 2.2 13.5167 2.2 15.0556C2.2 16.5845 2.57424 17.9112 3.46779 18.851L3.46121 18.8574L3.48918 18.8858C3.40698 19.0095 3.28362 19.1053 3.13466 19.152L3.00095 19.1939C1.81034 19.567 1 20.6702 1 21.9179V23H3V21.9179C3 21.5444 3.2426 21.2141 3.59905 21.1024L3.73276 21.0605C4.3858 20.8558 4.91624 20.4158 5.2426 19.8514C5.49788 19.9168 5.75644 19.955 6 19.955ZM4.2 15.0556C4.2 14.15 4.5507 13.678 4.90704 13.4058C5.31308 13.0956 5.79336 13 6 13C6.20664 13 6.68692 13.0956 7.09296 13.4058C7.4493 13.678 7.8 14.15 7.8 15.0556C7.8 16.2132 7.5391 16.9456 7.13947 17.4082L7.13758 17.4065C6.99679 17.5579 6.78144 17.7035 6.53517 17.8109C6.28066 17.9219 6.07954 17.955 6 17.955C5.90858 17.955 5.70643 17.922 5.46088 17.8209C5.29102 17.751 5.14074 17.665 5.02308 17.5752C4.5331 17.1288 4.2 16.3637 4.2 15.0556Z" fill="currentColor"/>
13
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M26 19.955C26.2431 19.955 26.5007 19.9153 26.7552 19.8475C27.0813 20.4138 27.6127 20.8554 28.2673 21.0605L28.401 21.1024C28.7574 21.2141 29 21.5444 29 21.9179V23H31V21.9179C31 20.6702 30.1897 19.567 28.9991 19.1939L28.8654 19.152C28.7135 19.1044 28.5882 19.0057 28.506 18.8783C29.4185 17.937 29.8 16.5994 29.8 15.0556C29.8 13.5167 29.1507 12.4609 28.3071 11.8164C27.5131 11.2099 26.5934 11 26 11C25.4067 11 24.487 11.2099 23.693 11.8164C22.8493 12.4609 22.2 13.5167 22.2 15.0556C22.2 16.5845 22.5743 17.9112 23.4678 18.851L23.4613 18.8574L23.4892 18.8858C23.407 19.0095 23.2837 19.1053 23.1347 19.152L23.001 19.1939C22.4007 19.382 21.897 19.7558 21.5452 20.2401C22.1994 20.4758 22.7859 20.834 23.2819 21.2836C23.3713 21.2028 23.4787 21.1401 23.5991 21.1024L23.7328 21.0605C24.3858 20.8558 24.9163 20.4158 25.2426 19.8514C25.4979 19.9168 25.7565 19.955 26 19.955ZM24.2 15.0556C24.2 14.15 24.5507 13.678 24.9071 13.4058C25.3131 13.0956 25.7934 13 26 13C26.2067 13 26.687 13.0956 27.093 13.4058C27.4493 13.678 27.8 14.15 27.8 15.0556C27.8 16.2132 27.5391 16.9456 27.1395 17.4082L27.1376 17.4065C26.9968 17.5579 26.7815 17.7035 26.5352 17.8109C26.2807 17.9219 26.0796 17.955 26 17.955C25.9086 17.955 25.7065 17.922 25.4609 17.8209C25.2911 17.751 25.1408 17.665 25.0231 17.5752C24.5331 17.1288 24.2 16.3637 24.2 15.0556Z" fill="currentColor"/>
26
14
  </svg>
27
15
  `;
28
16
  }
@@ -1,26 +1,14 @@
1
1
  // icons/globe-icon.js
2
- import { LitElement, css, html } from "lit";
2
+ import { html } from "lit";
3
+ import { BdIconElement } from "./icon-element.js";
3
4
 
4
- class GlobeIcon extends LitElement {
5
+ class GlobeIcon extends BdIconElement {
6
+ static defaultSize = "md";
5
7
 
6
- static properties = {
7
- width : { type: Number },
8
- height: { type: Number },
9
- color : { type: String }
10
- };
11
-
12
- constructor() {
13
- super();
14
- this.width = 20;
15
- this.height = 20;
16
- this.color = "white";
17
- }
18
-
19
- static styles = css`:host { display: inline-flex; }`;
20
8
  render() {
21
9
  return html`
22
- <svg xmlns="http://www.w3.org/2000/svg" width="${this.width}" height="${this.height}" viewBox="0 0 20 20" fill="none" aria-hidden="true">
23
- <path fill-rule="evenodd" clip-rule="evenodd" d="M1.25 10C1.25 5.16751 5.16751 1.25 10 1.25C14.8325 1.25 18.75 5.16751 18.75 10C18.75 14.8325 14.8325 18.75 10 18.75C5.16751 18.75 1.25 14.8325 1.25 10ZM10 2.5C9.68262 2.5 9.36983 2.51971 9.06282 2.55799V4.88384C9.06282 5.10767 8.98274 5.32411 8.83705 5.49404L7.13041 7.48466C6.9523 7.6924 6.69232 7.81196 6.41867 7.81196H4.84449L4.62219 8.57915L5.38381 9.44622L6.23342 8.7515C6.62081 8.43474 7.18869 8.47806 7.52354 8.84993L9.9671 11.5636C10.2837 11.9151 10.2887 12.4474 9.97888 12.8049L6.61009 16.692C7.6282 17.2087 8.78009 17.5 10 17.5C13.0594 17.5 15.691 15.6681 16.8577 13.0414L14.6283 15.6137C14.4503 15.8192 14.1918 15.9372 13.9199 15.9372H12.631C11.9827 15.9372 11.5301 15.295 11.7481 14.6844L12.9639 11.2803L11.6036 10.6973C11.1277 10.4933 10.9072 9.94221 11.1112 9.4663L11.8444 7.75544C11.9922 7.41073 12.3311 7.18724 12.7061 7.18724H14.601C14.6608 7.18724 14.7203 7.19296 14.7785 7.2042L14.6138 6.87474H12.5001C11.9823 6.87474 11.5626 6.455 11.5626 5.93724V4.80038C11.5626 4.58106 11.6395 4.36869 11.7799 4.20021L12.7599 3.02412C11.9057 2.68588 10.9746 2.5 10 2.5ZM13.9089 3.59792L12.8126 4.91352V5.62474H14.8069C15.162 5.62474 15.4866 5.82536 15.6455 6.14297L16.3292 7.51038C16.7486 8.34928 15.8126 9.2161 15.0083 8.73354L14.5145 8.43724H12.9122L12.3832 9.67147L13.7263 10.2471C14.1815 10.4422 14.4064 10.9577 14.2399 11.4241L13.0744 14.6872H13.7772L17.4893 10.404C17.4964 10.2702 17.5 10.1355 17.5 10C17.5 7.29005 16.0627 4.91579 13.9089 3.59792ZM7.81282 2.82393C4.98528 3.68463 2.86587 6.17069 2.54281 9.1939C3.18286 9.98092 4.99058 12.3835 5.40842 12.9396C5.58837 13.1791 5.63756 13.4816 5.55863 13.7579L5.07728 15.4426L5.59227 15.9578L8.85346 12.1949L6.79402 9.90779L5.94154 10.6049C5.55068 10.9244 4.97693 10.8771 4.64373 10.4978L3.57 9.27539C3.35876 9.03489 3.28482 8.70323 3.3739 8.39577L3.70923 7.23854C3.82536 6.83775 4.19241 6.56196 4.60969 6.56196H6.27497L7.81282 4.76822V2.82393ZM4.03367 14.5452C3.32557 13.6171 2.82909 12.5189 2.61624 11.3226C3.25918 12.1634 3.97861 13.118 4.31401 13.564L4.03367 14.5452Z" fill="${this.color}"/>
10
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none" aria-hidden="true">
11
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M1.25 10C1.25 5.16751 5.16751 1.25 10 1.25C14.8325 1.25 18.75 5.16751 18.75 10C18.75 14.8325 14.8325 18.75 10 18.75C5.16751 18.75 1.25 14.8325 1.25 10ZM10 2.5C9.68262 2.5 9.36983 2.51971 9.06282 2.55799V4.88384C9.06282 5.10767 8.98274 5.32411 8.83705 5.49404L7.13041 7.48466C6.9523 7.6924 6.69232 7.81196 6.41867 7.81196H4.84449L4.62219 8.57915L5.38381 9.44622L6.23342 8.7515C6.62081 8.43474 7.18869 8.47806 7.52354 8.84993L9.9671 11.5636C10.2837 11.9151 10.2887 12.4474 9.97888 12.8049L6.61009 16.692C7.6282 17.2087 8.78009 17.5 10 17.5C13.0594 17.5 15.691 15.6681 16.8577 13.0414L14.6283 15.6137C14.4503 15.8192 14.1918 15.9372 13.9199 15.9372H12.631C11.9827 15.9372 11.5301 15.295 11.7481 14.6844L12.9639 11.2803L11.6036 10.6973C11.1277 10.4933 10.9072 9.94221 11.1112 9.4663L11.8444 7.75544C11.9922 7.41073 12.3311 7.18724 12.7061 7.18724H14.601C14.6608 7.18724 14.7203 7.19296 14.7785 7.2042L14.6138 6.87474H12.5001C11.9823 6.87474 11.5626 6.455 11.5626 5.93724V4.80038C11.5626 4.58106 11.6395 4.36869 11.7799 4.20021L12.7599 3.02412C11.9057 2.68588 10.9746 2.5 10 2.5ZM13.9089 3.59792L12.8126 4.91352V5.62474H14.8069C15.162 5.62474 15.4866 5.82536 15.6455 6.14297L16.3292 7.51038C16.7486 8.34928 15.8126 9.2161 15.0083 8.73354L14.5145 8.43724H12.9122L12.3832 9.67147L13.7263 10.2471C14.1815 10.4422 14.4064 10.9577 14.2399 11.4241L13.0744 14.6872H13.7772L17.4893 10.404C17.4964 10.2702 17.5 10.1355 17.5 10C17.5 7.29005 16.0627 4.91579 13.9089 3.59792ZM7.81282 2.82393C4.98528 3.68463 2.86587 6.17069 2.54281 9.1939C3.18286 9.98092 4.99058 12.3835 5.40842 12.9396C5.58837 13.1791 5.63756 13.4816 5.55863 13.7579L5.07728 15.4426L5.59227 15.9578L8.85346 12.1949L6.79402 9.90779L5.94154 10.6049C5.55068 10.9244 4.97693 10.8771 4.64373 10.4978L3.57 9.27539C3.35876 9.03489 3.28482 8.70323 3.3739 8.39577L3.70923 7.23854C3.82536 6.83775 4.19241 6.56196 4.60969 6.56196H6.27497L7.81282 4.76822V2.82393ZM4.03367 14.5452C3.32557 13.6171 2.82909 12.5189 2.61624 11.3226C3.25918 12.1634 3.97861 13.118 4.31401 13.564L4.03367 14.5452Z" fill="currentColor"/>
24
12
  </svg>
25
13
  `;
26
14
  }
@@ -1,26 +1,14 @@
1
1
  // icons/analysis-icon.js
2
- import { LitElement, css, html } from "lit";
2
+ import { html } from "lit";
3
+ import { BdIconElement } from "./icon-element.js";
3
4
 
4
- class GuideIcon extends LitElement {
5
+ class GuideIcon extends BdIconElement {
6
+ static defaultSize = "2xl";
5
7
 
6
- static properties = {
7
- width : { type: Number },
8
- height: { type: Number },
9
- color : { type: String }
10
- };
11
-
12
- constructor() {
13
- super();
14
- this.width = 48;
15
- this.height = 49;
16
- this.color = "#006DFF";
17
- }
18
-
19
- static styles = css`:host { display: inline-flex; }`;
20
8
  render() {
21
9
  return html`
22
- <svg width="${this.width}" height="${this.height}" viewBox="0 0 48 49" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
23
- <path d="M19.5 3C13.5938 3 8.15625 6.1875 5.15625 11.25C2.25 16.4062 2.25 22.6875 5.15625 27.75C8.15625 32.9062 13.5938 36 19.5 36C25.3125 36 30.75 32.9062 33.75 27.75C36.6562 22.6875 36.6562 16.4062 33.75 11.25C30.75 6.1875 25.3125 3 19.5 3ZM19.5 39C8.71875 39 0 30.2812 0 19.5C0 8.8125 8.71875 0 19.5 0C30.1875 0 39 8.8125 39 19.5C39 24.375 37.2188 28.7812 34.3125 32.25L47.5312 45.4688C48.0938 46.0312 48.0938 47.0625 47.5312 47.625C46.9688 48.1875 45.9375 48.1875 45.375 47.625L32.1562 34.3125C28.7812 37.3125 24.2812 39 19.5 39ZM12 21C12 20.25 12.6562 19.5 13.5 19.5C14.25 19.5 15 20.25 15 21V27C15 27.8438 14.25 28.5 13.5 28.5C12.6562 28.5 12 27.8438 12 27V21ZM18 12C18 11.25 18.6562 10.5 19.5 10.5C20.25 10.5 21 11.25 21 12V27C21 27.8438 20.25 28.5 19.5 28.5C18.6562 28.5 18 27.8438 18 27V12ZM24 18C24 17.25 24.6562 16.5 25.5 16.5C26.25 16.5 27 17.25 27 18V27C27 27.8438 26.25 28.5 25.5 28.5C24.6562 28.5 24 27.8438 24 27V18Z" fill="${this.color}"/>
10
+ <svg viewBox="0 0 48 49" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
11
+ <path d="M19.5 3C13.5938 3 8.15625 6.1875 5.15625 11.25C2.25 16.4062 2.25 22.6875 5.15625 27.75C8.15625 32.9062 13.5938 36 19.5 36C25.3125 36 30.75 32.9062 33.75 27.75C36.6562 22.6875 36.6562 16.4062 33.75 11.25C30.75 6.1875 25.3125 3 19.5 3ZM19.5 39C8.71875 39 0 30.2812 0 19.5C0 8.8125 8.71875 0 19.5 0C30.1875 0 39 8.8125 39 19.5C39 24.375 37.2188 28.7812 34.3125 32.25L47.5312 45.4688C48.0938 46.0312 48.0938 47.0625 47.5312 47.625C46.9688 48.1875 45.9375 48.1875 45.375 47.625L32.1562 34.3125C28.7812 37.3125 24.2812 39 19.5 39ZM12 21C12 20.25 12.6562 19.5 13.5 19.5C14.25 19.5 15 20.25 15 21V27C15 27.8438 14.25 28.5 13.5 28.5C12.6562 28.5 12 27.8438 12 27V21ZM18 12C18 11.25 18.6562 10.5 19.5 10.5C20.25 10.5 21 11.25 21 12V27C21 27.8438 20.25 28.5 19.5 28.5C18.6562 28.5 18 27.8438 18 27V12ZM24 18C24 17.25 24.6562 16.5 25.5 16.5C26.25 16.5 27 17.25 27 18V27C27 27.8438 26.25 28.5 25.5 28.5C24.6562 28.5 24 27.8438 24 27V18Z" fill="currentColor"/>
24
12
  </svg>
25
13
  `;
26
14
  }
@@ -0,0 +1,99 @@
1
+ import { LitElement, css } from "lit";
2
+ import { iconSize } from "../shared/token-scales.js";
3
+
4
+ /**
5
+ * Base for the tintable interface icons.
6
+ *
7
+ * Every one of them used to take `width` and `height` as numbers and write them
8
+ * straight into the SVG attributes, so a consumer could not pass
9
+ * `var(--icon-md-size)` even if they wanted to — which is why twenty of the
10
+ * twenty-three --icon-* tokens had no consumer. Defaults were 16, 18, 20, 32,
11
+ * 48, 48x49 and 80, three of which are on no scale, and the colour default was
12
+ * one of three different things including the literal string "white", so an
13
+ * unstyled bd-close-icon was invisible on a white page.
14
+ *
15
+ * The pattern here is the one bd-arrow-icon already used: the host takes a
16
+ * height from the icon scale and the SVG fills it, keeping its own aspect ratio
17
+ * from the viewBox rather than being squared off. The artwork is drawn in
18
+ * currentColor, so an icon follows the text it sits beside and needs no colour
19
+ * of its own.
20
+ *
21
+ * <bd-plus-icon></bd-plus-icon> the size its artwork was drawn at
22
+ * <bd-plus-icon size="lg"></bd-plus-icon> a step from the icon scale
23
+ * <bd-plus-icon width="18"></bd-plus-icon> deprecated, still honoured
24
+ *
25
+ * `width` and `height` are kept because consumers pass them today. They are
26
+ * deprecated: an off-scale pixel size is exactly what this replaced.
27
+ */
28
+ export class BdIconElement extends LitElement {
29
+ static properties = {
30
+ size : { type: String, reflect: true },
31
+ color : { type: String },
32
+ /** @deprecated pass `size` instead. */
33
+ width : { type: Number },
34
+ /** @deprecated pass `size` instead. */
35
+ height: { type: Number }
36
+ };
37
+
38
+ /**
39
+ * The step this icon's artwork was drawn at. Overridden per icon.
40
+ *
41
+ * Normally a step name. It also accepts a raw CSS length, for the one icon
42
+ * whose size is off the scale — see laurel-icon.js, where that carries a
43
+ * `no token:` reason rather than being silently inlined.
44
+ */
45
+ static defaultSize = "md";
46
+
47
+ static styles = css`
48
+ :host {
49
+ display: inline-flex;
50
+ /* --bd-icon-size is component-local and always set below, so the
51
+ fallback is only reached if a subclass forgets to call super. */
52
+ height: var(--bd-icon-size, var(--icon-md-size));
53
+ }
54
+
55
+ /* Whether an icon shows at all is the platform's question, not a prop this
56
+ element should invent: <bd-plus-icon hidden> is what a consumer will
57
+ reach for. It did not work. The UA sheet's [hidden] { display: none } is
58
+ an unlayered type rule on the element, and the :host rule above beats it,
59
+ so every icon in this package ignored the attribute -- measured before
60
+ this: a hidden bd-check-icon still computed inline-flex and still
61
+ occupied 16x16.
62
+ .
63
+ One rule restores it for all of them, and nothing new has to be learned
64
+ or documented: hidden is hidden. */
65
+ :host([hidden]) {
66
+ display: none;
67
+ }
68
+
69
+ svg {
70
+ display: block;
71
+ height: 100%;
72
+ /* auto, not 100%: the viewBox carries the aspect ratio, so an icon drawn
73
+ 48x49 stays 48x49 rather than being squashed square */
74
+ width: auto;
75
+ }
76
+ `;
77
+
78
+ constructor() {
79
+ super();
80
+ this.size = "";
81
+ this.color = "";
82
+ this.width = null;
83
+ this.height = null;
84
+ }
85
+
86
+ willUpdate() {
87
+ // An explicit pixel size wins, for the callers that still pass one.
88
+ const px = this.height ?? this.width;
89
+ const { defaultSize } = this.constructor;
90
+ // a step first, then an off-scale default, then the caller's pixels
91
+ const step = iconSize(this.size) || iconSize(defaultSize) || defaultSize;
92
+ this.style.setProperty("--bd-icon-size", px == null ? step : `${px}px`);
93
+
94
+ // No colour of its own by default: the artwork is currentColor, so it
95
+ // follows whatever it sits in.
96
+ if (this.color) this.style.color = this.color;
97
+ else this.style.removeProperty("color");
98
+ }
99
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Barrel for the interface icons, so the set can be imported as one module the
3
+ * way bd-annotation's four elements are.
4
+ *
5
+ * The interface icons below are tintable: the artwork is drawn in currentColor
6
+ * and the host
7
+ * takes a height from the icon scale, so an icon follows the text it sits
8
+ * beside and needs no colour of its own.
9
+ *
10
+ * The brand and award marks are NOT here — they are in ./marks.js, and the
11
+ * split is a size decision rather than a taxonomy one. Each of those marks
12
+ * embeds a PNG inside its SVG through a pattern fill, and together they came
13
+ * to 360KB against 22KB for everything below: 94% of this module's weight,
14
+ * for artwork that only bd-awards uses and that imports the files it needs
15
+ * directly anyway. Anyone reaching for a plus icon was paying for seven award
16
+ * badges.
17
+ */
18
+
19
+ // interface icons — tintable
20
+ import './analysis-icon.js';
21
+ import './check-icon.js';
22
+ import './arrow-icon.js';
23
+ import './arrow-down-icon.js';
24
+ import './arrow-right-icon.js';
25
+ import './arrow-up-icon.js';
26
+ import './circle-info-icon.js';
27
+ import './close-icon.js';
28
+ import './family-icon.js';
29
+ import './globe-icon.js';
30
+ import './guide-icon.js';
31
+ import './individual-icon.js';
32
+ import './laurel-icon.js';
33
+ import './machine-learning-icon.js';
34
+ import './minus-icon.js';
35
+ import './missing-icon.js';
36
+ import './plus-icon.js';