@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
@@ -7,11 +7,15 @@ import { Spinner } from './Spinner.js'
7
7
 
8
8
  /**
9
9
  * A native `<button>` for actions, built on Base UI Button. It scales slightly while pressed and
10
- * shows a blue outline on keyboard focus.
10
+ * shows an outline on keyboard focus.
11
11
  *
12
12
  * - Use `Button` for actions and `Button.Link` for navigation.
13
13
  * - Label with a specific verb, such as Send payment. Give `shape="icon"` buttons, which render as circles, an `aria-label`.
14
- * - Keep one `primary` button per view or section. Reserve `negative` for destructive actions.
14
+ * - Keep one `primary` button per view or section, and give the others `secondary` or `tertiary`.
15
+ * - Set `appearance="inverse"` on an inverse surface, such as a dark banner on a light page, and
16
+ * `appearance="overlay"` over an image or video.
17
+ * - Use `large` for the actions in a dialog footer. Keep `xsmall` pills for actions inside a row
18
+ * or field, never for the main action.
15
19
  * - Set `focusableWhenDisabled` when a disabled button needs to stay reachable while nearby text
16
20
  * explains why it is unavailable.
17
21
  *
@@ -28,6 +32,7 @@ import { Spinner } from './Spinner.js'
28
32
  */
29
33
  export function Button(props: Button.Props) {
30
34
  const {
35
+ appearance,
31
36
  children,
32
37
  className,
33
38
  disabled,
@@ -42,7 +47,7 @@ export function Button(props: Button.Props) {
42
47
  return (
43
48
  <BaseUi.Button
44
49
  {...attributes}
45
- {...styles.button({ className, shape, size, style: props.style, variant, vars })}
50
+ {...styles.button({ appearance, className, shape, size, style: props.style, variant, vars })}
46
51
  aria-busy={loading || undefined}
47
52
  data-loading={loading || undefined}
48
53
  disabled={disabled || loading}
@@ -71,13 +76,24 @@ export namespace Button {
71
76
  * `render` takes a router's link, such as `<Link to="/" />`.
72
77
  */
73
78
  export function Link(props: Link.Props) {
74
- const { children, className, ref, render, shape, size, variant, vars, ...attributes } = props
79
+ const {
80
+ appearance,
81
+ children,
82
+ className,
83
+ ref,
84
+ render,
85
+ shape,
86
+ size,
87
+ variant,
88
+ vars,
89
+ ...attributes
90
+ } = props
75
91
 
76
92
  return useRender({
77
93
  defaultTagName: 'a',
78
94
  props: {
79
95
  ...attributes,
80
- ...styles.button({ className, shape, size, style: props.style, variant, vars }),
96
+ ...styles.button({ appearance, className, shape, size, style: props.style, variant, vars }),
81
97
  children: <span {...styles.content({ loading: false })}>{children}</span>,
82
98
  },
83
99
  ref,
@@ -96,30 +112,32 @@ namespace styles {
96
112
  base: {
97
113
  alignItems: 'center',
98
114
  border: 'none !custom',
115
+ borderRadius: 'xs',
99
116
  boxSizing: 'border-box',
100
- columnGap: '8',
117
+ columnGap: '4',
101
118
  cursor: 'pointer',
102
119
  display: 'inline-flex',
103
120
  justifyContent: 'center',
104
121
  outlineColor: 'transparent !custom',
105
- outlineOffset: '2',
122
+ outlineOffset: '0',
106
123
  outlineStyle: 'solid !custom',
107
124
  outlineWidth: '2',
108
125
  position: 'relative',
109
126
  textDecoration: 'none !custom',
110
127
  transitionDuration: '160',
111
- transitionProperty:
112
- 'background-color, box-shadow, color, opacity, outline-color, scale !custom',
128
+ transitionProperty: 'background-color, color, opacity, outline-color, scale !custom',
113
129
  transitionTimingFunction: 'snappy',
130
+ typography: 'body.b2Strong',
114
131
  userSelect: 'none',
115
132
  whiteSpace: 'nowrap',
116
133
  selectors: {
134
+ '& > span > svg': { flexShrink: '0 !custom', fontSize: '16' },
117
135
  '&:active:not(:disabled)': {
118
136
  scale: 'press',
119
137
  transitionDuration: '100',
120
138
  },
121
139
  '&:disabled': { cursor: 'default', opacity: 'disabled' },
122
- '&:focus-visible': { outlineColor: 'blue.700' },
140
+ '&:focus-visible': { outlineColor: 'action.focusRing' },
123
141
  '&[data-loading]': { opacity: '1 !custom' },
124
142
  },
125
143
  '@media (forced-colors: active)': {
@@ -131,64 +149,159 @@ namespace styles {
131
149
  selectors: { '&:active:not(:disabled)': { scale: 'none !custom' } },
132
150
  },
133
151
  },
134
- // Icon buttons are circles at every size, so the shape outranks the size radius and padding.
152
+ // Icon buttons are circles at every size, so the shape outranks the size padding and width.
135
153
  compoundVariants: [
136
- { when: { shape: 'icon' }, style: { borderRadius: 'full', paddingInline: '0' } },
154
+ {
155
+ when: { shape: 'icon' },
156
+ style: {
157
+ borderRadius: 'full',
158
+ cornerShape: 'round',
159
+ flexShrink: '0 !custom',
160
+ minWidth: '0',
161
+ paddingInline: '0',
162
+ selectors: { '& > span:first-child': { minWidth: '0 !custom' } },
163
+ },
164
+ },
165
+ // The Platform Icon Button keeps its primary fill dark in both schemes, so its icon stays
166
+ // white. Hover and press take the primary action fills, which turn light in dark mode, so
167
+ // the icon takes the inverse content color over them.
168
+ {
169
+ when: { appearance: 'base', shape: 'icon', variant: 'primary' },
170
+ style: {
171
+ backgroundColor: 'inverse.background.secondary',
172
+ color: 'neutral.000',
173
+ selectors: {
174
+ '&:is(:hover, :active):not(:disabled)': { color: 'inverse.content.primary' },
175
+ },
176
+ },
177
+ },
178
+ // The focus ring of the page blends into an inverse surface, so an inverse button draws
179
+ // its ring in the inverse text color, 2px out, where the surface separates it from a fill
180
+ // of the same color.
181
+ {
182
+ when: { appearance: 'inverse' },
183
+ style: {
184
+ selectors: {
185
+ '&:focus-visible': { outlineColor: 'inverse.content.primary', outlineOffset: '2' },
186
+ },
187
+ },
188
+ },
189
+ // The inverse and overlay appearances have no pressed design, so a press keeps the hover
190
+ // fill. Their primary fill also stays the same on hover.
191
+ {
192
+ when: { appearance: ['inverse', 'overlay'], variant: 'primary' },
193
+ style: {
194
+ backgroundColor: 'background.secondary',
195
+ color: 'content.primary',
196
+ selectors: {
197
+ '&:is(:hover, :active):not(:disabled)': { backgroundColor: 'background.secondary' },
198
+ },
199
+ },
200
+ },
201
+ {
202
+ when: { appearance: 'inverse', variant: 'secondary' },
203
+ style: {
204
+ backgroundColor: 'inverse.container.regular',
205
+ color: 'inverse.content.primary',
206
+ selectors: {
207
+ '&:is(:hover, :active):not(:disabled)': {
208
+ backgroundColor: 'inverse.container.regular',
209
+ },
210
+ },
211
+ },
212
+ },
213
+ // Figma paints the overlay fills as gray literals that no variable holds. Hover lightens
214
+ // the fill.
215
+ {
216
+ when: { appearance: 'overlay', variant: 'secondary' },
217
+ style: {
218
+ backgroundColor: '#70707052 !custom',
219
+ color: 'inverse.content.primary',
220
+ selectors: {
221
+ '&:is(:hover, :active):not(:disabled)': { backgroundColor: '#70707048 !custom' },
222
+ },
223
+ },
224
+ },
225
+ {
226
+ when: { appearance: ['inverse', 'overlay'], variant: 'tertiary' },
227
+ style: {
228
+ color: 'inverse.content.primary',
229
+ selectors: {
230
+ '&:is(:hover, :active):not(:disabled)': { backgroundColor: 'neutral.tint.012' },
231
+ },
232
+ },
233
+ },
137
234
  ],
138
- defaultVariants: { shape: 'default', size: 'medium', variant: 'primary' },
235
+ defaultVariants: { appearance: 'base', shape: 'default', size: 'medium', variant: 'primary' },
139
236
  variants: {
237
+ /**
238
+ * The surface under the button: the page for `base`, an inverse surface, such as
239
+ * `inverse.background.primary`, for `inverse`, and an image or video for `overlay`. On
240
+ * both of the last two, `primary` takes the page's background and text colors, and
241
+ * `secondary` and `tertiary` take the inverse text color.
242
+ *
243
+ * @default 'base'
244
+ */
245
+ appearance: { base: {}, inverse: {}, overlay: {} },
140
246
  shape: {
141
247
  default: {},
142
248
  icon: { aspectRatio: '1 !custom' },
143
249
  },
144
- // Heights and radii match the `size` scale of the text fields.
250
+ // `xsmall` is a pill for actions inside a row or field. The others keep radius `xs` and an 80px
251
+ // minimum width, set on the label net of the padding, so a flex row never shrinks a button
252
+ // below its label.
145
253
  size: {
146
254
  large: {
147
- borderRadius: '16',
148
- height: '56',
255
+ height: '48',
149
256
  paddingInline: '32',
150
- typography: 'button.16',
257
+ selectors: { '& > span:first-child': { minWidth: '1rem !custom' } },
151
258
  },
152
259
  medium: {
153
- borderRadius: '12',
154
260
  height: '40',
155
- paddingInline: '20',
156
- typography: 'button.14',
261
+ paddingInline: '24',
262
+ selectors: { '& > span:first-child': { minWidth: '2rem !custom' } },
157
263
  },
158
264
  small: {
159
- borderRadius: '8',
160
265
  height: '32',
266
+ paddingInline: '16',
267
+ selectors: { '& > span:first-child': { minWidth: '3rem !custom' } },
268
+ },
269
+ xsmall: {
270
+ borderRadius: 'full',
271
+ cornerShape: 'round',
272
+ height: '24',
161
273
  paddingInline: '12',
162
- typography: 'button.12',
274
+ typography: 'body.b3Strong',
275
+ selectors: { '& > span > svg': { fontSize: '12' } },
163
276
  },
164
277
  },
278
+ // Each pressed fill follows its hover fill, so it wins while the pointer stays over the
279
+ // button.
165
280
  variant: {
166
- negative: {
167
- backgroundColor: 'red.800',
168
- color: 'white',
169
- selectors: { '&:hover:not(:disabled)': { backgroundColor: 'red.900' } },
170
- },
281
+ // The Platform Button paints its primary fill and label with the inverse colors.
171
282
  primary: {
172
- backgroundColor: 'foreground',
173
- backgroundImage:
174
- 'linear-gradient(rgb(255 255 255 / 0.08), rgb(255 255 255 / 0)) !custom',
175
- boxShadow: 'raised',
176
- color: 'background.primary',
177
- selectors: { '&:hover:not(:disabled)': { opacity: 'hover' } },
283
+ backgroundColor: 'inverse.background.primary',
284
+ color: 'inverse.content.primary',
285
+ selectors: {
286
+ '&:hover:not(:disabled)': { backgroundColor: 'action.primary.fill.hover' },
287
+ '&:active:not(:disabled)': { backgroundColor: 'action.primary.fill.pressed' },
288
+ },
178
289
  },
179
- // Matches the Input field fill.
180
290
  secondary: {
181
- backgroundColor: 'grayAlpha.100',
182
- color: 'foreground',
291
+ backgroundColor: 'component.button.secondary.fill',
292
+ color: 'content.primary',
183
293
  selectors: {
184
- '&:hover:not(:disabled)': { backgroundColor: 'grayAlpha.200' },
185
- '&:active:not(:disabled)': { backgroundColor: 'grayAlpha.300' },
294
+ '&:hover:not(:disabled)': { backgroundColor: 'action.secondary.fill.hover' },
295
+ '&:active:not(:disabled)': { backgroundColor: 'action.secondary.fill.pressed' },
186
296
  },
187
297
  },
188
- text: {
189
- backgroundColor: 'transparent !custom',
190
- color: 'foreground',
191
- selectors: { '&:hover:not(:disabled)': { backgroundColor: 'grayAlpha.100' } },
298
+ tertiary: {
299
+ backgroundColor: 'component.button.tertiary.fill',
300
+ color: 'content.primary',
301
+ selectors: {
302
+ '&:hover:not(:disabled)': { backgroundColor: 'action.tertiary.fill.hover' },
303
+ '&:active:not(:disabled)': { backgroundColor: 'action.tertiary.fill.pressed' },
304
+ },
192
305
  },
193
306
  },
194
307
  },
@@ -202,6 +315,7 @@ namespace styles {
202
315
  alignItems: 'inherit !custom',
203
316
  columnGap: 'inherit !custom',
204
317
  display: 'inline-flex',
318
+ justifyContent: 'center',
205
319
  transitionDuration: '160',
206
320
  transitionProperty: 'opacity, visibility !custom',
207
321
  transitionTimingFunction: 'snappy',
@@ -0,0 +1,59 @@
1
+ import type { ComponentPropsWithRef } from 'react'
2
+ import type * as zyzz from 'zyzz'
3
+ import { variants } from '../zyzz.config.js'
4
+
5
+ /**
6
+ * Lays out the actions at the foot of a dialog or flow. Renders a `div` with `role="group"` and an
7
+ * 8px gap. `horizontal` gives each button an equal share of the row, and `vertical` stretches
8
+ * each button to the full width.
9
+ *
10
+ * - In a pair, put the `secondary` action first, so the `primary` action sits on the right.
11
+ * - In a stack, put the `primary` action first and a `tertiary` action, such as Not now, below it.
12
+ * - Give every button in a dialog footer the `large` size.
13
+ *
14
+ * @example
15
+ * <ButtonGroup>
16
+ * <Button size="large" variant="secondary">
17
+ * Cancel
18
+ * </Button>
19
+ * <Button size="large">Confirm</Button>
20
+ * </ButtonGroup>
21
+ *
22
+ * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/button/ | WAI-ARIA APG Button pattern}
23
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/meaningful-sequence.html | WCAG 2.2 Meaningful Sequence}
24
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html | WCAG 2.2 Focus Order}
25
+ */
26
+ export function ButtonGroup(props: ButtonGroup.Props) {
27
+ const { className, orientation, vars, ...attributes } = props
28
+
29
+ return (
30
+ <div
31
+ role="group"
32
+ {...attributes}
33
+ {...styles.group({ className, orientation, style: props.style, vars })}
34
+ />
35
+ )
36
+ }
37
+
38
+ export namespace ButtonGroup {
39
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.group>
40
+ }
41
+
42
+ namespace styles {
43
+ export const group = variants(
44
+ {
45
+ base: { display: 'flex', gap: '8' },
46
+ defaultVariants: { orientation: 'horizontal' },
47
+ variants: {
48
+ orientation: {
49
+ horizontal: {
50
+ flexDirection: 'row',
51
+ selectors: { '& > *': { flex: '1 !custom' } },
52
+ },
53
+ vertical: { alignItems: 'stretch', flexDirection: 'column' },
54
+ },
55
+ },
56
+ },
57
+ { id: 'tds/web/button-group' },
58
+ )
59
+ }
@@ -183,7 +183,7 @@ export function Calendar(props: Calendar.Props) {
183
183
  disabled={min !== undefined && key(addDays(month, -1)) < key(min)}
184
184
  onClick={() => showMonth(addMonths(month, -1))}
185
185
  shape="icon"
186
- variant="text"
186
+ variant="tertiary"
187
187
  >
188
188
  <ChevronLeft />
189
189
  </Button>
@@ -195,7 +195,7 @@ export function Calendar(props: Calendar.Props) {
195
195
  disabled={max !== undefined && key(addMonths(month, 1)) > key(max)}
196
196
  onClick={() => showMonth(addMonths(month, 1))}
197
197
  shape="icon"
198
- variant="text"
198
+ variant="tertiary"
199
199
  >
200
200
  <ChevronRight />
201
201
  </Button>
@@ -436,7 +436,7 @@ namespace styles {
436
436
  textAlign: 'center',
437
437
  width: '40',
438
438
  selectors: {
439
- '&[data-in-range]': { backgroundColor: 'grayAlpha.100' },
439
+ '&[data-in-range]': { backgroundColor: 'container.regular' },
440
440
  '&[data-range-end]': { borderEndEndRadius: 'full', borderStartEndRadius: 'full' },
441
441
  '&[data-range-start]': { borderEndStartRadius: 'full', borderStartStartRadius: 'full' },
442
442
  },
@@ -451,7 +451,8 @@ namespace styles {
451
451
  border: 'none !custom',
452
452
  borderRadius: 'full',
453
453
  boxSizing: 'border-box',
454
- color: 'foreground',
454
+ color: 'content.primary',
455
+ cornerShape: 'round',
455
456
  cursor: 'pointer',
456
457
  display: 'inline-flex',
457
458
  height: '40',
@@ -466,20 +467,21 @@ namespace styles {
466
467
  transitionProperty:
467
468
  'background-color, color, opacity, outline-color, outline-offset, transform',
468
469
  transitionTimingFunction: 'snappy',
469
- typography: 'label.14.strong',
470
+ typography: 'body.b2Strong',
470
471
  width: '40',
471
472
  selectors: {
472
473
  '&:active:not([aria-disabled="true"])': { transform: 'scale(0.96) !custom' },
473
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
474
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
474
475
  '&:hover:not([aria-disabled="true"]):not([data-selected])': {
475
- backgroundColor: 'grayAlpha.200',
476
+ backgroundColor: 'container.strong',
476
477
  },
477
478
  '&[aria-disabled="true"]': { cursor: 'default', opacity: 'disabled' },
478
- '&[data-selected]': { backgroundColor: 'foreground', color: 'background.primary' },
479
+ '&[data-selected]': { backgroundColor: 'content.primary', color: 'background.primary' },
479
480
  '&[data-today]::after': {
480
- backgroundColor: 'blue.700',
481
+ backgroundColor: 'accent.blue.background',
481
482
  borderRadius: 'full',
482
483
  content: '"" !custom',
484
+ cornerShape: 'round',
483
485
  height: '4',
484
486
  insetBlockEnd: '4',
485
487
  insetInlineStart: '50% !custom',
@@ -510,7 +512,7 @@ namespace styles {
510
512
  export const root = style(
511
513
  {
512
514
  boxSizing: 'border-box',
513
- color: 'foreground',
515
+ color: 'content.primary',
514
516
  display: 'inline-flex',
515
517
  flexDirection: 'column',
516
518
  gap: '8',
@@ -520,17 +522,17 @@ namespace styles {
520
522
  )
521
523
 
522
524
  export const title = style(
523
- { textAlign: 'center', typography: 'label.14.strong' },
525
+ { textAlign: 'center', typography: 'body.b2Strong' },
524
526
  { id: 'tds/web/calendar/title' },
525
527
  )
526
528
 
527
529
  export const weekday = style(
528
530
  {
529
- color: 'gray.900',
531
+ color: 'content.secondary',
530
532
  height: '32',
531
533
  padding: '0',
532
534
  textAlign: 'center',
533
- typography: 'label.12',
535
+ typography: 'body.b3',
534
536
  width: '40',
535
537
  },
536
538
  { id: 'tds/web/calendar/weekday' },
@@ -1,9 +1,10 @@
1
1
  import * as BaseUi from '@base-ui/react/checkbox'
2
- import type { ComponentPropsWithRef } from 'react'
2
+ import { type ComponentPropsWithRef, useContext } from 'react'
3
3
  import type * as zyzz from 'zyzz'
4
4
  import { Check } from '../icons/Check.js'
5
5
  import { Minus } from '../icons/Minus.js'
6
6
  import { style, variants } from '../zyzz.config.js'
7
+ import * as RowDisabled from './internal/RowDisabled.js'
7
8
 
8
9
  /**
9
10
  * A checkbox for an independent on or off choice. Base UI renders a `span` with the `checkbox` role
@@ -32,10 +33,12 @@ import { style, variants } from '../zyzz.config.js'
32
33
  */
33
34
  export function Checkbox(props: Checkbox.Props) {
34
35
  const { className, size, vars, ...attributes } = props
36
+ const rowDisabled = useContext(RowDisabled.Context)
35
37
 
36
38
  return (
37
39
  <BaseUi.Checkbox.Root
38
40
  {...attributes}
41
+ disabled={attributes.disabled || rowDisabled}
39
42
  {...styles.checkbox({ className, size, style: props.style, vars })}
40
43
  >
41
44
  <BaseUi.Checkbox.Indicator {...styles.indicator()}>
@@ -79,9 +82,9 @@ namespace styles {
79
82
  {
80
83
  base: {
81
84
  alignItems: 'center',
82
- backgroundColor: 'grayAlpha.300',
85
+ backgroundColor: 'container.strong',
83
86
  boxSizing: 'border-box',
84
- color: 'background.surface',
87
+ color: 'background.elevated',
85
88
  cursor: 'pointer',
86
89
  display: 'inline-flex',
87
90
  flexShrink: '0 !custom',
@@ -98,14 +101,14 @@ namespace styles {
98
101
  selectors: {
99
102
  '&::after': { content: '"" !custom', inset: '-10', position: 'absolute' },
100
103
  '&:active:not([data-disabled])': { transform: 'scale(0.96) !custom' },
101
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
102
- '&:hover:not([data-disabled])': { backgroundColor: 'grayAlpha.400' },
103
- '&[data-checked], &[data-indeterminate]': { backgroundColor: 'foreground' },
104
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
105
+ '&:hover:not([data-disabled])': { backgroundColor: 'line.primary' },
106
+ '&[data-checked], &[data-indeterminate]': { backgroundColor: 'content.primary' },
104
107
  '&[data-checked]:hover:not([data-disabled]), &[data-indeterminate]:hover:not([data-disabled])':
105
- { backgroundColor: 'foreground', opacity: 'hover' },
108
+ { backgroundColor: 'content.primary', opacity: 'hover' },
106
109
  '&[data-disabled]': { cursor: 'default', opacity: 'disabled' },
107
110
  '&[data-invalid]': {
108
- outlineColor: 'red.800',
111
+ outlineColor: 'border.negative',
109
112
  outlineStyle: 'solid !custom',
110
113
  outlineWidth: '1',
111
114
  },
@@ -120,19 +123,19 @@ namespace styles {
120
123
  // Indicator sizes: 16, 20 and 24px. The hit area stays at least 36px.
121
124
  size: {
122
125
  large: {
123
- borderRadius: '8',
126
+ borderRadius: '2xs',
124
127
  height: '24',
125
128
  width: '24',
126
129
  selectors: { '& > span': { fontSize: '18' } },
127
130
  },
128
131
  medium: {
129
- borderRadius: '6',
132
+ borderRadius: '2xs',
130
133
  height: '20',
131
134
  width: '20',
132
135
  selectors: { '& > span': { fontSize: '14' } },
133
136
  },
134
137
  small: {
135
- borderRadius: '4',
138
+ borderRadius: '3xs',
136
139
  height: '16',
137
140
  width: '16',
138
141
  selectors: { '& > span': { fontSize: '12' } },