@tempoxyz/ds 0.2.6 → 0.3.1

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 (662) hide show
  1. package/README.md +2 -0
  2. package/dist/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  3. package/dist/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  4. package/dist/fonts/JetBrainsMono-Bold.woff2 +0 -0
  5. package/dist/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  6. package/dist/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  7. package/dist/fonts/JetBrainsMono-Medium.woff2 +0 -0
  8. package/dist/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  9. package/dist/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  10. package/dist/fonts/JetBrainsMono-Regular.woff2 +0 -0
  11. package/dist/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  12. package/dist/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  13. package/dist/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  14. package/dist/fonts/Pilat-Black-latin.woff2 +0 -0
  15. package/dist/fonts/Pilat-Black-other.woff2 +0 -0
  16. package/dist/fonts/Pilat-Black.woff2 +0 -0
  17. package/dist/fonts/Pilat-Bold-latin.woff2 +0 -0
  18. package/dist/fonts/Pilat-Bold-other.woff2 +0 -0
  19. package/dist/fonts/Pilat-Bold.woff2 +0 -0
  20. package/dist/fonts/Pilat-Book-latin.woff2 +0 -0
  21. package/dist/fonts/Pilat-Book-other.woff2 +0 -0
  22. package/dist/fonts/Pilat-Book.woff2 +0 -0
  23. package/dist/fonts/Pilat-Demi-latin.woff2 +0 -0
  24. package/dist/fonts/Pilat-Demi-other.woff2 +0 -0
  25. package/dist/fonts/Pilat-Demi.woff2 +0 -0
  26. package/dist/fonts/Pilat-Heavy-latin.woff2 +0 -0
  27. package/dist/fonts/Pilat-Heavy-other.woff2 +0 -0
  28. package/dist/fonts/Pilat-Heavy.woff2 +0 -0
  29. package/dist/fonts/Pilat-Light-latin.woff2 +0 -0
  30. package/dist/fonts/Pilat-Light-other.woff2 +0 -0
  31. package/dist/fonts/Pilat-Light.woff2 +0 -0
  32. package/dist/fonts/Pilat-Regular-latin.woff2 +0 -0
  33. package/dist/fonts/Pilat-Regular-other.woff2 +0 -0
  34. package/dist/fonts/Pilat-Regular.woff2 +0 -0
  35. package/dist/fonts/Pilat-Thin-latin.woff2 +0 -0
  36. package/dist/fonts/Pilat-Thin-other.woff2 +0 -0
  37. package/dist/fonts/Pilat-Thin.woff2 +0 -0
  38. package/dist/oxlint/rules/PreferComponent.js +6 -6
  39. package/dist/oxlint/rules/PreferComponent.js.map +1 -1
  40. package/dist/web/components/Accordion.css +1 -1
  41. package/dist/web/components/Accordion.d.ts +7 -7
  42. package/dist/web/components/Accordion.js.map +1 -1
  43. package/dist/web/components/Accordion.js.zyzz.json +1 -1
  44. package/dist/web/components/AgentLogo.css +1 -0
  45. package/dist/web/components/AgentLogo.d.ts +206 -0
  46. package/dist/web/components/AgentLogo.d.ts.map +1 -0
  47. package/dist/web/components/AgentLogo.js +86 -0
  48. package/dist/web/components/AgentLogo.js.map +1 -0
  49. package/dist/web/components/AgentLogo.js.zyzz.json +1 -0
  50. package/dist/web/components/Alert.css +1 -0
  51. package/dist/web/components/Alert.d.ts +161 -0
  52. package/dist/web/components/Alert.d.ts.map +1 -0
  53. package/dist/web/components/Alert.js +97 -0
  54. package/dist/web/components/Alert.js.map +1 -0
  55. package/dist/web/components/Alert.js.zyzz.json +1 -0
  56. package/dist/web/components/AlertDialog.d.ts +40 -28
  57. package/dist/web/components/AlertDialog.d.ts.map +1 -1
  58. package/dist/web/components/AlertDialog.js +31 -36
  59. package/dist/web/components/AlertDialog.js.map +1 -1
  60. package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
  61. package/dist/web/components/Amount.css +1 -1
  62. package/dist/web/components/Amount.d.ts +5 -5
  63. package/dist/web/components/Amount.d.ts.map +1 -1
  64. package/dist/web/components/Amount.js.map +1 -1
  65. package/dist/web/components/Amount.js.zyzz.json +1 -1
  66. package/dist/web/components/AmountInput.css +1 -1
  67. package/dist/web/components/AmountInput.d.ts +20 -39
  68. package/dist/web/components/AmountInput.d.ts.map +1 -1
  69. package/dist/web/components/AmountInput.js +31 -37
  70. package/dist/web/components/AmountInput.js.map +1 -1
  71. package/dist/web/components/AmountInput.js.zyzz.json +1 -1
  72. package/dist/web/components/AppShell.css +1 -1
  73. package/dist/web/components/AppShell.d.ts +172 -28
  74. package/dist/web/components/AppShell.d.ts.map +1 -1
  75. package/dist/web/components/AppShell.js +89 -29
  76. package/dist/web/components/AppShell.js.map +1 -1
  77. package/dist/web/components/AppShell.js.zyzz.json +1 -1
  78. package/dist/web/components/AssetChip.css +1 -0
  79. package/dist/web/components/AssetChip.d.ts +38 -0
  80. package/dist/web/components/AssetChip.d.ts.map +1 -0
  81. package/dist/web/components/AssetChip.js +47 -0
  82. package/dist/web/components/AssetChip.js.map +1 -0
  83. package/dist/web/components/AssetChip.js.zyzz.json +1 -0
  84. package/dist/web/components/Autocomplete.d.ts +2 -2
  85. package/dist/web/components/Autocomplete.js +4 -4
  86. package/dist/web/components/Autocomplete.js.map +1 -1
  87. package/dist/web/components/Autocomplete.js.zyzz.json +1 -1
  88. package/dist/web/components/Avatar.css +1 -1
  89. package/dist/web/components/Avatar.d.ts +40 -115
  90. package/dist/web/components/Avatar.d.ts.map +1 -1
  91. package/dist/web/components/Avatar.js +19 -32
  92. package/dist/web/components/Avatar.js.map +1 -1
  93. package/dist/web/components/Avatar.js.zyzz.json +1 -1
  94. package/dist/web/components/Badge.css +1 -0
  95. package/dist/web/components/Badge.d.ts +134 -0
  96. package/dist/web/components/Badge.d.ts.map +1 -0
  97. package/dist/web/components/Badge.js +38 -0
  98. package/dist/web/components/Badge.js.map +1 -0
  99. package/dist/web/components/Badge.js.zyzz.json +1 -0
  100. package/dist/web/components/Banner.css +1 -1
  101. package/dist/web/components/Banner.d.ts +12 -12
  102. package/dist/web/components/Banner.d.ts.map +1 -1
  103. package/dist/web/components/Banner.js +5 -5
  104. package/dist/web/components/Banner.js.map +1 -1
  105. package/dist/web/components/Banner.js.zyzz.json +1 -1
  106. package/dist/web/components/BarChart.css +1 -0
  107. package/dist/web/components/BarChart.d.ts +155 -0
  108. package/dist/web/components/BarChart.d.ts.map +1 -0
  109. package/dist/web/components/BarChart.js +119 -0
  110. package/dist/web/components/BarChart.js.map +1 -0
  111. package/dist/web/components/BarChart.js.zyzz.json +1 -0
  112. package/dist/web/components/Breadcrumbs.css +1 -1
  113. package/dist/web/components/Breadcrumbs.d.ts +6 -6
  114. package/dist/web/components/Breadcrumbs.js.map +1 -1
  115. package/dist/web/components/Breadcrumbs.js.zyzz.json +1 -1
  116. package/dist/web/components/Button.css +1 -1
  117. package/dist/web/components/Button.d.ts +167 -32
  118. package/dist/web/components/Button.d.ts.map +1 -1
  119. package/dist/web/components/Button.js +14 -9
  120. package/dist/web/components/Button.js.map +1 -1
  121. package/dist/web/components/Button.js.zyzz.json +1 -1
  122. package/dist/web/components/ButtonGroup.css +1 -0
  123. package/dist/web/components/ButtonGroup.d.ts +56 -0
  124. package/dist/web/components/ButtonGroup.d.ts.map +1 -0
  125. package/dist/web/components/ButtonGroup.js +33 -0
  126. package/dist/web/components/ButtonGroup.js.map +1 -0
  127. package/dist/web/components/ButtonGroup.js.zyzz.json +1 -0
  128. package/dist/web/components/Calendar.css +1 -1
  129. package/dist/web/components/Calendar.d.ts.map +1 -1
  130. package/dist/web/components/Calendar.js +7 -7
  131. package/dist/web/components/Calendar.js.map +1 -1
  132. package/dist/web/components/Calendar.js.zyzz.json +1 -1
  133. package/dist/web/components/Checkbox.css +1 -1
  134. package/dist/web/components/Checkbox.d.ts +11 -11
  135. package/dist/web/components/Checkbox.d.ts.map +1 -1
  136. package/dist/web/components/Checkbox.js +4 -1
  137. package/dist/web/components/Checkbox.js.map +1 -1
  138. package/dist/web/components/Checkbox.js.zyzz.json +1 -1
  139. package/dist/web/components/CheckboxGroup.js.zyzz.json +1 -1
  140. package/dist/web/components/ChoiceGroup.css +1 -1
  141. package/dist/web/components/ChoiceGroup.d.ts +44 -16
  142. package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
  143. package/dist/web/components/ChoiceGroup.js +32 -8
  144. package/dist/web/components/ChoiceGroup.js.map +1 -1
  145. package/dist/web/components/ChoiceGroup.js.zyzz.json +1 -1
  146. package/dist/web/components/Choicebox.css +1 -1
  147. package/dist/web/components/Choicebox.d.ts +9 -9
  148. package/dist/web/components/Choicebox.d.ts.map +1 -1
  149. package/dist/web/components/Choicebox.js +6 -6
  150. package/dist/web/components/Choicebox.js.map +1 -1
  151. package/dist/web/components/Choicebox.js.zyzz.json +1 -1
  152. package/dist/web/components/Combobox.css +1 -1
  153. package/dist/web/components/Combobox.d.ts +2 -2
  154. package/dist/web/components/Combobox.d.ts.map +1 -1
  155. package/dist/web/components/Combobox.js +8 -8
  156. package/dist/web/components/Combobox.js.map +1 -1
  157. package/dist/web/components/Combobox.js.zyzz.json +1 -1
  158. package/dist/web/components/Container.js.zyzz.json +1 -1
  159. package/dist/web/components/CopyButton.js +1 -1
  160. package/dist/web/components/CopyButton.js.map +1 -1
  161. package/dist/web/components/CopyButton.js.zyzz.json +1 -1
  162. package/dist/web/components/DatePicker.css +1 -1
  163. package/dist/web/components/DatePicker.d.ts +37 -56
  164. package/dist/web/components/DatePicker.d.ts.map +1 -1
  165. package/dist/web/components/DatePicker.js +7 -7
  166. package/dist/web/components/DatePicker.js.map +1 -1
  167. package/dist/web/components/DatePicker.js.zyzz.json +1 -1
  168. package/dist/web/components/Dialog.css +1 -1
  169. package/dist/web/components/Dialog.d.ts +189 -20
  170. package/dist/web/components/Dialog.d.ts.map +1 -1
  171. package/dist/web/components/Dialog.js +93 -26
  172. package/dist/web/components/Dialog.js.map +1 -1
  173. package/dist/web/components/Dialog.js.zyzz.json +1 -1
  174. package/dist/web/components/Drawer.css +1 -1
  175. package/dist/web/components/Drawer.d.ts +7 -2
  176. package/dist/web/components/Drawer.d.ts.map +1 -1
  177. package/dist/web/components/Drawer.js +12 -6
  178. package/dist/web/components/Drawer.js.map +1 -1
  179. package/dist/web/components/Drawer.js.zyzz.json +1 -1
  180. package/dist/web/components/Empty.css +1 -1
  181. package/dist/web/components/Empty.d.ts +2 -0
  182. package/dist/web/components/Empty.d.ts.map +1 -1
  183. package/dist/web/components/Empty.js +5 -3
  184. package/dist/web/components/Empty.js.map +1 -1
  185. package/dist/web/components/Empty.js.zyzz.json +1 -1
  186. package/dist/web/components/Field.css +1 -1
  187. package/dist/web/components/Field.d.ts +16 -21
  188. package/dist/web/components/Field.d.ts.map +1 -1
  189. package/dist/web/components/Field.js +38 -36
  190. package/dist/web/components/Field.js.map +1 -1
  191. package/dist/web/components/Field.js.zyzz.json +1 -1
  192. package/dist/web/components/Fieldset.css +1 -1
  193. package/dist/web/components/Fieldset.d.ts +9 -18
  194. package/dist/web/components/Fieldset.d.ts.map +1 -1
  195. package/dist/web/components/Fieldset.js +11 -14
  196. package/dist/web/components/Fieldset.js.map +1 -1
  197. package/dist/web/components/Fieldset.js.zyzz.json +1 -1
  198. package/dist/web/components/Frame.css +1 -1
  199. package/dist/web/components/Frame.d.ts +13 -19
  200. package/dist/web/components/Frame.d.ts.map +1 -1
  201. package/dist/web/components/Frame.js +8 -8
  202. package/dist/web/components/Frame.js.map +1 -1
  203. package/dist/web/components/Frame.js.zyzz.json +1 -1
  204. package/dist/web/components/Gauge.css +1 -1
  205. package/dist/web/components/Gauge.d.ts +2 -2
  206. package/dist/web/components/Gauge.d.ts.map +1 -1
  207. package/dist/web/components/Gauge.js.map +1 -1
  208. package/dist/web/components/Gauge.js.zyzz.json +1 -1
  209. package/dist/web/components/Grid.js.zyzz.json +1 -1
  210. package/dist/web/components/Hex.css +1 -1
  211. package/dist/web/components/Hex.d.ts +11 -53
  212. package/dist/web/components/Hex.d.ts.map +1 -1
  213. package/dist/web/components/Hex.js +5 -7
  214. package/dist/web/components/Hex.js.map +1 -1
  215. package/dist/web/components/Hex.js.zyzz.json +1 -1
  216. package/dist/web/components/IconTile.css +1 -0
  217. package/dist/web/components/IconTile.d.ts +62 -0
  218. package/dist/web/components/IconTile.d.ts.map +1 -0
  219. package/dist/web/components/IconTile.js +28 -0
  220. package/dist/web/components/IconTile.js.map +1 -0
  221. package/dist/web/components/IconTile.js.zyzz.json +1 -0
  222. package/dist/web/components/Identicon.css +1 -1
  223. package/dist/web/components/Identicon.d.ts +1 -8
  224. package/dist/web/components/Identicon.d.ts.map +1 -1
  225. package/dist/web/components/Identicon.js +1 -4
  226. package/dist/web/components/Identicon.js.map +1 -1
  227. package/dist/web/components/Identicon.js.zyzz.json +1 -1
  228. package/dist/web/components/Inline.js.zyzz.json +1 -1
  229. package/dist/web/components/Inset.js.zyzz.json +1 -1
  230. package/dist/web/components/Kbd.css +1 -1
  231. package/dist/web/components/Kbd.d.ts +7 -7
  232. package/dist/web/components/Kbd.js.map +1 -1
  233. package/dist/web/components/Kbd.js.zyzz.json +1 -1
  234. package/dist/web/components/ListGroup.css +1 -0
  235. package/dist/web/components/ListGroup.d.ts +530 -0
  236. package/dist/web/components/ListGroup.d.ts.map +1 -0
  237. package/dist/web/components/ListGroup.js +270 -0
  238. package/dist/web/components/ListGroup.js.map +1 -0
  239. package/dist/web/components/ListGroup.js.zyzz.json +1 -0
  240. package/dist/web/components/LoadingDots.css +1 -1
  241. package/dist/web/components/LoadingDots.d.ts.map +1 -1
  242. package/dist/web/components/LoadingDots.js +2 -2
  243. package/dist/web/components/LoadingDots.js.map +1 -1
  244. package/dist/web/components/LoadingDots.js.zyzz.json +1 -1
  245. package/dist/web/components/Menu.css +1 -1
  246. package/dist/web/components/Menu.d.ts +39 -20
  247. package/dist/web/components/Menu.d.ts.map +1 -1
  248. package/dist/web/components/Menu.js +12 -7
  249. package/dist/web/components/Menu.js.map +1 -1
  250. package/dist/web/components/Menu.js.zyzz.json +1 -1
  251. package/dist/web/components/NetworkLogo.css +1 -0
  252. package/dist/web/components/NetworkLogo.d.ts +58 -0
  253. package/dist/web/components/NetworkLogo.d.ts.map +1 -0
  254. package/dist/web/components/NetworkLogo.js +40 -0
  255. package/dist/web/components/NetworkLogo.js.map +1 -0
  256. package/dist/web/components/NetworkLogo.js.zyzz.json +1 -0
  257. package/dist/web/components/NumberField.css +1 -1
  258. package/dist/web/components/NumberField.d.ts +3 -3
  259. package/dist/web/components/NumberField.d.ts.map +1 -1
  260. package/dist/web/components/NumberField.js +5 -5
  261. package/dist/web/components/NumberField.js.map +1 -1
  262. package/dist/web/components/NumberField.js.zyzz.json +1 -1
  263. package/dist/web/components/OtpField.css +1 -1
  264. package/dist/web/components/OtpField.d.ts +8 -68
  265. package/dist/web/components/OtpField.d.ts.map +1 -1
  266. package/dist/web/components/OtpField.js +12 -9
  267. package/dist/web/components/OtpField.js.map +1 -1
  268. package/dist/web/components/OtpField.js.zyzz.json +1 -1
  269. package/dist/web/components/Pagination.css +1 -1
  270. package/dist/web/components/Pagination.d.ts +16 -14
  271. package/dist/web/components/Pagination.d.ts.map +1 -1
  272. package/dist/web/components/Pagination.js +3 -3
  273. package/dist/web/components/Pagination.js.map +1 -1
  274. package/dist/web/components/Pagination.js.zyzz.json +1 -1
  275. package/dist/web/components/Popover.css +1 -1
  276. package/dist/web/components/Popover.js.map +1 -1
  277. package/dist/web/components/Popover.js.zyzz.json +1 -1
  278. package/dist/web/components/Progress.css +1 -1
  279. package/dist/web/components/Progress.d.ts +2 -2
  280. package/dist/web/components/Progress.d.ts.map +1 -1
  281. package/dist/web/components/Progress.js +5 -5
  282. package/dist/web/components/Progress.js.map +1 -1
  283. package/dist/web/components/Progress.js.zyzz.json +1 -1
  284. package/dist/web/components/Qr.css +1 -1
  285. package/dist/web/components/Qr.d.ts +1 -1
  286. package/dist/web/components/Qr.js.map +1 -1
  287. package/dist/web/components/Qr.js.zyzz.json +1 -1
  288. package/dist/web/components/RadioGroup.css +1 -1
  289. package/dist/web/components/RadioGroup.d.ts.map +1 -1
  290. package/dist/web/components/RadioGroup.js +2 -2
  291. package/dist/web/components/RadioGroup.js.map +1 -1
  292. package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
  293. package/dist/web/components/SecretValue.css +1 -1
  294. package/dist/web/components/SecretValue.d.ts +7 -7
  295. package/dist/web/components/SecretValue.js +1 -1
  296. package/dist/web/components/SecretValue.js.map +1 -1
  297. package/dist/web/components/SecretValue.js.zyzz.json +1 -1
  298. package/dist/web/components/Select.css +1 -1
  299. package/dist/web/components/Select.d.ts +64 -2
  300. package/dist/web/components/Select.d.ts.map +1 -1
  301. package/dist/web/components/Select.js +26 -9
  302. package/dist/web/components/Select.js.map +1 -1
  303. package/dist/web/components/Select.js.zyzz.json +1 -1
  304. package/dist/web/components/Separator.css +1 -1
  305. package/dist/web/components/Separator.d.ts +17 -3
  306. package/dist/web/components/Separator.d.ts.map +1 -1
  307. package/dist/web/components/Separator.js +40 -5
  308. package/dist/web/components/Separator.js.map +1 -1
  309. package/dist/web/components/Separator.js.zyzz.json +1 -1
  310. package/dist/web/components/SidebarMenu.css +1 -1
  311. package/dist/web/components/SidebarMenu.d.ts +238 -39
  312. package/dist/web/components/SidebarMenu.d.ts.map +1 -1
  313. package/dist/web/components/SidebarMenu.js +123 -20
  314. package/dist/web/components/SidebarMenu.js.map +1 -1
  315. package/dist/web/components/SidebarMenu.js.zyzz.json +1 -1
  316. package/dist/web/components/Skeleton.css +1 -1
  317. package/dist/web/components/Skeleton.d.ts +5 -3
  318. package/dist/web/components/Skeleton.d.ts.map +1 -1
  319. package/dist/web/components/Skeleton.js +1 -1
  320. package/dist/web/components/Skeleton.js.map +1 -1
  321. package/dist/web/components/Skeleton.js.zyzz.json +1 -1
  322. package/dist/web/components/Slider.css +1 -1
  323. package/dist/web/components/Slider.d.ts.map +1 -1
  324. package/dist/web/components/Slider.js +5 -5
  325. package/dist/web/components/Slider.js.map +1 -1
  326. package/dist/web/components/Slider.js.zyzz.json +1 -1
  327. package/dist/web/components/Snippet.css +1 -1
  328. package/dist/web/components/Snippet.d.ts +27 -65
  329. package/dist/web/components/Snippet.d.ts.map +1 -1
  330. package/dist/web/components/Snippet.js +47 -10
  331. package/dist/web/components/Snippet.js.map +1 -1
  332. package/dist/web/components/Snippet.js.zyzz.json +1 -1
  333. package/dist/web/components/Spinner.css +1 -1
  334. package/dist/web/components/Spinner.d.ts +25 -16
  335. package/dist/web/components/Spinner.d.ts.map +1 -1
  336. package/dist/web/components/Spinner.js +11 -6
  337. package/dist/web/components/Spinner.js.map +1 -1
  338. package/dist/web/components/Spinner.js.zyzz.json +1 -1
  339. package/dist/web/components/SplitBar.css +1 -0
  340. package/dist/web/components/SplitBar.d.ts +99 -0
  341. package/dist/web/components/SplitBar.d.ts.map +1 -0
  342. package/dist/web/components/SplitBar.js +49 -0
  343. package/dist/web/components/SplitBar.js.map +1 -0
  344. package/dist/web/components/SplitBar.js.zyzz.json +1 -0
  345. package/dist/web/components/SplitButton.css +1 -1
  346. package/dist/web/components/SplitButton.d.ts +4 -1
  347. package/dist/web/components/SplitButton.d.ts.map +1 -1
  348. package/dist/web/components/SplitButton.js +2 -2
  349. package/dist/web/components/SplitButton.js.map +1 -1
  350. package/dist/web/components/SplitButton.js.zyzz.json +1 -1
  351. package/dist/web/components/Stack.js.zyzz.json +1 -1
  352. package/dist/web/components/StatusChip.css +1 -0
  353. package/dist/web/components/StatusChip.d.ts +162 -0
  354. package/dist/web/components/StatusChip.d.ts.map +1 -0
  355. package/dist/web/components/StatusChip.js +37 -0
  356. package/dist/web/components/StatusChip.js.map +1 -0
  357. package/dist/web/components/StatusChip.js.zyzz.json +1 -0
  358. package/dist/web/components/StatusRow.css +1 -0
  359. package/dist/web/components/StatusRow.d.ts +121 -0
  360. package/dist/web/components/StatusRow.d.ts.map +1 -0
  361. package/dist/web/components/StatusRow.js +75 -0
  362. package/dist/web/components/StatusRow.js.map +1 -0
  363. package/dist/web/components/StatusRow.js.zyzz.json +1 -0
  364. package/dist/web/components/Stepper.css +1 -1
  365. package/dist/web/components/Stepper.d.ts +10 -7
  366. package/dist/web/components/Stepper.d.ts.map +1 -1
  367. package/dist/web/components/Stepper.js +5 -4
  368. package/dist/web/components/Stepper.js.map +1 -1
  369. package/dist/web/components/Stepper.js.zyzz.json +1 -1
  370. package/dist/web/components/Surface.css +1 -1
  371. package/dist/web/components/Surface.d.ts +123 -101
  372. package/dist/web/components/Surface.d.ts.map +1 -1
  373. package/dist/web/components/Surface.js +20 -10
  374. package/dist/web/components/Surface.js.map +1 -1
  375. package/dist/web/components/Surface.js.zyzz.json +1 -1
  376. package/dist/web/components/Switch.css +1 -1
  377. package/dist/web/components/Switch.d.ts +14 -18
  378. package/dist/web/components/Switch.d.ts.map +1 -1
  379. package/dist/web/components/Switch.js +13 -15
  380. package/dist/web/components/Switch.js.map +1 -1
  381. package/dist/web/components/Switch.js.zyzz.json +1 -1
  382. package/dist/web/components/Table.css +1 -1
  383. package/dist/web/components/Table.d.ts +152 -67
  384. package/dist/web/components/Table.d.ts.map +1 -1
  385. package/dist/web/components/Table.js +92 -24
  386. package/dist/web/components/Table.js.map +1 -1
  387. package/dist/web/components/Table.js.zyzz.json +1 -1
  388. package/dist/web/components/Tabs.css +1 -1
  389. package/dist/web/components/Tabs.d.ts +49 -42
  390. package/dist/web/components/Tabs.d.ts.map +1 -1
  391. package/dist/web/components/Tabs.js +45 -14
  392. package/dist/web/components/Tabs.js.map +1 -1
  393. package/dist/web/components/Tabs.js.zyzz.json +1 -1
  394. package/dist/web/components/TempoLogo.css +1 -0
  395. package/dist/web/components/TempoLogo.d.ts +47 -0
  396. package/dist/web/components/TempoLogo.d.ts.map +1 -0
  397. package/dist/web/components/TempoLogo.js +48 -0
  398. package/dist/web/components/TempoLogo.js.map +1 -0
  399. package/dist/web/components/TempoLogo.js.zyzz.json +1 -0
  400. package/dist/web/components/TextInput.css +1 -0
  401. package/dist/web/components/{Input.d.ts → TextInput.d.ts} +27 -18
  402. package/dist/web/components/TextInput.d.ts.map +1 -0
  403. package/dist/web/components/TextInput.js +138 -0
  404. package/dist/web/components/TextInput.js.map +1 -0
  405. package/dist/web/components/TextInput.js.zyzz.json +1 -0
  406. package/dist/web/components/Textarea.css +1 -1
  407. package/dist/web/components/Textarea.d.ts +29 -74
  408. package/dist/web/components/Textarea.d.ts.map +1 -1
  409. package/dist/web/components/Textarea.js +5 -12
  410. package/dist/web/components/Textarea.js.map +1 -1
  411. package/dist/web/components/Textarea.js.zyzz.json +1 -1
  412. package/dist/web/components/Toast.css +1 -1
  413. package/dist/web/components/Toast.d.ts +4 -4
  414. package/dist/web/components/Toast.d.ts.map +1 -1
  415. package/dist/web/components/Toast.js +9 -9
  416. package/dist/web/components/Toast.js.map +1 -1
  417. package/dist/web/components/Toast.js.zyzz.json +1 -1
  418. package/dist/web/components/Token.css +1 -1
  419. package/dist/web/components/Token.d.ts +32 -90
  420. package/dist/web/components/Token.d.ts.map +1 -1
  421. package/dist/web/components/Token.js +27 -89
  422. package/dist/web/components/Token.js.map +1 -1
  423. package/dist/web/components/Token.js.zyzz.json +1 -1
  424. package/dist/web/components/TokenLogo.css +1 -0
  425. package/dist/web/components/TokenLogo.d.ts +117 -0
  426. package/dist/web/components/TokenLogo.d.ts.map +1 -0
  427. package/dist/web/components/TokenLogo.js +112 -0
  428. package/dist/web/components/TokenLogo.js.map +1 -0
  429. package/dist/web/components/TokenLogo.js.zyzz.json +1 -0
  430. package/dist/web/components/Tooltip.css +1 -1
  431. package/dist/web/components/Tooltip.js.map +1 -1
  432. package/dist/web/components/Tooltip.js.zyzz.json +1 -1
  433. package/dist/web/components/VerificationCode.css +1 -0
  434. package/dist/web/components/VerificationCode.d.ts +47 -0
  435. package/dist/web/components/VerificationCode.d.ts.map +1 -0
  436. package/dist/web/components/VerificationCode.js +55 -0
  437. package/dist/web/components/VerificationCode.js.map +1 -0
  438. package/dist/web/components/VerificationCode.js.zyzz.json +1 -0
  439. package/dist/web/components/Visual.css +1 -0
  440. package/dist/web/components/Visual.d.ts +65 -0
  441. package/dist/web/components/Visual.d.ts.map +1 -0
  442. package/dist/web/components/Visual.js +51 -0
  443. package/dist/web/components/Visual.js.map +1 -0
  444. package/dist/web/components/Visual.js.zyzz.json +1 -0
  445. package/dist/web/components/internal/Field.css +1 -1
  446. package/dist/web/components/internal/Field.d.ts +41 -87
  447. package/dist/web/components/internal/Field.d.ts.map +1 -1
  448. package/dist/web/components/internal/Field.js +8 -7
  449. package/dist/web/components/internal/Field.js.map +1 -1
  450. package/dist/web/components/internal/Field.js.zyzz.json +1 -1
  451. package/dist/web/components/internal/InputGroup.css +1 -1
  452. package/dist/web/components/internal/InputGroup.d.ts +38 -99
  453. package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
  454. package/dist/web/components/internal/InputGroup.js +6 -6
  455. package/dist/web/components/internal/InputGroup.js.map +1 -1
  456. package/dist/web/components/internal/InputGroup.js.zyzz.json +1 -1
  457. package/dist/web/components/internal/Listbox.css +1 -1
  458. package/dist/web/components/internal/Listbox.d.ts +8 -8
  459. package/dist/web/components/internal/Listbox.js.map +1 -1
  460. package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
  461. package/dist/web/components/internal/RowDisabled.d.ts +3 -0
  462. package/dist/web/components/internal/RowDisabled.d.ts.map +1 -0
  463. package/dist/web/components/internal/RowDisabled.js +9 -0
  464. package/dist/web/components/internal/RowDisabled.js.map +1 -0
  465. package/dist/web/components/internal/RowsSize.d.ts +2 -3
  466. package/dist/web/components/internal/RowsSize.d.ts.map +1 -1
  467. package/dist/web/components/internal/RowsSize.js +3 -3
  468. package/dist/web/components/internal/RowsSize.js.map +1 -1
  469. package/dist/web/components/internal/TabBar.d.ts +33 -0
  470. package/dist/web/components/internal/TabBar.d.ts.map +1 -0
  471. package/dist/web/components/internal/TabBar.js +30 -0
  472. package/dist/web/components/internal/TabBar.js.map +1 -0
  473. package/dist/web/components/internal/Text.d.ts +9 -0
  474. package/dist/web/components/internal/Text.d.ts.map +1 -0
  475. package/dist/web/components/internal/Text.js +35 -0
  476. package/dist/web/components/internal/Text.js.map +1 -0
  477. package/dist/web/index.d.ts +18 -6
  478. package/dist/web/index.d.ts.map +1 -1
  479. package/dist/web/index.js +18 -6
  480. package/dist/web/index.js.map +1 -1
  481. package/dist/web/index.js.zyzz.json +1 -1
  482. package/dist/web/vars.d.ts +612 -704
  483. package/dist/web/vars.d.ts.map +1 -1
  484. package/dist/web/vars.js +7 -6
  485. package/dist/web/vars.js.map +1 -1
  486. package/dist/web/vars.js.zyzz.json +1 -1
  487. package/dist/web/zyzz.config.d.ts +3041 -3506
  488. package/dist/web/zyzz.config.d.ts.map +1 -1
  489. package/dist/web/zyzz.config.js +29 -3
  490. package/dist/web/zyzz.config.js.map +1 -1
  491. package/dist/web/zyzz.config.js.zyzz.json +1 -1
  492. package/package.json +149 -5
  493. package/src/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  494. package/src/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  495. package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
  496. package/src/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  497. package/src/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  498. package/src/fonts/JetBrainsMono-Medium.woff2 +0 -0
  499. package/src/fonts/{Geist-OFL.txt → JetBrainsMono-OFL.txt} +4 -3
  500. package/src/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  501. package/src/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  502. package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
  503. package/src/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  504. package/src/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  505. package/src/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  506. package/src/fonts/Pilat-Black-latin.woff2 +0 -0
  507. package/src/fonts/Pilat-Black-other.woff2 +0 -0
  508. package/src/fonts/Pilat-Black.woff2 +0 -0
  509. package/src/fonts/Pilat-Bold-latin.woff2 +0 -0
  510. package/src/fonts/Pilat-Bold-other.woff2 +0 -0
  511. package/src/fonts/Pilat-Bold.woff2 +0 -0
  512. package/src/fonts/Pilat-Book-latin.woff2 +0 -0
  513. package/src/fonts/Pilat-Book-other.woff2 +0 -0
  514. package/src/fonts/Pilat-Book.woff2 +0 -0
  515. package/src/fonts/Pilat-Demi-latin.woff2 +0 -0
  516. package/src/fonts/Pilat-Demi-other.woff2 +0 -0
  517. package/src/fonts/Pilat-Demi.woff2 +0 -0
  518. package/src/fonts/Pilat-Heavy-latin.woff2 +0 -0
  519. package/src/fonts/Pilat-Heavy-other.woff2 +0 -0
  520. package/src/fonts/Pilat-Heavy.woff2 +0 -0
  521. package/src/fonts/Pilat-Light-latin.woff2 +0 -0
  522. package/src/fonts/Pilat-Light-other.woff2 +0 -0
  523. package/src/fonts/Pilat-Light.woff2 +0 -0
  524. package/src/fonts/Pilat-Regular-latin.woff2 +0 -0
  525. package/src/fonts/Pilat-Regular-other.woff2 +0 -0
  526. package/src/fonts/Pilat-Regular.woff2 +0 -0
  527. package/src/fonts/Pilat-Thin-latin.woff2 +0 -0
  528. package/src/fonts/Pilat-Thin-other.woff2 +0 -0
  529. package/src/fonts/Pilat-Thin.woff2 +0 -0
  530. package/src/fonts/README.md +15 -2
  531. package/src/oxlint/rules/PreferComponent.ts +6 -6
  532. package/src/web/README.md +7 -7
  533. package/src/web/components/Accordion.tsx +8 -8
  534. package/src/web/components/AgentLogo.tsx +330 -0
  535. package/src/web/components/Alert.tsx +321 -0
  536. package/src/web/components/AlertDialog.tsx +47 -111
  537. package/src/web/components/Amount.tsx +6 -6
  538. package/src/web/components/AmountInput.tsx +59 -134
  539. package/src/web/components/AppShell.tsx +367 -43
  540. package/src/web/components/AssetChip.tsx +110 -0
  541. package/src/web/components/Autocomplete.tsx +4 -4
  542. package/src/web/components/Avatar.tsx +42 -119
  543. package/src/web/components/Badge.tsx +122 -0
  544. package/src/web/components/Banner.tsx +13 -11
  545. package/src/web/components/BarChart.tsx +427 -0
  546. package/src/web/components/Breadcrumbs.tsx +7 -7
  547. package/src/web/components/Button.tsx +159 -41
  548. package/src/web/components/ButtonGroup.tsx +59 -0
  549. package/src/web/components/Calendar.tsx +15 -13
  550. package/src/web/components/Checkbox.tsx +14 -11
  551. package/src/web/components/ChoiceGroup.tsx +107 -26
  552. package/src/web/components/Choicebox.tsx +30 -28
  553. package/src/web/components/Combobox.tsx +10 -8
  554. package/src/web/components/CopyButton.tsx +1 -1
  555. package/src/web/components/DatePicker.tsx +42 -61
  556. package/src/web/components/Dialog.tsx +273 -71
  557. package/src/web/components/Drawer.tsx +45 -18
  558. package/src/web/components/Empty.tsx +13 -8
  559. package/src/web/components/Field.tsx +78 -132
  560. package/src/web/components/Fieldset.tsx +16 -37
  561. package/src/web/components/Frame.tsx +13 -20
  562. package/src/web/components/Gauge.tsx +4 -4
  563. package/src/web/components/Hex.tsx +13 -56
  564. package/src/web/components/IconTile.tsx +57 -0
  565. package/src/web/components/Identicon.tsx +1 -10
  566. package/src/web/components/Kbd.tsx +8 -8
  567. package/src/web/components/ListGroup.tsx +857 -0
  568. package/src/web/components/LoadingDots.tsx +1 -0
  569. package/src/web/components/Menu.tsx +50 -35
  570. package/src/web/components/NetworkLogo.tsx +208 -0
  571. package/src/web/components/NumberField.tsx +18 -33
  572. package/src/web/components/OtpField.tsx +51 -102
  573. package/src/web/components/Pagination.tsx +16 -14
  574. package/src/web/components/Popover.tsx +8 -8
  575. package/src/web/components/Progress.tsx +7 -5
  576. package/src/web/components/Qr.tsx +1 -1
  577. package/src/web/components/RadioGroup.tsx +9 -7
  578. package/src/web/components/SecretValue.tsx +11 -11
  579. package/src/web/components/Select.tsx +89 -26
  580. package/src/web/components/Separator.tsx +95 -7
  581. package/src/web/components/SidebarMenu.tsx +390 -53
  582. package/src/web/components/Skeleton.tsx +5 -5
  583. package/src/web/components/Slider.tsx +12 -6
  584. package/src/web/components/Snippet.tsx +134 -75
  585. package/src/web/components/Spinner.tsx +38 -12
  586. package/src/web/components/SplitBar.tsx +158 -0
  587. package/src/web/components/SplitButton.tsx +26 -17
  588. package/src/web/components/StatusChip.tsx +138 -0
  589. package/src/web/components/StatusRow.tsx +162 -0
  590. package/src/web/components/Stepper.tsx +11 -8
  591. package/src/web/components/Surface.tsx +172 -93
  592. package/src/web/components/Switch.tsx +25 -29
  593. package/src/web/components/Table.tsx +281 -70
  594. package/src/web/components/Tabs.tsx +93 -50
  595. package/src/web/components/TempoLogo.tsx +89 -0
  596. package/src/web/components/{Input.tsx → TextInput.tsx} +87 -118
  597. package/src/web/components/Textarea.tsx +33 -78
  598. package/src/web/components/Toast.tsx +24 -22
  599. package/src/web/components/Token.tsx +106 -172
  600. package/src/web/components/TokenLogo.tsx +217 -0
  601. package/src/web/components/Tooltip.tsx +3 -3
  602. package/src/web/components/VerificationCode.tsx +97 -0
  603. package/src/web/components/Visual.tsx +166 -0
  604. package/src/web/components/internal/Field.ts +63 -72
  605. package/src/web/components/internal/InputGroup.ts +44 -101
  606. package/src/web/components/internal/Listbox.ts +20 -20
  607. package/src/web/components/internal/RowDisabled.ts +9 -0
  608. package/src/web/components/internal/RowsSize.ts +3 -5
  609. package/src/web/components/internal/TabBar.ts +52 -0
  610. package/src/web/components/internal/Text.ts +39 -0
  611. package/src/web/components/visuals/Passkey.svg +21 -0
  612. package/src/web/index.ts +18 -6
  613. package/src/web/logos/Base.svg +10 -0
  614. package/src/web/logos/Ethereum.svg +16 -0
  615. package/src/web/logos/HyperEVM.svg +27 -0
  616. package/src/web/logos/Polygon.svg +15 -0
  617. package/src/web/logos/README.md +14 -0
  618. package/src/web/logos/Solana.svg +11 -0
  619. package/src/web/logos/Tempo.svg +11 -0
  620. package/src/web/vars.ts +493 -534
  621. package/src/web/zyzz.config.ts +255 -12
  622. package/dist/fonts/GeistMono-Variable.woff2 +0 -0
  623. package/dist/web/components/AlertDialog.css +0 -1
  624. package/dist/web/components/Callout.css +0 -1
  625. package/dist/web/components/Callout.d.ts +0 -161
  626. package/dist/web/components/Callout.d.ts.map +0 -1
  627. package/dist/web/components/Callout.js +0 -83
  628. package/dist/web/components/Callout.js.map +0 -1
  629. package/dist/web/components/Callout.js.zyzz.json +0 -1
  630. package/dist/web/components/IconChip.css +0 -1
  631. package/dist/web/components/IconChip.d.ts +0 -53
  632. package/dist/web/components/IconChip.d.ts.map +0 -1
  633. package/dist/web/components/IconChip.js +0 -27
  634. package/dist/web/components/IconChip.js.map +0 -1
  635. package/dist/web/components/IconChip.js.zyzz.json +0 -1
  636. package/dist/web/components/Input.css +0 -1
  637. package/dist/web/components/Input.d.ts.map +0 -1
  638. package/dist/web/components/Input.js +0 -118
  639. package/dist/web/components/Input.js.map +0 -1
  640. package/dist/web/components/Input.js.zyzz.json +0 -1
  641. package/dist/web/components/Rows.css +0 -1
  642. package/dist/web/components/Rows.d.ts +0 -484
  643. package/dist/web/components/Rows.d.ts.map +0 -1
  644. package/dist/web/components/Rows.js +0 -171
  645. package/dist/web/components/Rows.js.map +0 -1
  646. package/dist/web/components/Rows.js.zyzz.json +0 -1
  647. package/dist/web/components/Tag.css +0 -1
  648. package/dist/web/components/Tag.d.ts +0 -171
  649. package/dist/web/components/Tag.d.ts.map +0 -1
  650. package/dist/web/components/Tag.js +0 -52
  651. package/dist/web/components/Tag.js.map +0 -1
  652. package/dist/web/components/Tag.js.zyzz.json +0 -1
  653. package/dist/web/components/internal/FieldVariant.d.ts +0 -4
  654. package/dist/web/components/internal/FieldVariant.d.ts.map +0 -1
  655. package/dist/web/components/internal/FieldVariant.js +0 -4
  656. package/dist/web/components/internal/FieldVariant.js.map +0 -1
  657. package/src/fonts/GeistMono-Variable.woff2 +0 -0
  658. package/src/web/components/Callout.tsx +0 -241
  659. package/src/web/components/IconChip.tsx +0 -54
  660. package/src/web/components/Rows.tsx +0 -588
  661. package/src/web/components/Tag.tsx +0 -149
  662. package/src/web/components/internal/FieldVariant.ts +0 -6
@@ -0,0 +1,427 @@
1
+ import type { ComponentPropsWithRef, ReactNode } from 'react'
2
+ import { useSyncExternalStore } from 'react'
3
+ import * as Recharts from 'recharts'
4
+ import type * as zyzz from 'zyzz'
5
+ import { style, variants } from '../zyzz.config.js'
6
+
7
+ const reducedMotion = '(prefers-reduced-motion: reduce)'
8
+
9
+ /**
10
+ * A stacked bar chart of values over time, such as the spend of each agent per day, built on
11
+ * Recharts. Each `series` stacks in its own color, in order from the baseline. A value axis with
12
+ * three ticks leads the plot, the `index` labels the bars below it, and a legend names each series
13
+ * under the chart. Hovering a bar, or moving to it with the arrow keys, shows a `BarChart.Tooltip`
14
+ * with the value of each series.
15
+ *
16
+ * - Name the chart with `aria-label`, or with `aria-labelledby` pointing at its heading.
17
+ * - Give each series a color that stays the same wherever it appears, such as an agent's brand color.
18
+ * - Format values with `format`, which the axis, the tooltip, and the total share.
19
+ * - Offer the same values as a `Table` when people need to read each one.
20
+ *
21
+ * @example
22
+ * <BarChart
23
+ * aria-label="Spend by agent"
24
+ * data={[{ claude: 1.2, codex: 0.4, day: 'Oct 1' }]}
25
+ * format={(value) => `$${value}`}
26
+ * index="day"
27
+ * series={[
28
+ * { color: '#d97757', key: 'claude', label: 'Claude' },
29
+ * { color: '#10a37f', key: 'codex', label: 'Codex' },
30
+ * ]}
31
+ * />
32
+ *
33
+ * @see {@link https://recharts.github.io/en-US/api/BarChart/ | Recharts BarChart}
34
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html | WCAG 2.2 Non-text Content}
35
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/use-of-color.html | WCAG 2.2 Use of Color}
36
+ */
37
+ export function BarChart<const datum extends BarChart.Datum>(props: BarChart.Props<datum>) {
38
+ const {
39
+ className,
40
+ data,
41
+ format = String,
42
+ height = 198,
43
+ index,
44
+ series,
45
+ ticks,
46
+ vars,
47
+ ...attributes
48
+ } = props
49
+ const reduced = useReducedMotion()
50
+ const value = (entry: datum, key: string) => Number(entry[key] ?? 0)
51
+ // Recharts infers its data type from a key of the generic datum and cannot resolve it, so the
52
+ // axis and the bars read their keys as strings.
53
+ const category: string = index
54
+ const peak = Math.max(
55
+ 0,
56
+ ...data.map((entry) => series.reduce((sum, item) => sum + value(entry, item.key), 0)),
57
+ )
58
+ const step = niceStep(peak / 2)
59
+
60
+ return (
61
+ <div role="figure" {...attributes} {...styles.root({ className, style: props.style, vars })}>
62
+ <Recharts.BarChart
63
+ accessibilityLayer
64
+ barCategoryGap={3}
65
+ data={[...data]}
66
+ height={height}
67
+ margin={{ bottom: 0, left: 0, right: 0, top: 0 }}
68
+ responsive
69
+ width="100%"
70
+ >
71
+ <Recharts.CartesianGrid strokeDasharray="2 4" vertical={false} />
72
+ <Recharts.YAxis
73
+ axisLine={false}
74
+ // Three even ticks round the scale up from the tallest bar.
75
+ domain={[0, step * 2]}
76
+ tickFormatter={(tick: number) => format(tick)}
77
+ tickLine={false}
78
+ tickMargin={10}
79
+ tickSize={0}
80
+ ticks={[0, step, Number((step * 2).toPrecision(12))]}
81
+ width={54}
82
+ />
83
+ <Recharts.XAxis
84
+ axisLine={false}
85
+ dataKey={category}
86
+ height={28}
87
+ tickLine={false}
88
+ tickMargin={12}
89
+ tickSize={0}
90
+ {...(ticks ? { interval: 0, ticks: [...ticks] } : { interval: 'preserveStartEnd' })}
91
+ />
92
+ <Recharts.Tooltip
93
+ content={(content) => {
94
+ // Each payload entry carries the datum of the hovered bar, which two bars can share
95
+ // a label with.
96
+ const entry: datum | undefined = content.payload?.[0]?.payload
97
+ if (!content.active || !entry) return null
98
+
99
+ const items = series.map((item) => ({
100
+ color: item.color,
101
+ label: item.label,
102
+ value: format(value(entry, item.key)),
103
+ }))
104
+ const total = series.reduce((sum, item) => sum + value(entry, item.key), 0)
105
+ return <Tooltip items={items} label={String(content.label)} total={format(total)} />
106
+ }}
107
+ cursor={styles.cursor()}
108
+ isAnimationActive={false}
109
+ />
110
+ {/* A day without spend keeps a 2px stub at the baseline, under the bars of the others. */}
111
+ <Recharts.Bar
112
+ dataKey={() => 0}
113
+ isAnimationActive={false}
114
+ legendType="none"
115
+ minPointSize={2}
116
+ shape={(shape: Recharts.BarShapeProps) => (
117
+ <rect
118
+ {...styles.stub()}
119
+ height={2}
120
+ width={shape.width}
121
+ x={shape.x}
122
+ y={(shape.y ?? 0) + (shape.height ?? 0) - 2}
123
+ />
124
+ )}
125
+ stackId="total"
126
+ tooltipType="none"
127
+ />
128
+ {series.map((item: BarChart.Series) => (
129
+ <Recharts.Bar
130
+ animationDuration={300}
131
+ animationEasing="ease-out"
132
+ dataKey={item.key}
133
+ fill={item.color}
134
+ isAnimationActive={!reduced}
135
+ key={item.key}
136
+ name={item.label}
137
+ shape={segment}
138
+ stackId="total"
139
+ />
140
+ ))}
141
+ </Recharts.BarChart>
142
+ <div {...styles.legend()}>
143
+ {series.map((item) => (
144
+ <span key={item.key} {...styles.entry()}>
145
+ <span
146
+ aria-hidden="true"
147
+ {...styles.swatch({ style: { backgroundColor: item.color } })}
148
+ />
149
+ {item.label}
150
+ </span>
151
+ ))}
152
+ </div>
153
+ </div>
154
+ )
155
+ }
156
+
157
+ export namespace BarChart {
158
+ /** One bar: the value of each series, and the label of the bar under `index`. */
159
+ export type Datum = Record<string, number | string>
160
+
161
+ export type Props<datum extends Datum = Datum> = Omit<ComponentPropsWithRef<'div'>, 'children'> &
162
+ zyzz.Props.Variants<typeof styles.root> & {
163
+ /**
164
+ * One entry per bar, in order along the axis. Each series value is zero or more, since the
165
+ * series stack up from a zero baseline and the value axis starts at zero.
166
+ */
167
+ data: readonly datum[]
168
+ /**
169
+ * Formats a value for the axis, the tooltip, and the total, such as `(value) => `$${value}``.
170
+ *
171
+ * @default String
172
+ */
173
+ format?: ((value: number) => string) | undefined
174
+ /**
175
+ * Height in px of the plot and the axis under it. The legend adds 28px.
176
+ *
177
+ * @default 198
178
+ */
179
+ height?: number | undefined
180
+ /** Key of the label of each bar, such as `day`. */
181
+ index: keyof datum & string
182
+ /**
183
+ * The stacked series, from the baseline up, which the legend lists in the same order. Each
184
+ * key names a field with a number in every datum.
185
+ */
186
+ series: readonly Series<NumericKey<datum>>[]
187
+ /** Labels under the axis, such as every seventh day. Recharts picks them when absent. */
188
+ ticks?: readonly string[] | undefined
189
+ }
190
+
191
+ /** The keys of a datum whose values are numbers, or every key of a datum typed by `Datum`. */
192
+ export type NumericKey<datum extends Datum> = string extends keyof datum
193
+ ? string
194
+ : { [key in keyof datum]: datum[key] extends number ? key : never }[keyof datum] & string
195
+
196
+ /** One stacked series. */
197
+ export type Series<key extends string = string> = {
198
+ /** Fill of the series, such as the brand color of an agent. */
199
+ color: string
200
+ /** Key of the series' value in each datum. */
201
+ key: key
202
+ /** Name of the series in the legend and the tooltip. */
203
+ label: string
204
+ }
205
+
206
+ /**
207
+ * The card that names a bar and lists the value of each series in it, which the chart shows on
208
+ * hover. Render it alone to show the values of a bar elsewhere.
209
+ */
210
+ export function Tooltip(props: Tooltip.Props) {
211
+ const { className, items, label, total, vars, ...attributes } = props
212
+
213
+ return (
214
+ <div {...attributes} {...styles.tooltip({ className, style: props.style, vars })}>
215
+ <div {...styles.header()}>
216
+ <span>{label}</span>
217
+ {total !== undefined && <span>{total}</span>}
218
+ </div>
219
+ <ul {...styles.rows()}>
220
+ {items.map((item, position) => (
221
+ <li key={position} {...styles.row()}>
222
+ <span
223
+ aria-hidden="true"
224
+ {...styles.swatch({ style: { backgroundColor: item.color } })}
225
+ />
226
+ <span {...styles.series()}>{item.label}</span>
227
+ <span {...styles.value()}>{item.value}</span>
228
+ </li>
229
+ ))}
230
+ </ul>
231
+ </div>
232
+ )
233
+ }
234
+
235
+ export namespace Tooltip {
236
+ /** One series in the tooltip. */
237
+ export type Item = {
238
+ /** Color of the series, as its bars fill. */
239
+ color: string
240
+ /** Name of the series. */
241
+ label: ReactNode
242
+ /** Formatted value of the series in the bar. */
243
+ value: ReactNode
244
+ }
245
+
246
+ export type Props = Omit<ComponentPropsWithRef<'div'>, 'children'> &
247
+ zyzz.Props.Variants<typeof styles.tooltip> & {
248
+ /** The series in the bar, from the baseline up. */
249
+ items: readonly Item[]
250
+ /** Label of the bar, such as its day. */
251
+ label: ReactNode
252
+ /** Formatted total of the bar, at the end of the header. Absent, the header shows the label alone. */
253
+ total?: ReactNode | undefined
254
+ }
255
+ }
256
+ }
257
+
258
+ /**
259
+ * Returns the smallest step of 1, 2, 2.5, or 5 times a power of ten that is at least `target`. An
260
+ * empty chart steps by 0.5, so its scale reaches 1.
261
+ */
262
+ function niceStep(target: number) {
263
+ if (!(target > 0)) return 0.5
264
+
265
+ const power = 10 ** Math.floor(Math.log10(target))
266
+ const factor = [1, 2, 2.5, 5, 10].find((entry) => entry * power >= target) ?? 10
267
+ return Number((factor * power).toPrecision(12))
268
+ }
269
+
270
+ /** The bar of a tooltip-less series stacks 1px below the one above it, so segments stay apart. */
271
+ function segment(shape: Recharts.BarShapeProps) {
272
+ const height = Math.max((shape.height ?? 0) - 1, 0)
273
+
274
+ return (
275
+ <rect
276
+ fill={shape.fill}
277
+ height={height}
278
+ width={shape.width}
279
+ x={shape.x}
280
+ y={(shape.y ?? 0) + (shape.height ?? 0) - height}
281
+ />
282
+ )
283
+ }
284
+
285
+ /** Whether the reader asks for reduced motion, which skips the bars' growth on load. */
286
+ function useReducedMotion() {
287
+ return useSyncExternalStore(
288
+ (notify) => {
289
+ const query = window.matchMedia(reducedMotion)
290
+ query.addEventListener('change', notify)
291
+ return () => query.removeEventListener('change', notify)
292
+ },
293
+ () => window.matchMedia(reducedMotion).matches,
294
+ () => true,
295
+ )
296
+ }
297
+
298
+ const Tooltip = BarChart.Tooltip
299
+
300
+ namespace styles {
301
+ export const cursor = style({ fill: 'container.regular' }, { id: 'tds/web/bar-chart/cursor' })
302
+
303
+ export const entry = style(
304
+ { alignItems: 'center', columnGap: '6', display: 'inline-flex', whiteSpace: 'nowrap' },
305
+ { id: 'tds/web/bar-chart/entry' },
306
+ )
307
+
308
+ export const header = style(
309
+ {
310
+ color: 'content.primary',
311
+ columnGap: '12',
312
+ display: 'flex',
313
+ justifyContent: 'space-between',
314
+ typography: 'body.b3Strong',
315
+ },
316
+ { id: 'tds/web/bar-chart/header' },
317
+ )
318
+
319
+ // The legend sits 12px under the axis labels, 16px between its entries.
320
+ export const legend = style(
321
+ {
322
+ color: 'content.secondary',
323
+ columnGap: '16',
324
+ display: 'flex',
325
+ flexWrap: 'wrap',
326
+ marginBlockStart: '12',
327
+ rowGap: '4',
328
+ typography: 'body.b3',
329
+ },
330
+ { id: 'tds/web/bar-chart/legend' },
331
+ )
332
+
333
+ // Recharts draws the grid and the axis labels in SVG, so their paint comes from these selectors.
334
+ // An SVG text paints with `fill`, and takes `color` too so that `currentColor` matches it.
335
+ export const root = variants(
336
+ {
337
+ base: {
338
+ display: 'flex',
339
+ flexDirection: 'column',
340
+ minWidth: '0',
341
+ selectors: {
342
+ '& .recharts-cartesian-axis-tick-value': {
343
+ color: 'content.tertiary',
344
+ fill: 'currentColor !custom',
345
+ typography: 'body.b3',
346
+ },
347
+ '& .recharts-cartesian-grid-horizontal line': { stroke: 'line.secondary' },
348
+ '& .recharts-surface': { outline: 'none !custom', overflow: 'visible' },
349
+ '& .recharts-wrapper:focus-visible': {
350
+ borderRadius: '3xs',
351
+ outlineColor: 'border.focus',
352
+ outlineOffset: '2',
353
+ outlineStyle: 'solid !custom',
354
+ outlineWidth: '2',
355
+ },
356
+ },
357
+ },
358
+ },
359
+ { id: 'tds/web/bar-chart' },
360
+ )
361
+
362
+ export const row = style(
363
+ { alignItems: 'center', columnGap: '8', display: 'flex' },
364
+ { id: 'tds/web/bar-chart/row' },
365
+ )
366
+
367
+ export const rows = style(
368
+ {
369
+ display: 'flex',
370
+ flexDirection: 'column',
371
+ listStyle: 'none',
372
+ margin: '0',
373
+ marginBlockStart: '8',
374
+ padding: '0',
375
+ rowGap: '4',
376
+ },
377
+ { id: 'tds/web/bar-chart/rows' },
378
+ )
379
+
380
+ export const series = style(
381
+ {
382
+ color: 'content.secondary',
383
+ flexGrow: '1 !custom',
384
+ minWidth: '0',
385
+ overflow: 'hidden',
386
+ textOverflow: 'ellipsis',
387
+ whiteSpace: 'nowrap',
388
+ },
389
+ { id: 'tds/web/bar-chart/series' },
390
+ )
391
+
392
+ export const stub = style({ fill: 'container.strong' }, { id: 'tds/web/bar-chart/stub' })
393
+
394
+ // A swatch keeps a 2px corner, which no radius token sets.
395
+ export const swatch = style(
396
+ {
397
+ borderRadius: 'calc(0.125rem * var(--tds-corner-scale, 1)) !custom',
398
+ flexShrink: '0 !custom',
399
+ height: '8',
400
+ width: '8',
401
+ },
402
+ { id: 'tds/web/bar-chart/swatch' },
403
+ )
404
+
405
+ // Figma pads the 16px corner of the tooltip by 12px, below the radius, which keeps its rows dense.
406
+ export const tooltip = variants(
407
+ {
408
+ base: {
409
+ backgroundColor: 'background.elevated',
410
+ borderRadius: 'sm',
411
+ boxShadow: 'regular',
412
+ boxSizing: 'border-box',
413
+ color: 'content.primary',
414
+ padding: '12',
415
+ pointerEvents: 'none',
416
+ typography: 'body.b3',
417
+ width: '200',
418
+ },
419
+ },
420
+ { id: 'tds/web/bar-chart/tooltip' },
421
+ )
422
+
423
+ export const value = style(
424
+ { color: 'content.primary', flexShrink: '0 !custom' },
425
+ { id: 'tds/web/bar-chart/value' },
426
+ )
427
+ }
@@ -98,8 +98,8 @@ namespace styles {
98
98
  export const link = variants(
99
99
  {
100
100
  base: {
101
- borderRadius: '6',
102
- color: 'gray.900',
101
+ borderRadius: '2xs',
102
+ color: 'content.secondary',
103
103
  outlineColor: 'transparent !custom',
104
104
  outlineOffset: '0',
105
105
  outlineStyle: 'solid !custom',
@@ -109,15 +109,15 @@ namespace styles {
109
109
  transitionProperty: 'color, outline-color, outline-offset',
110
110
  transitionTimingFunction: 'snappy',
111
111
  // Weight overrides the typography token, so it stays after it.
112
- typography: 'copy.14',
112
+ typography: 'body.b2',
113
113
  selectors: {
114
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
115
- '&:hover:is(a)': { color: 'foreground' },
114
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
115
+ '&:hover:is(a)': { color: 'content.primary' },
116
116
  },
117
117
  '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'color, outline-color' },
118
118
  },
119
119
  defaultVariants: { current: false },
120
- variants: { current: { false: {}, true: { color: 'foreground' } } },
120
+ variants: { current: { false: {}, true: { color: 'content.primary' } } },
121
121
  },
122
122
  { id: 'tds/web/breadcrumbs/link' },
123
123
  )
@@ -141,7 +141,7 @@ namespace styles {
141
141
  export const separator = style(
142
142
  {
143
143
  alignItems: 'center',
144
- color: 'gray.700',
144
+ color: 'content.tertiary',
145
145
  display: 'inline-flex',
146
146
  fontSize: '16',
147
147
  },