@tempoxyz/ds 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (652) 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 +156 -0
  52. package/dist/web/components/Alert.d.ts.map +1 -0
  53. package/dist/web/components/Alert.js +92 -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 +65 -29
  74. package/dist/web/components/AppShell.d.ts.map +1 -1
  75. package/dist/web/components/AppShell.js +31 -19
  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 +166 -35
  118. package/dist/web/components/Button.d.ts.map +1 -1
  119. package/dist/web/components/Button.js +13 -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 +483 -0
  236. package/dist/web/components/ListGroup.d.ts.map +1 -0
  237. package/dist/web/components/ListGroup.js +266 -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 +24 -7
  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 +186 -39
  312. package/dist/web/components/SidebarMenu.d.ts.map +1 -1
  313. package/dist/web/components/SidebarMenu.js +90 -18
  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 +56 -119
  372. package/dist/web/components/Surface.d.ts.map +1 -1
  373. package/dist/web/components/Surface.js +16 -9
  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/index.d.ts +18 -6
  470. package/dist/web/index.d.ts.map +1 -1
  471. package/dist/web/index.js +18 -6
  472. package/dist/web/index.js.map +1 -1
  473. package/dist/web/index.js.zyzz.json +1 -1
  474. package/dist/web/vars.d.ts +591 -706
  475. package/dist/web/vars.d.ts.map +1 -1
  476. package/dist/web/vars.js +7 -6
  477. package/dist/web/vars.js.map +1 -1
  478. package/dist/web/vars.js.zyzz.json +1 -1
  479. package/dist/web/zyzz.config.d.ts +2933 -3513
  480. package/dist/web/zyzz.config.d.ts.map +1 -1
  481. package/dist/web/zyzz.config.js +29 -3
  482. package/dist/web/zyzz.config.js.map +1 -1
  483. package/dist/web/zyzz.config.js.zyzz.json +1 -1
  484. package/package.json +149 -5
  485. package/src/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  486. package/src/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  487. package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
  488. package/src/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  489. package/src/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  490. package/src/fonts/JetBrainsMono-Medium.woff2 +0 -0
  491. package/src/fonts/{Geist-OFL.txt → JetBrainsMono-OFL.txt} +4 -3
  492. package/src/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  493. package/src/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  494. package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
  495. package/src/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  496. package/src/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  497. package/src/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  498. package/src/fonts/Pilat-Black-latin.woff2 +0 -0
  499. package/src/fonts/Pilat-Black-other.woff2 +0 -0
  500. package/src/fonts/Pilat-Black.woff2 +0 -0
  501. package/src/fonts/Pilat-Bold-latin.woff2 +0 -0
  502. package/src/fonts/Pilat-Bold-other.woff2 +0 -0
  503. package/src/fonts/Pilat-Bold.woff2 +0 -0
  504. package/src/fonts/Pilat-Book-latin.woff2 +0 -0
  505. package/src/fonts/Pilat-Book-other.woff2 +0 -0
  506. package/src/fonts/Pilat-Book.woff2 +0 -0
  507. package/src/fonts/Pilat-Demi-latin.woff2 +0 -0
  508. package/src/fonts/Pilat-Demi-other.woff2 +0 -0
  509. package/src/fonts/Pilat-Demi.woff2 +0 -0
  510. package/src/fonts/Pilat-Heavy-latin.woff2 +0 -0
  511. package/src/fonts/Pilat-Heavy-other.woff2 +0 -0
  512. package/src/fonts/Pilat-Heavy.woff2 +0 -0
  513. package/src/fonts/Pilat-Light-latin.woff2 +0 -0
  514. package/src/fonts/Pilat-Light-other.woff2 +0 -0
  515. package/src/fonts/Pilat-Light.woff2 +0 -0
  516. package/src/fonts/Pilat-Regular-latin.woff2 +0 -0
  517. package/src/fonts/Pilat-Regular-other.woff2 +0 -0
  518. package/src/fonts/Pilat-Regular.woff2 +0 -0
  519. package/src/fonts/Pilat-Thin-latin.woff2 +0 -0
  520. package/src/fonts/Pilat-Thin-other.woff2 +0 -0
  521. package/src/fonts/Pilat-Thin.woff2 +0 -0
  522. package/src/fonts/README.md +15 -2
  523. package/src/oxlint/rules/PreferComponent.ts +6 -6
  524. package/src/web/README.md +7 -7
  525. package/src/web/components/Accordion.tsx +8 -8
  526. package/src/web/components/AgentLogo.tsx +330 -0
  527. package/src/web/components/Alert.tsx +301 -0
  528. package/src/web/components/AlertDialog.tsx +47 -111
  529. package/src/web/components/Amount.tsx +6 -6
  530. package/src/web/components/AmountInput.tsx +59 -134
  531. package/src/web/components/AppShell.tsx +95 -36
  532. package/src/web/components/AssetChip.tsx +110 -0
  533. package/src/web/components/Autocomplete.tsx +4 -4
  534. package/src/web/components/Avatar.tsx +42 -119
  535. package/src/web/components/Badge.tsx +120 -0
  536. package/src/web/components/Banner.tsx +13 -11
  537. package/src/web/components/BarChart.tsx +427 -0
  538. package/src/web/components/Breadcrumbs.tsx +7 -7
  539. package/src/web/components/Button.tsx +156 -42
  540. package/src/web/components/ButtonGroup.tsx +59 -0
  541. package/src/web/components/Calendar.tsx +15 -13
  542. package/src/web/components/Checkbox.tsx +14 -11
  543. package/src/web/components/ChoiceGroup.tsx +107 -26
  544. package/src/web/components/Choicebox.tsx +30 -28
  545. package/src/web/components/Combobox.tsx +10 -8
  546. package/src/web/components/CopyButton.tsx +1 -1
  547. package/src/web/components/DatePicker.tsx +42 -61
  548. package/src/web/components/Dialog.tsx +267 -71
  549. package/src/web/components/Drawer.tsx +45 -18
  550. package/src/web/components/Empty.tsx +13 -8
  551. package/src/web/components/Field.tsx +78 -132
  552. package/src/web/components/Fieldset.tsx +16 -37
  553. package/src/web/components/Frame.tsx +13 -20
  554. package/src/web/components/Gauge.tsx +4 -4
  555. package/src/web/components/Hex.tsx +13 -56
  556. package/src/web/components/IconTile.tsx +57 -0
  557. package/src/web/components/Identicon.tsx +1 -10
  558. package/src/web/components/Kbd.tsx +8 -8
  559. package/src/web/components/ListGroup.tsx +776 -0
  560. package/src/web/components/LoadingDots.tsx +1 -0
  561. package/src/web/components/Menu.tsx +50 -35
  562. package/src/web/components/NetworkLogo.tsx +208 -0
  563. package/src/web/components/NumberField.tsx +18 -33
  564. package/src/web/components/OtpField.tsx +51 -102
  565. package/src/web/components/Pagination.tsx +16 -14
  566. package/src/web/components/Popover.tsx +8 -8
  567. package/src/web/components/Progress.tsx +7 -5
  568. package/src/web/components/Qr.tsx +1 -1
  569. package/src/web/components/RadioGroup.tsx +9 -7
  570. package/src/web/components/SecretValue.tsx +11 -11
  571. package/src/web/components/Select.tsx +87 -26
  572. package/src/web/components/Separator.tsx +95 -7
  573. package/src/web/components/SidebarMenu.tsx +294 -51
  574. package/src/web/components/Skeleton.tsx +5 -5
  575. package/src/web/components/Slider.tsx +12 -6
  576. package/src/web/components/Snippet.tsx +134 -75
  577. package/src/web/components/Spinner.tsx +38 -12
  578. package/src/web/components/SplitBar.tsx +158 -0
  579. package/src/web/components/SplitButton.tsx +26 -17
  580. package/src/web/components/StatusChip.tsx +138 -0
  581. package/src/web/components/StatusRow.tsx +162 -0
  582. package/src/web/components/Stepper.tsx +11 -8
  583. package/src/web/components/Surface.tsx +70 -95
  584. package/src/web/components/Switch.tsx +25 -29
  585. package/src/web/components/Table.tsx +281 -70
  586. package/src/web/components/Tabs.tsx +93 -50
  587. package/src/web/components/TempoLogo.tsx +89 -0
  588. package/src/web/components/{Input.tsx → TextInput.tsx} +87 -118
  589. package/src/web/components/Textarea.tsx +33 -78
  590. package/src/web/components/Toast.tsx +24 -22
  591. package/src/web/components/Token.tsx +106 -172
  592. package/src/web/components/TokenLogo.tsx +217 -0
  593. package/src/web/components/Tooltip.tsx +3 -3
  594. package/src/web/components/VerificationCode.tsx +97 -0
  595. package/src/web/components/Visual.tsx +166 -0
  596. package/src/web/components/internal/Field.ts +63 -72
  597. package/src/web/components/internal/InputGroup.ts +44 -101
  598. package/src/web/components/internal/Listbox.ts +20 -20
  599. package/src/web/components/internal/RowDisabled.ts +9 -0
  600. package/src/web/components/internal/RowsSize.ts +3 -5
  601. package/src/web/components/visuals/Passkey.svg +21 -0
  602. package/src/web/index.ts +18 -6
  603. package/src/web/logos/Base.svg +10 -0
  604. package/src/web/logos/Ethereum.svg +16 -0
  605. package/src/web/logos/HyperEVM.svg +27 -0
  606. package/src/web/logos/Polygon.svg +15 -0
  607. package/src/web/logos/README.md +14 -0
  608. package/src/web/logos/Solana.svg +11 -0
  609. package/src/web/logos/Tempo.svg +11 -0
  610. package/src/web/vars.ts +480 -534
  611. package/src/web/zyzz.config.ts +255 -12
  612. package/dist/fonts/GeistMono-Variable.woff2 +0 -0
  613. package/dist/web/components/AlertDialog.css +0 -1
  614. package/dist/web/components/Callout.css +0 -1
  615. package/dist/web/components/Callout.d.ts +0 -161
  616. package/dist/web/components/Callout.d.ts.map +0 -1
  617. package/dist/web/components/Callout.js +0 -83
  618. package/dist/web/components/Callout.js.map +0 -1
  619. package/dist/web/components/Callout.js.zyzz.json +0 -1
  620. package/dist/web/components/IconChip.css +0 -1
  621. package/dist/web/components/IconChip.d.ts +0 -53
  622. package/dist/web/components/IconChip.d.ts.map +0 -1
  623. package/dist/web/components/IconChip.js +0 -27
  624. package/dist/web/components/IconChip.js.map +0 -1
  625. package/dist/web/components/IconChip.js.zyzz.json +0 -1
  626. package/dist/web/components/Input.css +0 -1
  627. package/dist/web/components/Input.d.ts.map +0 -1
  628. package/dist/web/components/Input.js +0 -118
  629. package/dist/web/components/Input.js.map +0 -1
  630. package/dist/web/components/Input.js.zyzz.json +0 -1
  631. package/dist/web/components/Rows.css +0 -1
  632. package/dist/web/components/Rows.d.ts +0 -484
  633. package/dist/web/components/Rows.d.ts.map +0 -1
  634. package/dist/web/components/Rows.js +0 -171
  635. package/dist/web/components/Rows.js.map +0 -1
  636. package/dist/web/components/Rows.js.zyzz.json +0 -1
  637. package/dist/web/components/Tag.css +0 -1
  638. package/dist/web/components/Tag.d.ts +0 -171
  639. package/dist/web/components/Tag.d.ts.map +0 -1
  640. package/dist/web/components/Tag.js +0 -52
  641. package/dist/web/components/Tag.js.map +0 -1
  642. package/dist/web/components/Tag.js.zyzz.json +0 -1
  643. package/dist/web/components/internal/FieldVariant.d.ts +0 -4
  644. package/dist/web/components/internal/FieldVariant.d.ts.map +0 -1
  645. package/dist/web/components/internal/FieldVariant.js +0 -4
  646. package/dist/web/components/internal/FieldVariant.js.map +0 -1
  647. package/src/fonts/GeistMono-Variable.woff2 +0 -0
  648. package/src/web/components/Callout.tsx +0 -241
  649. package/src/web/components/IconChip.tsx +0 -54
  650. package/src/web/components/Rows.tsx +0 -588
  651. package/src/web/components/Tag.tsx +0 -149
  652. package/src/web/components/internal/FieldVariant.ts +0 -6
@@ -8,7 +8,7 @@ import {
8
8
  } from 'react'
9
9
  import type * as zyzz from 'zyzz'
10
10
  import { keyframes } from 'zyzz/web'
11
- import { style, variants } from '../zyzz.config.js'
11
+ import { style, variants, vars } from '../zyzz.config.js'
12
12
 
13
13
  type Context = {
14
14
  container: HTMLDivElement | null
@@ -42,7 +42,8 @@ function useShell() {
42
42
 
43
43
  /**
44
44
  * Application frame with a sticky sidebar beside a content column. `align="center"` centers both
45
- * on wide viewports, and `align="start"` pins the sidebar left with content filling the rest.
45
+ * on wide viewports, with the sidebar fill to the start edge and the header bar to the end edge.
46
+ * `align="start"` pins the sidebar left with content filling the rest.
46
47
  * Below 1024px the sidebar moves into a drawer that `AppShell.Trigger` opens from the right edge.
47
48
  *
48
49
  * - Name the `Sidebar` with `aria-label`. It labels the `aside` on wide viewports and the drawer
@@ -69,11 +70,23 @@ function useShell() {
69
70
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html | WCAG 2.2 Focus Order}
70
71
  */
71
72
  export namespace AppShell {
72
- /** Page header row holding the title, actions and the compact-viewport `Trigger`. */
73
+ /**
74
+ * Renders the 56px page header bar at the top of `Main`, in the fill of the sidebar with a bottom
75
+ * border, holding the title, actions and the compact-viewport `Trigger`. It spans the full width
76
+ * of `Main`. With `align="center"` on wide viewports, its fill and border continue to the end
77
+ * edge. A `Main` that scrolls itself clips them at its own edge, so scroll the root instead when
78
+ * the shell fills a fixed-height region.
79
+ */
73
80
  export function Header(props: Header.Props) {
74
81
  const { className, vars, ...attributes } = props
75
82
 
76
- return <header {...attributes} {...styles.header({ className, style: props.style, vars })} />
83
+ return (
84
+ <header
85
+ {...attributes}
86
+ {...styles.header({ className, style: props.style, vars })}
87
+ data-app-shell-header=""
88
+ />
89
+ )
77
90
  }
78
91
 
79
92
  export namespace Header {
@@ -156,7 +169,7 @@ export namespace AppShell {
156
169
  }
157
170
 
158
171
  /**
159
- * Renders a sticky `aside` from 1024px, `var(--sidebar-width, 16.25rem)` wide. Below that it
172
+ * Renders a sticky `aside` from 1024px, `var(--sidebar-width, 16rem)` wide. Below that it
160
173
  * renders a modal Base UI drawer popup as an `aside` with the dialog role, which takes focus on
161
174
  * open, returns it to the trigger on close, and dismisses with Escape, the backdrop or a swipe
162
175
  * right. Server rendering always emits the wide layout.
@@ -206,6 +219,7 @@ export namespace AppShell {
206
219
  zyzz.Props.Variants<typeof styles.sidebarBody>
207
220
  }
208
221
 
222
+ /** The bottom of the sidebar, such as the account menu. It stays at the bottom edge. */
209
223
  export function SidebarFooter(props: SidebarFooter.Props) {
210
224
  const { className, vars, ...attributes } = props
211
225
 
@@ -219,6 +233,7 @@ export namespace AppShell {
219
233
  zyzz.Props.Variants<typeof styles.sidebarFooter>
220
234
  }
221
235
 
236
+ /** The top of the sidebar, such as the product or project switcher. */
222
237
  export function SidebarHeader(props: SidebarHeader.Props) {
223
238
  const { className, vars, ...attributes } = props
224
239
 
@@ -290,7 +305,7 @@ const fadeOut = keyframes(
290
305
  namespace styles {
291
306
  export const backdrop = style(
292
307
  {
293
- backgroundColor: 'black',
308
+ backgroundColor: 'neutral.100',
294
309
  inset: '0',
295
310
  opacity: '0.6 !custom',
296
311
  position: 'fixed',
@@ -310,6 +325,7 @@ namespace styles {
310
325
  {
311
326
  backgroundColor: 'currentColor !custom',
312
327
  borderRadius: 'full',
328
+ cornerShape: 'round',
313
329
  height: '2',
314
330
  insetInlineStart: '0',
315
331
  position: 'absolute',
@@ -341,7 +357,7 @@ namespace styles {
341
357
 
342
358
  export const drawer = style(
343
359
  {
344
- borderInlineStartColor: 'grayAlpha.200',
360
+ borderInlineStartColor: 'line.secondary',
345
361
  borderInlineStartStyle: 'solid',
346
362
  borderInlineStartWidth: '1px !custom',
347
363
  height: '100% !custom',
@@ -373,19 +389,30 @@ namespace styles {
373
389
  { id: 'tds/web/app-shell/drawer' },
374
390
  )
375
391
 
392
+ // The bar bleeds into the padding of `Main`, so it spans the column and starts at its top edge.
393
+ // The header takes the fill of the sidebar, so the two frame the page.
376
394
  export const header = variants(
377
395
  {
378
396
  base: {
379
397
  alignItems: 'center',
398
+ backgroundColor: 'background.sidebar',
399
+ borderBottomColor: 'line.secondary',
400
+ borderBottomStyle: 'solid',
401
+ borderBottomWidth: '1px !custom',
402
+ boxSizing: 'border-box',
380
403
  columnGap: '8',
381
404
  display: 'flex',
382
405
  justifyContent: 'space-between',
383
406
  marginBottom: '24',
407
+ marginInline: '-16',
408
+ marginTop: '-20',
409
+ minHeight: '56',
384
410
  minWidth: '0',
385
- // Below 1024px the fixed trigger covers the top-right corner, so header actions end 8px
386
- // before it: its 40px plus 16px inset, less the main column's own side padding.
387
- '@media (max-width: 1023px)': { paddingInlineEnd: '48' },
388
- '@media (min-width: 640px) and (max-width: 1023px)': { paddingInlineEnd: '32' },
411
+ paddingInline: '16',
412
+ '@media (min-width: 640px)': { marginInline: '-2rem !custom', paddingInline: '24' },
413
+ // Below 1024px the fixed trigger covers the end of the bar, so header actions end 8px
414
+ // before it: its 40px plus its 16px inset.
415
+ '@media (max-width: 1023px)': { paddingInlineEnd: '64' },
389
416
  },
390
417
  },
391
418
  { id: 'tds/web/app-shell/header' },
@@ -413,14 +440,16 @@ namespace styles {
413
440
  {
414
441
  base: {
415
442
  backgroundColor: 'background.primary',
416
- color: 'foreground',
443
+ color: 'content.primary',
417
444
  display: 'flex',
418
445
  minHeight: '100dvh !custom',
419
446
  position: 'relative',
420
- typography: 'copy.14',
447
+ typography: 'body.b2',
421
448
  selectors: {
422
- // Equal gutters center the sidebar and content column on wide viewports.
449
+ // Equal gutters center the sidebar and content column on wide viewports. The start
450
+ // gutter takes the fill of the sidebar, so the sidebar reaches the start edge.
423
451
  '&::after, &::before': { content: '"" !custom', flex: '1 !custom' },
452
+ '&::before': { backgroundColor: 'background.sidebar' },
424
453
  },
425
454
  '@media (max-width: 1023px)': {
426
455
  selectors: { '&::after, &::before': { display: 'none !custom' } },
@@ -429,7 +458,23 @@ namespace styles {
429
458
  defaultVariants: { align: 'center' },
430
459
  variants: {
431
460
  align: {
432
- center: {},
461
+ // The header bar continues across the end gutter as the outset of a border image, which
462
+ // is ink overflow. It adds no scroll and changes no layout, and a scrolling `Main` clips
463
+ // it at its own edge. The image draws the fill and the 1px bottom border of the header.
464
+ // The outset takes the gutter from the viewport width, since the root of an application
465
+ // frame spans the viewport.
466
+ center: {
467
+ '@media (min-width: 1024px)': {
468
+ selectors: {
469
+ '& > main > [data-app-shell-header]': {
470
+ borderImageOutset: `0 max(0px, calc((100vw - var(--sidebar-width, 16rem) - ${vars.container['1024']}) / 2)) 0 0 !custom`,
471
+ borderImageSlice: '0 fill !custom',
472
+ borderImageSource: `linear-gradient(${vars.color.background.sidebar} calc(100% - 1px), ${vars.color.line.secondary} 0) !custom`,
473
+ borderImageWidth: '0 !custom',
474
+ },
475
+ },
476
+ },
477
+ },
433
478
  start: {
434
479
  selectors: {
435
480
  '&::after, &::before': { display: 'none !custom' },
@@ -445,15 +490,15 @@ namespace styles {
445
490
  export const sidebar = variants(
446
491
  {
447
492
  base: {
448
- backgroundColor: 'background.primary',
493
+ backgroundColor: 'background.sidebar',
449
494
  boxSizing: 'border-box',
450
495
  display: 'flex',
451
496
  flexDirection: 'column',
452
497
  flexShrink: '0 !custom',
453
498
  minHeight: '0',
454
- paddingBottom: '20',
455
- paddingInline: '10',
456
- rowGap: '24',
499
+ paddingBottom: '16',
500
+ paddingInline: '12',
501
+ rowGap: '16',
457
502
  },
458
503
  },
459
504
  { id: 'tds/web/app-shell/sidebar' },
@@ -463,14 +508,14 @@ namespace styles {
463
508
  // server-rendered markup, which always emits the wide layout.
464
509
  export const inline = style(
465
510
  {
466
- borderInlineEndColor: 'grayAlpha.200',
511
+ borderInlineEndColor: 'line.secondary',
467
512
  borderInlineEndStyle: 'solid',
468
513
  borderInlineEndWidth: '1px !custom',
469
514
  height: '100dvh !custom',
470
515
  insetBlockStart: '0',
471
516
  overflowY: 'auto',
472
517
  position: 'sticky',
473
- width: 'var(--sidebar-width, 16.25rem) !custom',
518
+ width: 'var(--sidebar-width, 16rem) !custom',
474
519
  '@media (max-width: 1023px)': { display: 'none !custom' },
475
520
  },
476
521
  { id: 'tds/web/app-shell/inline' },
@@ -479,20 +524,24 @@ namespace styles {
479
524
  export const sidebarBody = variants(
480
525
  {
481
526
  base: {
527
+ // Custom string values only take literal CSS, so the thumb color reaches `scrollbarColor` through a property.
528
+ '--tds-sidebar-scrollbar-thumb': `${vars.color.line.primary}`,
482
529
  flex: '1 !custom',
483
530
  // Bleeding into the sidebar's inline padding puts the scrollbar at the sidebar edge.
484
- marginInline: '-10',
531
+ marginInline: '-12',
485
532
  minHeight: '0',
486
533
  overflowY: 'auto',
487
534
  overscrollBehavior: 'contain',
488
- paddingInline: '10',
535
+ paddingInline: '12',
536
+ // A transparent track leaves only the thin thumb over the sidebar fill.
537
+ scrollbarColor: 'var(--tds-sidebar-scrollbar-thumb) transparent !custom',
489
538
  // Classic scrollbars keep their own lane instead of covering content at the edge.
490
539
  scrollbarGutter: 'stable',
491
540
  scrollbarWidth: 'thin',
492
541
  selectors: {
493
542
  // Curtains fade content into the sidebar at whichever end has more to scroll.
494
543
  '&::after, &::before': {
495
- backgroundColor: 'background.primary',
544
+ backgroundColor: 'background.sidebar',
496
545
  content: '"" !custom',
497
546
  display: 'block',
498
547
  height: '24',
@@ -530,23 +579,32 @@ namespace styles {
530
579
  { id: 'tds/web/app-shell/sidebar-body' },
531
580
  )
532
581
 
582
+ // The automatic top margin keeps the footer at the bottom edge when no `SidebarBody` grows.
533
583
  export const sidebarFooter = variants(
534
- { base: { display: 'flex', flexDirection: 'column', flexShrink: '0 !custom', rowGap: '12' } },
584
+ {
585
+ base: {
586
+ display: 'flex',
587
+ flexDirection: 'column',
588
+ flexShrink: '0 !custom',
589
+ marginTop: 'auto !custom',
590
+ rowGap: '8',
591
+ },
592
+ },
535
593
  { id: 'tds/web/app-shell/sidebar-footer' },
536
594
  )
537
595
 
538
596
  export const sidebarHeader = variants(
539
- { base: { flexShrink: '0 !custom', paddingTop: '20' } },
597
+ { base: { flexShrink: '0 !custom', paddingTop: '16' } },
540
598
  { id: 'tds/web/app-shell/sidebar-header' },
541
599
  )
542
600
 
543
601
  export const title = variants(
544
602
  {
545
603
  base: {
546
- color: 'foreground',
604
+ color: 'content.primary',
547
605
  margin: '0',
548
606
  minWidth: '0',
549
- typography: 'heading.24',
607
+ typography: 'heading.h2',
550
608
  },
551
609
  },
552
610
  { id: 'tds/web/app-shell/title' },
@@ -556,18 +614,19 @@ namespace styles {
556
614
  {
557
615
  base: {
558
616
  alignItems: 'center',
559
- backgroundColor: 'background.surface',
560
- borderColor: 'grayAlpha.200',
617
+ backgroundColor: 'background.elevated',
618
+ borderColor: 'line.secondary',
561
619
  borderRadius: 'full',
562
620
  borderStyle: 'solid',
563
- borderWidth: '1',
564
- boxShadow: 'raised',
621
+ borderWidth: 'regular',
565
622
  boxSizing: 'border-box',
566
- color: 'foreground',
623
+ color: 'content.primary',
624
+ cornerShape: 'round',
567
625
  cursor: 'pointer',
568
626
  display: 'inline-flex',
569
627
  height: '40',
570
- insetBlockStart: '16',
628
+ // Centers the button on the 56px header bar.
629
+ insetBlockStart: '8',
571
630
  insetInlineEnd: '16',
572
631
  justifyContent: 'center',
573
632
  outlineColor: 'transparent !custom',
@@ -584,8 +643,8 @@ namespace styles {
584
643
  zIndex: 'modal',
585
644
  selectors: {
586
645
  '&:active': { transform: 'scale(0.96) !custom' },
587
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
588
- '&:hover': { backgroundColor: 'gray.100' },
646
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
647
+ '&:hover': { backgroundColor: 'container.regular' },
589
648
  // While open, the button rides out with the drawer and rests 8px outside its left edge,
590
649
  // so the close mark never covers the sidebar. The width matches the drawer's.
591
650
  '&[data-popup-open]': {
@@ -0,0 +1,110 @@
1
+ import { useRender } from '@base-ui/react/use-render'
2
+ import type * as zyzz from 'zyzz'
3
+ import { style } from '../zyzz.config.js'
4
+
5
+ /**
6
+ * A small, gray label for a supported asset or network. It renders a `span`, or a `button` when
7
+ * it has an `onClick`, which then fills on hover, scales slightly while pressed, shows an outline
8
+ * on keyboard focus, and fills dark while `selected`. Place a `TokenLogo` before the text to add a 12px token logo.
9
+ *
10
+ * - List what a row or value supports, such as the assets a network accepts, under a row title.
11
+ * - Give it an `onClick` to pick one asset from a short set, and set `selected` on the picked one.
12
+ * - Use `Badge` for a status and `Token` for a token the person can change.
13
+ *
14
+ * @example
15
+ * <AssetChip>USDT</AssetChip>
16
+ * <AssetChip onClick={() => setAsset('USDC')} selected={asset === 'USDC'}>
17
+ * <TokenLogo symbol="USDC" />
18
+ * USDC
19
+ * </AssetChip>
20
+ *
21
+ * @see {@link https://base-ui.com/react/utils/use-render | Base UI useRender}
22
+ * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/button/ | WAI-ARIA APG Button pattern}
23
+ */
24
+ export function AssetChip(props: AssetChip.Props) {
25
+ const { className, ref, render, selected, vars, ...attributes } = props
26
+ const pressable = attributes.onClick !== undefined
27
+ const button = pressable && render === undefined
28
+
29
+ return useRender({
30
+ defaultTagName: button ? 'button' : 'span',
31
+ props: {
32
+ ...attributes,
33
+ ...(pressable && { 'aria-pressed': selected }),
34
+ ...(button && { type: 'button' }),
35
+ 'data-selected': selected || undefined,
36
+ ...styles.chip({ className, style: props.style, vars }),
37
+ },
38
+ ref,
39
+ render,
40
+ })
41
+ }
42
+
43
+ export namespace AssetChip {
44
+ export type Props = useRender.ComponentProps<'span'> &
45
+ zyzz.Props.Variants<typeof styles.chip> & {
46
+ /**
47
+ * Fills the chip with `content.primary`. A chip with an `onClick` sets `aria-pressed` from
48
+ * it, so pass it on every chip of a set. Absent, the chip renders no pressed state. A chip
49
+ * rendered through `render` takes its `type` from that element, such as
50
+ * `<button type="button" />`.
51
+ */
52
+ selected?: boolean | undefined
53
+ }
54
+ }
55
+
56
+ namespace styles {
57
+ // Figma's Asset Chip pads 2px and 4px inside radius `2xs`, below the 1.5x padding ratio.
58
+ export const chip = style(
59
+ {
60
+ alignItems: 'center',
61
+ backgroundColor: 'background.primary',
62
+ border: 'none !custom',
63
+ borderRadius: '2xs',
64
+ boxSizing: 'border-box',
65
+ color: 'content.secondary',
66
+ columnGap: '4',
67
+ display: 'inline-flex',
68
+ flexShrink: '0 !custom',
69
+ height: '20',
70
+ margin: '0',
71
+ outlineColor: 'transparent !custom',
72
+ outlineOffset: '0',
73
+ outlineStyle: 'solid !custom',
74
+ outlineWidth: '2',
75
+ paddingBlock: '2',
76
+ paddingInline: '4',
77
+ transitionDuration: '160',
78
+ transitionProperty: 'background-color, color, outline-color, scale !custom',
79
+ transitionTimingFunction: 'snappy',
80
+ typography: 'body.b3Strong',
81
+ verticalAlign: 'middle',
82
+ whiteSpace: 'nowrap',
83
+ selectors: {
84
+ // A nested `TokenLogo` shrinks to the 12px logo slot.
85
+ '& > img': { flexShrink: '0 !custom', height: '12', width: '12' },
86
+ '&:is(button)': { cursor: 'pointer' },
87
+ // A chip rendered as a disabled `button` dims and takes no hover or press feedback.
88
+ '&:is(button):disabled': { cursor: 'default', opacity: 'disabled' },
89
+ '&:is(button):not(:disabled):active': { scale: 'press', transitionDuration: '100' },
90
+ // Figma's focused chip widens by 2px on each side and draws its ring inside the edge.
91
+ '&:is(button):focus-visible': {
92
+ outlineColor: 'border.focus',
93
+ outlineOffset: '-2',
94
+ paddingInline: '6',
95
+ },
96
+ '&:is(button):not([data-selected], :disabled):hover': {
97
+ backgroundColor: 'container.strong',
98
+ },
99
+ '&[data-selected]': { backgroundColor: 'content.primary', color: 'background.elevated' },
100
+ // An inside ring would vanish into the selected fill, so a selected chip draws it outside.
101
+ '&[data-selected]:focus-visible': { outlineOffset: '2' },
102
+ },
103
+ '@media (prefers-reduced-motion: reduce)': {
104
+ transitionProperty: 'background-color, color, outline-color !custom',
105
+ selectors: { '&:is(button):not(:disabled):active': { scale: 'none !custom' } },
106
+ },
107
+ },
108
+ { id: 'tds/web/asset-chip' },
109
+ )
110
+ }
@@ -103,16 +103,16 @@ export namespace Autocomplete {
103
103
  }
104
104
 
105
105
  /**
106
- * Draws the field surface around `Input` and its actions. `size` sets a 32, 40 or 56px height,
107
- * and `invalid` shows the error ring without setting `aria-invalid` on the input.
106
+ * Draws the 48px field surface around `Input` and its actions. `invalid` fills it red without
107
+ * setting `aria-invalid` on the input.
108
108
  */
109
109
  export function InputGroup(props: InputGroup.Props) {
110
- const { className, invalid, size, variant, vars, ...attributes } = props
110
+ const { className, invalid, variant, vars, ...attributes } = props
111
111
 
112
112
  return (
113
113
  <BaseUi.Autocomplete.InputGroup
114
114
  {...attributes}
115
- {...Field.styles.field({ className, size, style: props.style, variant, vars })}
115
+ {...Field.styles.field({ className, style: props.style, variant, vars })}
116
116
  data-invalid={invalid || undefined}
117
117
  />
118
118
  )
@@ -4,21 +4,26 @@ import type * as zyzz from 'zyzz'
4
4
  import { variants } from '../zyzz.config.js'
5
5
 
6
6
  /**
7
- * A circular `<span>` that shows a person's or entity's image, with a `Fallback` such as initials
8
- * while the image loads or after it fails. `Avatar` is the same component as `Avatar.Root`.
7
+ * A circular `<span>` that represents a person, contact, or wallet with initials or an icon in its
8
+ * `Fallback`. `Avatar` is the same component as `Avatar.Root`.
9
9
  *
10
- * - Give `Avatar.Image` an `alt` with the name, or `alt=""` when the name is already adjacent.
11
- * - Always include a `Fallback`, since the image does not render until it has loaded.
12
- * - Pair the avatar with a visible name. Do not rely on the picture alone to identify someone.
10
+ * - Use initials for people and contacts, and an icon for wallets and apps.
11
+ * - Pair the avatar with a visible name. Do not rely on initials or an icon alone to identify
12
+ * someone.
13
13
  *
14
14
  * @example
15
- * <Avatar size="40">
16
- * <Avatar.Image alt="Ada Lovelace" src={url} />
15
+ * <Avatar size="32">
17
16
  * <Avatar.Fallback>AL</Avatar.Fallback>
18
17
  * </Avatar>
19
18
  *
19
+ * @example
20
+ * <Avatar size="40">
21
+ * <Avatar.Fallback>
22
+ * <Wallet />
23
+ * </Avatar.Fallback>
24
+ * </Avatar>
25
+ *
20
26
  * @see {@link https://base-ui.com/react/components/avatar | Base UI Avatar}
21
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img | MDN img element}
22
27
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/img_role | MDN img role}
23
28
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html | WCAG 2.2 Non-text Content}
24
29
  */
@@ -30,8 +35,8 @@ export namespace Avatar {
30
35
  export type Props = Root.Props
31
36
 
32
37
  /**
33
- * Renders a `<span>` while the image is not loaded, filling the avatar and uppercasing its text.
34
- * `delay` postpones it by that many milliseconds, so fast loads skip the fallback flash.
38
+ * Renders the `<span>` that fills the avatar with initials or an icon, and uppercases its text.
39
+ * An icon renders at 16px in a `24` or `32` avatar, and at 20px in a `40` avatar.
35
40
  */
36
41
  export function Fallback(props: Fallback.Props) {
37
42
  const { className, vars, ...attributes } = props
@@ -45,57 +50,13 @@ export namespace Avatar {
45
50
  }
46
51
 
47
52
  export namespace Fallback {
48
- export type Props = ComponentPropsWithRef<'span'> &
49
- zyzz.Props.Variants<typeof styles.fallback> &
50
- Pick<BaseUi.Avatar.Fallback.Props, 'delay'>
51
- }
52
-
53
- /**
54
- * Stacks avatars. Set `overlap` to pull each one over the previous, and `expandOnHover` to spread
55
- * an overlapped stack apart on hover and keyboard focus.
56
- */
57
- export function Group(props: Group.Props) {
58
- const { className, expandOnHover, overlap, vars, ...attributes } = props
59
-
60
- return (
61
- <div
62
- role="group"
63
- {...attributes}
64
- {...styles.group({ className, expand: expandOnHover, overlap, style: props.style, vars })}
65
- />
66
- )
67
- }
68
-
69
- export namespace Group {
70
- export type Props = ComponentPropsWithRef<'div'> &
71
- Omit<zyzz.Props.Variants<typeof styles.group>, 'expand'> & {
72
- expandOnHover?: boolean | undefined
73
- }
53
+ export type Props = ComponentPropsWithRef<'span'> & zyzz.Props.Variants<typeof styles.fallback>
74
54
  }
75
55
 
76
56
  /**
77
- * Renders the `<img>`, cropped to cover the circle. Base UI mounts it only after `src` has
78
- * loaded, unless `keepMounted` is set, in which case it stays in the DOM and is `aria-hidden`
79
- * until loaded. `onLoadingStatusChange` reports `loading`, `loaded` and `error`.
57
+ * Renders the circular `<span>`, filled with `container.strong`. `size` sets its diameter in
58
+ * pixels.
80
59
  */
81
- export function Image(props: Image.Props) {
82
- const { className, vars, ...attributes } = props
83
-
84
- return (
85
- <BaseUi.Avatar.Image
86
- {...attributes}
87
- {...styles.image({ className, style: props.style, vars })}
88
- />
89
- )
90
- }
91
-
92
- export namespace Image {
93
- export type Props = ComponentPropsWithRef<'img'> &
94
- zyzz.Props.Variants<typeof styles.image> &
95
- Pick<BaseUi.Avatar.Image.Props, 'keepMounted' | 'onLoadingStatusChange'>
96
- }
97
-
98
- /** Renders the circular `<span>` that clips the image. `size` sets its diameter in pixels. */
99
60
  export function Root(props: Root.Props) {
100
61
  const { className, size, vars, ...attributes } = props
101
62
 
@@ -117,8 +78,7 @@ namespace styles {
117
78
  {
118
79
  base: {
119
80
  alignItems: 'center',
120
- backgroundColor: 'grayAlpha.100',
121
- color: 'gray.900',
81
+ color: 'content.secondary',
122
82
  display: 'inline-flex',
123
83
  font: 'inherit !custom',
124
84
  height: '100% !custom',
@@ -130,66 +90,14 @@ namespace styles {
130
90
  { id: 'tds/web/avatar/fallback' },
131
91
  )
132
92
 
133
- export const group = variants(
134
- {
135
- base: { alignItems: 'center', display: 'inline-flex' },
136
- compoundVariants: [
137
- {
138
- when: { expand: true, overlap: true },
139
- style: {
140
- selectors: {
141
- // Margin changes the group's width, which a transform cannot. Transitions retarget from
142
- // the current margin, so a brief hover reverses smoothly.
143
- '& > * + *': {
144
- transitionDuration: '220',
145
- transitionProperty: 'margin-inline-start',
146
- transitionTimingFunction: 'snappy',
147
- },
148
- '&:hover > * + *, &:focus-within > * + *': { marginInlineStart: '4' },
149
- },
150
- '@media (prefers-reduced-motion: reduce)': {
151
- selectors: { '& > * + *': { transitionProperty: 'none' } },
152
- },
153
- },
154
- },
155
- ],
156
- defaultVariants: { expand: false, overlap: false },
157
- variants: {
158
- expand: { false: {}, true: {} },
159
- overlap: {
160
- false: { columnGap: '8' },
161
- true: {
162
- selectors: {
163
- '& > * + *': { marginInlineStart: '-8' },
164
- '& > *': {
165
- outlineColor: 'background.primary',
166
- outlineStyle: 'solid !custom',
167
- outlineWidth: '2',
168
- },
169
- },
170
- },
171
- },
172
- },
173
- },
174
- { id: 'tds/web/avatar/group' },
175
- )
176
-
177
- export const image = variants(
178
- {
179
- base: { display: 'block', height: '100% !custom', objectFit: 'cover', width: '100% !custom' },
180
- },
181
- { id: 'tds/web/avatar/image' },
182
- )
183
-
184
93
  export const root = variants(
185
94
  {
186
95
  base: {
187
96
  alignItems: 'center',
188
- backgroundColor: 'background.surface',
189
- border: '1px solid !custom',
190
- borderColor: 'grayAlpha.200',
97
+ backgroundColor: 'container.strong',
191
98
  borderRadius: 'full',
192
99
  boxSizing: 'border-box',
100
+ cornerShape: 'round',
193
101
  display: 'inline-flex',
194
102
  flexShrink: '0 !custom',
195
103
  overflow: 'hidden',
@@ -197,14 +105,29 @@ namespace styles {
197
105
  userSelect: 'none',
198
106
  verticalAlign: 'middle',
199
107
  },
200
- defaultVariants: { size: '48' },
108
+ defaultVariants: { size: '40' },
201
109
  variants: {
110
+ // Icons size by font size, so an `Identicon`, which sets its own width, keeps filling the
111
+ // circle.
202
112
  size: {
203
- '24': { height: '24', typography: 'label.12', width: '24' },
204
- '32': { height: '32', typography: 'label.12', width: '32' },
205
- '40': { height: '40', typography: 'label.14', width: '40' },
206
- '48': { height: '48', typography: 'label.16', width: '48' },
207
- '64': { height: '64', typography: 'label.20', width: '64' },
113
+ '24': {
114
+ height: '24',
115
+ typography: 'body.b3Strong',
116
+ width: '24',
117
+ selectors: { '& svg': { fontSize: '16' } },
118
+ },
119
+ '32': {
120
+ height: '32',
121
+ typography: 'body.b3Strong',
122
+ width: '32',
123
+ selectors: { '& svg': { fontSize: '16' } },
124
+ },
125
+ '40': {
126
+ height: '40',
127
+ typography: 'body.b2Strong',
128
+ width: '40',
129
+ selectors: { '& svg': { fontSize: '20' } },
130
+ },
208
131
  },
209
132
  },
210
133
  },