banhaten 0.1.2 → 0.2.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 (365) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/CONTRIBUTING.md +44 -0
  3. package/README.md +145 -328
  4. package/SECURITY.md +15 -0
  5. package/banhaten.config.example.json +1 -3
  6. package/docs/design-system/README.md +20 -0
  7. package/docs/design-system/adoption-quality-remediation.md +87 -0
  8. package/docs/design-system/agent-usage.md +13 -0
  9. package/docs/design-system/appearance-presets.md +189 -0
  10. package/docs/design-system/appearances/default.md +94 -0
  11. package/docs/design-system/appearances/rounded.md +95 -0
  12. package/docs/design-system/appearances/sharp.md +95 -0
  13. package/docs/design-system/component-docs-pattern.md +81 -0
  14. package/docs/design-system/component-showcase-consistency-report.md +217 -0
  15. package/docs/design-system/component-token-consistency-audit.md +173 -0
  16. package/docs/design-system/components/README.md +75 -0
  17. package/docs/design-system/components/accordion.md +67 -0
  18. package/docs/design-system/components/activity-feed.md +106 -0
  19. package/docs/design-system/components/alert-dialog.md +87 -0
  20. package/docs/design-system/components/alert.md +111 -0
  21. package/docs/design-system/components/aspect-ratio.md +59 -0
  22. package/docs/design-system/components/attribute.md +103 -0
  23. package/docs/design-system/components/autocomplete.md +93 -0
  24. package/docs/design-system/components/avatar.md +70 -0
  25. package/docs/design-system/components/badge.md +72 -0
  26. package/docs/design-system/components/banner.md +99 -0
  27. package/docs/design-system/components/breadcrumbs.md +188 -0
  28. package/docs/design-system/components/button-group.md +117 -0
  29. package/docs/design-system/components/button.md +95 -0
  30. package/docs/design-system/components/card.md +95 -0
  31. package/docs/design-system/components/carousel.md +61 -0
  32. package/docs/design-system/components/catalog-components.md +59 -0
  33. package/docs/design-system/components/chart.md +58 -0
  34. package/docs/design-system/components/checkbox.md +68 -0
  35. package/docs/design-system/components/collapsible.md +63 -0
  36. package/docs/design-system/components/command.md +75 -0
  37. package/docs/design-system/components/context-menu.md +59 -0
  38. package/docs/design-system/components/date-picker.md +97 -0
  39. package/docs/design-system/components/divider.md +117 -0
  40. package/docs/design-system/components/empty-state.md +72 -0
  41. package/docs/design-system/components/field.md +86 -0
  42. package/docs/design-system/components/file-upload.md +199 -0
  43. package/docs/design-system/components/hover-card.md +61 -0
  44. package/docs/design-system/components/icons.md +48 -0
  45. package/docs/design-system/components/input-group.md +73 -0
  46. package/docs/design-system/components/input-otp.md +73 -0
  47. package/docs/design-system/components/input.md +84 -0
  48. package/docs/design-system/components/item.md +72 -0
  49. package/docs/design-system/components/kbd.md +62 -0
  50. package/docs/design-system/components/label.md +64 -0
  51. package/docs/design-system/components/menu.md +76 -0
  52. package/docs/design-system/components/menubar.md +60 -0
  53. package/docs/design-system/components/modal.md +119 -0
  54. package/docs/design-system/components/native-select.md +70 -0
  55. package/docs/design-system/components/navigation-menu.md +63 -0
  56. package/docs/design-system/components/onboarding-step-list-item.md +94 -0
  57. package/docs/design-system/components/page-header.md +98 -0
  58. package/docs/design-system/components/pagination.md +71 -0
  59. package/docs/design-system/components/popover.md +77 -0
  60. package/docs/design-system/components/progress-slider.md +66 -0
  61. package/docs/design-system/components/progress.md +92 -0
  62. package/docs/design-system/components/radio-card.md +65 -0
  63. package/docs/design-system/components/radio-group.md +72 -0
  64. package/docs/design-system/components/resizable.md +57 -0
  65. package/docs/design-system/components/scroll-area.md +60 -0
  66. package/docs/design-system/components/segmented-control.md +71 -0
  67. package/docs/design-system/components/select.md +87 -0
  68. package/docs/design-system/components/sheet.md +82 -0
  69. package/docs/design-system/components/sidebar.md +83 -0
  70. package/docs/design-system/components/skeleton.md +91 -0
  71. package/docs/design-system/components/slideout.md +77 -0
  72. package/docs/design-system/components/slider.md +81 -0
  73. package/docs/design-system/components/social-button.md +65 -0
  74. package/docs/design-system/components/spinner.md +77 -0
  75. package/docs/design-system/components/steps.md +77 -0
  76. package/docs/design-system/components/table.md +411 -0
  77. package/docs/design-system/components/tabs.md +69 -0
  78. package/docs/design-system/components/tag.md +95 -0
  79. package/docs/design-system/components/textarea.md +64 -0
  80. package/docs/design-system/components/timeline.md +95 -0
  81. package/docs/design-system/components/toast.md +73 -0
  82. package/docs/design-system/components/toggle.md +96 -0
  83. package/docs/design-system/components/toolbar.md +105 -0
  84. package/docs/design-system/components/tooltip.md +107 -0
  85. package/docs/design-system/components/typography.md +18 -0
  86. package/docs/design-system/density-and-elevation.md +44 -0
  87. package/docs/design-system/design-system-test-missing-items.md +368 -0
  88. package/docs/design-system/direction-and-localization.md +23 -0
  89. package/docs/design-system/form-recipes.md +73 -0
  90. package/docs/design-system/gap-promotion-policy.md +21 -0
  91. package/docs/design-system/gap-promotion-report.md +166 -0
  92. package/docs/design-system/icons.md +69 -0
  93. package/docs/design-system/installation.md +68 -0
  94. package/docs/design-system/launch-comparison-shadcn.md +98 -0
  95. package/docs/design-system/registry-and-cli.md +64 -0
  96. package/docs/design-system/release-policy.md +30 -0
  97. package/docs/design-system/roadmap.md +14 -0
  98. package/docs/design-system/support-matrix.md +23 -0
  99. package/docs/design-system/tabs.md +53 -0
  100. package/docs/design-system/token-governance.md +60 -0
  101. package/package.json +97 -65
  102. package/registry/component-contract.json +40 -0
  103. package/registry/components/alert-dialog.tsx +297 -0
  104. package/registry/components/alert.tsx +86 -65
  105. package/registry/components/aspect-ratio.tsx +30 -0
  106. package/registry/components/autocomplete.tsx +23 -9
  107. package/registry/components/avatar.tsx +7 -7
  108. package/registry/components/badge.tsx +1 -1
  109. package/registry/components/button-group.tsx +321 -4
  110. package/registry/components/button.tsx +38 -17
  111. package/registry/components/card.tsx +68 -59
  112. package/registry/components/carousel.tsx +282 -0
  113. package/registry/components/chart.tsx +203 -0
  114. package/registry/components/checkbox.tsx +3 -3
  115. package/registry/components/collapsible.tsx +69 -0
  116. package/registry/components/command.tsx +174 -0
  117. package/registry/components/context-menu.tsx +236 -0
  118. package/registry/components/date-picker.tsx +246 -105
  119. package/registry/components/expanded/ActivityFeed.tsx +6 -15
  120. package/registry/components/expanded/Banner.tsx +3 -3
  121. package/registry/components/expanded/Breadcrumbs.tsx +5 -5
  122. package/registry/components/expanded/CatalogComponentsShowcase.tsx +13 -13
  123. package/registry/components/expanded/CatalogDivider.tsx +1 -1
  124. package/registry/components/expanded/EmptyState.tsx +1 -1
  125. package/registry/components/expanded/FileUpload.tsx +9 -2
  126. package/registry/components/expanded/OnboardingStepListItem.tsx +2 -4
  127. package/registry/components/expanded/PageHeader.tsx +14 -14
  128. package/registry/components/expanded/Slideout.tsx +15 -415
  129. package/registry/components/expanded/Steps.tsx +4 -4
  130. package/registry/components/expanded/Table.tsx +116 -69
  131. package/registry/components/expanded/Timeline.tsx +3 -3
  132. package/registry/components/expanded/activityFeed.css +1 -1
  133. package/registry/components/expanded/breadcrumbs.css +139 -139
  134. package/registry/components/expanded/catalogComponentsShowcase.css +83 -83
  135. package/registry/components/expanded/divider.css +1 -1
  136. package/registry/components/expanded/emptyState.css +1 -1
  137. package/registry/components/expanded/fileUpload.css +6 -6
  138. package/registry/components/expanded/slideout.css +9 -685
  139. package/registry/components/expanded/steps.css +274 -274
  140. package/registry/components/expanded/table.css +2 -2
  141. package/registry/components/expanded/timeline.css +264 -264
  142. package/registry/components/field.tsx +230 -0
  143. package/registry/components/hover-card.tsx +48 -0
  144. package/registry/components/input-content.ts +1 -0
  145. package/registry/components/input-group.tsx +130 -0
  146. package/registry/components/input-otp.tsx +13 -3
  147. package/registry/components/input.tsx +70 -45
  148. package/registry/components/item.tsx +189 -0
  149. package/registry/components/kbd.tsx +151 -0
  150. package/registry/components/label.tsx +78 -0
  151. package/registry/components/menu.tsx +34 -246
  152. package/registry/components/menubar.tsx +226 -0
  153. package/registry/components/modal.tsx +216 -143
  154. package/registry/components/native-select.tsx +205 -0
  155. package/registry/components/navigation-menu.tsx +171 -0
  156. package/registry/components/pagination.tsx +80 -58
  157. package/registry/components/popover.tsx +162 -664
  158. package/registry/components/radio-card.tsx +116 -87
  159. package/registry/components/radio-group.tsx +1 -1
  160. package/registry/components/resizable.tsx +74 -0
  161. package/registry/components/scroll-area.tsx +67 -0
  162. package/registry/components/segmented-control.tsx +87 -0
  163. package/registry/components/select-content.tsx +2 -2
  164. package/registry/components/select.tsx +54 -20
  165. package/registry/components/sheet.tsx +305 -0
  166. package/registry/components/sidebar.tsx +352 -0
  167. package/registry/components/skeleton.css +0 -3
  168. package/registry/components/social-button.tsx +116 -30
  169. package/registry/components/spinner.tsx +18 -55
  170. package/registry/components/{expanded/tabs.css → tabs.css} +127 -106
  171. package/registry/components/tabs.tsx +246 -0
  172. package/registry/components/tag.tsx +2 -2
  173. package/registry/components/textarea.tsx +4 -4
  174. package/registry/components/toast.tsx +136 -0
  175. package/registry/components/toggle.tsx +2 -2
  176. package/registry/components/toolbar.tsx +89 -17
  177. package/registry/components/tooltip.tsx +1 -1
  178. package/registry/examples/alert-demo.tsx +25 -5
  179. package/registry/examples/alert-dialog-demo.tsx +42 -0
  180. package/registry/examples/aspect-ratio-demo.tsx +11 -0
  181. package/registry/examples/attribute-demo.tsx +1 -1
  182. package/registry/examples/autocomplete-demo.tsx +3 -3
  183. package/registry/examples/avatar-demo.tsx +7 -7
  184. package/registry/examples/badge-demo.tsx +1 -1
  185. package/registry/examples/button-demo.tsx +6 -6
  186. package/registry/examples/button-group-demo.tsx +23 -2
  187. package/registry/examples/card-demo.tsx +46 -8
  188. package/registry/examples/carousel-demo.tsx +43 -0
  189. package/registry/examples/chart-demo.tsx +33 -0
  190. package/registry/examples/checkbox-demo.tsx +5 -5
  191. package/registry/examples/collapsible-demo.tsx +16 -0
  192. package/registry/examples/collection-filter-bar-demo.tsx +135 -0
  193. package/registry/examples/command-demo.tsx +42 -0
  194. package/registry/examples/{expanded/command-bar-demo.tsx → command-palette-demo.tsx} +5 -15
  195. package/registry/examples/context-menu-demo.tsx +29 -0
  196. package/registry/examples/control-density-contract-demo.tsx +61 -0
  197. package/registry/examples/date-picker-demo.tsx +12 -12
  198. package/registry/examples/divider-demo.tsx +3 -3
  199. package/registry/examples/expanded/banner-demo.tsx +1 -1
  200. package/registry/examples/expanded/breadcrumbs-demo.tsx +1 -1
  201. package/registry/examples/expanded/empty-state-demo.tsx +1 -1
  202. package/registry/examples/expanded/file-upload-demo.tsx +1 -1
  203. package/registry/examples/expanded/onboarding-step-demo.tsx +1 -1
  204. package/registry/examples/expanded/slideout-demo.tsx +2 -2
  205. package/registry/examples/expanded/steps-demo.tsx +1 -1
  206. package/registry/examples/expanded/tabs-demo.tsx +2 -2
  207. package/registry/examples/expanded/timeline-demo.tsx +1 -1
  208. package/registry/examples/field-demo.tsx +51 -0
  209. package/registry/examples/hover-card-demo.tsx +23 -0
  210. package/registry/examples/input-demo.tsx +6 -6
  211. package/registry/examples/input-group-demo.tsx +16 -0
  212. package/registry/examples/input-otp-demo.tsx +4 -4
  213. package/registry/examples/item-demo.tsx +46 -0
  214. package/registry/examples/kbd-demo.tsx +11 -0
  215. package/registry/examples/label-demo.tsx +20 -0
  216. package/registry/examples/menu-demo.tsx +1 -1
  217. package/registry/examples/menubar-demo.tsx +34 -0
  218. package/registry/examples/modal-demo.tsx +67 -9
  219. package/registry/examples/native-select-demo.tsx +16 -0
  220. package/registry/examples/navigation-menu-demo.tsx +29 -0
  221. package/registry/examples/pagination-demo.tsx +6 -3
  222. package/registry/examples/popover-demo.tsx +19 -19
  223. package/registry/examples/progress-demo.tsx +1 -1
  224. package/registry/examples/progress-slider-demo.tsx +1 -1
  225. package/registry/examples/radio-card-demo.tsx +4 -4
  226. package/registry/examples/radio-group-demo.tsx +2 -2
  227. package/registry/examples/resizable-demo.tsx +22 -0
  228. package/registry/examples/results-toolbar-demo.tsx +44 -0
  229. package/registry/examples/scroll-area-demo.tsx +15 -0
  230. package/registry/examples/segmented-control-demo.tsx +39 -0
  231. package/registry/examples/select-demo.tsx +1 -1
  232. package/registry/examples/sheet-demo.tsx +47 -0
  233. package/registry/examples/sidebar-demo.tsx +55 -0
  234. package/registry/examples/slider-demo.tsx +3 -3
  235. package/registry/examples/social-button-demo.tsx +18 -8
  236. package/registry/examples/spinner-demo.tsx +13 -13
  237. package/registry/examples/tabs-demo.tsx +13 -0
  238. package/registry/examples/tag-demo.tsx +1 -1
  239. package/registry/examples/textarea-demo.tsx +4 -4
  240. package/registry/examples/toast-demo.tsx +35 -0
  241. package/registry/examples/toggle-demo.tsx +6 -6
  242. package/registry/examples/tooltip-demo.tsx +4 -4
  243. package/registry/guidance/USAGE.md +27 -0
  244. package/registry/hooks/use-direction.ts +193 -13
  245. package/registry/index.json +6010 -432
  246. package/registry/styles/globals.css +3112 -4690
  247. package/registry.json +1582 -0
  248. package/schema/config.schema.json +51 -0
  249. package/schema/registry.schema.json +190 -0
  250. package/schema/tokens.schema.json +163 -0
  251. package/src/cli/command-line.js +194 -0
  252. package/src/cli/config-editors.js +9 -0
  253. package/src/cli/doctor.js +399 -0
  254. package/src/cli/file-transaction.js +295 -0
  255. package/src/cli/global-css.js +153 -0
  256. package/src/cli/index.js +639 -1391
  257. package/src/cli/install-plan.js +592 -0
  258. package/src/cli/install-receipt.js +171 -0
  259. package/src/cli/jsonc.js +203 -0
  260. package/src/cli/package-install-state.js +254 -0
  261. package/src/cli/package-manager.js +238 -0
  262. package/src/cli/package-plan.js +185 -0
  263. package/src/cli/package-version.js +97 -0
  264. package/src/cli/registry-query.js +207 -0
  265. package/src/cli/reporting.js +55 -0
  266. package/src/cli/schema-validation.js +19 -0
  267. package/src/cli/source-scanner.js +686 -0
  268. package/src/cli/vite-config.js +478 -0
  269. package/tokens/banhaten.tokens.json +4313 -310
  270. package/registry/assets/avatars/avatar-02.jpg +0 -0
  271. package/registry/assets/avatars/avatar-03.jpg +0 -0
  272. package/registry/assets/avatars/avatar-04.jpg +0 -0
  273. package/registry/assets/avatars/avatar-05.jpg +0 -0
  274. package/registry/assets/avatars/avatar-06.jpg +0 -0
  275. package/registry/assets/avatars/avatar-07.jpg +0 -0
  276. package/registry/assets/avatars/avatar-08.jpg +0 -0
  277. package/registry/assets/avatars/avatar-09.jpg +0 -0
  278. package/registry/assets/avatars/avatar-10.jpg +0 -0
  279. package/registry/assets/avatars/avatar-11.jpg +0 -0
  280. package/registry/assets/avatars/avatar-12.jpg +0 -0
  281. package/registry/assets/avatars/avatar-13.jpg +0 -0
  282. package/registry/assets/avatars/avatar-14.jpg +0 -0
  283. package/registry/assets/avatars/avatar-15.jpg +0 -0
  284. package/registry/assets/avatars/avatar-16.jpg +0 -0
  285. package/registry/assets/avatars/avatar-17.jpg +0 -0
  286. package/registry/assets/avatars/avatar-18.jpg +0 -0
  287. package/registry/assets/avatars/avatar-19.jpg +0 -0
  288. package/registry/assets/avatars/avatar-20.jpg +0 -0
  289. package/registry/assets/avatars/avatar-21.jpg +0 -0
  290. package/registry/assets/avatars/avatar-22.jpg +0 -0
  291. package/registry/assets/avatars/avatar-23.jpg +0 -0
  292. package/registry/assets/avatars/avatar-24.jpg +0 -0
  293. package/registry/assets/avatars/avatar-25.jpg +0 -0
  294. package/registry/assets/avatars/avatar-26.jpg +0 -0
  295. package/registry/assets/avatars/avatar-27.jpg +0 -0
  296. package/registry/assets/avatars/avatar-28.jpg +0 -0
  297. package/registry/assets/avatars/avatar-29.jpg +0 -0
  298. package/registry/assets/avatars/avatar-30.jpg +0 -0
  299. package/registry/assets/avatars/avatar-31.jpg +0 -0
  300. package/registry/assets/avatars/avatar-32.jpg +0 -0
  301. package/registry/assets/avatars/avatar-33.jpg +0 -0
  302. package/registry/assets/avatars/avatar-34.jpg +0 -0
  303. package/registry/assets/avatars/avatar-35.jpg +0 -0
  304. package/registry/assets/image-assets.json +0 -744
  305. package/registry/assets/images/art-02.jpg +0 -0
  306. package/registry/assets/images/art-03.jpg +0 -0
  307. package/registry/assets/images/art-04.jpg +0 -0
  308. package/registry/assets/images/art-05.jpg +0 -0
  309. package/registry/assets/images/art-06.jpg +0 -0
  310. package/registry/assets/images/art-07.jpg +0 -0
  311. package/registry/assets/images/art-08.jpg +0 -0
  312. package/registry/assets/images/art-09.jpg +0 -0
  313. package/registry/assets/images/art-10.jpg +0 -0
  314. package/registry/assets/images/art-11.jpg +0 -0
  315. package/registry/assets/images/art-12.jpg +0 -0
  316. package/registry/assets/images/art-13.jpg +0 -0
  317. package/registry/assets/images/art-14.jpg +0 -0
  318. package/registry/assets/images/art-15.jpg +0 -0
  319. package/registry/assets/images/art-16.jpg +0 -0
  320. package/registry/assets/images/art-17.jpg +0 -0
  321. package/registry/assets/images/art-18.jpg +0 -0
  322. package/registry/assets/images/art-19.jpg +0 -0
  323. package/registry/assets/images/art-20.jpg +0 -0
  324. package/registry/assets/images/art-21.jpg +0 -0
  325. package/registry/assets/images/art-22.jpg +0 -0
  326. package/registry/assets/images/art-23.jpg +0 -0
  327. package/registry/assets/images/art-24.jpg +0 -0
  328. package/registry/assets/images/art-25.jpg +0 -0
  329. package/registry/assets/images/art-26.jpg +0 -0
  330. package/registry/assets/images/art-27.jpg +0 -0
  331. package/registry/assets/images/nature-01.jpg +0 -0
  332. package/registry/assets/images/nature-02.jpg +0 -0
  333. package/registry/assets/images/nature-03.jpg +0 -0
  334. package/registry/assets/images/nature-04.jpg +0 -0
  335. package/registry/assets/images/nature-05.jpg +0 -0
  336. package/registry/assets/images/nature-06.jpg +0 -0
  337. package/registry/assets/images/nature-07.jpg +0 -0
  338. package/registry/assets/images/nature-08.jpg +0 -0
  339. package/registry/assets/images/nature-09.jpg +0 -0
  340. package/registry/assets/images/nature-10.jpg +0 -0
  341. package/registry/assets/images/nature-11.jpg +0 -0
  342. package/registry/assets/images/nature-12.jpg +0 -0
  343. package/registry/assets/images/nature-13.jpg +0 -0
  344. package/registry/assets/images/nature-14.jpg +0 -0
  345. package/registry/assets/images/nature-15.jpg +0 -0
  346. package/registry/assets/images/nature-16.jpg +0 -0
  347. package/registry/assets/images/nature-17.jpg +0 -0
  348. package/registry/assets/images/nature-18.jpg +0 -0
  349. package/registry/assets/images/nature-19.jpg +0 -0
  350. package/registry/assets/images/nature-20.jpg +0 -0
  351. package/registry/components/expanded/BannerBoard.tsx +0 -225
  352. package/registry/components/expanded/CatalogTag.tsx +0 -85
  353. package/registry/components/expanded/CommandBar.tsx +0 -386
  354. package/registry/components/expanded/IconExplorer.tsx +0 -612
  355. package/registry/components/expanded/Tabs.tsx +0 -86
  356. package/registry/components/expanded/TimelineShowcase.tsx +0 -158
  357. package/registry/components/expanded/commandBar.css +0 -470
  358. package/registry/components/expanded/iconExplorer.css +0 -764
  359. package/registry/components/expanded/iconPacks.ts +0 -866
  360. package/registry/components/expanded/tag.css +0 -148
  361. package/registry/examples/expanded/icons-demo.tsx +0 -5
  362. package/tokens/Color mode.zip +0 -0
  363. package/tokens/Numbers.zip +0 -0
  364. package/tokens/Radius.zip +0 -0
  365. package/tokens/Theme.zip +0 -0
@@ -54,8 +54,8 @@ function classes(...names: Array<string | false | undefined>) {
54
54
 
55
55
  function StatusDot() {
56
56
  return (
57
- <span className="ds-activity-feed-item__status" aria-hidden="true" data-node-id="188:64134">
58
- <span data-node-id="188:64135" />
57
+ <span className="ds-activity-feed-item__status" aria-hidden="true">
58
+ <span />
59
59
  </span>
60
60
  );
61
61
  }
@@ -63,21 +63,15 @@ function StatusDot() {
63
63
  function Indicator({
64
64
  avatarAlt,
65
65
  avatarSrc,
66
- rtl,
67
66
  showLine,
68
- type,
69
67
  }: {
70
68
  avatarAlt: string;
71
69
  avatarSrc: string;
72
- rtl: boolean;
73
70
  showLine: boolean;
74
- type: ActivityFeedItemType;
75
71
  }) {
76
- const avatarNodeId = rtl ? (type === "caption" ? "587:18722" : "587:18703") : type === "caption" ? "584:18593" : "584:10955";
77
-
78
72
  return (
79
73
  <span className="ds-activity-feed-item__indicator" aria-hidden={avatarAlt ? undefined : "true"}>
80
- <span className="ds-activity-feed-item__avatar" data-node-id={avatarNodeId}>
74
+ <span className="ds-activity-feed-item__avatar">
81
75
  <img alt={avatarAlt} src={avatarSrc} />
82
76
  </span>
83
77
  {showLine && <span className="ds-activity-feed-item__line" />}
@@ -146,7 +140,7 @@ export function ActivityFeedItem({
146
140
  hasTwoActionButtons = true,
147
141
  label,
148
142
  link,
149
- dir = "ltr",
143
+ dir,
150
144
  showLine = true,
151
145
  showPaddingBottom = true,
152
146
  slotContent,
@@ -156,7 +150,6 @@ export function ActivityFeedItem({
156
150
  }: ActivityFeedItemProps) {
157
151
  const actionItems = actions === false || !hasActionButtons ? [] : (actions ?? []).slice(0, hasTwoActionButtons ? 2 : 1);
158
152
  const rtl = dir === "rtl";
159
- const nodeId = rtl ? (type === "caption" ? "587:18720" : "587:18701") : type === "caption" ? "584:18591" : "584:10411";
160
153
 
161
154
  const textParts = [
162
155
  label && <strong key="label">{label}</strong>,
@@ -172,10 +165,9 @@ export function ActivityFeedItem({
172
165
  rtl ? "ds-activity-feed-item--rtl" : "ds-activity-feed-item--ltr",
173
166
  className,
174
167
  )}
175
- data-node-id={nodeId}
176
168
  dir={rtl ? "rtl" : "ltr"}
177
169
  >
178
- <Indicator avatarAlt={avatarAlt} avatarSrc={avatarSrc} rtl={rtl} showLine={showLine} type={type} />
170
+ <Indicator avatarAlt={avatarAlt} avatarSrc={avatarSrc} showLine={showLine} />
179
171
 
180
172
  <div className="ds-activity-feed-item__content">
181
173
  <div className="ds-activity-feed-item__container">
@@ -215,7 +207,7 @@ export function ActivityFeed({
215
207
  ariaLabel,
216
208
  avatarSrc = defaultAvatarSrc,
217
209
  className,
218
- dir = "ltr",
210
+ dir,
219
211
  items = [],
220
212
  }: ActivityFeedProps) {
221
213
  const rtl = dir === "rtl";
@@ -224,7 +216,6 @@ export function ActivityFeed({
224
216
  <section
225
217
  aria-label={ariaLabel}
226
218
  className={classes("ds-activity-feed", rtl ? "ds-activity-feed--rtl" : "ds-activity-feed--ltr", className)}
227
- data-node-id={rtl ? "587:19711" : "587:19381"}
228
219
  dir={rtl ? "rtl" : "ltr"}
229
220
  >
230
221
  {items.map((item, index) => (
@@ -35,11 +35,11 @@ export type BannerProps = {
35
35
  };
36
36
 
37
37
  function MegaphoneIcon() {
38
- return <LucideMegaphoneIcon aria-hidden="true" className="ds-banner__icon" strokeWidth={2.1} />;
38
+ return <LucideMegaphoneIcon aria-hidden="true" className="ds-banner__icon" strokeWidth="var(--bh-icon-stroke-210)" />;
39
39
  }
40
40
 
41
41
  function CloseIcon() {
42
- return <XIcon aria-hidden="true" className="ds-banner__close-icon" strokeWidth={2.25} />;
42
+ return <XIcon aria-hidden="true" className="ds-banner__close-icon" strokeWidth="var(--bh-icon-stroke-225)" />;
43
43
  }
44
44
 
45
45
  function getBannerActionVariant(color: BannerColor): ButtonProps["variant"] {
@@ -60,7 +60,7 @@ export function Banner({
60
60
  color = "brand",
61
61
  content = "title",
62
62
  description,
63
- dir = "ltr",
63
+ dir,
64
64
  icon,
65
65
  inputAriaLabel,
66
66
  inputPlaceholder,
@@ -49,7 +49,7 @@ function visibleItems(
49
49
 
50
50
  export function Breadcrumbs({
51
51
  "aria-label": ariaLabel,
52
- dir = "ltr",
52
+ dir,
53
53
  iconOnly = false,
54
54
  items,
55
55
  maxItems,
@@ -112,17 +112,17 @@ function Separator({ separator }: { separator: BreadcrumbSeparator }) {
112
112
  }
113
113
 
114
114
  export function BreadcrumbHomeIcon() {
115
- return <HomeIcon aria-hidden="true" strokeWidth={1.9} />;
115
+ return <HomeIcon aria-hidden="true" strokeWidth="var(--bh-icon-stroke-190)" />;
116
116
  }
117
117
 
118
118
  export function BreadcrumbFolderIcon() {
119
- return <FolderIcon aria-hidden="true" strokeWidth={1.9} />;
119
+ return <FolderIcon aria-hidden="true" strokeWidth="var(--bh-icon-stroke-190)" />;
120
120
  }
121
121
 
122
122
  function ChevronIcon() {
123
- return <ChevronRightIcon aria-hidden="true" strokeWidth={2} />;
123
+ return <ChevronRightIcon aria-hidden="true" strokeWidth="var(--bh-icon-stroke-200)" />;
124
124
  }
125
125
 
126
126
  function OverflowIcon() {
127
- return <EllipsisIcon aria-hidden="true" strokeWidth={2.25} />;
127
+ return <EllipsisIcon aria-hidden="true" strokeWidth="var(--bh-icon-stroke-225)" />;
128
128
  }
@@ -8,7 +8,7 @@ import {
8
8
  import { CatalogContentDivider, CatalogDivider } from "./CatalogDivider";
9
9
  import { FileUpload, type FileUploadFile } from "./FileUpload";
10
10
  import { Table, type TableColumn, type TableRowBase } from "./Table";
11
- import { CatalogTag, type CatalogTagState, type CatalogTagType } from "./CatalogTag";
11
+ import { Tag, type TagState, type TagType } from "@/components/ui/tag";
12
12
  import "./catalogComponentsShowcase.css";
13
13
 
14
14
  type ProjectRow = TableRowBase & {
@@ -99,8 +99,8 @@ const columns: TableColumn<ProjectRow>[] = [
99
99
  { id: "actions", width: 44, kind: "actions", item: () => ({ type: "action", icon: "more", label: "Open row actions" }) },
100
100
  ];
101
101
 
102
- const tagTypes: CatalogTagType[] = ["simple", "dot", "flag", "avatar", "icon"];
103
- const tagStates: CatalogTagState[] = ["default", "active", "disabled"];
102
+ const tagTypes: TagType[] = ["simple", "dot", "flag", "avatar", "icon"];
103
+ const tagStates: TagState[] = ["default", "active", "disabled"];
104
104
 
105
105
  export function CatalogComponentsShowcase() {
106
106
  const [selectedRows, setSelectedRows] = useState(["1", "2"]);
@@ -136,7 +136,7 @@ export function CatalogComponentsShowcase() {
136
136
  <ShowcaseCard title="Tags" description="Type, state, size, close button, and RTL coverage.">
137
137
  <div className="catalog-showcase__tag-grid">
138
138
  {tagTypes.map((type) => (
139
- <CatalogTag
139
+ <Tag
140
140
  closeLabel="Remove tag"
141
141
  key={type}
142
142
  showCloseButton={type === "simple"}
@@ -144,19 +144,19 @@ export function CatalogComponentsShowcase() {
144
144
  avatar={type === "avatar" ? "A" : undefined}
145
145
  >
146
146
  {type}
147
- </CatalogTag>
147
+ </Tag>
148
148
  ))}
149
149
  {tagStates.map((state) => (
150
- <CatalogTag key={state} state={state} type="dot">
150
+ <Tag key={state} state={state} type="dot">
151
151
  {state}
152
- </CatalogTag>
152
+ </Tag>
153
153
  ))}
154
- <CatalogTag size="xs">xs</CatalogTag>
155
- <CatalogTag size="md">md</CatalogTag>
156
- <CatalogTag closeLabel="Remove tag" size="lg" showCloseButton>
154
+ <Tag size="xs">xs</Tag>
155
+ <Tag size="md">md</Tag>
156
+ <Tag closeLabel="Remove tag" size="lg" showCloseButton>
157
157
  large
158
- </CatalogTag>
159
- <CatalogTag
158
+ </Tag>
159
+ <Tag
160
160
  avatar={"\u0645"}
161
161
  closeLabel={"\u0625\u0632\u0627\u0644\u0629 \u0648\u0633\u0645"}
162
162
  dir="rtl"
@@ -164,7 +164,7 @@ export function CatalogComponentsShowcase() {
164
164
  showCloseButton
165
165
  >
166
166
  {"\u0645\u0644\u0635\u0642"}
167
- </CatalogTag>
167
+ </Tag>
168
168
  </div>
169
169
  </ShowcaseCard>
170
170
 
@@ -27,7 +27,7 @@ export function CatalogDivider({ borderStyle = "solid" }: CatalogDividerProps) {
27
27
  export function CatalogContentDivider({
28
28
  actionLabel,
29
29
  borderStyle = "solid",
30
- dir = "ltr",
30
+ dir,
31
31
  disabled = false,
32
32
  label,
33
33
  onAction,
@@ -38,7 +38,7 @@ export function EmptyState({
38
38
  align = "center",
39
39
  className,
40
40
  description,
41
- dir = "ltr",
41
+ dir,
42
42
  icon,
43
43
  iconLabel,
44
44
  size = "default",
@@ -52,7 +52,7 @@ export function FileUpload({
52
52
  accept,
53
53
  browseLabel,
54
54
  cancelLabel = "Cancel upload",
55
- dir = "ltr",
55
+ dir,
56
56
  disabled = false,
57
57
  dropzoneState = "default",
58
58
  files = [],
@@ -251,7 +251,14 @@ function FileUploadRow({
251
251
  )}
252
252
 
253
253
  {isProgress && (
254
- <div className="ds-file-upload-row__progress" aria-label={`Upload progress ${progressLabel}`}>
254
+ <div
255
+ aria-label={`Upload progress ${progressLabel}`}
256
+ aria-valuemax={100}
257
+ aria-valuemin={0}
258
+ aria-valuenow={progressValue}
259
+ className="ds-file-upload-row__progress"
260
+ role="progressbar"
261
+ >
255
262
  <span className="ds-file-upload-row__progress-track">
256
263
  <span className="ds-file-upload-row__progress-fill" style={{ width: `${progressValue}%` }} />
257
264
  </span>
@@ -15,7 +15,7 @@ export type OnboardingStepListItemProps = {
15
15
 
16
16
  export function OnboardingStepListItem({
17
17
  className = "",
18
- dir = "ltr",
18
+ dir,
19
19
  label,
20
20
  showLeadingLine = true,
21
21
  showTrailingLine = true,
@@ -55,9 +55,7 @@ function CheckCircleIcon() {
55
55
  <CircleCheckIcon
56
56
  aria-hidden="true"
57
57
  className="ds-onboarding-step__check"
58
- height="20"
59
- strokeWidth={2.25}
60
- width="20"
58
+ strokeWidth="var(--bh-icon-stroke-225)"
61
59
  />
62
60
  );
63
61
  }
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from "react";
2
2
  import { HomeIcon as LucideHomeIcon } from "lucide-react";
3
- import { Tabs, type TabsProps } from "./Tabs";
3
+ import { Tabs, type TabsProps } from "../tabs";
4
4
  import "./pageHeader.css";
5
5
 
6
6
  export type PageHeaderBreadcrumb = {
@@ -41,12 +41,12 @@ function classes(...names: Array<string | false | undefined>) {
41
41
  }
42
42
 
43
43
  function HomeIcon() {
44
- return <LucideHomeIcon aria-hidden="true" className="ds-page-header__home-icon" strokeWidth={1.9} />;
44
+ return <LucideHomeIcon aria-hidden="true" className="ds-page-header__home-icon" strokeWidth="var(--bh-icon-stroke-190)" />;
45
45
  }
46
46
 
47
47
  function Breadcrumbs({ items, label }: { items: PageHeaderBreadcrumb[]; label?: string }) {
48
48
  return (
49
- <nav aria-label={label} className="ds-page-header__breadcrumbs" data-node-id="1134:39921">
49
+ <nav aria-label={label} className="ds-page-header__breadcrumbs">
50
50
  <ol>
51
51
  {items.map((item, index) => {
52
52
  const isLast = index === items.length - 1;
@@ -111,7 +111,7 @@ export function PageHeader({
111
111
  breadcrumbs = [],
112
112
  className,
113
113
  description,
114
- dir = "ltr",
114
+ dir,
115
115
  icon,
116
116
  metaInfo,
117
117
  tabs = {},
@@ -122,32 +122,32 @@ export function PageHeader({
122
122
  const showIcon = icon !== false;
123
123
 
124
124
  return (
125
- <header className={classes("ds-page-header", className)} data-node-id="1154:2816" dir={dir}>
125
+ <header className={classes("ds-page-header", className)} dir={dir}>
126
126
  {breadcrumbItems.length > 0 && <Breadcrumbs items={breadcrumbItems} label={breadcrumbLabel} />}
127
127
 
128
- <div className="ds-page-header__section" data-node-id="1134:40171">
129
- <div className="ds-page-header__topline" data-node-id="1134:40048">
130
- <div className="ds-page-header__copy" data-node-id="1134:40046">
131
- <div className="ds-page-header__heading-row" data-node-id="1136:40843">
132
- <div className="ds-page-header__heading-main" data-node-id="1157:13000">
128
+ <div className="ds-page-header__section">
129
+ <div className="ds-page-header__topline">
130
+ <div className="ds-page-header__copy">
131
+ <div className="ds-page-header__heading-row">
132
+ <div className="ds-page-header__heading-main">
133
133
  {showIcon && <span className="ds-page-header__icon">{icon ?? <HomeIcon />}</span>}
134
- {title && <h1 data-node-id="1134:39780">{title}</h1>}
134
+ {title && <h1>{title}</h1>}
135
135
  </div>
136
136
  {metaInfo && (
137
- <span className="ds-page-header__meta" data-node-id="1134:40045">
137
+ <span className="ds-page-header__meta">
138
138
  {metaInfo}
139
139
  </span>
140
140
  )}
141
141
  </div>
142
142
  {description && (
143
- <p className="ds-page-header__description" data-node-id="1136:40842">
143
+ <p className="ds-page-header__description">
144
144
  {description}
145
145
  </p>
146
146
  )}
147
147
  </div>
148
148
 
149
149
  {actionItems.length > 0 && (
150
- <div className="ds-page-header__actions" data-node-id="1156:2489">
150
+ <div className="ds-page-header__actions">
151
151
  {actionItems.map((action, index) => (
152
152
  <Action action={action} key={`${action.label}-${index}`} />
153
153
  ))}