@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
@@ -1,6 +1,8 @@
1
1
  import type { ComponentPropsWithRef } from 'react'
2
2
  import type * as zyzz from 'zyzz'
3
- import { variants } from '../zyzz.config.js'
3
+ import { keyframes } from 'zyzz/web'
4
+ import { ChevronDown } from '../icons/ChevronDown.js'
5
+ import { style, variants, vars } from '../zyzz.config.js'
4
6
 
5
7
  /**
6
8
  * A native `table` with styled parts. It renders the same element as `Table.Root` and accepts the
@@ -9,7 +11,13 @@ import { variants } from '../zyzz.config.js'
9
11
  *
10
12
  * - Use it for tabular data only, never for layout.
11
13
  * - Name the table with `Table.Caption`, which renders below the rows.
12
- * - The last column aligns to the end. Set `justify="end"` on other numeric columns to match.
14
+ * - Each row pads its cells 12px at its edges and keeps 12px between their content.
15
+ * - The last column aligns to the end. Set `justify="end"` on other amount columns to match, or
16
+ * `justify="start"` on a last cell to keep it at the start.
17
+ * - Set a second line in `Table.Subtitle`, and lead a cell with a `TokenLogo` or a
18
+ * `Table.LeadTile`.
19
+ * - For a sortable column, set `aria-sort` on its `Table.HeaderCell` and put a `Table.SortButton`
20
+ * in it.
13
21
  * - With `interactive`, make each clickable row reachable by keyboard through a link or button.
14
22
  *
15
23
  * @example
@@ -18,18 +26,24 @@ import { variants } from '../zyzz.config.js'
18
26
  * <Table.Head>
19
27
  * <Table.Row>
20
28
  * <Table.HeaderCell>Recipient</Table.HeaderCell>
21
- * <Table.HeaderCell>Amount</Table.HeaderCell>
29
+ * <Table.HeaderCell aria-sort="descending">
30
+ * <Table.SortButton>Amount</Table.SortButton>
31
+ * </Table.HeaderCell>
22
32
  * </Table.Row>
23
33
  * </Table.Head>
24
34
  * <Table.Body>
25
35
  * <Table.Row>
26
- * <Table.Cell>Ada</Table.Cell>
27
- * <Table.Cell numeric>120.00</Table.Cell>
36
+ * <Table.Cell>
37
+ * Ada
38
+ * <Table.Subtitle>Rent</Table.Subtitle>
39
+ * </Table.Cell>
40
+ * <Table.Cell>120.00</Table.Cell>
28
41
  * </Table.Row>
29
42
  * </Table.Body>
30
43
  * </Table>
31
44
  *
32
45
  * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/table/ | WAI-ARIA APG Table pattern}
46
+ * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/table/examples/sortable-table/ | WAI-ARIA APG Sortable Table example}
33
47
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/table | MDN table element}
34
48
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html | WCAG 2.2 Info and Relationships}
35
49
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/meaningful-sequence.html | WCAG 2.2 Meaningful Sequence}
@@ -50,7 +64,11 @@ export namespace Table {
50
64
  export type Props = ComponentPropsWithRef<'tbody'>
51
65
  }
52
66
 
53
- /** The table's accessible name, rendered as a `caption` below the rows. */
67
+ /**
68
+ * The table's accessible name, rendered as a `caption` below the rows, such as a note on hidden
69
+ * rows with an action. An icon in it takes the tertiary color, apart from the icons of its
70
+ * buttons and links.
71
+ */
54
72
  export function Caption(props: Caption.Props) {
55
73
  const { className, vars, ...attributes } = props
56
74
 
@@ -63,17 +81,28 @@ export namespace Table {
63
81
  }
64
82
 
65
83
  /**
66
- * A data cell. `numeric` sets tabular figures in the foreground color, `mono` sets monospace
67
- * type, and `status` colors the text `negative`, `positive` or `warning`. Pair a status color
68
- * with text that carries the same meaning.
84
+ * A data cell, with its text in the primary color. `muted` sets the text in the tertiary color,
85
+ * `status` colors it `negative`, `positive` or `warning`, `numeric` sets tabular figures, and
86
+ * `mono` sets monospace type. A `Table.Subtitle` keeps its own type and color. Pair a status
87
+ * color with text that carries the same meaning. A `StatusChip` in a cell sits 8px inside the
88
+ * edges of the cell's content.
69
89
  */
70
90
  export function Cell(props: Cell.Props) {
71
- const { className, justify, mono, numeric, status, vars, ...attributes } = props
91
+ const { className, justify, mono, muted, numeric, status, vars, ...attributes } = props
72
92
 
73
93
  return (
74
94
  <td
75
95
  {...attributes}
76
- {...styles.cell({ className, justify, mono, numeric, status, style: props.style, vars })}
96
+ {...styles.cell({
97
+ className,
98
+ justify,
99
+ mono,
100
+ muted,
101
+ numeric,
102
+ status,
103
+ style: props.style,
104
+ vars,
105
+ })}
77
106
  />
78
107
  )
79
108
  }
@@ -97,7 +126,9 @@ export namespace Table {
97
126
 
98
127
  /**
99
128
  * A column header with `scope="col"` by default. Pass `scope="row"` for a row header. Its text
100
- * renders in the `label.14.strong` set, heavier than the `copy.14` body cells.
129
+ * renders in the tertiary color and the smaller `body.b3Strong` set, apart from the primary
130
+ * `body.b2` body cells. `aria-sort="ascending"` or `"descending"` marks the sorted column and
131
+ * sets its text in the primary color.
101
132
  */
102
133
  export function HeaderCell(props: HeaderCell.Props) {
103
134
  const { className, justify, vars, ...attributes } = props
@@ -116,12 +147,28 @@ export namespace Table {
116
147
  }
117
148
 
118
149
  /**
119
- * The `table` element and its row styles. `size` sets 32, 40 or 56px body rows. Pass
120
- * `dividers={false}` to drop row separators. `striped` shades even rows, `fade` masks the bottom
121
- * 4rem, and `interactive` adds row hover and focus-visible styles.
150
+ * A 32px rounded-square `span` that centers a 16px icon at the start of a cell, beside two lines
151
+ * of text. It adds no semantics, so the text beside it names the row.
152
+ */
153
+ export function LeadTile(props: LeadTile.Props) {
154
+ const { className, vars, ...attributes } = props
155
+
156
+ return <span {...attributes} {...styles.leadTile({ className, style: props.style, vars })} />
157
+ }
158
+
159
+ export namespace LeadTile {
160
+ export type Props = ComponentPropsWithRef<'span'> & zyzz.Props.Variants<typeof styles.leadTile>
161
+ }
162
+
163
+ /**
164
+ * The `table` element and its row styles. `size` sets 32, 40 or 56px body rows. Rows draw a
165
+ * divider inset by their padding, except the last one. Pass `dividers={false}` to drop the
166
+ * dividers, and `interactive` to fill a hovered row and outline a focus-visible one. An
167
+ * interactive table clips each body row to its 12px corners, so a popup in a cell renders in a
168
+ * portal.
122
169
  */
123
170
  export function Root(props: Root.Props) {
124
- const { className, dividers, fade, interactive, size, striped, vars, ...attributes } = props
171
+ const { className, dividers, interactive, size, vars, ...attributes } = props
125
172
 
126
173
  // `Surface` reads the size to inset the last row's text by its own padding.
127
174
  return (
@@ -131,10 +178,8 @@ export namespace Table {
131
178
  {...styles.root({
132
179
  className,
133
180
  dividers,
134
- fade,
135
181
  interactive,
136
182
  size,
137
- striped,
138
183
  style: props.style,
139
184
  vars,
140
185
  })}
@@ -146,6 +191,7 @@ export namespace Table {
146
191
  export type Props = ComponentPropsWithRef<'table'> & zyzz.Props.Variants<typeof styles.root>
147
192
  }
148
193
 
194
+ /** A row. `aria-busy` marks a row of `Skeleton` placeholders, which draw their fill alone. */
149
195
  export function Row(props: Row.Props) {
150
196
  return <tr {...props} />
151
197
  }
@@ -153,48 +199,92 @@ export namespace Table {
153
199
  export namespace Row {
154
200
  export type Props = ComponentPropsWithRef<'tr'>
155
201
  }
202
+
203
+ /**
204
+ * A `button` that fills its `Table.HeaderCell` and sorts the column, with a chevron after its
205
+ * label. The chevron shows at reduced opacity on hover and focus, and in full once the header
206
+ * cell sets `aria-sort="ascending"` or `"descending"`. It points up for an ascending sort. The
207
+ * button handles no sorting itself, so update `aria-sort` in its `onClick`.
208
+ */
209
+ export function SortButton(props: SortButton.Props) {
210
+ const { children, className, vars, ...attributes } = props
211
+
212
+ return (
213
+ <button
214
+ type="button"
215
+ {...attributes}
216
+ {...styles.sortButton({ className, style: props.style, vars })}
217
+ >
218
+ <span {...styles.sortLabel()}>
219
+ {children}
220
+ <ChevronDown {...styles.sortIcon()} />
221
+ </span>
222
+ </button>
223
+ )
224
+ }
225
+
226
+ export namespace SortButton {
227
+ export type Props = ComponentPropsWithRef<'button'> &
228
+ zyzz.Props.Variants<typeof styles.sortButton>
229
+ }
230
+
231
+ /** The second line of a cell, such as the token amount below a value, in secondary `body.b3`. */
232
+ export function Subtitle(props: Subtitle.Props) {
233
+ const { className, vars, ...attributes } = props
234
+
235
+ return <div {...attributes} {...styles.subtitle({ className, style: props.style, vars })} />
236
+ }
237
+
238
+ export namespace Subtitle {
239
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.subtitle>
240
+ }
156
241
  }
157
242
 
243
+ const fill = keyframes({ from: { opacity: 0 }, to: { opacity: 1 } }, { id: 'tds/web/table/fill' })
244
+
158
245
  namespace styles {
159
246
  export const caption = variants(
160
247
  {
161
248
  base: {
162
249
  captionSide: 'bottom',
163
- color: 'gray.900',
164
- paddingBlock: '12',
165
- paddingInline: '16',
250
+ color: 'content.secondary',
251
+ paddingBlockEnd: '4',
252
+ paddingBlockStart: '12',
253
+ paddingInline: '12',
166
254
  textAlign: 'start',
167
- typography: 'copy.13',
255
+ typography: 'body.b3',
256
+ selectors: {
257
+ // `:where` keeps the specificity of the caption, so an icon's own class still applies.
258
+ '& :where(svg:not(:is(a, button) svg))': { color: 'content.tertiary' },
259
+ },
168
260
  },
169
261
  },
170
262
  { id: 'tds/web/table/caption' },
171
263
  )
172
264
 
265
+ // Cells pad 6px at each side, so the content of neighboring cells sits 12px apart. The root
266
+ // pads the cells at the edges of a row by 12px.
173
267
  export const cell = variants(
174
268
  {
175
269
  base: {
176
270
  boxSizing: 'border-box',
177
- color: 'gray.900',
271
+ color: 'content.primary',
178
272
  height: '56',
179
273
  paddingBlock: '12',
180
- paddingInline: '16',
274
+ paddingInline: '6',
275
+ textAlign: 'start',
181
276
  verticalAlign: 'middle',
182
277
  },
183
- defaultVariants: { justify: 'start', mono: false, numeric: false },
278
+ defaultVariants: { mono: false, muted: false, numeric: false },
184
279
  variants: {
185
280
  justify: { end: { textAlign: 'end' }, start: { textAlign: 'start' } },
186
- mono: { false: {}, true: { typography: 'copy.13.mono', fontSize: '14' } },
187
- numeric: {
188
- false: {},
189
- true: {
190
- color: 'foreground',
191
- fontVariantNumeric: 'tabular-nums !custom',
192
- },
193
- },
281
+ mono: { false: {}, true: { typography: 'mono.m1', fontSize: '14' } },
282
+ muted: { false: {}, true: { color: 'content.tertiary' } },
283
+ numeric: { false: {}, true: { fontVariantNumeric: 'tabular-nums !custom' } },
194
284
  status: {
195
- negative: { color: 'red.900' },
196
- positive: { color: 'green.900' },
197
- warning: { color: 'amber.900' },
285
+ negative: { color: 'content.negative' },
286
+ positive: { color: 'content.positive' },
287
+ warning: { color: 'content.warning' },
198
288
  },
199
289
  },
200
290
  },
@@ -211,7 +301,7 @@ namespace styles {
211
301
  true: {
212
302
  selectors: {
213
303
  '& th': {
214
- backgroundColor: 'background.surface',
304
+ backgroundColor: 'background.elevated',
215
305
  insetBlockStart: '0',
216
306
  position: 'sticky',
217
307
  zIndex: '1 !custom',
@@ -227,13 +317,18 @@ namespace styles {
227
317
  export const headerCell = variants(
228
318
  {
229
319
  base: {
230
- // Body cells share gray.900, the lightest gray step at 4.5:1, so weight separates the header.
231
- color: 'gray.900',
232
- paddingBlock: '12',
233
- paddingInline: '16',
234
- typography: 'label.14.strong',
320
+ color: 'content.tertiary',
321
+ paddingBlock: '8',
322
+ paddingInline: '6',
323
+ textAlign: 'start',
324
+ transitionDuration: '160',
325
+ transitionProperty: 'color',
326
+ transitionTimingFunction: 'snappy',
327
+ typography: 'body.b3Strong',
328
+ selectors: {
329
+ '&:is([aria-sort="ascending"], [aria-sort="descending"])': { color: 'content.primary' },
330
+ },
235
331
  },
236
- defaultVariants: { justify: 'start' },
237
332
  variants: {
238
333
  justify: { end: { textAlign: 'end' }, start: { textAlign: 'start' } },
239
334
  },
@@ -241,57 +336,112 @@ namespace styles {
241
336
  { id: 'tds/web/table/header-cell' },
242
337
  )
243
338
 
339
+ export const leadTile = style(
340
+ {
341
+ alignItems: 'center',
342
+ backgroundColor: 'container.regular',
343
+ borderRadius: '2xs',
344
+ boxSizing: 'border-box',
345
+ color: 'content.primary',
346
+ display: 'inline-flex',
347
+ flexShrink: '0 !custom',
348
+ fontSize: '16',
349
+ height: '32',
350
+ justifyContent: 'center',
351
+ verticalAlign: 'middle',
352
+ width: '32',
353
+ },
354
+ { id: 'tds/web/table/lead-tile' },
355
+ )
356
+
244
357
  export const root = variants(
245
358
  {
246
359
  base: {
247
360
  borderCollapse: 'separate',
248
361
  borderSpacing: '0',
249
- color: 'foreground',
250
- typography: 'copy.14',
362
+ color: 'content.primary',
363
+ typography: 'body.b2',
251
364
  width: '100% !custom',
252
365
  selectors: {
253
- '& tbody td': {
254
- borderBlockEnd: '1px solid !custom',
255
- borderColor: 'grayAlpha.200',
256
- },
257
- '& tbody tr:last-child td': { borderBlockEnd: 'none !custom' },
258
- '& tr > :last-child': { textAlign: 'end' },
366
+ // A row has no padding of its own, so the cells at its edges pad its 12px.
367
+ '& tr > :first-child': { paddingInlineStart: '12' },
368
+ '& tr > :last-child': { paddingInlineEnd: '12' },
369
+ // A cell with an explicit `justify` carries `data-justify` and keeps its own alignment.
370
+ '& tr > :last-child:not([data-justify])': { textAlign: 'end' },
371
+ // A status chip carries `data-intent`, as its dot does, and sits 8px inside the edges of
372
+ // the content.
373
+ '& td [data-intent]:not([data-intent] *)': { marginBlock: '8' },
374
+ // The placeholders of a loading row draw their fill without the sweep, which a shown
375
+ // `Skeleton` paints in its `::after`.
376
+ '& tbody tr[aria-busy="true"] [data-show]::after': { display: 'none' },
259
377
  },
260
378
  },
261
379
  defaultVariants: {
262
380
  dividers: true,
263
- fade: false,
264
381
  interactive: false,
265
382
  size: 'medium',
266
- striped: false,
267
383
  },
268
384
  variants: {
385
+ // A row draws its divider in the 1px that its cells leave below their padding, inset by
386
+ // the 12px padding of the row.
269
387
  dividers: {
270
- false: { selectors: { '& tbody td': { borderBlockEnd: 'none !custom' } } },
271
- true: {},
272
- },
273
- fade: {
274
388
  false: {},
275
389
  true: {
276
- maskImage: 'linear-gradient(to bottom, black calc(100% - 4rem), transparent) !custom',
390
+ selectors: {
391
+ '& tbody tr:not(:last-child)': { position: 'relative' },
392
+ '& tbody tr:not(:last-child) > :is(td, th)': {
393
+ borderBlockEnd: '1px solid transparent !custom',
394
+ },
395
+ '& tbody tr:not(:last-child)::after': {
396
+ backgroundColor: 'line.secondary',
397
+ content: '"" !custom',
398
+ height: '1',
399
+ insetBlockEnd: '0',
400
+ insetInline: '12',
401
+ position: 'absolute',
402
+ transitionDuration: '160',
403
+ transitionProperty: 'background-color',
404
+ transitionTimingFunction: 'snappy',
405
+ },
406
+ },
277
407
  },
278
408
  },
409
+ // A hovered row paints container.subtle over background.elevated, rounded by its clip, so
410
+ // the opaque fill hides the dividers above and below it. Chromium gives a row's `::before`
411
+ // a column of its own, so the `::after` that draws the divider also draws the subtle layer,
412
+ // behind the cells, and fades it in with a keyframe instead of from the divider color.
279
413
  interactive: {
280
414
  false: {},
281
415
  true: {
282
416
  selectors: {
283
417
  '& tbody tr': {
418
+ borderRadius: 'xs',
419
+ // The clip rounds the fill of the row by radius xs, which a row background ignores.
420
+ clipPath: 'inset(0 round 12px) !custom',
284
421
  outlineColor: 'transparent !custom',
285
422
  outlineOffset: '0',
286
423
  outlineStyle: 'solid !custom',
287
424
  outlineWidth: '2',
425
+ position: 'relative',
288
426
  transitionDuration: '160',
289
427
  transitionProperty: 'background-color, outline-color, outline-offset',
290
428
  transitionTimingFunction: 'snappy',
291
429
  },
292
- '& tbody tr:hover': { backgroundColor: 'grayAlpha.100' },
430
+ '& tbody tr:hover': { backgroundColor: 'background.elevated' },
431
+ '& tbody tr:hover::after': {
432
+ animation: `${fill} 160ms ${vars.ease.snappy} !custom`,
433
+ backgroundColor: 'container.subtle',
434
+ borderRadius: 'xs',
435
+ content: '"" !custom',
436
+ height: 'auto !custom',
437
+ inset: '0',
438
+ position: 'absolute',
439
+ transitionProperty: 'none',
440
+ zIndex: '-1 !custom',
441
+ },
442
+ '& tbody tr:has(+ tr:hover)::after': { backgroundColor: 'transparent !custom' },
293
443
  '& tbody tr:focus-visible': {
294
- outlineColor: 'blue.700',
444
+ outlineColor: 'border.focus',
295
445
  outlineOffset: '-2',
296
446
  },
297
447
  '& tbody tr:is([tabindex], [role="button"], [data-href]):hover': {
@@ -305,24 +455,85 @@ namespace styles {
305
455
  },
306
456
  },
307
457
  },
308
- // Body rows follow the shared control scale: 32, 40 and 56px. Cells keep their typography.
458
+ // Body rows follow the shared control scale: 32, 40 and 56px. Header cells keep 8px above
459
+ // and below their text, apart from small tables. Cells keep their typography.
309
460
  size: {
310
461
  large: {},
311
- medium: {
312
- selectors: { '& :is(td, th)': { paddingBlock: '8' }, '& td': { height: '40' } },
313
- },
462
+ medium: { selectors: { '& td': { height: '40', paddingBlock: '8' } } },
314
463
  small: {
315
464
  selectors: { '& :is(td, th)': { paddingBlock: '4' }, '& td': { height: '32' } },
316
465
  },
317
466
  },
318
- striped: {
319
- false: {},
320
- true: {
321
- selectors: { '& tbody tr:nth-child(even)': { backgroundColor: 'grayAlpha.100' } },
322
- },
323
- },
324
467
  },
325
468
  },
326
469
  { id: 'tds/web/table/root' },
327
470
  )
471
+
472
+ export const sortButton = style(
473
+ {
474
+ backgroundColor: 'transparent !custom',
475
+ border: 'none !custom',
476
+ borderRadius: '3xs',
477
+ boxSizing: 'border-box',
478
+ color: 'content.tertiary',
479
+ cursor: 'pointer',
480
+ display: 'block',
481
+ margin: '0',
482
+ outlineColor: 'transparent !custom',
483
+ outlineOffset: '0',
484
+ outlineStyle: 'solid !custom',
485
+ outlineWidth: '2',
486
+ padding: '0',
487
+ // The label follows the alignment of its header cell.
488
+ textAlign: 'inherit !custom',
489
+ transitionDuration: '160',
490
+ transitionProperty: 'color, outline-color, outline-offset',
491
+ transitionTimingFunction: 'snappy',
492
+ typography: 'body.b3Strong',
493
+ width: '100% !custom',
494
+ selectors: {
495
+ '&:is(:hover, :focus-visible):not(:disabled), [aria-sort="ascending"] > &, [aria-sort="descending"] > &':
496
+ { color: 'content.primary' },
497
+ // A disabled button sorts nothing, so it keeps its resting look under the pointer.
498
+ '&:disabled': { cursor: 'default' },
499
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
500
+ },
501
+ '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'color, outline-color' },
502
+ },
503
+ { id: 'tds/web/table/sort-button' },
504
+ )
505
+
506
+ export const sortIcon = style(
507
+ {
508
+ color: 'content.tertiary',
509
+ display: 'none',
510
+ flexShrink: '0 !custom',
511
+ fontSize: '12',
512
+ opacity: '0.4 !custom',
513
+ transitionDuration: '160',
514
+ transitionProperty: 'opacity, rotate',
515
+ transitionTimingFunction: 'snappy',
516
+ selectors: {
517
+ // The icon sits in the label of the button, in the header cell.
518
+ ':is(:hover, :focus-visible):not(:disabled) > * > &': { display: 'block' },
519
+ ':is([aria-sort="ascending"], [aria-sort="descending"]) > * > * > &': {
520
+ display: 'block',
521
+ opacity: '1 !custom',
522
+ },
523
+ '[aria-sort="ascending"] > * > * > &': { rotate: '180deg !custom' },
524
+ },
525
+ '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'opacity' },
526
+ },
527
+ { id: 'tds/web/table/sort-icon' },
528
+ )
529
+
530
+ export const sortLabel = style(
531
+ { alignItems: 'center', columnGap: '4', display: 'inline-flex' },
532
+ { id: 'tds/web/table/sort-label' },
533
+ )
534
+
535
+ export const subtitle = style(
536
+ { color: 'content.secondary', marginBlockStart: '2', typography: 'body.b3' },
537
+ { id: 'tds/web/table/subtitle' },
538
+ )
328
539
  }