@tempoxyz/ds 0.2.5 → 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 (735) hide show
  1. package/README.md +2 -0
  2. package/dist/fonts/Inter-cyrillic-ext.woff2 +0 -0
  3. package/dist/fonts/Inter-cyrillic.woff2 +0 -0
  4. package/dist/fonts/Inter-greek-ext.woff2 +0 -0
  5. package/dist/fonts/Inter-greek.woff2 +0 -0
  6. package/dist/fonts/Inter-latin-ext.woff2 +0 -0
  7. package/dist/fonts/Inter-latin.woff2 +0 -0
  8. package/dist/fonts/Inter-symbols.woff2 +0 -0
  9. package/dist/fonts/Inter-vietnamese.woff2 +0 -0
  10. package/dist/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  11. package/dist/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  12. package/dist/fonts/JetBrainsMono-Bold.woff2 +0 -0
  13. package/dist/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  14. package/dist/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  15. package/dist/fonts/JetBrainsMono-Medium.woff2 +0 -0
  16. package/dist/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  17. package/dist/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  18. package/dist/fonts/JetBrainsMono-Regular.woff2 +0 -0
  19. package/dist/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  20. package/dist/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  21. package/dist/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  22. package/dist/fonts/Pilat-Black-latin.woff2 +0 -0
  23. package/dist/fonts/Pilat-Black-other.woff2 +0 -0
  24. package/dist/fonts/Pilat-Black.woff2 +0 -0
  25. package/dist/fonts/Pilat-Bold-latin.woff2 +0 -0
  26. package/dist/fonts/Pilat-Bold-other.woff2 +0 -0
  27. package/dist/fonts/Pilat-Bold.woff2 +0 -0
  28. package/dist/fonts/Pilat-Book-latin.woff2 +0 -0
  29. package/dist/fonts/Pilat-Book-other.woff2 +0 -0
  30. package/dist/fonts/Pilat-Book.woff2 +0 -0
  31. package/dist/fonts/Pilat-Demi-latin.woff2 +0 -0
  32. package/dist/fonts/Pilat-Demi-other.woff2 +0 -0
  33. package/dist/fonts/Pilat-Demi.woff2 +0 -0
  34. package/dist/fonts/Pilat-Heavy-latin.woff2 +0 -0
  35. package/dist/fonts/Pilat-Heavy-other.woff2 +0 -0
  36. package/dist/fonts/Pilat-Heavy.woff2 +0 -0
  37. package/dist/fonts/Pilat-Light-latin.woff2 +0 -0
  38. package/dist/fonts/Pilat-Light-other.woff2 +0 -0
  39. package/dist/fonts/Pilat-Light.woff2 +0 -0
  40. package/dist/fonts/Pilat-Regular-latin.woff2 +0 -0
  41. package/dist/fonts/Pilat-Regular-other.woff2 +0 -0
  42. package/dist/fonts/Pilat-Regular.woff2 +0 -0
  43. package/dist/fonts/Pilat-Thin-latin.woff2 +0 -0
  44. package/dist/fonts/Pilat-Thin-other.woff2 +0 -0
  45. package/dist/fonts/Pilat-Thin.woff2 +0 -0
  46. package/dist/mobile/Haptics.d.ts +39 -0
  47. package/dist/mobile/Haptics.d.ts.map +1 -0
  48. package/dist/mobile/Haptics.js +51 -0
  49. package/dist/mobile/Haptics.js.map +1 -0
  50. package/dist/mobile/components/Button.d.ts.map +1 -1
  51. package/dist/mobile/components/Button.js +3 -3
  52. package/dist/mobile/components/Button.js.map +1 -1
  53. package/dist/mobile/components/IconButton.d.ts.map +1 -1
  54. package/dist/mobile/components/IconButton.js +3 -3
  55. package/dist/mobile/components/IconButton.js.map +1 -1
  56. package/dist/mobile/components/Spinner.js +1 -1
  57. package/dist/mobile/components/Spinner.js.map +1 -1
  58. package/dist/mobile/components/TextButton.d.ts.map +1 -1
  59. package/dist/mobile/components/TextButton.js +3 -3
  60. package/dist/mobile/components/TextButton.js.map +1 -1
  61. package/dist/mobile/components/TextInput.js +1 -1
  62. package/dist/mobile/components/TextInput.js.map +1 -1
  63. package/dist/mobile/components/Toast.js +1 -1
  64. package/dist/mobile/components/Toast.js.map +1 -1
  65. package/dist/mobile/components/Toggle.d.ts.map +1 -1
  66. package/dist/mobile/components/Toggle.js +2 -2
  67. package/dist/mobile/components/Toggle.js.map +1 -1
  68. package/dist/mobile/index.d.ts +2 -0
  69. package/dist/mobile/index.d.ts.map +1 -1
  70. package/dist/mobile/index.js +2 -0
  71. package/dist/mobile/index.js.map +1 -1
  72. package/dist/mobile/useColor.d.ts +23 -0
  73. package/dist/mobile/useColor.d.ts.map +1 -0
  74. package/dist/mobile/useColor.js +29 -0
  75. package/dist/mobile/useColor.js.map +1 -0
  76. package/dist/oxlint/rules/PreferComponent.js +6 -6
  77. package/dist/oxlint/rules/PreferComponent.js.map +1 -1
  78. package/dist/web/components/Accordion.css +1 -1
  79. package/dist/web/components/Accordion.d.ts +7 -7
  80. package/dist/web/components/Accordion.js +8 -8
  81. package/dist/web/components/Accordion.js.map +1 -1
  82. package/dist/web/components/Accordion.js.zyzz.json +1 -1
  83. package/dist/web/components/AgentLogo.css +1 -0
  84. package/dist/web/components/AgentLogo.d.ts +206 -0
  85. package/dist/web/components/AgentLogo.d.ts.map +1 -0
  86. package/dist/web/components/AgentLogo.js +86 -0
  87. package/dist/web/components/AgentLogo.js.map +1 -0
  88. package/dist/web/components/AgentLogo.js.zyzz.json +1 -0
  89. package/dist/web/components/Alert.css +1 -0
  90. package/dist/web/components/Alert.d.ts +156 -0
  91. package/dist/web/components/Alert.d.ts.map +1 -0
  92. package/dist/web/components/Alert.js +92 -0
  93. package/dist/web/components/Alert.js.map +1 -0
  94. package/dist/web/components/Alert.js.zyzz.json +1 -0
  95. package/dist/web/components/AlertDialog.d.ts +40 -28
  96. package/dist/web/components/AlertDialog.d.ts.map +1 -1
  97. package/dist/web/components/AlertDialog.js +31 -36
  98. package/dist/web/components/AlertDialog.js.map +1 -1
  99. package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
  100. package/dist/web/components/Amount.css +1 -1
  101. package/dist/web/components/Amount.d.ts +5 -5
  102. package/dist/web/components/Amount.d.ts.map +1 -1
  103. package/dist/web/components/Amount.js +3 -3
  104. package/dist/web/components/Amount.js.map +1 -1
  105. package/dist/web/components/Amount.js.zyzz.json +1 -1
  106. package/dist/web/components/AmountInput.css +1 -1
  107. package/dist/web/components/AmountInput.d.ts +20 -39
  108. package/dist/web/components/AmountInput.d.ts.map +1 -1
  109. package/dist/web/components/AmountInput.js +32 -38
  110. package/dist/web/components/AmountInput.js.map +1 -1
  111. package/dist/web/components/AmountInput.js.zyzz.json +1 -1
  112. package/dist/web/components/AppShell.css +1 -1
  113. package/dist/web/components/AppShell.d.ts +65 -29
  114. package/dist/web/components/AppShell.d.ts.map +1 -1
  115. package/dist/web/components/AppShell.js +33 -21
  116. package/dist/web/components/AppShell.js.map +1 -1
  117. package/dist/web/components/AppShell.js.zyzz.json +1 -1
  118. package/dist/web/components/AssetChip.css +1 -0
  119. package/dist/web/components/AssetChip.d.ts +38 -0
  120. package/dist/web/components/AssetChip.d.ts.map +1 -0
  121. package/dist/web/components/AssetChip.js +47 -0
  122. package/dist/web/components/AssetChip.js.map +1 -0
  123. package/dist/web/components/AssetChip.js.zyzz.json +1 -0
  124. package/dist/web/components/Autocomplete.d.ts +2 -2
  125. package/dist/web/components/Autocomplete.js +4 -4
  126. package/dist/web/components/Autocomplete.js.map +1 -1
  127. package/dist/web/components/Autocomplete.js.zyzz.json +1 -1
  128. package/dist/web/components/Avatar.css +1 -1
  129. package/dist/web/components/Avatar.d.ts +40 -115
  130. package/dist/web/components/Avatar.d.ts.map +1 -1
  131. package/dist/web/components/Avatar.js +19 -34
  132. package/dist/web/components/Avatar.js.map +1 -1
  133. package/dist/web/components/Avatar.js.zyzz.json +1 -1
  134. package/dist/web/components/Badge.css +1 -0
  135. package/dist/web/components/Badge.d.ts +134 -0
  136. package/dist/web/components/Badge.d.ts.map +1 -0
  137. package/dist/web/components/Badge.js +38 -0
  138. package/dist/web/components/Badge.js.map +1 -0
  139. package/dist/web/components/Badge.js.zyzz.json +1 -0
  140. package/dist/web/components/Banner.css +1 -1
  141. package/dist/web/components/Banner.d.ts +12 -12
  142. package/dist/web/components/Banner.d.ts.map +1 -1
  143. package/dist/web/components/Banner.js +6 -6
  144. package/dist/web/components/Banner.js.map +1 -1
  145. package/dist/web/components/Banner.js.zyzz.json +1 -1
  146. package/dist/web/components/BarChart.css +1 -0
  147. package/dist/web/components/BarChart.d.ts +155 -0
  148. package/dist/web/components/BarChart.d.ts.map +1 -0
  149. package/dist/web/components/BarChart.js +119 -0
  150. package/dist/web/components/BarChart.js.map +1 -0
  151. package/dist/web/components/BarChart.js.zyzz.json +1 -0
  152. package/dist/web/components/Breadcrumbs.css +1 -1
  153. package/dist/web/components/Breadcrumbs.d.ts +6 -6
  154. package/dist/web/components/Breadcrumbs.js +6 -6
  155. package/dist/web/components/Breadcrumbs.js.map +1 -1
  156. package/dist/web/components/Breadcrumbs.js.zyzz.json +1 -1
  157. package/dist/web/components/Button.css +1 -1
  158. package/dist/web/components/Button.d.ts +166 -35
  159. package/dist/web/components/Button.d.ts.map +1 -1
  160. package/dist/web/components/Button.js +14 -10
  161. package/dist/web/components/Button.js.map +1 -1
  162. package/dist/web/components/Button.js.zyzz.json +1 -1
  163. package/dist/web/components/ButtonGroup.css +1 -0
  164. package/dist/web/components/ButtonGroup.d.ts +56 -0
  165. package/dist/web/components/ButtonGroup.d.ts.map +1 -0
  166. package/dist/web/components/ButtonGroup.js +33 -0
  167. package/dist/web/components/ButtonGroup.js.map +1 -0
  168. package/dist/web/components/ButtonGroup.js.zyzz.json +1 -0
  169. package/dist/web/components/Calendar.css +1 -1
  170. package/dist/web/components/Calendar.d.ts.map +1 -1
  171. package/dist/web/components/Calendar.js +8 -8
  172. package/dist/web/components/Calendar.js.map +1 -1
  173. package/dist/web/components/Calendar.js.zyzz.json +1 -1
  174. package/dist/web/components/Checkbox.css +1 -1
  175. package/dist/web/components/Checkbox.d.ts +11 -11
  176. package/dist/web/components/Checkbox.d.ts.map +1 -1
  177. package/dist/web/components/Checkbox.js +9 -6
  178. package/dist/web/components/Checkbox.js.map +1 -1
  179. package/dist/web/components/Checkbox.js.zyzz.json +1 -1
  180. package/dist/web/components/CheckboxGroup.css +1 -1
  181. package/dist/web/components/CheckboxGroup.js +1 -1
  182. package/dist/web/components/CheckboxGroup.js.zyzz.json +1 -1
  183. package/dist/web/components/ChoiceGroup.css +1 -1
  184. package/dist/web/components/ChoiceGroup.d.ts +44 -16
  185. package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
  186. package/dist/web/components/ChoiceGroup.js +33 -9
  187. package/dist/web/components/ChoiceGroup.js.map +1 -1
  188. package/dist/web/components/ChoiceGroup.js.zyzz.json +1 -1
  189. package/dist/web/components/Choicebox.css +1 -1
  190. package/dist/web/components/Choicebox.d.ts +9 -9
  191. package/dist/web/components/Choicebox.d.ts.map +1 -1
  192. package/dist/web/components/Choicebox.js +11 -11
  193. package/dist/web/components/Choicebox.js.map +1 -1
  194. package/dist/web/components/Choicebox.js.zyzz.json +1 -1
  195. package/dist/web/components/Combobox.css +1 -1
  196. package/dist/web/components/Combobox.d.ts +2 -2
  197. package/dist/web/components/Combobox.d.ts.map +1 -1
  198. package/dist/web/components/Combobox.js +8 -8
  199. package/dist/web/components/Combobox.js.map +1 -1
  200. package/dist/web/components/Combobox.js.zyzz.json +1 -1
  201. package/dist/web/components/Container.css +1 -1
  202. package/dist/web/components/Container.js +1 -3
  203. package/dist/web/components/Container.js.zyzz.json +1 -1
  204. package/dist/web/components/CopyButton.css +1 -1
  205. package/dist/web/components/CopyButton.js +4 -4
  206. package/dist/web/components/CopyButton.js.map +1 -1
  207. package/dist/web/components/CopyButton.js.zyzz.json +1 -1
  208. package/dist/web/components/DatePicker.css +1 -1
  209. package/dist/web/components/DatePicker.d.ts +37 -56
  210. package/dist/web/components/DatePicker.d.ts.map +1 -1
  211. package/dist/web/components/DatePicker.js +8 -8
  212. package/dist/web/components/DatePicker.js.map +1 -1
  213. package/dist/web/components/DatePicker.js.zyzz.json +1 -1
  214. package/dist/web/components/Dialog.css +1 -1
  215. package/dist/web/components/Dialog.d.ts +189 -20
  216. package/dist/web/components/Dialog.d.ts.map +1 -1
  217. package/dist/web/components/Dialog.js +94 -27
  218. package/dist/web/components/Dialog.js.map +1 -1
  219. package/dist/web/components/Dialog.js.zyzz.json +1 -1
  220. package/dist/web/components/Drawer.css +1 -1
  221. package/dist/web/components/Drawer.d.ts +7 -2
  222. package/dist/web/components/Drawer.d.ts.map +1 -1
  223. package/dist/web/components/Drawer.js +13 -7
  224. package/dist/web/components/Drawer.js.map +1 -1
  225. package/dist/web/components/Drawer.js.zyzz.json +1 -1
  226. package/dist/web/components/Empty.css +1 -1
  227. package/dist/web/components/Empty.d.ts +2 -0
  228. package/dist/web/components/Empty.d.ts.map +1 -1
  229. package/dist/web/components/Empty.js +7 -5
  230. package/dist/web/components/Empty.js.map +1 -1
  231. package/dist/web/components/Empty.js.zyzz.json +1 -1
  232. package/dist/web/components/Field.css +1 -1
  233. package/dist/web/components/Field.d.ts +16 -21
  234. package/dist/web/components/Field.d.ts.map +1 -1
  235. package/dist/web/components/Field.js +38 -36
  236. package/dist/web/components/Field.js.map +1 -1
  237. package/dist/web/components/Field.js.zyzz.json +1 -1
  238. package/dist/web/components/Fieldset.css +1 -1
  239. package/dist/web/components/Fieldset.d.ts +9 -18
  240. package/dist/web/components/Fieldset.d.ts.map +1 -1
  241. package/dist/web/components/Fieldset.js +12 -15
  242. package/dist/web/components/Fieldset.js.map +1 -1
  243. package/dist/web/components/Fieldset.js.zyzz.json +1 -1
  244. package/dist/web/components/Frame.css +1 -1
  245. package/dist/web/components/Frame.d.ts +13 -19
  246. package/dist/web/components/Frame.d.ts.map +1 -1
  247. package/dist/web/components/Frame.js +9 -11
  248. package/dist/web/components/Frame.js.map +1 -1
  249. package/dist/web/components/Frame.js.zyzz.json +1 -1
  250. package/dist/web/components/Gauge.css +1 -1
  251. package/dist/web/components/Gauge.d.ts +2 -2
  252. package/dist/web/components/Gauge.d.ts.map +1 -1
  253. package/dist/web/components/Gauge.js +6 -6
  254. package/dist/web/components/Gauge.js.map +1 -1
  255. package/dist/web/components/Gauge.js.zyzz.json +1 -1
  256. package/dist/web/components/Grid.css +1 -1
  257. package/dist/web/components/Grid.js +1 -3
  258. package/dist/web/components/Grid.js.zyzz.json +1 -1
  259. package/dist/web/components/Hex.css +1 -1
  260. package/dist/web/components/Hex.d.ts +10 -10
  261. package/dist/web/components/Hex.js +6 -6
  262. package/dist/web/components/Hex.js.map +1 -1
  263. package/dist/web/components/Hex.js.zyzz.json +1 -1
  264. package/dist/web/components/IconTile.css +1 -0
  265. package/dist/web/components/IconTile.d.ts +62 -0
  266. package/dist/web/components/IconTile.d.ts.map +1 -0
  267. package/dist/web/components/IconTile.js +28 -0
  268. package/dist/web/components/IconTile.js.map +1 -0
  269. package/dist/web/components/IconTile.js.zyzz.json +1 -0
  270. package/dist/web/components/Identicon.css +1 -1
  271. package/dist/web/components/Identicon.d.ts +1 -0
  272. package/dist/web/components/Identicon.d.ts.map +1 -1
  273. package/dist/web/components/Identicon.js +1 -3
  274. package/dist/web/components/Identicon.js.map +1 -1
  275. package/dist/web/components/Identicon.js.zyzz.json +1 -1
  276. package/dist/web/components/Inline.css +1 -1
  277. package/dist/web/components/Inline.js +1 -3
  278. package/dist/web/components/Inline.js.zyzz.json +1 -1
  279. package/dist/web/components/Inset.css +1 -1
  280. package/dist/web/components/Inset.js +1 -3
  281. package/dist/web/components/Inset.js.zyzz.json +1 -1
  282. package/dist/web/components/Kbd.css +1 -1
  283. package/dist/web/components/Kbd.d.ts +7 -7
  284. package/dist/web/components/Kbd.js +3 -3
  285. package/dist/web/components/Kbd.js.map +1 -1
  286. package/dist/web/components/Kbd.js.zyzz.json +1 -1
  287. package/dist/web/components/ListGroup.css +1 -0
  288. package/dist/web/components/ListGroup.d.ts +483 -0
  289. package/dist/web/components/ListGroup.d.ts.map +1 -0
  290. package/dist/web/components/ListGroup.js +266 -0
  291. package/dist/web/components/ListGroup.js.map +1 -0
  292. package/dist/web/components/ListGroup.js.zyzz.json +1 -0
  293. package/dist/web/components/LoadingDots.css +1 -1
  294. package/dist/web/components/LoadingDots.d.ts.map +1 -1
  295. package/dist/web/components/LoadingDots.js +3 -3
  296. package/dist/web/components/LoadingDots.js.map +1 -1
  297. package/dist/web/components/LoadingDots.js.zyzz.json +1 -1
  298. package/dist/web/components/Menu.css +1 -1
  299. package/dist/web/components/Menu.d.ts +39 -20
  300. package/dist/web/components/Menu.d.ts.map +1 -1
  301. package/dist/web/components/Menu.js +15 -10
  302. package/dist/web/components/Menu.js.map +1 -1
  303. package/dist/web/components/Menu.js.zyzz.json +1 -1
  304. package/dist/web/components/NetworkLogo.css +1 -0
  305. package/dist/web/components/NetworkLogo.d.ts +58 -0
  306. package/dist/web/components/NetworkLogo.d.ts.map +1 -0
  307. package/dist/web/components/NetworkLogo.js +40 -0
  308. package/dist/web/components/NetworkLogo.js.map +1 -0
  309. package/dist/web/components/NetworkLogo.js.zyzz.json +1 -0
  310. package/dist/web/components/NumberField.css +1 -1
  311. package/dist/web/components/NumberField.d.ts +3 -3
  312. package/dist/web/components/NumberField.d.ts.map +1 -1
  313. package/dist/web/components/NumberField.js +8 -8
  314. package/dist/web/components/NumberField.js.map +1 -1
  315. package/dist/web/components/NumberField.js.zyzz.json +1 -1
  316. package/dist/web/components/OtpField.css +1 -1
  317. package/dist/web/components/OtpField.d.ts +8 -68
  318. package/dist/web/components/OtpField.d.ts.map +1 -1
  319. package/dist/web/components/OtpField.js +13 -10
  320. package/dist/web/components/OtpField.js.map +1 -1
  321. package/dist/web/components/OtpField.js.zyzz.json +1 -1
  322. package/dist/web/components/Pagination.css +1 -1
  323. package/dist/web/components/Pagination.d.ts +16 -14
  324. package/dist/web/components/Pagination.d.ts.map +1 -1
  325. package/dist/web/components/Pagination.js +6 -6
  326. package/dist/web/components/Pagination.js.map +1 -1
  327. package/dist/web/components/Pagination.js.zyzz.json +1 -1
  328. package/dist/web/components/Popover.css +1 -1
  329. package/dist/web/components/Popover.js +5 -5
  330. package/dist/web/components/Popover.js.map +1 -1
  331. package/dist/web/components/Popover.js.zyzz.json +1 -1
  332. package/dist/web/components/Progress.css +1 -1
  333. package/dist/web/components/Progress.d.ts +2 -2
  334. package/dist/web/components/Progress.d.ts.map +1 -1
  335. package/dist/web/components/Progress.js +6 -6
  336. package/dist/web/components/Progress.js.map +1 -1
  337. package/dist/web/components/Progress.js.zyzz.json +1 -1
  338. package/dist/web/components/Qr.css +1 -1
  339. package/dist/web/components/Qr.d.ts +1 -1
  340. package/dist/web/components/Qr.js +1 -3
  341. package/dist/web/components/Qr.js.map +1 -1
  342. package/dist/web/components/Qr.js.zyzz.json +1 -1
  343. package/dist/web/components/RadioGroup.css +1 -1
  344. package/dist/web/components/RadioGroup.d.ts.map +1 -1
  345. package/dist/web/components/RadioGroup.js +4 -4
  346. package/dist/web/components/RadioGroup.js.map +1 -1
  347. package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
  348. package/dist/web/components/SecretValue.css +1 -1
  349. package/dist/web/components/SecretValue.d.ts +7 -7
  350. package/dist/web/components/SecretValue.js +4 -4
  351. package/dist/web/components/SecretValue.js.map +1 -1
  352. package/dist/web/components/SecretValue.js.zyzz.json +1 -1
  353. package/dist/web/components/Select.css +1 -1
  354. package/dist/web/components/Select.d.ts +64 -2
  355. package/dist/web/components/Select.d.ts.map +1 -1
  356. package/dist/web/components/Select.js +24 -7
  357. package/dist/web/components/Select.js.map +1 -1
  358. package/dist/web/components/Select.js.zyzz.json +1 -1
  359. package/dist/web/components/Separator.css +1 -1
  360. package/dist/web/components/Separator.d.ts +17 -3
  361. package/dist/web/components/Separator.d.ts.map +1 -1
  362. package/dist/web/components/Separator.js +40 -5
  363. package/dist/web/components/Separator.js.map +1 -1
  364. package/dist/web/components/Separator.js.zyzz.json +1 -1
  365. package/dist/web/components/SidebarMenu.css +1 -1
  366. package/dist/web/components/SidebarMenu.d.ts +186 -39
  367. package/dist/web/components/SidebarMenu.d.ts.map +1 -1
  368. package/dist/web/components/SidebarMenu.js +91 -19
  369. package/dist/web/components/SidebarMenu.js.map +1 -1
  370. package/dist/web/components/SidebarMenu.js.zyzz.json +1 -1
  371. package/dist/web/components/Skeleton.css +1 -1
  372. package/dist/web/components/Skeleton.d.ts +5 -3
  373. package/dist/web/components/Skeleton.d.ts.map +1 -1
  374. package/dist/web/components/Skeleton.js +1 -3
  375. package/dist/web/components/Skeleton.js.map +1 -1
  376. package/dist/web/components/Skeleton.js.zyzz.json +1 -1
  377. package/dist/web/components/Slider.css +1 -1
  378. package/dist/web/components/Slider.d.ts.map +1 -1
  379. package/dist/web/components/Slider.js +6 -6
  380. package/dist/web/components/Slider.js.map +1 -1
  381. package/dist/web/components/Slider.js.zyzz.json +1 -1
  382. package/dist/web/components/Snippet.css +1 -1
  383. package/dist/web/components/Snippet.d.ts +27 -65
  384. package/dist/web/components/Snippet.d.ts.map +1 -1
  385. package/dist/web/components/Snippet.js +48 -11
  386. package/dist/web/components/Snippet.js.map +1 -1
  387. package/dist/web/components/Snippet.js.zyzz.json +1 -1
  388. package/dist/web/components/Spinner.css +1 -1
  389. package/dist/web/components/Spinner.d.ts +25 -16
  390. package/dist/web/components/Spinner.d.ts.map +1 -1
  391. package/dist/web/components/Spinner.js +13 -8
  392. package/dist/web/components/Spinner.js.map +1 -1
  393. package/dist/web/components/Spinner.js.zyzz.json +1 -1
  394. package/dist/web/components/SplitBar.css +1 -0
  395. package/dist/web/components/SplitBar.d.ts +99 -0
  396. package/dist/web/components/SplitBar.d.ts.map +1 -0
  397. package/dist/web/components/SplitBar.js +49 -0
  398. package/dist/web/components/SplitBar.js.map +1 -0
  399. package/dist/web/components/SplitBar.js.zyzz.json +1 -0
  400. package/dist/web/components/SplitButton.css +1 -1
  401. package/dist/web/components/SplitButton.d.ts +4 -1
  402. package/dist/web/components/SplitButton.d.ts.map +1 -1
  403. package/dist/web/components/SplitButton.js +2 -2
  404. package/dist/web/components/SplitButton.js.map +1 -1
  405. package/dist/web/components/SplitButton.js.zyzz.json +1 -1
  406. package/dist/web/components/Stack.css +1 -1
  407. package/dist/web/components/Stack.js +1 -3
  408. package/dist/web/components/Stack.js.zyzz.json +1 -1
  409. package/dist/web/components/StatusChip.css +1 -0
  410. package/dist/web/components/StatusChip.d.ts +162 -0
  411. package/dist/web/components/StatusChip.d.ts.map +1 -0
  412. package/dist/web/components/StatusChip.js +37 -0
  413. package/dist/web/components/StatusChip.js.map +1 -0
  414. package/dist/web/components/StatusChip.js.zyzz.json +1 -0
  415. package/dist/web/components/StatusRow.css +1 -0
  416. package/dist/web/components/StatusRow.d.ts +121 -0
  417. package/dist/web/components/StatusRow.d.ts.map +1 -0
  418. package/dist/web/components/StatusRow.js +75 -0
  419. package/dist/web/components/StatusRow.js.map +1 -0
  420. package/dist/web/components/StatusRow.js.zyzz.json +1 -0
  421. package/dist/web/components/Stepper.css +1 -1
  422. package/dist/web/components/Stepper.d.ts +10 -7
  423. package/dist/web/components/Stepper.d.ts.map +1 -1
  424. package/dist/web/components/Stepper.js +7 -6
  425. package/dist/web/components/Stepper.js.map +1 -1
  426. package/dist/web/components/Stepper.js.zyzz.json +1 -1
  427. package/dist/web/components/Surface.css +1 -1
  428. package/dist/web/components/Surface.d.ts +56 -119
  429. package/dist/web/components/Surface.d.ts.map +1 -1
  430. package/dist/web/components/Surface.js +19 -14
  431. package/dist/web/components/Surface.js.map +1 -1
  432. package/dist/web/components/Surface.js.zyzz.json +1 -1
  433. package/dist/web/components/Switch.css +1 -1
  434. package/dist/web/components/Switch.d.ts +14 -18
  435. package/dist/web/components/Switch.d.ts.map +1 -1
  436. package/dist/web/components/Switch.js +14 -16
  437. package/dist/web/components/Switch.js.map +1 -1
  438. package/dist/web/components/Switch.js.zyzz.json +1 -1
  439. package/dist/web/components/Table.css +1 -1
  440. package/dist/web/components/Table.d.ts +152 -67
  441. package/dist/web/components/Table.d.ts.map +1 -1
  442. package/dist/web/components/Table.js +91 -25
  443. package/dist/web/components/Table.js.map +1 -1
  444. package/dist/web/components/Table.js.zyzz.json +1 -1
  445. package/dist/web/components/Tabs.css +1 -1
  446. package/dist/web/components/Tabs.d.ts +49 -42
  447. package/dist/web/components/Tabs.d.ts.map +1 -1
  448. package/dist/web/components/Tabs.js +44 -15
  449. package/dist/web/components/Tabs.js.map +1 -1
  450. package/dist/web/components/Tabs.js.zyzz.json +1 -1
  451. package/dist/web/components/TempoLogo.css +1 -0
  452. package/dist/web/components/TempoLogo.d.ts +47 -0
  453. package/dist/web/components/TempoLogo.d.ts.map +1 -0
  454. package/dist/web/components/TempoLogo.js +48 -0
  455. package/dist/web/components/TempoLogo.js.map +1 -0
  456. package/dist/web/components/TempoLogo.js.zyzz.json +1 -0
  457. package/dist/web/components/TextInput.css +1 -0
  458. package/dist/web/components/{Input.d.ts → TextInput.d.ts} +27 -18
  459. package/dist/web/components/TextInput.d.ts.map +1 -0
  460. package/dist/web/components/TextInput.js +138 -0
  461. package/dist/web/components/TextInput.js.map +1 -0
  462. package/dist/web/components/TextInput.js.zyzz.json +1 -0
  463. package/dist/web/components/Textarea.css +1 -1
  464. package/dist/web/components/Textarea.d.ts +29 -74
  465. package/dist/web/components/Textarea.d.ts.map +1 -1
  466. package/dist/web/components/Textarea.js +5 -14
  467. package/dist/web/components/Textarea.js.map +1 -1
  468. package/dist/web/components/Textarea.js.zyzz.json +1 -1
  469. package/dist/web/components/Toast.css +1 -1
  470. package/dist/web/components/Toast.d.ts +4 -4
  471. package/dist/web/components/Toast.d.ts.map +1 -1
  472. package/dist/web/components/Toast.js +10 -10
  473. package/dist/web/components/Toast.js.map +1 -1
  474. package/dist/web/components/Toast.js.zyzz.json +1 -1
  475. package/dist/web/components/Token.css +1 -1
  476. package/dist/web/components/Token.d.ts +32 -90
  477. package/dist/web/components/Token.d.ts.map +1 -1
  478. package/dist/web/components/Token.js +26 -90
  479. package/dist/web/components/Token.js.map +1 -1
  480. package/dist/web/components/Token.js.zyzz.json +1 -1
  481. package/dist/web/components/TokenLogo.css +1 -0
  482. package/dist/web/components/TokenLogo.d.ts +117 -0
  483. package/dist/web/components/TokenLogo.d.ts.map +1 -0
  484. package/dist/web/components/TokenLogo.js +112 -0
  485. package/dist/web/components/TokenLogo.js.map +1 -0
  486. package/dist/web/components/TokenLogo.js.zyzz.json +1 -0
  487. package/dist/web/components/Tooltip.css +1 -1
  488. package/dist/web/components/Tooltip.js +2 -2
  489. package/dist/web/components/Tooltip.js.map +1 -1
  490. package/dist/web/components/Tooltip.js.zyzz.json +1 -1
  491. package/dist/web/components/VerificationCode.css +1 -0
  492. package/dist/web/components/VerificationCode.d.ts +47 -0
  493. package/dist/web/components/VerificationCode.d.ts.map +1 -0
  494. package/dist/web/components/VerificationCode.js +55 -0
  495. package/dist/web/components/VerificationCode.js.map +1 -0
  496. package/dist/web/components/VerificationCode.js.zyzz.json +1 -0
  497. package/dist/web/components/Visual.css +1 -0
  498. package/dist/web/components/Visual.d.ts +65 -0
  499. package/dist/web/components/Visual.d.ts.map +1 -0
  500. package/dist/web/components/Visual.js +51 -0
  501. package/dist/web/components/Visual.js.map +1 -0
  502. package/dist/web/components/Visual.js.zyzz.json +1 -0
  503. package/dist/web/components/internal/Field.css +1 -1
  504. package/dist/web/components/internal/Field.d.ts +41 -87
  505. package/dist/web/components/internal/Field.d.ts.map +1 -1
  506. package/dist/web/components/internal/Field.js +9 -8
  507. package/dist/web/components/internal/Field.js.map +1 -1
  508. package/dist/web/components/internal/Field.js.zyzz.json +1 -1
  509. package/dist/web/components/internal/InputGroup.css +1 -1
  510. package/dist/web/components/internal/InputGroup.d.ts +38 -99
  511. package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
  512. package/dist/web/components/internal/InputGroup.js +6 -8
  513. package/dist/web/components/internal/InputGroup.js.map +1 -1
  514. package/dist/web/components/internal/InputGroup.js.zyzz.json +1 -1
  515. package/dist/web/components/internal/Listbox.css +1 -1
  516. package/dist/web/components/internal/Listbox.d.ts +8 -8
  517. package/dist/web/components/internal/Listbox.js +13 -13
  518. package/dist/web/components/internal/Listbox.js.map +1 -1
  519. package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
  520. package/dist/web/components/internal/RowDisabled.d.ts +3 -0
  521. package/dist/web/components/internal/RowDisabled.d.ts.map +1 -0
  522. package/dist/web/components/internal/RowDisabled.js +9 -0
  523. package/dist/web/components/internal/RowDisabled.js.map +1 -0
  524. package/dist/web/components/internal/RowsSize.d.ts +2 -3
  525. package/dist/web/components/internal/RowsSize.d.ts.map +1 -1
  526. package/dist/web/components/internal/RowsSize.js +3 -3
  527. package/dist/web/components/internal/RowsSize.js.map +1 -1
  528. package/dist/web/index.d.ts +18 -6
  529. package/dist/web/index.d.ts.map +1 -1
  530. package/dist/web/index.js +18 -6
  531. package/dist/web/index.js.map +1 -1
  532. package/dist/web/index.js.zyzz.json +1 -1
  533. package/dist/web/vars.d.ts +591 -699
  534. package/dist/web/vars.d.ts.map +1 -1
  535. package/dist/web/vars.js +7 -6
  536. package/dist/web/vars.js.map +1 -1
  537. package/dist/web/vars.js.zyzz.json +1 -1
  538. package/dist/web/zyzz.config.d.ts +2935 -3480
  539. package/dist/web/zyzz.config.d.ts.map +1 -1
  540. package/dist/web/zyzz.config.js +39 -3
  541. package/dist/web/zyzz.config.js.map +1 -1
  542. package/dist/web/zyzz.config.js.zyzz.json +1 -1
  543. package/package.json +180 -4
  544. package/src/fonts/Inter-cyrillic-ext.woff2 +0 -0
  545. package/src/fonts/Inter-cyrillic.woff2 +0 -0
  546. package/src/fonts/Inter-greek-ext.woff2 +0 -0
  547. package/src/fonts/Inter-greek.woff2 +0 -0
  548. package/src/fonts/Inter-latin-ext.woff2 +0 -0
  549. package/src/fonts/Inter-latin.woff2 +0 -0
  550. package/src/fonts/Inter-symbols.woff2 +0 -0
  551. package/src/fonts/Inter-vietnamese.woff2 +0 -0
  552. package/src/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  553. package/src/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  554. package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
  555. package/src/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  556. package/src/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  557. package/src/fonts/JetBrainsMono-Medium.woff2 +0 -0
  558. package/src/fonts/{Geist-OFL.txt → JetBrainsMono-OFL.txt} +4 -3
  559. package/src/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  560. package/src/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  561. package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
  562. package/src/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  563. package/src/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  564. package/src/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  565. package/src/fonts/Pilat-Black-latin.woff2 +0 -0
  566. package/src/fonts/Pilat-Black-other.woff2 +0 -0
  567. package/src/fonts/Pilat-Black.woff2 +0 -0
  568. package/src/fonts/Pilat-Bold-latin.woff2 +0 -0
  569. package/src/fonts/Pilat-Bold-other.woff2 +0 -0
  570. package/src/fonts/Pilat-Bold.woff2 +0 -0
  571. package/src/fonts/Pilat-Book-latin.woff2 +0 -0
  572. package/src/fonts/Pilat-Book-other.woff2 +0 -0
  573. package/src/fonts/Pilat-Book.woff2 +0 -0
  574. package/src/fonts/Pilat-Demi-latin.woff2 +0 -0
  575. package/src/fonts/Pilat-Demi-other.woff2 +0 -0
  576. package/src/fonts/Pilat-Demi.woff2 +0 -0
  577. package/src/fonts/Pilat-Heavy-latin.woff2 +0 -0
  578. package/src/fonts/Pilat-Heavy-other.woff2 +0 -0
  579. package/src/fonts/Pilat-Heavy.woff2 +0 -0
  580. package/src/fonts/Pilat-Light-latin.woff2 +0 -0
  581. package/src/fonts/Pilat-Light-other.woff2 +0 -0
  582. package/src/fonts/Pilat-Light.woff2 +0 -0
  583. package/src/fonts/Pilat-Regular-latin.woff2 +0 -0
  584. package/src/fonts/Pilat-Regular-other.woff2 +0 -0
  585. package/src/fonts/Pilat-Regular.woff2 +0 -0
  586. package/src/fonts/Pilat-Thin-latin.woff2 +0 -0
  587. package/src/fonts/Pilat-Thin-other.woff2 +0 -0
  588. package/src/fonts/Pilat-Thin.woff2 +0 -0
  589. package/src/fonts/README.md +22 -1
  590. package/src/mobile/Haptics.ts +55 -0
  591. package/src/mobile/README.md +97 -1
  592. package/src/mobile/components/Button.tsx +3 -3
  593. package/src/mobile/components/IconButton.tsx +3 -3
  594. package/src/mobile/components/Spinner.tsx +1 -1
  595. package/src/mobile/components/TextButton.tsx +3 -3
  596. package/src/mobile/components/TextInput.tsx +1 -1
  597. package/src/mobile/components/Toast.tsx +1 -1
  598. package/src/mobile/components/Toggle.tsx +2 -2
  599. package/src/mobile/index.ts +2 -0
  600. package/src/mobile/useColor.ts +31 -0
  601. package/src/oxlint/rules/PreferComponent.ts +6 -6
  602. package/src/web/README.md +7 -7
  603. package/src/web/components/Accordion.tsx +8 -8
  604. package/src/web/components/AgentLogo.tsx +330 -0
  605. package/src/web/components/Alert.tsx +301 -0
  606. package/src/web/components/AlertDialog.tsx +47 -111
  607. package/src/web/components/Amount.tsx +6 -6
  608. package/src/web/components/AmountInput.tsx +59 -134
  609. package/src/web/components/AppShell.tsx +95 -36
  610. package/src/web/components/AssetChip.tsx +110 -0
  611. package/src/web/components/Autocomplete.tsx +4 -4
  612. package/src/web/components/Avatar.tsx +42 -119
  613. package/src/web/components/Badge.tsx +120 -0
  614. package/src/web/components/Banner.tsx +13 -11
  615. package/src/web/components/BarChart.tsx +427 -0
  616. package/src/web/components/Breadcrumbs.tsx +7 -7
  617. package/src/web/components/Button.tsx +156 -42
  618. package/src/web/components/ButtonGroup.tsx +59 -0
  619. package/src/web/components/Calendar.tsx +15 -13
  620. package/src/web/components/Checkbox.tsx +14 -11
  621. package/src/web/components/ChoiceGroup.tsx +107 -26
  622. package/src/web/components/Choicebox.tsx +30 -28
  623. package/src/web/components/Combobox.tsx +10 -8
  624. package/src/web/components/CopyButton.tsx +1 -1
  625. package/src/web/components/DatePicker.tsx +42 -61
  626. package/src/web/components/Dialog.tsx +267 -71
  627. package/src/web/components/Drawer.tsx +45 -18
  628. package/src/web/components/Empty.tsx +13 -8
  629. package/src/web/components/Field.tsx +78 -132
  630. package/src/web/components/Fieldset.tsx +16 -37
  631. package/src/web/components/Frame.tsx +13 -20
  632. package/src/web/components/Gauge.tsx +4 -4
  633. package/src/web/components/Hex.tsx +11 -11
  634. package/src/web/components/IconTile.tsx +57 -0
  635. package/src/web/components/Identicon.tsx +6 -1
  636. package/src/web/components/Kbd.tsx +8 -8
  637. package/src/web/components/ListGroup.tsx +776 -0
  638. package/src/web/components/LoadingDots.tsx +1 -0
  639. package/src/web/components/Menu.tsx +50 -35
  640. package/src/web/components/NetworkLogo.tsx +208 -0
  641. package/src/web/components/NumberField.tsx +18 -33
  642. package/src/web/components/OtpField.tsx +51 -102
  643. package/src/web/components/Pagination.tsx +16 -14
  644. package/src/web/components/Popover.tsx +8 -8
  645. package/src/web/components/Progress.tsx +7 -5
  646. package/src/web/components/Qr.tsx +1 -1
  647. package/src/web/components/RadioGroup.tsx +9 -7
  648. package/src/web/components/SecretValue.tsx +11 -11
  649. package/src/web/components/Select.tsx +87 -26
  650. package/src/web/components/Separator.tsx +95 -7
  651. package/src/web/components/SidebarMenu.tsx +294 -51
  652. package/src/web/components/Skeleton.tsx +5 -5
  653. package/src/web/components/Slider.tsx +12 -6
  654. package/src/web/components/Snippet.tsx +134 -75
  655. package/src/web/components/Spinner.tsx +38 -12
  656. package/src/web/components/SplitBar.tsx +158 -0
  657. package/src/web/components/SplitButton.tsx +26 -17
  658. package/src/web/components/StatusChip.tsx +138 -0
  659. package/src/web/components/StatusRow.tsx +162 -0
  660. package/src/web/components/Stepper.tsx +11 -8
  661. package/src/web/components/Surface.tsx +70 -95
  662. package/src/web/components/Switch.tsx +25 -29
  663. package/src/web/components/Table.tsx +281 -70
  664. package/src/web/components/Tabs.tsx +93 -50
  665. package/src/web/components/TempoLogo.tsx +89 -0
  666. package/src/web/components/{Input.tsx → TextInput.tsx} +87 -118
  667. package/src/web/components/Textarea.tsx +33 -78
  668. package/src/web/components/Toast.tsx +24 -22
  669. package/src/web/components/Token.tsx +106 -172
  670. package/src/web/components/TokenLogo.tsx +217 -0
  671. package/src/web/components/Tooltip.tsx +3 -3
  672. package/src/web/components/VerificationCode.tsx +97 -0
  673. package/src/web/components/Visual.tsx +166 -0
  674. package/src/web/components/internal/Field.ts +63 -72
  675. package/src/web/components/internal/InputGroup.ts +44 -101
  676. package/src/web/components/internal/Listbox.ts +20 -20
  677. package/src/web/components/internal/RowDisabled.ts +9 -0
  678. package/src/web/components/internal/RowsSize.ts +3 -5
  679. package/src/web/components/visuals/Passkey.svg +21 -0
  680. package/src/web/index.ts +18 -6
  681. package/src/web/logos/Base.svg +10 -0
  682. package/src/web/logos/Ethereum.svg +16 -0
  683. package/src/web/logos/HyperEVM.svg +27 -0
  684. package/src/web/logos/Polygon.svg +15 -0
  685. package/src/web/logos/README.md +14 -0
  686. package/src/web/logos/Solana.svg +11 -0
  687. package/src/web/logos/Tempo.svg +11 -0
  688. package/src/web/vars.ts +481 -526
  689. package/src/web/zyzz.config.ts +326 -12
  690. package/dist/fonts/GeistMono-Variable.woff2 +0 -0
  691. package/dist/mobile/internal/useColor.d.ts +0 -4
  692. package/dist/mobile/internal/useColor.d.ts.map +0 -1
  693. package/dist/mobile/internal/useColor.js +0 -12
  694. package/dist/mobile/internal/useColor.js.map +0 -1
  695. package/dist/web/components/AlertDialog.css +0 -1
  696. package/dist/web/components/Callout.css +0 -1
  697. package/dist/web/components/Callout.d.ts +0 -161
  698. package/dist/web/components/Callout.d.ts.map +0 -1
  699. package/dist/web/components/Callout.js +0 -83
  700. package/dist/web/components/Callout.js.map +0 -1
  701. package/dist/web/components/Callout.js.zyzz.json +0 -1
  702. package/dist/web/components/IconChip.css +0 -1
  703. package/dist/web/components/IconChip.d.ts +0 -53
  704. package/dist/web/components/IconChip.d.ts.map +0 -1
  705. package/dist/web/components/IconChip.js +0 -29
  706. package/dist/web/components/IconChip.js.map +0 -1
  707. package/dist/web/components/IconChip.js.zyzz.json +0 -1
  708. package/dist/web/components/Input.css +0 -1
  709. package/dist/web/components/Input.d.ts.map +0 -1
  710. package/dist/web/components/Input.js +0 -118
  711. package/dist/web/components/Input.js.map +0 -1
  712. package/dist/web/components/Input.js.zyzz.json +0 -1
  713. package/dist/web/components/Rows.css +0 -1
  714. package/dist/web/components/Rows.d.ts +0 -432
  715. package/dist/web/components/Rows.d.ts.map +0 -1
  716. package/dist/web/components/Rows.js +0 -160
  717. package/dist/web/components/Rows.js.map +0 -1
  718. package/dist/web/components/Rows.js.zyzz.json +0 -1
  719. package/dist/web/components/Tag.css +0 -1
  720. package/dist/web/components/Tag.d.ts +0 -171
  721. package/dist/web/components/Tag.d.ts.map +0 -1
  722. package/dist/web/components/Tag.js +0 -52
  723. package/dist/web/components/Tag.js.map +0 -1
  724. package/dist/web/components/Tag.js.zyzz.json +0 -1
  725. package/dist/web/components/internal/FieldVariant.d.ts +0 -4
  726. package/dist/web/components/internal/FieldVariant.d.ts.map +0 -1
  727. package/dist/web/components/internal/FieldVariant.js +0 -4
  728. package/dist/web/components/internal/FieldVariant.js.map +0 -1
  729. package/src/fonts/GeistMono-Variable.woff2 +0 -0
  730. package/src/mobile/internal/useColor.ts +0 -13
  731. package/src/web/components/Callout.tsx +0 -241
  732. package/src/web/components/IconChip.tsx +0 -54
  733. package/src/web/components/Rows.tsx +0 -529
  734. package/src/web/components/Tag.tsx +0 -149
  735. package/src/web/components/internal/FieldVariant.ts +0 -6
@@ -2,14 +2,14 @@ import * as BaseUi from '@base-ui/react/input'
2
2
  import { type ComponentPropsWithRef, useContext, useMemo, useRef } from 'react'
3
3
  import type * as zyzz from 'zyzz'
4
4
  import { style } from '../zyzz.config.js'
5
- import { Close } from '../icons/Close.js'
6
5
  import * as InputGroup from './internal/InputGroup.js'
7
6
 
8
7
  /**
9
- * Filled text field. Compose `Group` with optional `Prefix`, `Control`, `Suffix` and `Clear`.
10
- * Place it inside `Field.Root` to get a label, description, error and the stacked variant.
11
- * `invalid` draws a red ring and `success` a green tint and ring, each also inherited from
12
- * `Field.Root`. Entering either state after mount plays a one-shot nudge or pop.
8
+ * A 48px text field. Compose `Group` with optional `Prefix`, `Control`, `Suffix` and `Clear`, and
9
+ * place it inside `Field.Root` to get a label, description and error. Focus turns the field
10
+ * elevated with a 1px border. `invalid` fills it red and `success` ends it with a check, each also
11
+ * inherited from `Field.Root`. Entering either state after mount plays a one-shot nudge or pop.
12
+ * For search, put a `Search` icon in `Prefix` and add `Clear`.
13
13
  *
14
14
  * - Give every control a visible `Field.Label`. A placeholder is not a label.
15
15
  * - Set `autoComplete`, `inputMode` and `type` so browsers and keyboards can help fill the field.
@@ -18,11 +18,11 @@ import * as InputGroup from './internal/InputGroup.js'
18
18
  * @example
19
19
  * <Field.Root>
20
20
  * <Field.Label>Amount</Field.Label>
21
- * <Input.Group>
22
- * <Input.Prefix>$</Input.Prefix>
23
- * <Input.Control inputMode="decimal" />
24
- * <Input.Suffix>USDC</Input.Suffix>
25
- * </Input.Group>
21
+ * <TextInput.Group>
22
+ * <TextInput.Prefix>$</TextInput.Prefix>
23
+ * <TextInput.Control inputMode="decimal" />
24
+ * <TextInput.Suffix>USDC</TextInput.Suffix>
25
+ * </TextInput.Group>
26
26
  * </Field.Root>
27
27
  *
28
28
  * @see {@link https://base-ui.com/react/components/input | Base UI Input}
@@ -31,19 +31,10 @@ import * as InputGroup from './internal/InputGroup.js'
31
31
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/identify-input-purpose.html | WCAG 2.2 Identify Input Purpose}
32
32
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/error-identification.html | WCAG 2.2 Error Identification}
33
33
  */
34
- export namespace Input {
34
+ export namespace TextInput {
35
35
  /** The field surface, rendered as a `div` that holds the other parts. */
36
36
  export function Group(props: Group.Props) {
37
- const {
38
- className,
39
- invalid = false,
40
- ref,
41
- size,
42
- success = false,
43
- variant,
44
- vars,
45
- ...attributes
46
- } = props
37
+ const { className, invalid = false, ref, success = false, variant, vars, ...attributes } = props
47
38
  const control = useRef<HTMLInputElement | null>(null)
48
39
  const element = useRef<HTMLDivElement | null>(null)
49
40
  const context = useMemo(() => ({ control, invalid }), [invalid])
@@ -54,13 +45,7 @@ export namespace Input {
54
45
  <InputGroup.Context.Provider value={context}>
55
46
  <div
56
47
  {...attributes}
57
- {...InputGroup.styles.group({
58
- className,
59
- size,
60
- style: props.style,
61
- variant,
62
- vars,
63
- })}
48
+ {...InputGroup.styles.group({ className, style: props.style, variant, vars })}
64
49
  data-invalid={invalid || undefined}
65
50
  data-success={success || undefined}
66
51
  ref={(node) => {
@@ -77,13 +62,13 @@ export namespace Input {
77
62
  export type Props = ComponentPropsWithRef<'div'> &
78
63
  zyzz.Props.Variants<typeof InputGroup.styles.group> & {
79
64
  /**
80
- * Draws the red ring and sets `aria-invalid` on `Input.Control`.
65
+ * Fills the field red and sets `aria-invalid` on `TextInput.Control`.
81
66
  *
82
67
  * @default false
83
68
  */
84
69
  invalid?: boolean | undefined
85
70
  /**
86
- * Draws the green tint and ring. It sets no ARIA state.
71
+ * Ends the field with a check. It sets no ARIA state.
87
72
  *
88
73
  * @default false
89
74
  */
@@ -93,10 +78,12 @@ export namespace Input {
93
78
 
94
79
  /**
95
80
  * The native `input`. Inside `Field.Root`, Base UI links it to the label, description and error.
96
- * `onValueChange` receives the new string value.
81
+ * `onValueChange` receives the new string value. In a group with an enabled `TextInput.Clear`,
82
+ * Escape empties a filled, editable control and stops there, so an enclosing dialog closes only on
83
+ * the next Escape.
97
84
  */
98
85
  export function Control(props: Control.Props) {
99
- const { className, ref, vars, ...attributes } = props
86
+ const { className, onKeyDown, ref, vars, ...attributes } = props
100
87
  const group = useContext(InputGroup.Context)
101
88
 
102
89
  return (
@@ -104,6 +91,17 @@ export namespace Input {
104
91
  aria-invalid={group?.invalid || undefined}
105
92
  {...attributes}
106
93
  {...styles.control({ className, style: props.style, vars })}
94
+ onKeyDown={(event) => {
95
+ onKeyDown?.(event)
96
+ const input = event.currentTarget
97
+ if (event.defaultPrevented || event.key !== 'Escape' || !input.value) return
98
+ if (input.readOnly) return
99
+ if (!input.parentElement?.querySelector(':scope > [data-input-clear]:enabled')) return
100
+
101
+ clear(input)
102
+ event.preventDefault()
103
+ event.stopPropagation()
104
+ }}
107
105
  ref={(node) => {
108
106
  if (group) group.control.current = node as HTMLInputElement | null
109
107
  if (typeof ref === 'function') ref(node as HTMLInputElement | null)
@@ -119,7 +117,10 @@ export namespace Input {
119
117
  Pick<BaseUi.Input.Props, 'onValueChange' | 'render'>
120
118
  }
121
119
 
122
- /** Leading content before the control, such as a currency symbol or icon. */
120
+ /**
121
+ * Leading content before the control, such as a currency symbol or an icon that gives the field
122
+ * its meaning, like `Search`. Icons render at 16px.
123
+ */
123
124
  export function Prefix(props: Prefix.Props) {
124
125
  const { className, vars, ...attributes } = props
125
126
 
@@ -130,7 +131,7 @@ export namespace Input {
130
131
  export type Props = ComponentPropsWithRef<'span'> & zyzz.Props.Variants<typeof styles.prefix>
131
132
  }
132
133
 
133
- /** Trailing content after the control, such as a unit. */
134
+ /** Trailing content after the control, such as a unit or an icon. Icons size as in `Prefix`. */
134
135
  export function Suffix(props: Suffix.Props) {
135
136
  const { className, vars, ...attributes } = props
136
137
 
@@ -142,7 +143,7 @@ export namespace Input {
142
143
  }
143
144
 
144
145
  /**
145
- * Empties the control and returns focus to it. It renders a `Close` icon with
146
+ * Empties the control and returns focus to it. It renders a circled X with
146
147
  * `aria-label="Clear"` by default. It is visible only inside a `Field.Root` whose control has a
147
148
  * value, and calling `preventDefault` in `onClick` skips the clear.
148
149
  */
@@ -156,18 +157,28 @@ export namespace Input {
156
157
  type="button"
157
158
  {...attributes}
158
159
  {...styles.clear({ className, style: props.style, vars })}
160
+ data-input-clear=""
159
161
  onClick={(event) => {
160
162
  onClick?.(event)
161
163
  const input = group?.control.current
162
164
  if (event.defaultPrevented || !input) return
163
165
 
164
- // The native setter and a bubbling input event reach React for controlled and uncontrolled fields.
165
- Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set?.call(input, '')
166
- input.dispatchEvent(new Event('input', { bubbles: true }))
166
+ clear(input)
167
167
  input.focus()
168
168
  }}
169
169
  >
170
- {children ?? <Close />}
170
+ {children ?? (
171
+ // The icon set has no X Circle yet, so this draws its ring and cross at 1px.
172
+ <svg aria-hidden fill="none" height="1em" viewBox="0 0 16 16" width="1em">
173
+ <path
174
+ clipRule="evenodd"
175
+ d="M8 1.33301C11.6817 1.33318 14.666 4.31919 14.666 8.00098C14.6656 11.6824 11.6815 14.6668 8 14.667C4.31837 14.667 1.33345 11.6825 1.33301 8.00098C1.33301 4.31908 4.3181 1.33301 8 1.33301ZM8 2.33398C4.87039 2.33398 2.33301 4.87137 2.33301 8.00098C2.33345 11.1302 4.87066 13.667 8 13.667C11.1292 13.6668 13.6656 11.1301 13.666 8.00098C13.666 4.87147 11.1294 2.33416 8 2.33398Z"
176
+ fill="currentColor"
177
+ fillRule="evenodd"
178
+ />
179
+ <path d="M10 6 6 10M6 6l4 4" stroke="currentColor" strokeLinecap="round" />
180
+ </svg>
181
+ )}
171
182
  </button>
172
183
  )
173
184
  }
@@ -177,20 +188,30 @@ export namespace Input {
177
188
  }
178
189
  }
179
190
 
191
+ /** Empties the input through the native setter and a bubbling event, which reach React for controlled and uncontrolled fields. */
192
+ function clear(input: HTMLInputElement) {
193
+ Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set?.call(input, '')
194
+ input.dispatchEvent(new Event('input', { bubbles: true }))
195
+ }
196
+
180
197
  namespace styles {
181
- /** Scales with the group `size` and sits as far from the end edge as from the top. */
198
+ /**
199
+ * A circled X drawn in tertiary content. It sits 16px from the end edge and the top, and its hit
200
+ * area extends past its circle.
201
+ */
182
202
  export const clear = style(
183
203
  {
184
204
  alignItems: 'center',
185
- backgroundColor: 'grayAlpha.200',
205
+ backgroundColor: 'transparent !custom',
186
206
  border: 'none !custom',
187
207
  borderRadius: 'full',
188
- color: 'foreground',
208
+ color: 'content.tertiary',
209
+ cornerShape: 'round',
189
210
  cursor: 'pointer',
190
211
  display: 'inline-flex',
191
212
  flexShrink: '0 !custom',
192
- fontSize: '12',
193
- height: '24',
213
+ fontSize: '16',
214
+ height: '16',
194
215
  justifyContent: 'center',
195
216
  opacity: '0 !custom',
196
217
  outlineColor: 'transparent !custom',
@@ -202,15 +223,15 @@ namespace styles {
202
223
  position: 'relative',
203
224
  transform: 'scale(0.6) !custom',
204
225
  transitionDuration: '160',
205
- transitionProperty: 'background-color, opacity, outline-color, transform, visibility !custom',
226
+ transitionProperty: 'color, opacity, outline-color, transform, visibility !custom',
206
227
  transitionTimingFunction: 'snappy',
207
228
  visibility: 'hidden',
208
- width: '24',
229
+ width: '16',
209
230
  selectors: {
210
231
  '&::after': { content: '"" !custom', inset: '-8', position: 'absolute' },
211
232
  '&:active': { transform: 'scale(0.9) !custom', transitionDuration: '100' },
212
- '&:focus-visible': { outlineColor: 'blue.700' },
213
- '&:hover': { backgroundColor: 'grayAlpha.300' },
233
+ '&:focus-visible': { outlineColor: 'border.focus' },
234
+ '&:hover': { color: 'content.secondary' },
214
235
  '[data-filled] &': {
215
236
  opacity: '1 !custom',
216
237
  pointerEvents: 'auto',
@@ -218,123 +239,71 @@ namespace styles {
218
239
  visibility: 'visible',
219
240
  },
220
241
  '[data-filled] &:active': { transform: 'scale(0.9) !custom' },
221
- '[data-size="large"] > &:last-child': { marginInlineEnd: '-4' },
222
- '[data-size="medium"] > &': { fontSize: '12', height: '20', width: '20' },
223
- '[data-size="medium"] > &:last-child': { marginInlineEnd: '-6' },
224
- '[data-size="small"] > &': { fontSize: '12', height: '16', width: '16' },
225
- '[data-size="small"] > &:last-child': { marginInlineEnd: '-4' },
226
- // A small stacked field takes the medium size, so Clear takes the medium size too.
227
- '[data-variant="stacked"] > [data-size="small"] > &': {
228
- fontSize: '12',
229
- height: '20',
230
- width: '20',
231
- },
232
- '[data-variant="stacked"] > [data-size="small"] > &:last-child': {
233
- marginInlineEnd: '-6',
234
- },
235
242
  },
236
243
  '@media (forced-colors: active)': {
237
244
  outlineStyle: 'none !custom',
238
245
  selectors: { '&:focus-visible': { outlineStyle: 'solid !custom' } },
239
246
  },
240
247
  '@media (prefers-reduced-motion: reduce)': {
241
- transitionProperty: 'background-color, opacity, outline-color, visibility !custom',
248
+ transitionProperty: 'color, opacity, outline-color, visibility !custom',
242
249
  selectors: {
243
250
  '&, &:active, [data-filled] &:active': { transform: 'none !custom' },
244
251
  },
245
252
  },
246
253
  },
247
- { id: 'tds/web/input/clear' },
254
+ { id: 'tds/web/text-input/clear' },
248
255
  )
249
256
 
257
+ // The group carries the type, so the control inherits it. Browsers reset the tracking of a form
258
+ // control, so it inherits that too.
250
259
  export const control = style(
251
260
  {
252
261
  appearance: 'none !custom',
253
262
  backgroundColor: 'transparent !custom',
254
263
  border: 'none !custom',
255
264
  boxSizing: 'border-box',
256
- color: 'foreground',
265
+ color: 'content.primary',
257
266
  flex: '1 !custom',
258
267
  font: 'inherit !custom',
268
+ letterSpacing: 'inherit !custom',
259
269
  minWidth: '0',
260
270
  outline: 'none !custom',
261
271
  padding: '0',
262
272
  selectors: {
263
273
  '&::-webkit-search-cancel-button': { appearance: 'none !custom', display: 'none' },
264
- '&::placeholder': {
265
- color: 'grayAlpha.900',
266
- transitionDuration: '160',
267
- transitionProperty: 'opacity !custom',
268
- transitionTimingFunction: 'snappy',
269
- },
270
- '[data-variant="card"] > &': {
271
- typography: 'heading.24',
272
- },
273
- // The group carries the size, so card text scales with it.
274
- '[data-variant="card"][data-size="small"] &': {
275
- typography: 'heading.20',
276
- },
277
- '[data-variant="card"][data-size="large"] &': {
278
- typography: 'heading.32',
279
- },
280
- // The value sits below the floating label, which needs more room in a large field.
281
- '[data-variant="stacked"] &': { paddingTop: '12' },
282
- '[data-variant="stacked"] [data-size="large"] &': { paddingTop: '16' },
283
- '[data-variant="stacked"]:not([data-focused]) &::placeholder': { opacity: '0 !custom' },
274
+ '&::placeholder': { color: 'content.tertiary' },
275
+ '&:disabled, &:disabled::placeholder': { color: 'content.subtle' },
284
276
  },
285
277
  },
286
- { id: 'tds/web/input/control' },
278
+ { id: 'tds/web/text-input/control' },
287
279
  )
288
280
 
281
+ // Text adornments keep 4.5:1 contrast, while icons take the tertiary color.
289
282
  export const prefix = style(
290
283
  {
291
284
  alignItems: 'center',
292
- color: 'gray.900',
285
+ color: 'content.secondary',
293
286
  display: 'inline-flex',
294
287
  flexShrink: '0 !custom',
295
288
  selectors: {
296
- '[data-variant="card"] > &': {
297
- typography: 'heading.24',
298
- },
299
- '[data-variant="card"][data-size="small"] &': {
300
- typography: 'heading.20',
301
- },
302
- '[data-variant="card"][data-size="large"] &': {
303
- typography: 'heading.32',
304
- },
305
- // The value sits below the floating label, which needs more room in a large field.
306
- '[data-variant="stacked"] &': { paddingTop: '12' },
307
- '[data-variant="stacked"] [data-size="large"] &': { paddingTop: '16' },
308
- '[data-variant="stacked"]:not([data-filled]):not([data-focused]) &': {
309
- opacity: '0 !custom',
310
- },
289
+ '& > svg': { color: 'content.tertiary', flexShrink: '0 !custom', fontSize: '16' },
290
+ ':has(input:disabled) > &, :has(input:disabled) > & > svg': { color: 'content.subtle' },
311
291
  },
312
292
  },
313
- { id: 'tds/web/input/prefix' },
293
+ { id: 'tds/web/text-input/prefix' },
314
294
  )
315
295
 
316
296
  export const suffix = style(
317
297
  {
318
298
  alignItems: 'center',
319
- color: 'gray.900',
299
+ color: 'content.secondary',
320
300
  display: 'inline-flex',
321
301
  flexShrink: '0 !custom',
322
302
  selectors: {
323
- '[data-variant="card"] > &': {
324
- color: 'foreground',
325
- typography: 'heading.24',
326
- },
327
- '[data-variant="card"][data-size="small"] &': {
328
- typography: 'heading.20',
329
- },
330
- '[data-variant="card"][data-size="large"] &': {
331
- typography: 'heading.32',
332
- },
333
- // The value sits below the floating label, which needs more room in a large field.
334
- '[data-variant="stacked"] &': { paddingTop: '12' },
335
- '[data-variant="stacked"] [data-size="large"] &': { paddingTop: '16' },
303
+ '& > svg': { color: 'content.tertiary', flexShrink: '0 !custom', fontSize: '16' },
304
+ ':has(input:disabled) > &, :has(input:disabled) > & > svg': { color: 'content.subtle' },
336
305
  },
337
306
  },
338
- { id: 'tds/web/input/suffix' },
307
+ { id: 'tds/web/text-input/suffix' },
339
308
  )
340
309
  }
@@ -5,8 +5,8 @@ import { variants } from '../zyzz.config.js'
5
5
 
6
6
  /**
7
7
  * A native `textarea` registered as the control of the enclosing `Field.Root`, which supplies its
8
- * label, description, error and disabled state. It inherits the `stacked` layout from the field
9
- * and defaults to three rows with vertical resizing.
8
+ * label, description, error and disabled state. It defaults to three rows with vertical resizing,
9
+ * and `variant="outlined"` draws a 1px line instead of the fill.
10
10
  *
11
11
  * - Use it for multi-line answers. Set `rows` to the expected length of the answer.
12
12
  * - `resize="auto"` grows the box with its content through `field-sizing`. Browsers without that
@@ -25,21 +25,14 @@ import { variants } from '../zyzz.config.js'
25
25
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/error-identification.html | WCAG 2.2 Error Identification}
26
26
  */
27
27
  export function Textarea(props: Textarea.Props) {
28
- const { className, resize, rows = 3, size, variant, vars, ...attributes } = props
28
+ const { className, resize, rows = 3, variant, vars, ...attributes } = props
29
29
 
30
30
  return (
31
31
  <BaseUi.Field.Control
32
32
  render={
33
33
  <textarea
34
34
  {...attributes}
35
- {...styles.textarea({
36
- className,
37
- resize,
38
- size,
39
- style: props.style,
40
- variant,
41
- vars,
42
- })}
35
+ {...styles.textarea({ className, resize, style: props.style, variant, vars })}
43
36
  rows={rows}
44
37
  />
45
38
  }
@@ -57,53 +50,41 @@ namespace styles {
57
50
  {
58
51
  base: {
59
52
  appearance: 'none !custom',
60
- backgroundColor: 'grayAlpha.100',
53
+ backgroundColor: 'container.regular',
54
+ // A transparent 1px border carries the focus border, as the inset border of `TextInput.Group` does.
61
55
  borderColor: 'transparent !custom',
56
+ borderRadius: 'xs',
62
57
  borderStyle: 'solid',
63
- borderWidth: '2',
58
+ borderWidth: 'regular',
64
59
  boxSizing: 'border-box',
65
- color: 'foreground',
60
+ color: 'content.primary',
66
61
  display: 'block',
62
+ // Forced colors paint transparent outlines, so this outline is the focus ring only there.
67
63
  outlineColor: 'transparent !custom',
68
64
  outlineOffset: '2',
69
65
  outlineStyle: 'solid !custom',
70
66
  outlineWidth: '2',
67
+ // One row is as tall as a `TextInput.Group`: 48px, with the 1px border inside it.
68
+ paddingBlock: '13px !custom',
69
+ paddingInline: '16',
71
70
  transitionDuration: '160',
72
71
  transitionProperty: 'background-color, border-color, opacity, outline-color !custom',
73
72
  transitionTimingFunction: 'snappy',
73
+ typography: 'body.b2',
74
74
  width: '100% !custom',
75
75
  selectors: {
76
- '&:disabled': { opacity: 'disabled' },
77
- '&:focus-visible': { outlineColor: 'blue.700' },
78
- '&:hover:not(:disabled)': { backgroundColor: 'grayAlpha.200' },
79
- '&::placeholder': {
80
- color: 'grayAlpha.900',
81
- transitionDuration: '160',
82
- transitionProperty: 'opacity !custom',
83
- transitionTimingFunction: 'snappy',
76
+ // `:where` keeps the hover and focus fills below the invalid and disabled fills.
77
+ '&:where(:hover:not(:disabled))': { backgroundColor: 'container.strong' },
78
+ '&:where(:focus-visible)': { backgroundColor: 'background.elevated' },
79
+ '&:focus-visible': { borderColor: 'border.focus' },
80
+ '&::placeholder': { color: 'content.tertiary' },
81
+ '&[aria-invalid="true"], [data-invalid] &': { backgroundColor: 'container.negative' },
82
+ '&:disabled': {
83
+ backgroundColor: 'container.subtle',
84
+ color: 'content.subtle',
85
+ cursor: 'default',
84
86
  },
85
- '&[aria-invalid="true"], [data-invalid] &': { borderColor: 'red.800' },
86
- '&[aria-invalid="true"]:focus-visible, [data-invalid] &:focus-visible': {
87
- borderColor: 'transparent !custom',
88
- outlineColor: 'red.800',
89
- },
90
- // Card sizes match Input: medium is the default card.
91
- '&[data-variant="card"][data-size="small"]': {
92
- borderRadius: '8',
93
- padding: '12',
94
- },
95
- '&[data-variant="card"][data-size="large"]': { borderRadius: '16', padding: '24' },
96
- // The first line sits below the floating label, as in a stacked Input of the same size.
97
- '[data-variant="stacked"] > &': { gridArea: '1 / 1', paddingTop: '14' },
98
- '[data-variant="stacked"] > &[data-size="large"]': { paddingTop: '22' },
99
- // A small stacked field takes the medium size, as Input does.
100
- '[data-variant="stacked"] > &[data-size="small"]': {
101
- borderRadius: '12',
102
- paddingBottom: '8',
103
- paddingInline: '14',
104
- typography: 'copy.14',
105
- },
106
- '[data-variant="stacked"]:not([data-focused]) &::placeholder': { opacity: '0 !custom' },
87
+ '&:disabled::placeholder': { color: 'content.subtle' },
107
88
  },
108
89
  '@media (forced-colors: active)': {
109
90
  outlineStyle: 'none !custom',
@@ -113,51 +94,25 @@ namespace styles {
113
94
  transitionProperty: 'background-color, border-color, opacity, outline-color !custom',
114
95
  },
115
96
  },
116
- defaultVariants: { resize: 'vertical', size: 'medium', variant: 'default' },
97
+ defaultVariants: { resize: 'vertical', variant: 'default' },
117
98
  variants: {
118
99
  resize: {
119
100
  auto: { fieldSizing: 'content !custom', resize: 'none !custom' },
120
101
  none: { resize: 'none !custom' },
121
102
  vertical: { resize: 'vertical !custom' },
122
103
  },
123
- // One row is as tall as an `Input.Group` of the same size: 32, 40 or 56px. Paddings leave
124
- // room for the 2px border that carries the invalid ring.
125
- size: {
126
- large: {
127
- borderRadius: '16',
128
- paddingBlock: '14',
129
- paddingInline: '18',
130
- typography: 'copy.16',
131
- },
132
- medium: {
133
- borderRadius: '12',
134
- paddingBlock: '8',
135
- paddingInline: '14',
136
- typography: 'copy.14',
137
- },
138
- small: {
139
- borderRadius: '8',
140
- paddingBlock: '5px !custom',
141
- paddingInline: '10',
142
- typography: 'copy.13',
143
- },
144
- },
145
104
  variant: {
146
- card: {
147
- backgroundColor: 'background.surface',
148
- borderColor: 'grayAlpha.200',
149
- borderRadius: '12',
150
- borderStyle: 'solid',
151
- borderWidth: '1',
152
- padding: '16',
105
+ default: {},
106
+ // A 1px line and no fill. Focus darkens the line, and an invalid value fills it red.
107
+ outlined: {
108
+ backgroundColor: 'transparent !custom',
109
+ borderColor: 'line.primary',
153
110
  selectors: {
154
- '&:hover:not(:disabled)': {
155
- backgroundColor: 'background.surface',
156
- borderColor: 'grayAlpha.400',
111
+ '&:where([aria-invalid="true"], [data-invalid] *)': {
112
+ borderColor: 'border.negative',
157
113
  },
158
114
  },
159
115
  },
160
- default: {},
161
116
  },
162
117
  },
163
118
  },