@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
@@ -132,22 +132,14 @@ export namespace DatePicker {
132
132
  * `DatePicker.Root`.
133
133
  */
134
134
  export function Trigger(props: Trigger.Props) {
135
- const {
136
- children,
137
- className,
138
- placeholder = 'Select date',
139
- size,
140
- variant,
141
- vars,
142
- ...attributes
143
- } = props
135
+ const { children, className, placeholder = 'Select date', variant, vars, ...attributes } = props
144
136
  const { calendar, locale } = useDatePicker()
145
137
  const label = format(calendar.value, locale)
146
138
 
147
139
  return (
148
140
  <BaseUi.Popover.Trigger
149
141
  {...attributes}
150
- {...styles.trigger({ className, size, style: props.style, variant, vars })}
142
+ {...styles.trigger({ className, style: props.style, variant, vars })}
151
143
  data-placeholder={label === undefined || undefined}
152
144
  >
153
145
  <span {...styles.value()}>{children ?? label ?? placeholder}</span>
@@ -235,14 +227,10 @@ function format(value: Date | CalendarRoot.Range | null | undefined, locale: str
235
227
  namespace styles {
236
228
  export const icon = style(
237
229
  {
238
- color: 'gray.900',
230
+ color: 'content.secondary',
239
231
  flexShrink: '0 !custom',
240
232
  height: '16',
241
233
  width: '16',
242
- selectors: {
243
- '[data-size="medium"] > &': { height: '14', width: '14' },
244
- '[data-size="small"] > &': { height: '12', width: '12' },
245
- },
246
234
  },
247
235
  { id: 'tds/web/date-picker/icon' },
248
236
  )
@@ -250,11 +238,11 @@ namespace styles {
250
238
  export const popup = variants(
251
239
  {
252
240
  base: {
253
- backgroundColor: 'background.surface',
254
- borderRadius: '16',
255
- boxShadow: 'popover',
241
+ backgroundColor: 'background.elevated',
242
+ borderRadius: 'sm',
243
+ boxShadow: 'regular',
256
244
  boxSizing: 'border-box',
257
- color: 'foreground',
245
+ color: 'content.primary',
258
246
  opacity: '1 !custom',
259
247
  padding: '8',
260
248
  transformOrigin: 'var(--transform-origin) !custom',
@@ -292,36 +280,43 @@ namespace styles {
292
280
  {
293
281
  base: {
294
282
  alignItems: 'center',
283
+ // The 48px field of `TextInput.Group` and `Field.styles.field`.
284
+ borderRadius: 'xs',
295
285
  boxSizing: 'border-box',
296
- color: 'foreground',
286
+ color: 'content.primary',
287
+ columnGap: '8',
297
288
  cursor: 'pointer',
298
289
  display: 'inline-flex',
290
+ height: '48',
299
291
  justifyContent: 'space-between',
300
- minWidth: '224',
301
- position: 'relative',
292
+ minWidth: '240',
293
+ // Forced colors paint transparent outlines, so this outline is the focus ring only there.
302
294
  outlineColor: 'transparent !custom',
303
295
  outlineOffset: '2',
304
296
  outlineStyle: 'solid !custom',
305
297
  outlineWidth: '2',
298
+ paddingInline: '16',
299
+ position: 'relative',
306
300
  textAlign: 'start',
307
301
  transitionDuration: '160',
308
302
  transitionProperty:
309
303
  'background-color, border-color, color, opacity, outline-color, scale !custom',
310
304
  transitionTimingFunction: 'snappy',
305
+ typography: 'body.b2',
311
306
  selectors: {
312
307
  '&:active:not(:disabled)': {
313
308
  scale: 'press',
314
309
  transitionDuration: '100',
315
310
  },
316
- '&:disabled': { cursor: 'default', opacity: 'disabled' },
317
- '&:focus-visible': { outlineColor: 'blue.700' },
311
+ // The focus border is inset, so focus never moves the content.
318
312
  '&::before': {
319
313
  borderColor: 'transparent !custom',
320
314
  borderRadius: 'inherit !custom',
321
315
  borderStyle: 'solid !custom',
322
- borderWidth: '2',
316
+ borderWidth: 'regular',
323
317
  boxSizing: 'border-box',
324
318
  content: '"" !custom',
319
+ cornerShape: 'inherit !custom',
325
320
  inset: '0',
326
321
  pointerEvents: 'none',
327
322
  position: 'absolute',
@@ -329,10 +324,14 @@ namespace styles {
329
324
  transitionProperty: 'border-color !custom',
330
325
  transitionTimingFunction: 'snappy',
331
326
  },
332
- '&[aria-invalid="true"]::before': { borderColor: 'red.800' },
333
- '&[aria-invalid="true"]:focus-visible': { outlineColor: 'red.800' },
334
- '&:focus-visible::before': { borderColor: 'transparent !custom' },
335
- '&[data-placeholder]': { color: 'gray.900' },
327
+ '&:focus-visible::before': { borderColor: 'border.focus' },
328
+ '&[data-placeholder]': { color: 'content.tertiary' },
329
+ '&[aria-invalid="true"]': { backgroundColor: 'container.negative' },
330
+ '&:disabled': {
331
+ backgroundColor: 'container.subtle',
332
+ color: 'content.subtle',
333
+ cursor: 'default',
334
+ },
336
335
  },
337
336
  '@media (forced-colors: active)': {
338
337
  outlineStyle: 'none !custom',
@@ -344,44 +343,26 @@ namespace styles {
344
343
  selectors: { '&:active:not(:disabled)': { scale: 'none !custom' } },
345
344
  },
346
345
  },
347
- defaultVariants: { size: 'medium', variant: 'filled' },
346
+ defaultVariants: { variant: 'filled' },
348
347
  variants: {
349
- // The `size` scale of `Input.Group` and `Field.styles.field`.
350
- size: {
351
- large: {
352
- borderRadius: '16',
353
- columnGap: '12',
354
- height: '56',
355
- paddingInline: '20',
356
- typography: 'copy.16',
357
- },
358
- medium: {
359
- borderRadius: '12',
360
- columnGap: '8',
361
- height: '40',
362
- paddingInline: '16',
363
- typography: 'copy.14',
364
- },
365
- small: {
366
- borderRadius: '8',
367
- columnGap: '6',
368
- height: '32',
369
- paddingInline: '12',
370
- typography: 'copy.13',
371
- },
372
- },
373
348
  variant: {
349
+ // `:where` keeps the hover and focus fills below the invalid and disabled fills.
374
350
  filled: {
375
- backgroundColor: 'grayAlpha.100',
351
+ backgroundColor: 'container.regular',
376
352
  border: 'none !custom',
377
- selectors: { '&:hover:not(:disabled)': { backgroundColor: 'grayAlpha.200' } },
353
+ selectors: {
354
+ '&:where(:hover:not(:disabled))': { backgroundColor: 'container.strong' },
355
+ '&:where(:focus-visible)': { backgroundColor: 'background.elevated' },
356
+ },
378
357
  },
358
+ // A 1px line and no fill. Focus darkens the line, and an invalid value fills it red.
379
359
  outlined: {
380
- backgroundColor: 'background.surface',
381
- borderColor: 'grayAlpha.200',
382
- borderStyle: 'solid !custom',
383
- borderWidth: '1',
384
- selectors: { '&:hover:not(:disabled)': { borderColor: 'grayAlpha.400' } },
360
+ backgroundColor: 'transparent !custom',
361
+ border: 'none !custom',
362
+ selectors: {
363
+ '&::before': { borderColor: 'line.primary' },
364
+ '&:where([aria-invalid="true"])::before': { borderColor: 'border.negative' },
365
+ },
385
366
  },
386
367
  },
387
368
  },
@@ -1,26 +1,34 @@
1
1
  import * as BaseUi from '@base-ui/react/dialog'
2
2
  import type { ComponentPropsWithRef } from 'react'
3
3
  import type * as zyzz from 'zyzz'
4
+ import { ArrowLeft } from '../icons/ArrowLeft.js'
4
5
  import { Close as CloseIcon } from '../icons/Close.js'
5
- import { style } from '../zyzz.config.js'
6
+ import { style, variants } from '../zyzz.config.js'
6
7
  import { Button } from './Button.js'
7
8
 
8
9
  /**
9
10
  * A `role="dialog"` popup over a dimmed backdrop. Base UI makes it modal by default: focus is
10
11
  * trapped, page scroll is locked, Escape and outside presses close it, and focus returns to the
11
- * trigger. Viewports up to 40rem wide present it as a bottom sheet.
12
+ * trigger. Viewports up to 37.5rem wide present it at the bottom, full width with a 16px gutter.
12
13
  *
13
14
  * - Always render a `Dialog.Title`. Base UI points `aria-labelledby` at it to name the dialog.
14
- * - Keep each dialog to one task, and avoid opening a dialog from another dialog.
15
+ * - Pick `size` from what the dialog holds, and keep one size for every step of a flow.
16
+ * - Stack `Dialog.Header`, `Dialog.Body` and a `ButtonGroup` of `large` buttons in the popup.
17
+ * - Keep each dialog to one task. Swap its content for the next step instead of opening another.
15
18
  * - Include a visible close control, such as `closeButton` or a `Dialog.Close` action.
16
- * - Use `AlertDialog` for destructive confirmations that need an explicit decision.
17
19
  *
18
20
  * @example
19
21
  * <Dialog.Root>
20
- * <Dialog.Trigger render={<Button />}>Rename wallet</Dialog.Trigger>
21
- * <Dialog.Popup closeButton>
22
- * <Dialog.Title>Rename wallet</Dialog.Title>
23
- * <Dialog.Description>The name is only visible to you.</Dialog.Description>
22
+ * <Dialog.Trigger render={<Button />}>Revoke all</Dialog.Trigger>
23
+ * <Dialog.Popup closeButton size="small">
24
+ * <Dialog.Header>
25
+ * <Dialog.Title>Revoke all connections?</Dialog.Title>
26
+ * <Dialog.Description>Apps and agents lose access right away.</Dialog.Description>
27
+ * </Dialog.Header>
28
+ * <ButtonGroup>
29
+ * <Dialog.Close render={<Button size="large" variant="secondary" />}>Cancel</Dialog.Close>
30
+ * <Button size="large">Revoke all</Button>
31
+ * </ButtonGroup>
24
32
  * </Dialog.Popup>
25
33
  * </Dialog.Root>
26
34
  *
@@ -34,18 +42,44 @@ export namespace Dialog {
34
42
  /** Closes the dialog when pressed. Renders a `<button>` unless `render` supplies another. */
35
43
  export const Close = BaseUi.Dialog.Close
36
44
 
45
+ /** Opens the dialog when pressed. Renders a `<button>` unless `render` supplies another. */
46
+ export const Trigger = BaseUi.Dialog.Trigger
47
+
37
48
  /**
38
- * Owns the open state and renders no element. Pass `open` and `onOpenChange` to control it.
39
- * Set `modal` to `false` to keep the page interactive, or to `'trap-focus'` to trap focus
40
- * without locking scroll.
49
+ * Renders a 40px circular `Button` labelled "Back" with a left arrow, for step 2 onward of a
50
+ * flow. Place it first in a `Dialog.Nav`, and handle `onClick` to show the previous step.
41
51
  */
42
- export const Root = BaseUi.Dialog.Root
52
+ export function Back(props: Back.Props) {
53
+ return (
54
+ <Button
55
+ aria-label="Back"
56
+ {...props}
57
+ data-dialog-back=""
58
+ shape="icon"
59
+ size="medium"
60
+ variant="secondary"
61
+ >
62
+ <ArrowLeft />
63
+ </Button>
64
+ )
65
+ }
43
66
 
44
- /** Opens the dialog when pressed. Renders a `<button>` unless `render` supplies another. */
45
- export const Trigger = BaseUi.Dialog.Trigger
67
+ export namespace Back {
68
+ export type Props = Omit<Button.Props, 'children' | 'shape' | 'size' | 'variant'>
69
+ }
46
70
 
47
- export namespace Root {
48
- export type Props = BaseUi.Dialog.Root.Props
71
+ /**
72
+ * Renders the content `<div>` between the header and the footer, with sections 24px apart. Past
73
+ * 420px it scrolls, while the header and the footer stay in place.
74
+ */
75
+ export function Body(props: Body.Props) {
76
+ const { className, vars, ...attributes } = props
77
+
78
+ return <div {...attributes} {...styles.body({ className, style: props.style, vars })} />
79
+ }
80
+
81
+ export namespace Body {
82
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.body>
49
83
  }
50
84
 
51
85
  /** Renders a `<p>` that Base UI references from the popup's `aria-describedby`. */
@@ -65,12 +99,59 @@ export namespace Dialog {
65
99
  }
66
100
 
67
101
  /**
68
- * Renders the portal, scrim, viewport and popup. Narrow viewports present a bottom sheet.
69
- * `ref`, `className` and `style` reach the popup. `initialFocus` and `finalFocus` override
70
- * where focus moves on open and on close.
102
+ * Renders the `<div>` that holds a `Dialog.Title`, an optional `Dialog.Description`, and above
103
+ * them an optional `Dialog.Nav` and one hero, such as an `IconTile` or a `Visual`. The title
104
+ * renders at 20px in a `small` popup and 32px otherwise.
105
+ *
106
+ * `layout` places the parts:
107
+ * - `inline` (default): keeps the text clear of `closeButton`, for single-step dialogs.
108
+ * - `stacked`: puts a `Dialog.Nav` above left-aligned text, for step 2 onward of a flow.
109
+ * - `centered`: centers the hero and the text below a `Dialog.Nav`, for acknowledgments,
110
+ * onboarding, progress and success.
111
+ */
112
+ export function Header(props: Header.Props) {
113
+ const { className, layout, vars, ...attributes } = props
114
+
115
+ return (
116
+ <div {...attributes} {...styles.header({ className, layout, style: props.style, vars })} />
117
+ )
118
+ }
119
+
120
+ export namespace Header {
121
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.header>
122
+ }
123
+
124
+ /**
125
+ * Renders the 40px `<div>` row at the top of a `stacked` or `centered` header. A `Dialog.Back`
126
+ * takes the first cell, any other child, such as a `Stepper`, centers in the middle, and the last
127
+ * cell stays clear for `closeButton`.
128
+ */
129
+ export function Nav(props: Nav.Props) {
130
+ const { className, vars, ...attributes } = props
131
+
132
+ return (
133
+ <div
134
+ {...attributes}
135
+ data-dialog-nav=""
136
+ {...styles.nav({ className, style: props.style, vars })}
137
+ />
138
+ )
139
+ }
140
+
141
+ export namespace Nav {
142
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.nav>
143
+ }
144
+
145
+ /**
146
+ * Renders the portal, scrim, viewport and popup. `size` sets the width with the radius and
147
+ * padding: `small` is 400px with radius `md` and 24px padding, for one decision or outcome.
148
+ * `medium` (default) is 460px and `large` is 620px, both with radius `lg` and 32px padding. Viewports up to 37.5rem
149
+ * wide present every size at the bottom, full width with a 16px gutter. `ref`, `className` and
150
+ * `style` reach the popup. `initialFocus` and `finalFocus` override where focus moves on open and
151
+ * on close.
71
152
  */
72
153
  export function Popup(props: Popup.Props) {
73
- const { children, className, closeButton = false, vars, ...attributes } = props
154
+ const { children, className, closeButton = false, size, vars, ...attributes } = props
74
155
 
75
156
  return (
76
157
  <BaseUi.Dialog.Portal>
@@ -79,7 +160,8 @@ export namespace Dialog {
79
160
  <BaseUi.Dialog.Popup
80
161
  {...attributes}
81
162
  data-close-button={closeButton || undefined}
82
- {...styles.popup({ className, style: props.style, vars })}
163
+ data-dialog-size={size ?? 'medium'}
164
+ {...styles.popup({ className, size, style: props.style, vars })}
83
165
  >
84
166
  {children}
85
167
  {/* Follows the content in the DOM, so initial focus lands on the content first. */}
@@ -112,7 +194,22 @@ export namespace Dialog {
112
194
  }
113
195
  }
114
196
 
115
- /** Renders an `<h2>` that Base UI references from the popup's `aria-labelledby`. */
197
+ /**
198
+ * Owns the open state and renders no element. Pass `open` and `onOpenChange` to control it. The
199
+ * dialog is always modal: it traps focus, locks page scroll and makes the page behind inert.
200
+ */
201
+ export function Root(props: Root.Props) {
202
+ return <BaseUi.Dialog.Root {...props} />
203
+ }
204
+
205
+ export namespace Root {
206
+ export type Props = Omit<BaseUi.Dialog.Root.Props, 'modal'>
207
+ }
208
+
209
+ /**
210
+ * Renders an `<h2>` that Base UI references from the popup's `aria-labelledby`, at 20px in a
211
+ * `small` popup and 32px otherwise.
212
+ */
116
213
  export function Title(props: Title.Props) {
117
214
  const { className, vars, ...attributes } = props
118
215
 
@@ -129,10 +226,12 @@ export namespace Dialog {
129
226
  }
130
227
  }
131
228
 
229
+ // Drawer shares `close`, `description` and `title`. Outside a sized popup, they take the values of
230
+ // the `small` size.
132
231
  export namespace styles {
133
232
  export const backdrop = style(
134
233
  {
135
- backgroundColor: 'black',
234
+ backgroundColor: 'neutral.100',
136
235
  inset: '0',
137
236
  opacity: 'disabled',
138
237
  position: 'fixed',
@@ -147,74 +246,165 @@ export namespace styles {
147
246
  { id: 'tds/web/dialog/backdrop' },
148
247
  )
149
248
 
150
- // The 36px close circle is inset 22px, so it centres on the first line of the 24px-padded title.
249
+ // Bleeds 4px into the popup padding with matching padding, so the scroll container keeps room
250
+ // for focus rings. The bottom margins are the section gaps less those 4px.
251
+ export const body = style(
252
+ {
253
+ display: 'flex',
254
+ flexDirection: 'column',
255
+ marginBottom: '20',
256
+ marginInline: '-4',
257
+ marginTop: '-4',
258
+ maxHeight: '26.25rem !custom',
259
+ overflowY: 'auto',
260
+ overscrollBehavior: 'contain',
261
+ padding: '4',
262
+ rowGap: '24',
263
+ selectors: {
264
+ '[data-dialog-size="small"] &': { marginBottom: '16' },
265
+ '[data-dialog-size] &:last-child, [data-close-button] > &:nth-last-child(2)': {
266
+ marginBottom: '-4',
267
+ },
268
+ },
269
+ },
270
+ { id: 'tds/web/dialog/body' },
271
+ )
272
+
273
+ // The 40px circle sits in the popup's padding corner, which the header keeps clear.
151
274
  export const close = style(
152
275
  {
153
- height: '36',
154
- insetBlockStart: '22',
155
- insetInlineEnd: '22',
276
+ insetBlockStart: '24',
277
+ insetInlineEnd: '24',
156
278
  position: 'absolute',
279
+ selectors: {
280
+ '[data-dialog-size="large"] > &, [data-dialog-size="medium"] > &': {
281
+ insetBlockStart: '32',
282
+ insetInlineEnd: '32',
283
+ },
284
+ },
157
285
  },
158
286
  { id: 'tds/web/dialog/close' },
159
287
  )
160
288
 
161
289
  export const description = style(
162
290
  {
163
- color: 'gray.900',
291
+ color: 'content.secondary',
164
292
  margin: '0',
165
- typography: 'copy.15',
293
+ typography: 'body.b2',
294
+ selectors: { 'h2 + &': { marginTop: '8' } },
166
295
  },
167
296
  { id: 'tds/web/dialog/description' },
168
297
  )
169
298
 
170
- export const popup = style(
299
+ export const header = variants(
171
300
  {
172
- backgroundColor: 'background.raised',
173
- borderRadius: '16',
174
- boxShadow: 'modal',
175
- boxSizing: 'border-box',
176
- color: 'foreground',
177
- maxWidth: '448',
178
- outline: 'none !custom',
179
- padding: '24',
180
- position: 'relative',
181
- transitionDuration: '280',
182
- transitionProperty: 'opacity, scale, transform',
183
- transitionTimingFunction: 'spring',
184
- typography: 'copy.14',
185
- width: '100% !custom',
186
- selectors: {
187
- '&[data-ending-style]': {
188
- opacity: '0 !custom',
189
- scale: 'enter',
190
- transitionDuration: '180',
301
+ base: {
302
+ display: 'flex',
303
+ flexDirection: 'column',
304
+ marginBottom: '24',
305
+ selectors: {
306
+ // A hero, such as an `IconTile` or a `Visual`, sits 24px above the text.
307
+ '& > :not(h2, p, [data-dialog-nav])': { marginBottom: '24' },
308
+ // The close button follows the content in the DOM, so it never counts as a next section.
309
+ '[data-dialog-size] &:last-child, [data-close-button] > &:nth-last-child(2)': {
310
+ marginBottom: '0',
311
+ },
312
+ '[data-dialog-size="small"] &': { marginBottom: '20' },
191
313
  },
192
- '&[data-starting-style]': {
193
- opacity: '0 !custom',
194
- scale: 'enter',
314
+ },
315
+ defaultVariants: { layout: 'inline' },
316
+ variants: {
317
+ layout: {
318
+ // Block parts, such as `Dialog.Nav` and a `Visual`, keep the full width.
319
+ centered: {
320
+ alignItems: 'center',
321
+ textAlign: 'center',
322
+ selectors: { '& > :is(div, h2, p)': { alignSelf: 'stretch' } },
323
+ },
324
+ // The text keeps 16px clear of the 40px close button, and starts 8px lower to meet it.
325
+ inline: {
326
+ selectors: { '[data-close-button] &': { paddingInlineEnd: '56', paddingTop: '8' } },
327
+ },
328
+ stacked: {},
195
329
  },
196
330
  },
197
- '@media (max-width: 40rem)': {
198
- borderBottomLeftRadius: '0',
199
- borderBottomRightRadius: '0',
200
- maxWidth: 'none !custom',
201
- paddingBottom: 'calc(24px + env(safe-area-inset-bottom, 0px)) !custom',
331
+ },
332
+ { id: 'tds/web/dialog/header' },
333
+ )
334
+
335
+ export const nav = style(
336
+ {
337
+ alignItems: 'center',
338
+ columnGap: '12',
339
+ display: 'grid',
340
+ gridTemplateColumns: '2.5rem 1fr 2.5rem !custom',
341
+ height: '40',
342
+ marginBottom: '16',
343
+ selectors: {
344
+ '& > *': { gridColumn: '2 !custom', justifySelf: 'center' },
345
+ '& > [data-dialog-back]': { gridColumn: '1 !custom' },
346
+ },
347
+ },
348
+ { id: 'tds/web/dialog/nav' },
349
+ )
350
+
351
+ // The Wallet Modal shadow has no Platform equivalent, so it stays a literal.
352
+ export const popup = variants(
353
+ {
354
+ base: {
355
+ backgroundColor: 'background.elevated',
356
+ boxShadow: '0 1px 2px #0000000a, 0 16px 48px -12px #00000024 !custom',
357
+ boxSizing: 'border-box',
358
+ color: 'content.primary',
359
+ outline: 'none !custom',
360
+ position: 'relative',
361
+ transitionDuration: '280',
362
+ transitionProperty: 'opacity, scale, transform',
363
+ transitionTimingFunction: 'spring',
364
+ typography: 'body.b2',
365
+ width: '100% !custom',
202
366
  selectors: {
203
- '&[data-ending-style]': { scale: 'none !custom', transform: 'translateY(100%) !custom' },
367
+ '&[data-ending-style]': {
368
+ opacity: '0 !custom',
369
+ scale: 'enter',
370
+ transitionDuration: '180',
371
+ },
204
372
  '&[data-starting-style]': {
205
- scale: 'none !custom',
206
- transform: 'translateY(100%) !custom',
373
+ opacity: '0 !custom',
374
+ scale: 'enter',
207
375
  },
208
376
  },
209
- },
210
- '@media (prefers-reduced-motion: reduce)': {
211
- transitionProperty: 'opacity',
212
- selectors: {
213
- '&[data-ending-style], &[data-starting-style]': {
214
- scale: 'none !custom',
215
- transform: 'none !custom',
377
+ '@media (max-width: 37.5rem)': {
378
+ selectors: {
379
+ // Outranks the max width of every size.
380
+ '&[data-dialog-size]': { maxWidth: 'none !custom' },
381
+ '&[data-ending-style]': {
382
+ scale: 'none !custom',
383
+ transform: 'translateY(calc(100% + 1rem)) !custom',
384
+ },
385
+ '&[data-starting-style]': {
386
+ scale: 'none !custom',
387
+ transform: 'translateY(calc(100% + 1rem)) !custom',
388
+ },
216
389
  },
217
390
  },
391
+ '@media (prefers-reduced-motion: reduce)': {
392
+ transitionProperty: 'opacity',
393
+ selectors: {
394
+ '&[data-ending-style], &[data-starting-style]': {
395
+ scale: 'none !custom',
396
+ transform: 'none !custom',
397
+ },
398
+ },
399
+ },
400
+ },
401
+ defaultVariants: { size: 'medium' },
402
+ variants: {
403
+ size: {
404
+ large: { borderRadius: 'lg', maxWidth: '38.75rem !custom', padding: '32' },
405
+ medium: { borderRadius: 'lg', maxWidth: '28.75rem !custom', padding: '32' },
406
+ small: { borderRadius: 'md', maxWidth: '25rem !custom', padding: '24' },
407
+ },
218
408
  },
219
409
  },
220
410
  { id: 'tds/web/dialog/popup' },
@@ -222,10 +412,13 @@ export namespace styles {
222
412
 
223
413
  export const title = style(
224
414
  {
225
- typography: 'heading.24',
226
415
  margin: '0',
227
- marginBottom: '8',
228
- selectors: { '[data-close-button] &': { paddingInlineEnd: '44' } },
416
+ typography: 'heading.h3',
417
+ selectors: {
418
+ '[data-dialog-size="large"] &, [data-dialog-size="medium"] &': {
419
+ typography: 'heading.h1',
420
+ },
421
+ },
229
422
  },
230
423
  { id: 'tds/web/dialog/title' },
231
424
  )
@@ -240,7 +433,10 @@ export namespace styles {
240
433
  overflowY: 'auto',
241
434
  padding: '16',
242
435
  position: 'fixed',
243
- '@media (max-width: 40rem)': { alignItems: 'end', padding: '0' },
436
+ '@media (max-width: 37.5rem)': {
437
+ alignItems: 'end',
438
+ paddingBottom: 'calc(1rem + env(safe-area-inset-bottom, 0px)) !custom',
439
+ },
244
440
  },
245
441
  { id: 'tds/web/dialog/viewport' },
246
442
  )