@tempoxyz/ds 0.2.0 → 0.2.4

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 (428) hide show
  1. package/README.md +36 -0
  2. package/dist/mobile/components/Avatar.d.ts +1 -1
  3. package/dist/mobile/components/Avatar.d.ts.map +1 -1
  4. package/dist/mobile/components/Avatar.js.map +1 -1
  5. package/dist/mobile/components/Button.d.ts +2 -2
  6. package/dist/mobile/components/Button.d.ts.map +1 -1
  7. package/dist/mobile/components/Button.js +6 -2
  8. package/dist/mobile/components/Button.js.map +1 -1
  9. package/dist/mobile/components/CodeInput.d.ts +1 -1
  10. package/dist/mobile/components/CodeInput.d.ts.map +1 -1
  11. package/dist/mobile/components/CodeInput.js.map +1 -1
  12. package/dist/mobile/components/IconButton.d.ts +2 -2
  13. package/dist/mobile/components/IconButton.d.ts.map +1 -1
  14. package/dist/mobile/components/IconButton.js +6 -2
  15. package/dist/mobile/components/IconButton.js.map +1 -1
  16. package/dist/mobile/components/Skeleton.d.ts.map +1 -1
  17. package/dist/mobile/components/Skeleton.js.map +1 -1
  18. package/dist/mobile/components/Spinner.d.ts +4 -4
  19. package/dist/mobile/components/Spinner.d.ts.map +1 -1
  20. package/dist/mobile/components/Spinner.js +3 -3
  21. package/dist/mobile/components/Spinner.js.map +1 -1
  22. package/dist/mobile/components/TextButton.d.ts.map +1 -1
  23. package/dist/mobile/components/TextButton.js +7 -2
  24. package/dist/mobile/components/TextButton.js.map +1 -1
  25. package/dist/mobile/components/TextInput.d.ts.map +1 -1
  26. package/dist/mobile/components/TextInput.js +1 -1
  27. package/dist/mobile/components/TextInput.js.map +1 -1
  28. package/dist/mobile/components/Toast.d.ts +1 -1
  29. package/dist/mobile/components/Toast.d.ts.map +1 -1
  30. package/dist/mobile/components/Toast.js +1 -1
  31. package/dist/mobile/components/Toast.js.map +1 -1
  32. package/dist/mobile/components/Toggle.d.ts +2 -2
  33. package/dist/mobile/components/Toggle.js +2 -2
  34. package/dist/mobile/components/Toggle.js.map +1 -1
  35. package/dist/mobile/vars.d.ts +24 -0
  36. package/dist/mobile/vars.d.ts.map +1 -1
  37. package/dist/mobile/vars.js +12 -0
  38. package/dist/mobile/vars.js.map +1 -1
  39. package/dist/mobile/zyzz.config.d.ts +96 -0
  40. package/dist/mobile/zyzz.config.d.ts.map +1 -1
  41. package/dist/oxlint/index.d.ts +43 -0
  42. package/dist/oxlint/index.d.ts.map +1 -0
  43. package/dist/oxlint/index.js +68 -0
  44. package/dist/oxlint/index.js.map +1 -0
  45. package/dist/oxlint/internal/Imports.d.ts +22 -0
  46. package/dist/oxlint/internal/Imports.d.ts.map +1 -0
  47. package/dist/oxlint/internal/Imports.js +52 -0
  48. package/dist/oxlint/internal/Imports.js.map +1 -0
  49. package/dist/oxlint/rules/NoCrossSurface.d.ts +16 -0
  50. package/dist/oxlint/rules/NoCrossSurface.d.ts.map +1 -0
  51. package/dist/oxlint/rules/NoCrossSurface.js +55 -0
  52. package/dist/oxlint/rules/NoCrossSurface.js.map +1 -0
  53. package/dist/oxlint/rules/NoInternalImports.d.ts +8 -0
  54. package/dist/oxlint/rules/NoInternalImports.d.ts.map +1 -0
  55. package/dist/oxlint/rules/NoInternalImports.js +22 -0
  56. package/dist/oxlint/rules/NoInternalImports.js.map +1 -0
  57. package/dist/oxlint/rules/NoRawValues.d.ts +9 -0
  58. package/dist/oxlint/rules/NoRawValues.d.ts.map +1 -0
  59. package/dist/oxlint/rules/NoRawValues.js +73 -0
  60. package/dist/oxlint/rules/NoRawValues.js.map +1 -0
  61. package/dist/oxlint/rules/PreferComponent.d.ts +16 -0
  62. package/dist/oxlint/rules/PreferComponent.d.ts.map +1 -0
  63. package/dist/oxlint/rules/PreferComponent.js +92 -0
  64. package/dist/oxlint/rules/PreferComponent.js.map +1 -0
  65. package/dist/oxlint/rules/RequireAccessibleName.d.ts +9 -0
  66. package/dist/oxlint/rules/RequireAccessibleName.d.ts.map +1 -0
  67. package/dist/oxlint/rules/RequireAccessibleName.js +104 -0
  68. package/dist/oxlint/rules/RequireAccessibleName.js.map +1 -0
  69. package/dist/web/components/Accordion.css +1 -1
  70. package/dist/web/components/Accordion.d.ts +7 -7
  71. package/dist/web/components/Accordion.js.map +1 -1
  72. package/dist/web/components/Accordion.js.zyzz.json +1 -1
  73. package/dist/web/components/AlertDialog.css +1 -1
  74. package/dist/web/components/AlertDialog.d.ts.map +1 -1
  75. package/dist/web/components/AlertDialog.js +1 -1
  76. package/dist/web/components/AlertDialog.js.map +1 -1
  77. package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
  78. package/dist/web/components/Amount.d.ts +10 -3
  79. package/dist/web/components/Amount.d.ts.map +1 -1
  80. package/dist/web/components/Amount.js +19 -9
  81. package/dist/web/components/Amount.js.map +1 -1
  82. package/dist/web/components/Amount.js.zyzz.json +1 -1
  83. package/dist/web/components/AmountInput.css +1 -1
  84. package/dist/web/components/AmountInput.d.ts +15 -2
  85. package/dist/web/components/AmountInput.d.ts.map +1 -1
  86. package/dist/web/components/AmountInput.js +43 -12
  87. package/dist/web/components/AmountInput.js.map +1 -1
  88. package/dist/web/components/AmountInput.js.zyzz.json +1 -1
  89. package/dist/web/components/AppShell.css +1 -1
  90. package/dist/web/components/AppShell.d.ts +10 -10
  91. package/dist/web/components/AppShell.js.map +1 -1
  92. package/dist/web/components/AppShell.js.zyzz.json +1 -1
  93. package/dist/web/components/Autocomplete.js.zyzz.json +1 -1
  94. package/dist/web/components/Avatar.css +1 -1
  95. package/dist/web/components/Avatar.d.ts +3 -3
  96. package/dist/web/components/Avatar.js.map +1 -1
  97. package/dist/web/components/Avatar.js.zyzz.json +1 -1
  98. package/dist/web/components/Banner.css +1 -1
  99. package/dist/web/components/Banner.js +3 -3
  100. package/dist/web/components/Banner.js.map +1 -1
  101. package/dist/web/components/Banner.js.zyzz.json +1 -1
  102. package/dist/web/components/Breadcrumbs.css +1 -1
  103. package/dist/web/components/Breadcrumbs.d.ts +4 -4
  104. package/dist/web/components/Breadcrumbs.js.map +1 -1
  105. package/dist/web/components/Breadcrumbs.js.zyzz.json +1 -1
  106. package/dist/web/components/Button.css +1 -1
  107. package/dist/web/components/Button.d.ts +12 -11
  108. package/dist/web/components/Button.d.ts.map +1 -1
  109. package/dist/web/components/Button.js +2 -2
  110. package/dist/web/components/Button.js.map +1 -1
  111. package/dist/web/components/Button.js.zyzz.json +1 -1
  112. package/dist/web/components/Calendar.css +1 -1
  113. package/dist/web/components/Calendar.d.ts.map +1 -1
  114. package/dist/web/components/Calendar.js +7 -5
  115. package/dist/web/components/Calendar.js.map +1 -1
  116. package/dist/web/components/Calendar.js.zyzz.json +1 -1
  117. package/dist/web/components/Callout.css +1 -1
  118. package/dist/web/components/Callout.d.ts +6 -6
  119. package/dist/web/components/Callout.d.ts.map +1 -1
  120. package/dist/web/components/Callout.js +5 -2
  121. package/dist/web/components/Callout.js.map +1 -1
  122. package/dist/web/components/Callout.js.zyzz.json +1 -1
  123. package/dist/web/components/Checkbox.css +1 -1
  124. package/dist/web/components/Checkbox.d.ts +8 -8
  125. package/dist/web/components/Checkbox.js.map +1 -1
  126. package/dist/web/components/Checkbox.js.zyzz.json +1 -1
  127. package/dist/web/components/CheckboxGroup.js.zyzz.json +1 -1
  128. package/dist/web/components/ChoiceGroup.css +1 -1
  129. package/dist/web/components/ChoiceGroup.d.ts +2 -2
  130. package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
  131. package/dist/web/components/ChoiceGroup.js +2 -2
  132. package/dist/web/components/ChoiceGroup.js.map +1 -1
  133. package/dist/web/components/ChoiceGroup.js.zyzz.json +1 -1
  134. package/dist/web/components/Choicebox.css +1 -1
  135. package/dist/web/components/Choicebox.d.ts +4 -4
  136. package/dist/web/components/Choicebox.js +1 -1
  137. package/dist/web/components/Choicebox.js.map +1 -1
  138. package/dist/web/components/Choicebox.js.zyzz.json +1 -1
  139. package/dist/web/components/Combobox.css +1 -1
  140. package/dist/web/components/Combobox.js.map +1 -1
  141. package/dist/web/components/Combobox.js.zyzz.json +1 -1
  142. package/dist/web/components/Container.js.zyzz.json +1 -1
  143. package/dist/web/components/CopyButton.js.zyzz.json +1 -1
  144. package/dist/web/components/DatePicker.css +1 -1
  145. package/dist/web/components/DatePicker.d.ts +20 -20
  146. package/dist/web/components/DatePicker.d.ts.map +1 -1
  147. package/dist/web/components/DatePicker.js +2 -2
  148. package/dist/web/components/DatePicker.js.map +1 -1
  149. package/dist/web/components/DatePicker.js.zyzz.json +1 -1
  150. package/dist/web/components/Dialog.css +1 -1
  151. package/dist/web/components/Dialog.d.ts.map +1 -1
  152. package/dist/web/components/Dialog.js +3 -3
  153. package/dist/web/components/Dialog.js.map +1 -1
  154. package/dist/web/components/Dialog.js.zyzz.json +1 -1
  155. package/dist/web/components/Drawer.css +1 -1
  156. package/dist/web/components/Drawer.js +2 -2
  157. package/dist/web/components/Drawer.js.map +1 -1
  158. package/dist/web/components/Drawer.js.zyzz.json +1 -1
  159. package/dist/web/components/Empty.js.zyzz.json +1 -1
  160. package/dist/web/components/Field.css +1 -1
  161. package/dist/web/components/Field.d.ts +7 -0
  162. package/dist/web/components/Field.d.ts.map +1 -1
  163. package/dist/web/components/Field.js +25 -3
  164. package/dist/web/components/Field.js.map +1 -1
  165. package/dist/web/components/Field.js.zyzz.json +1 -1
  166. package/dist/web/components/Fieldset.js.zyzz.json +1 -1
  167. package/dist/web/components/Frame.css +1 -1
  168. package/dist/web/components/Frame.d.ts +27 -10
  169. package/dist/web/components/Frame.d.ts.map +1 -1
  170. package/dist/web/components/Frame.js +12 -5
  171. package/dist/web/components/Frame.js.map +1 -1
  172. package/dist/web/components/Frame.js.zyzz.json +1 -1
  173. package/dist/web/components/Gauge.css +1 -1
  174. package/dist/web/components/Gauge.js.map +1 -1
  175. package/dist/web/components/Gauge.js.zyzz.json +1 -1
  176. package/dist/web/components/Grid.js.zyzz.json +1 -1
  177. package/dist/web/components/Hex.css +1 -1
  178. package/dist/web/components/Hex.d.ts +5 -5
  179. package/dist/web/components/Hex.js +1 -1
  180. package/dist/web/components/Hex.js.map +1 -1
  181. package/dist/web/components/Hex.js.zyzz.json +1 -1
  182. package/dist/web/components/IconChip.css +1 -1
  183. package/dist/web/components/IconChip.d.ts +1 -1
  184. package/dist/web/components/IconChip.js.map +1 -1
  185. package/dist/web/components/IconChip.js.zyzz.json +1 -1
  186. package/dist/web/components/Identicon.js.zyzz.json +1 -1
  187. package/dist/web/components/Inline.js.zyzz.json +1 -1
  188. package/dist/web/components/Input.css +1 -1
  189. package/dist/web/components/Input.js.map +1 -1
  190. package/dist/web/components/Input.js.zyzz.json +1 -1
  191. package/dist/web/components/Inset.js.zyzz.json +1 -1
  192. package/dist/web/components/Kbd.css +1 -1
  193. package/dist/web/components/Kbd.d.ts +32 -10
  194. package/dist/web/components/Kbd.d.ts.map +1 -1
  195. package/dist/web/components/Kbd.js +55 -13
  196. package/dist/web/components/Kbd.js.map +1 -1
  197. package/dist/web/components/Kbd.js.zyzz.json +1 -1
  198. package/dist/web/components/LoadingDots.css +1 -1
  199. package/dist/web/components/LoadingDots.d.ts +2 -2
  200. package/dist/web/components/LoadingDots.js.map +1 -1
  201. package/dist/web/components/LoadingDots.js.zyzz.json +1 -1
  202. package/dist/web/components/Menu.css +1 -1
  203. package/dist/web/components/Menu.d.ts +11 -11
  204. package/dist/web/components/Menu.d.ts.map +1 -1
  205. package/dist/web/components/Menu.js +2 -2
  206. package/dist/web/components/Menu.js.map +1 -1
  207. package/dist/web/components/Menu.js.zyzz.json +1 -1
  208. package/dist/web/components/NumberField.css +1 -1
  209. package/dist/web/components/NumberField.js +1 -1
  210. package/dist/web/components/NumberField.js.map +1 -1
  211. package/dist/web/components/NumberField.js.zyzz.json +1 -1
  212. package/dist/web/components/OtpField.css +1 -1
  213. package/dist/web/components/OtpField.d.ts.map +1 -1
  214. package/dist/web/components/OtpField.js +1 -1
  215. package/dist/web/components/OtpField.js.map +1 -1
  216. package/dist/web/components/OtpField.js.zyzz.json +1 -1
  217. package/dist/web/components/Pagination.css +1 -1
  218. package/dist/web/components/Pagination.d.ts +13 -13
  219. package/dist/web/components/Pagination.js +1 -1
  220. package/dist/web/components/Pagination.js.map +1 -1
  221. package/dist/web/components/Pagination.js.zyzz.json +1 -1
  222. package/dist/web/components/Popover.css +1 -1
  223. package/dist/web/components/Popover.d.ts.map +1 -1
  224. package/dist/web/components/Popover.js +1 -1
  225. package/dist/web/components/Popover.js.map +1 -1
  226. package/dist/web/components/Popover.js.zyzz.json +1 -1
  227. package/dist/web/components/Progress.css +1 -1
  228. package/dist/web/components/Progress.js.map +1 -1
  229. package/dist/web/components/Progress.js.zyzz.json +1 -1
  230. package/dist/web/components/Qr.js.zyzz.json +1 -1
  231. package/dist/web/components/RadioGroup.css +1 -1
  232. package/dist/web/components/RadioGroup.d.ts +4 -4
  233. package/dist/web/components/RadioGroup.js.map +1 -1
  234. package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
  235. package/dist/web/components/Rows.css +1 -1
  236. package/dist/web/components/Rows.d.ts +7 -7
  237. package/dist/web/components/Rows.d.ts.map +1 -1
  238. package/dist/web/components/Rows.js +3 -3
  239. package/dist/web/components/Rows.js.map +1 -1
  240. package/dist/web/components/Rows.js.zyzz.json +1 -1
  241. package/dist/web/components/SecretValue.css +1 -1
  242. package/dist/web/components/SecretValue.d.ts +4 -4
  243. package/dist/web/components/SecretValue.js +1 -1
  244. package/dist/web/components/SecretValue.js.map +1 -1
  245. package/dist/web/components/SecretValue.js.zyzz.json +1 -1
  246. package/dist/web/components/Select.css +1 -1
  247. package/dist/web/components/Select.js.map +1 -1
  248. package/dist/web/components/Select.js.zyzz.json +1 -1
  249. package/dist/web/components/Separator.js.zyzz.json +1 -1
  250. package/dist/web/components/SidebarMenu.css +1 -1
  251. package/dist/web/components/SidebarMenu.d.ts +11 -11
  252. package/dist/web/components/SidebarMenu.d.ts.map +1 -1
  253. package/dist/web/components/SidebarMenu.js +1 -1
  254. package/dist/web/components/SidebarMenu.js.map +1 -1
  255. package/dist/web/components/SidebarMenu.js.zyzz.json +1 -1
  256. package/dist/web/components/Skeleton.js.zyzz.json +1 -1
  257. package/dist/web/components/Slider.css +1 -1
  258. package/dist/web/components/Slider.d.ts.map +1 -1
  259. package/dist/web/components/Slider.js.map +1 -1
  260. package/dist/web/components/Slider.js.zyzz.json +1 -1
  261. package/dist/web/components/Snippet.css +1 -1
  262. package/dist/web/components/Snippet.d.ts +4 -4
  263. package/dist/web/components/Snippet.js +2 -2
  264. package/dist/web/components/Snippet.js.map +1 -1
  265. package/dist/web/components/Snippet.js.zyzz.json +1 -1
  266. package/dist/web/components/Spinner.js.zyzz.json +1 -1
  267. package/dist/web/components/SplitButton.css +1 -1
  268. package/dist/web/components/SplitButton.d.ts.map +1 -1
  269. package/dist/web/components/SplitButton.js +1 -1
  270. package/dist/web/components/SplitButton.js.map +1 -1
  271. package/dist/web/components/SplitButton.js.zyzz.json +1 -1
  272. package/dist/web/components/Stack.js.zyzz.json +1 -1
  273. package/dist/web/components/Stepper.css +1 -1
  274. package/dist/web/components/Stepper.d.ts +1 -1
  275. package/dist/web/components/Stepper.js.map +1 -1
  276. package/dist/web/components/Stepper.js.zyzz.json +1 -1
  277. package/dist/web/components/Surface.css +1 -1
  278. package/dist/web/components/Surface.d.ts +46 -46
  279. package/dist/web/components/Surface.js +2 -2
  280. package/dist/web/components/Surface.js.map +1 -1
  281. package/dist/web/components/Surface.js.zyzz.json +1 -1
  282. package/dist/web/components/Switch.css +1 -1
  283. package/dist/web/components/Switch.d.ts +14 -14
  284. package/dist/web/components/Switch.d.ts.map +1 -1
  285. package/dist/web/components/Switch.js.map +1 -1
  286. package/dist/web/components/Switch.js.zyzz.json +1 -1
  287. package/dist/web/components/Table.css +1 -1
  288. package/dist/web/components/Table.d.ts +10 -7
  289. package/dist/web/components/Table.d.ts.map +1 -1
  290. package/dist/web/components/Table.js +5 -2
  291. package/dist/web/components/Table.js.map +1 -1
  292. package/dist/web/components/Table.js.zyzz.json +1 -1
  293. package/dist/web/components/Tabs.css +1 -1
  294. package/dist/web/components/Tabs.d.ts +14 -14
  295. package/dist/web/components/Tabs.js +1 -1
  296. package/dist/web/components/Tabs.js.map +1 -1
  297. package/dist/web/components/Tabs.js.zyzz.json +1 -1
  298. package/dist/web/components/Tag.css +1 -1
  299. package/dist/web/components/Tag.d.ts +10 -10
  300. package/dist/web/components/Tag.js +1 -1
  301. package/dist/web/components/Tag.js.map +1 -1
  302. package/dist/web/components/Tag.js.zyzz.json +1 -1
  303. package/dist/web/components/Textarea.css +1 -1
  304. package/dist/web/components/Textarea.d.ts +15 -15
  305. package/dist/web/components/Textarea.js.map +1 -1
  306. package/dist/web/components/Textarea.js.zyzz.json +1 -1
  307. package/dist/web/components/Toast.css +1 -1
  308. package/dist/web/components/Toast.d.ts.map +1 -1
  309. package/dist/web/components/Toast.js +7 -3
  310. package/dist/web/components/Toast.js.map +1 -1
  311. package/dist/web/components/Toast.js.zyzz.json +1 -1
  312. package/dist/web/components/Token.js.zyzz.json +1 -1
  313. package/dist/web/components/Tooltip.css +1 -1
  314. package/dist/web/components/Tooltip.d.ts.map +1 -1
  315. package/dist/web/components/Tooltip.js +1 -1
  316. package/dist/web/components/Tooltip.js.map +1 -1
  317. package/dist/web/components/Tooltip.js.zyzz.json +1 -1
  318. package/dist/web/components/internal/Field.css +1 -1
  319. package/dist/web/components/internal/Field.d.ts +7 -7
  320. package/dist/web/components/internal/Field.js.map +1 -1
  321. package/dist/web/components/internal/Field.js.zyzz.json +1 -1
  322. package/dist/web/components/internal/InputGroup.css +1 -1
  323. package/dist/web/components/internal/InputGroup.d.ts +12 -12
  324. package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
  325. package/dist/web/components/internal/InputGroup.js +1 -1
  326. package/dist/web/components/internal/InputGroup.js.map +1 -1
  327. package/dist/web/components/internal/InputGroup.js.zyzz.json +1 -1
  328. package/dist/web/components/internal/Listbox.css +1 -1
  329. package/dist/web/components/internal/Listbox.d.ts +9 -9
  330. package/dist/web/components/internal/Listbox.d.ts.map +1 -1
  331. package/dist/web/components/internal/Listbox.js +1 -1
  332. package/dist/web/components/internal/Listbox.js.map +1 -1
  333. package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
  334. package/dist/web/icons/BadgeX.d.ts.map +1 -1
  335. package/dist/web/icons/BadgeX.js.map +1 -1
  336. package/dist/web/icons/InfinityIcon.d.ts.map +1 -1
  337. package/dist/web/icons/InfinityIcon.js.map +1 -1
  338. package/dist/web/icons/LightMode.d.ts.map +1 -1
  339. package/dist/web/icons/LightMode.js.map +1 -1
  340. package/dist/web/icons/OctagonAlert.d.ts.map +1 -1
  341. package/dist/web/icons/OctagonAlert.js.map +1 -1
  342. package/dist/web/icons/Unlink.d.ts.map +1 -1
  343. package/dist/web/icons/Unlink.js.map +1 -1
  344. package/dist/web/index.js.zyzz.json +1 -1
  345. package/dist/web/vars.d.ts +91 -0
  346. package/dist/web/vars.d.ts.map +1 -1
  347. package/dist/web/vars.js.map +1 -1
  348. package/dist/web/vars.js.zyzz.json +1 -1
  349. package/dist/web/zyzz.config.d.ts +455 -0
  350. package/dist/web/zyzz.config.d.ts.map +1 -1
  351. package/dist/web/zyzz.config.js.zyzz.json +1 -1
  352. package/package.json +7 -1
  353. package/src/mobile/components/Avatar.tsx +2 -2
  354. package/src/mobile/components/Button.tsx +6 -3
  355. package/src/mobile/components/CodeInput.tsx +2 -2
  356. package/src/mobile/components/IconButton.tsx +6 -3
  357. package/src/mobile/components/Skeleton.tsx +1 -1
  358. package/src/mobile/components/Spinner.tsx +4 -5
  359. package/src/mobile/components/TextButton.tsx +6 -2
  360. package/src/mobile/components/TextInput.tsx +1 -1
  361. package/src/mobile/components/Toast.tsx +1 -2
  362. package/src/mobile/components/Toggle.tsx +2 -2
  363. package/src/mobile/vars.ts +14 -0
  364. package/src/oxlint/index.ts +89 -0
  365. package/src/oxlint/internal/Imports.ts +68 -0
  366. package/src/oxlint/rules/NoCrossSurface.ts +71 -0
  367. package/src/oxlint/rules/NoInternalImports.ts +25 -0
  368. package/src/oxlint/rules/NoRawValues.ts +76 -0
  369. package/src/oxlint/rules/PreferComponent.ts +113 -0
  370. package/src/oxlint/rules/RequireAccessibleName.ts +132 -0
  371. package/src/web/components/Accordion.tsx +8 -8
  372. package/src/web/components/AlertDialog.tsx +11 -8
  373. package/src/web/components/Amount.tsx +29 -9
  374. package/src/web/components/AmountInput.tsx +60 -24
  375. package/src/web/components/AppShell.tsx +23 -23
  376. package/src/web/components/Avatar.tsx +3 -3
  377. package/src/web/components/Banner.tsx +16 -16
  378. package/src/web/components/Breadcrumbs.tsx +4 -4
  379. package/src/web/components/Button.tsx +15 -12
  380. package/src/web/components/Calendar.tsx +10 -11
  381. package/src/web/components/Callout.tsx +19 -16
  382. package/src/web/components/Checkbox.tsx +9 -9
  383. package/src/web/components/ChoiceGroup.tsx +13 -14
  384. package/src/web/components/Choicebox.tsx +21 -21
  385. package/src/web/components/Combobox.tsx +3 -3
  386. package/src/web/components/DatePicker.tsx +25 -25
  387. package/src/web/components/Dialog.tsx +28 -19
  388. package/src/web/components/Drawer.tsx +8 -8
  389. package/src/web/components/Field.tsx +46 -11
  390. package/src/web/components/Frame.tsx +30 -9
  391. package/src/web/components/Gauge.tsx +1 -1
  392. package/src/web/components/Hex.tsx +5 -5
  393. package/src/web/components/IconChip.tsx +1 -1
  394. package/src/web/components/Input.tsx +11 -11
  395. package/src/web/components/Kbd.tsx +77 -21
  396. package/src/web/components/LoadingDots.tsx +4 -4
  397. package/src/web/components/Menu.tsx +17 -14
  398. package/src/web/components/NumberField.tsx +17 -17
  399. package/src/web/components/OtpField.tsx +14 -6
  400. package/src/web/components/Pagination.tsx +13 -13
  401. package/src/web/components/Popover.tsx +14 -11
  402. package/src/web/components/Progress.tsx +2 -2
  403. package/src/web/components/RadioGroup.tsx +11 -11
  404. package/src/web/components/Rows.tsx +8 -9
  405. package/src/web/components/SecretValue.tsx +4 -4
  406. package/src/web/components/Select.tsx +2 -2
  407. package/src/web/components/SidebarMenu.tsx +14 -15
  408. package/src/web/components/Slider.tsx +6 -7
  409. package/src/web/components/Snippet.tsx +9 -9
  410. package/src/web/components/SplitButton.tsx +17 -5
  411. package/src/web/components/Stepper.tsx +1 -1
  412. package/src/web/components/Surface.tsx +47 -47
  413. package/src/web/components/Switch.tsx +21 -23
  414. package/src/web/components/Table.tsx +11 -7
  415. package/src/web/components/Tabs.tsx +14 -14
  416. package/src/web/components/Tag.tsx +12 -12
  417. package/src/web/components/Textarea.tsx +15 -15
  418. package/src/web/components/Toast.tsx +28 -21
  419. package/src/web/components/Tooltip.tsx +12 -9
  420. package/src/web/components/internal/Field.ts +20 -20
  421. package/src/web/components/internal/InputGroup.ts +13 -14
  422. package/src/web/components/internal/Listbox.ts +19 -16
  423. package/src/web/icons/BadgeX.tsx +1 -1
  424. package/src/web/icons/InfinityIcon.tsx +1 -1
  425. package/src/web/icons/LightMode.tsx +1 -1
  426. package/src/web/icons/OctagonAlert.tsx +1 -1
  427. package/src/web/icons/Unlink.tsx +1 -1
  428. package/src/web/vars.ts +81 -2
@@ -131,7 +131,7 @@ namespace styles {
131
131
  export const indicator = variants(
132
132
  {
133
133
  base: {
134
- backgroundColor: 'light-dark(white, rgb(255 255 255 / 0.16)) !custom',
134
+ backgroundColor: 'background.indicator',
135
135
  boxShadow: 'raised',
136
136
  height: 'var(--active-tab-height) !custom',
137
137
  insetBlockStart: '0',
@@ -140,7 +140,7 @@ namespace styles {
140
140
  position: 'absolute',
141
141
  translate: 'var(--active-tab-left) var(--active-tab-top) !custom',
142
142
  // The indicator matches each tab's size, so it transitions width and height with its position.
143
- transitionDuration: '240ms',
143
+ transitionDuration: '240',
144
144
  transitionProperty: 'height, translate, width',
145
145
  transitionTimingFunction: 'spring',
146
146
  width: 'var(--active-tab-width) !custom',
@@ -205,14 +205,14 @@ namespace styles {
205
205
  base: {
206
206
  marginBlockStart: '12',
207
207
  outlineColor: 'transparent !custom',
208
- outlineOffset: '0px !custom',
208
+ outlineOffset: '0',
209
209
  outlineStyle: 'solid !custom',
210
- outlineWidth: '2px !custom',
211
- transitionDuration: '160ms',
210
+ outlineWidth: '2',
211
+ transitionDuration: '160',
212
212
  transitionProperty: 'outline-color, outline-offset',
213
213
  transitionTimingFunction: 'snappy',
214
214
  selectors: {
215
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
215
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
216
216
  },
217
217
  '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'outline-color' },
218
218
  },
@@ -234,13 +234,13 @@ namespace styles {
234
234
  height: '100% !custom',
235
235
  justifyContent: 'center',
236
236
  outlineColor: 'transparent !custom',
237
- outlineOffset: '0px !custom',
237
+ outlineOffset: '0',
238
238
  outlineStyle: 'solid !custom',
239
- outlineWidth: '2px !custom',
239
+ outlineWidth: '2',
240
240
  paddingInline: '16',
241
241
  position: 'relative',
242
- transitionDuration: '160ms',
243
- transitionProperty: 'color, outline-color, outline-offset, transform',
242
+ transitionDuration: '160',
243
+ transitionProperty: 'color, outline-color, outline-offset, scale',
244
244
  transitionTimingFunction: 'snappy',
245
245
  // Weight overrides the typography token, so it stays after it.
246
246
  typography: 'button.14',
@@ -248,15 +248,15 @@ namespace styles {
248
248
  whiteSpace: 'nowrap',
249
249
  zIndex: '1 !custom',
250
250
  selectors: {
251
- '&:active:not([data-disabled])': { transform: 'scale(0.97) !custom' },
252
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
251
+ '&:active:not([data-disabled])': { scale: 'press' },
252
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
253
253
  '&:hover:not([data-disabled])': { color: 'foreground' },
254
254
  '&[data-active]': { color: 'foreground' },
255
- '&[data-disabled]': { cursor: 'default', opacity: '0.4 !custom' },
255
+ '&[data-disabled]': { cursor: 'default', opacity: 'disabled' },
256
256
  },
257
257
  '@media (prefers-reduced-motion: reduce)': {
258
258
  transitionProperty: 'color, outline-color',
259
- selectors: { '&:active:not([data-disabled])': { transform: 'none !custom' } },
259
+ selectors: { '&:active:not([data-disabled])': { scale: 'none !custom' } },
260
260
  },
261
261
  },
262
262
  },
@@ -65,8 +65,8 @@ namespace styles {
65
65
  backgroundColor: 'currentColor !custom',
66
66
  borderRadius: 'full',
67
67
  flexShrink: '0 !custom',
68
- height: '6px !custom',
69
- width: '6px !custom',
68
+ height: '6',
69
+ width: '6',
70
70
  },
71
71
  { id: 'tds/web/tag/dot' },
72
72
  )
@@ -78,7 +78,7 @@ namespace styles {
78
78
  border: '1px solid !custom',
79
79
  borderColor: 'transparent !custom',
80
80
  boxSizing: 'border-box',
81
- columnGap: '6px !custom',
81
+ columnGap: '6',
82
82
  display: 'inline-flex',
83
83
  height: '24',
84
84
  paddingInline: '8',
@@ -90,26 +90,26 @@ namespace styles {
90
90
  '&:is(button, a)': {
91
91
  cursor: 'pointer',
92
92
  outlineColor: 'transparent !custom',
93
- outlineOffset: '0px !custom',
93
+ outlineOffset: '0',
94
94
  outlineStyle: 'solid !custom',
95
- outlineWidth: '2px !custom',
95
+ outlineWidth: '2',
96
96
  textDecoration: 'none !custom',
97
- transitionDuration: '160ms',
98
- transitionProperty: 'opacity, outline-color, outline-offset, transform',
97
+ transitionDuration: '160',
98
+ transitionProperty: 'opacity, outline-color, outline-offset, scale',
99
99
  transitionTimingFunction: 'snappy',
100
100
  },
101
- '&:is(button, a):active': { transform: 'scale(0.98) !custom' },
101
+ '&:is(button, a):active': { scale: 'press' },
102
102
  '&:is(button, a):focus-visible': {
103
103
  outlineColor: 'blue.700',
104
- outlineOffset: '2px !custom',
104
+ outlineOffset: '2',
105
105
  },
106
106
  '&:is(button, a):hover': { opacity: '0.8 !custom' },
107
- '&:is(button):disabled': { cursor: 'default', opacity: '0.4 !custom' },
107
+ '&:is(button):disabled': { cursor: 'default', opacity: 'disabled' },
108
108
  },
109
109
  '@media (prefers-reduced-motion: reduce)': {
110
110
  selectors: {
111
111
  '&:is(button, a)': { transitionProperty: 'opacity, outline-color' },
112
- '&:is(button, a):active': { transform: 'none !custom' },
112
+ '&:is(button, a):active': { scale: 'none !custom' },
113
113
  },
114
114
  },
115
115
  },
@@ -139,7 +139,7 @@ namespace styles {
139
139
  size: {
140
140
  large: { height: '32', paddingInline: '12', typography: 'label.14' },
141
141
  medium: {},
142
- small: { height: '20', paddingInline: '6px !custom' },
142
+ small: { height: '20', paddingInline: '6' },
143
143
  },
144
144
  variant: { outlined: {}, plain: {}, soft: {} },
145
145
  },
@@ -60,25 +60,25 @@ namespace styles {
60
60
  backgroundColor: 'grayAlpha.100',
61
61
  borderColor: 'transparent !custom',
62
62
  borderStyle: 'solid',
63
- borderWidth: '2px !custom',
63
+ borderWidth: '2',
64
64
  boxSizing: 'border-box',
65
65
  color: 'foreground',
66
66
  display: 'block',
67
67
  outlineColor: 'transparent !custom',
68
- outlineOffset: '2px !custom',
68
+ outlineOffset: '2',
69
69
  outlineStyle: 'solid !custom',
70
- outlineWidth: '2px !custom',
71
- transitionDuration: '160ms !custom',
70
+ outlineWidth: '2',
71
+ transitionDuration: '160',
72
72
  transitionProperty: 'background-color, border-color, opacity, outline-color !custom',
73
73
  transitionTimingFunction: 'snappy',
74
74
  width: '100% !custom',
75
75
  selectors: {
76
- '&:disabled': { opacity: '0.4 !custom' },
76
+ '&:disabled': { opacity: 'disabled' },
77
77
  '&:focus-visible': { outlineColor: 'blue.700' },
78
78
  '&:hover:not(:disabled)': { backgroundColor: 'grayAlpha.200' },
79
79
  '&::placeholder': {
80
- color: 'grayAlpha.700',
81
- transitionDuration: '160ms !custom',
80
+ color: 'grayAlpha.900',
81
+ transitionDuration: '160',
82
82
  transitionProperty: 'opacity !custom',
83
83
  transitionTimingFunction: 'snappy',
84
84
  },
@@ -94,13 +94,13 @@ namespace styles {
94
94
  },
95
95
  '&[data-variant="card"][data-size="large"]': { borderRadius: '16', padding: '24' },
96
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: '14px !custom' },
98
- '[data-variant="stacked"] > &[data-size="large"]': { paddingTop: '22px !custom' },
97
+ '[data-variant="stacked"] > &': { gridArea: '1 / 1', paddingTop: '14' },
98
+ '[data-variant="stacked"] > &[data-size="large"]': { paddingTop: '22' },
99
99
  // A small stacked field takes the medium size, as Input does.
100
100
  '[data-variant="stacked"] > &[data-size="small"]': {
101
101
  borderRadius: '12',
102
102
  paddingBottom: '8',
103
- paddingInline: '14px !custom',
103
+ paddingInline: '14',
104
104
  typography: 'copy.14',
105
105
  },
106
106
  '[data-variant="stacked"]:not([data-focused]) &::placeholder': { opacity: '0 !custom' },
@@ -125,20 +125,20 @@ namespace styles {
125
125
  size: {
126
126
  large: {
127
127
  borderRadius: '16',
128
- paddingBlock: '14px !custom',
129
- paddingInline: '18px !custom',
128
+ paddingBlock: '14',
129
+ paddingInline: '18',
130
130
  typography: 'copy.16',
131
131
  },
132
132
  medium: {
133
133
  borderRadius: '12',
134
134
  paddingBlock: '8',
135
- paddingInline: '14px !custom',
135
+ paddingInline: '14',
136
136
  typography: 'copy.14',
137
137
  },
138
138
  small: {
139
139
  borderRadius: '8',
140
140
  paddingBlock: '5px !custom',
141
- paddingInline: '10px !custom',
141
+ paddingInline: '10',
142
142
  typography: 'copy.13',
143
143
  },
144
144
  },
@@ -148,7 +148,7 @@ namespace styles {
148
148
  borderColor: 'grayAlpha.200',
149
149
  borderRadius: '12',
150
150
  borderStyle: 'solid',
151
- borderWidth: '1px !custom',
151
+ borderWidth: '1',
152
152
  padding: '16',
153
153
  selectors: {
154
154
  '&:hover:not(:disabled)': {
@@ -1,7 +1,11 @@
1
1
  import * as BaseUi from '@base-ui/react/toast'
2
2
  import type { ComponentPropsWithRef, ReactNode } from 'react'
3
3
  import type * as zyzz from 'zyzz'
4
- import { AlertCircle, AlertTriangle, CheckCircle, Close, InfoCircle } from '../icons/index.js'
4
+ import { AlertCircle } from '../icons/AlertCircle.js'
5
+ import { AlertTriangle } from '../icons/AlertTriangle.js'
6
+ import { CheckCircle } from '../icons/CheckCircle.js'
7
+ import { Close } from '../icons/Close.js'
8
+ import { InfoCircle } from '../icons/InfoCircle.js'
5
9
  import { style, variants } from '../zyzz.config.js'
6
10
 
7
11
  const icons = {
@@ -158,20 +162,23 @@ namespace styles {
158
162
  // Weight overrides the typography token, so it stays after it.
159
163
  typography: 'button.12',
160
164
  outlineColor: 'transparent !custom',
161
- outlineOffset: '0px !custom',
165
+ outlineOffset: '0',
162
166
  outlineStyle: 'solid !custom',
163
- outlineWidth: '2px !custom',
164
- transitionDuration: '160ms',
165
- transitionProperty: 'background-color, outline-color, outline-offset, transform',
167
+ outlineWidth: '2',
168
+ transitionDuration: '160',
169
+ transitionProperty: 'background-color, outline-color, outline-offset, scale',
166
170
  transitionTimingFunction: 'snappy',
167
171
  selectors: {
168
- '&:active': { backgroundColor: 'grayAlpha.300', transform: 'scale(0.97) !custom' },
169
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
172
+ '&:active': {
173
+ backgroundColor: 'grayAlpha.300',
174
+ scale: 'press',
175
+ },
176
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
170
177
  '&:hover': { backgroundColor: 'grayAlpha.200' },
171
178
  },
172
179
  '@media (prefers-reduced-motion: reduce)': {
173
180
  transitionProperty: 'background-color, outline-color',
174
- selectors: { '&:active': { transform: 'none !custom' } },
181
+ selectors: { '&:active': { scale: 'none !custom' } },
175
182
  },
176
183
  },
177
184
  { id: 'tds/web/toast/action' },
@@ -204,20 +211,20 @@ namespace styles {
204
211
  padding: '0',
205
212
  width: '24',
206
213
  outlineColor: 'transparent !custom',
207
- outlineOffset: '0px !custom',
214
+ outlineOffset: '0',
208
215
  outlineStyle: 'solid !custom',
209
- outlineWidth: '2px !custom',
210
- transitionDuration: '160ms',
211
- transitionProperty: 'background-color, outline-color, outline-offset, transform',
216
+ outlineWidth: '2',
217
+ transitionDuration: '160',
218
+ transitionProperty: 'background-color, outline-color, outline-offset, scale',
212
219
  transitionTimingFunction: 'snappy',
213
220
  selectors: {
214
- '&:active': { transform: 'scale(0.97) !custom' },
215
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
221
+ '&:active': { scale: 'press' },
222
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
216
223
  '&:hover': { backgroundColor: 'grayAlpha.100' },
217
224
  },
218
225
  '@media (prefers-reduced-motion: reduce)': {
219
226
  transitionProperty: 'background-color, outline-color',
220
- selectors: { '&:active': { transform: 'none !custom' } },
227
+ selectors: { '&:active': { scale: 'none !custom' } },
221
228
  },
222
229
  },
223
230
  { id: 'tds/web/toast/close' },
@@ -233,7 +240,7 @@ namespace styles {
233
240
  overflow: 'hidden',
234
241
  paddingBlock: '16',
235
242
  paddingInline: '20',
236
- transitionDuration: '200ms',
243
+ transitionDuration: '200',
237
244
  transitionProperty: 'opacity',
238
245
  transitionTimingFunction: 'snappy',
239
246
  selectors: {
@@ -280,7 +287,7 @@ namespace styles {
280
287
  'translateX(var(--toast-swipe-movement-x)) translateY(calc(var(--toast-swipe-movement-y) - var(--toast-index) * 12px - (1 - max(0, calc(1 - var(--toast-index) * 0.1))) * var(--toast-frontmost-height, var(--toast-height)))) scale(max(0, calc(1 - var(--toast-index) * 0.1))) !custom',
281
288
  transformOrigin: 'bottom center !custom',
282
289
  // Height follows the frontmost toast as the stack collapses, which a transform cannot express.
283
- transitionDuration: '320ms, 320ms, 150ms',
290
+ transitionDuration: '320ms, 320ms, 150ms !custom',
284
291
  transitionProperty: 'transform, opacity, height',
285
292
  transitionTimingFunction: 'spring',
286
293
  userSelect: 'none',
@@ -288,7 +295,7 @@ namespace styles {
288
295
  selectors: {
289
296
  '&::after': {
290
297
  content: '"" !custom',
291
- height: '13px !custom',
298
+ height: '14',
292
299
  insetBlockStart: '100% !custom',
293
300
  insetInline: '0',
294
301
  position: 'absolute',
@@ -303,7 +310,7 @@ namespace styles {
303
310
  opacity: '0 !custom',
304
311
  transform: 'translateY(150%) !custom',
305
312
  },
306
- '&[data-ending-style]': { transitionDuration: '200ms, 200ms, 150ms' },
313
+ '&[data-ending-style]': { transitionDuration: '200ms, 200ms, 150ms !custom' },
307
314
  '&[data-ending-style][data-swipe-direction="down"]': {
308
315
  transform: 'translateY(calc(var(--toast-swipe-movement-y) + 150%)) !custom',
309
316
  },
@@ -317,7 +324,7 @@ namespace styles {
317
324
  transform: 'translateY(calc(var(--toast-swipe-movement-y) - 150%)) !custom',
318
325
  },
319
326
  // The toast follows the pointer without lag while swiping.
320
- '&[data-swiping]': { transitionDuration: '0ms' },
327
+ '&[data-swiping]': { transitionDuration: '0' },
321
328
  },
322
329
  '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'opacity' },
323
330
  },
@@ -336,7 +343,7 @@ namespace styles {
336
343
  margin: 'auto !custom',
337
344
  maxWidth: '384',
338
345
  position: 'fixed',
339
- zIndex: '1000 !custom',
346
+ zIndex: 'toast',
340
347
  '@media (min-width: 40rem)': {
341
348
  insetInlineStart: 'auto !custom',
342
349
  margin: '0',
@@ -103,31 +103,34 @@ namespace styles {
103
103
  boxSizing: 'border-box',
104
104
  color: 'background.primary',
105
105
  maxWidth: '320',
106
- paddingBlock: '6px !custom',
106
+ paddingBlock: '6',
107
107
  paddingInline: '12',
108
108
  transformOrigin: 'var(--transform-origin) !custom',
109
- transitionDuration: '160ms',
110
- transitionProperty: 'opacity, transform',
109
+ transitionDuration: '160',
110
+ transitionProperty: 'opacity, scale',
111
111
  transitionTimingFunction: 'snappy',
112
112
  typography: 'label.13',
113
113
  selectors: {
114
114
  '&[data-ending-style]': {
115
115
  opacity: '0 !custom',
116
- transform: 'scale(0.96) !custom',
117
- transitionDuration: '100ms',
116
+ scale: 'enter',
117
+ transitionDuration: '100',
118
+ },
119
+ '&[data-instant]': { transitionDuration: '0' },
120
+ '&[data-starting-style]': {
121
+ opacity: '0 !custom',
122
+ scale: 'enter',
118
123
  },
119
- '&[data-instant]': { transitionDuration: '0ms' },
120
- '&[data-starting-style]': { opacity: '0 !custom', transform: 'scale(0.96) !custom' },
121
124
  },
122
125
  '@media (prefers-reduced-motion: reduce)': {
123
126
  transitionProperty: 'opacity',
124
127
  selectors: {
125
- '&[data-ending-style], &[data-starting-style]': { transform: 'none !custom' },
128
+ '&[data-ending-style], &[data-starting-style]': { scale: 'none !custom' },
126
129
  },
127
130
  },
128
131
  },
129
132
  { id: 'tds/web/tooltip/popup' },
130
133
  )
131
134
 
132
- export const positioner = style({ zIndex: '50 !custom' }, { id: 'tds/web/tooltip/positioner' })
135
+ export const positioner = style({ zIndex: 'popover' }, { id: 'tds/web/tooltip/positioner' })
133
136
  }
@@ -14,12 +14,12 @@ export namespace styles {
14
14
  display: 'flex',
15
15
  justifyContent: 'space-between',
16
16
  outlineColor: 'transparent !custom',
17
- outlineOffset: '2px !custom',
17
+ outlineOffset: '2',
18
18
  outlineStyle: 'solid !custom',
19
- outlineWidth: '2px !custom',
19
+ outlineWidth: '2',
20
20
  position: 'relative',
21
21
  textAlign: 'start',
22
- transitionDuration: '160ms !custom',
22
+ transitionDuration: '160',
23
23
  transitionProperty: 'background-color, border-color, opacity, outline-color !custom',
24
24
  transitionTimingFunction: 'snappy',
25
25
  width: '100% !custom',
@@ -29,19 +29,19 @@ export namespace styles {
29
29
  borderColor: 'transparent !custom',
30
30
  borderRadius: 'inherit !custom',
31
31
  borderStyle: 'solid !custom',
32
- borderWidth: '2px !custom',
32
+ borderWidth: '2',
33
33
  boxSizing: 'border-box',
34
34
  content: '"" !custom',
35
35
  inset: '0',
36
36
  pointerEvents: 'none',
37
37
  position: 'absolute',
38
- transitionDuration: '160ms !custom',
38
+ transitionDuration: '160',
39
39
  transitionProperty: 'border-color !custom',
40
40
  transitionTimingFunction: 'snappy',
41
41
  },
42
42
  '&:is(button)': { cursor: 'pointer' },
43
43
  '&:focus-visible, &:has(:focus-visible)': { outlineColor: 'blue.700' },
44
- '&[data-disabled], &:disabled': { opacity: '0.4 !custom' },
44
+ '&[data-disabled], &:disabled': { opacity: 'disabled' },
45
45
  '&:is([aria-invalid="true"], [data-invalid], :has([aria-invalid="true"]))::before': {
46
46
  borderColor: 'red.800',
47
47
  },
@@ -73,7 +73,7 @@ export namespace styles {
73
73
  large: { columnGap: '12', minHeight: '56', paddingInline: '20', typography: 'copy.16' },
74
74
  medium: { columnGap: '8', minHeight: '40', paddingInline: '16', typography: 'copy.14' },
75
75
  small: {
76
- columnGap: '6px !custom',
76
+ columnGap: '6',
77
77
  minHeight: '32',
78
78
  paddingInline: '12',
79
79
  typography: 'copy.13',
@@ -124,18 +124,18 @@ export namespace styles {
124
124
  height: '36',
125
125
  justifyContent: 'center',
126
126
  outlineColor: 'transparent !custom',
127
- outlineOffset: '2px !custom',
127
+ outlineOffset: '2',
128
128
  outlineStyle: 'solid !custom',
129
- outlineWidth: '2px !custom',
129
+ outlineWidth: '2',
130
130
  padding: '0',
131
- transitionDuration: '160ms !custom',
131
+ transitionDuration: '160',
132
132
  transitionProperty: 'background-color, color, opacity, outline-color, transform !custom',
133
133
  transitionTimingFunction: 'snappy',
134
134
  width: '36',
135
135
  selectors: {
136
136
  '&:active:not(:disabled)': {
137
137
  transform: 'scale(0.92) !custom',
138
- transitionDuration: '100ms !custom',
138
+ transitionDuration: '100',
139
139
  },
140
140
  '&:disabled': { cursor: 'default' },
141
141
  '&:focus-visible': { outlineColor: 'blue.700' },
@@ -145,23 +145,23 @@ export namespace styles {
145
145
  transform: 'scale(0.6) !custom',
146
146
  },
147
147
  '& > svg': {
148
- transitionDuration: '200ms !custom',
148
+ transitionDuration: '200',
149
149
  transitionProperty: 'transform !custom',
150
150
  transitionTimingFunction: 'spring',
151
151
  },
152
152
  '&[data-popup-open] > svg': { transform: 'rotate(180deg) !custom' },
153
153
  // Adjacent buttons touch, so their icons sit close together.
154
- '[data-size="large"] > & + &': { marginInlineStart: '-12px !custom' },
155
- '[data-size="medium"] > & + &': { marginInlineStart: '-8px !custom' },
156
- '[data-size="small"] > & + &': { marginInlineStart: '-6px !custom' },
157
- '[data-size="large"] > &:last-child': { marginInlineEnd: '-10px !custom' },
154
+ '[data-size="large"] > & + &': { marginInlineStart: '-12' },
155
+ '[data-size="medium"] > & + &': { marginInlineStart: '-8' },
156
+ '[data-size="small"] > & + &': { marginInlineStart: '-6' },
157
+ '[data-size="large"] > &:last-child': { marginInlineEnd: '-10' },
158
158
  '[data-size="large"][data-variant="outlined"] > &:last-child': {
159
- marginInlineEnd: '-14px !custom',
159
+ marginInlineEnd: '-14',
160
160
  },
161
161
  '[data-size="medium"] > &': { fontSize: '14', height: '28', width: '28' },
162
- '[data-size="medium"] > &:last-child': { marginInlineEnd: '-10px !custom' },
162
+ '[data-size="medium"] > &:last-child': { marginInlineEnd: '-10' },
163
163
  '[data-size="small"] > &': { fontSize: '12', height: '24', width: '24' },
164
- '[data-size="small"] > &:last-child': { marginInlineEnd: '-8px !custom' },
164
+ '[data-size="small"] > &:last-child': { marginInlineEnd: '-8' },
165
165
  '[data-variant="filled"]:is([data-size="large"], [data-size="medium"]) > &': {
166
166
  borderRadius: '6',
167
167
  },
@@ -198,7 +198,7 @@ export namespace styles {
198
198
  padding: '0',
199
199
  // A zero width drops the input's intrinsic size from the field's min-content width.
200
200
  width: '0',
201
- selectors: { '&::placeholder': { color: 'gray.700' } },
201
+ selectors: { '&::placeholder': { color: 'gray.900' } },
202
202
  },
203
203
  { id: 'tds/web/select-field/input' },
204
204
  )
@@ -1,4 +1,4 @@
1
- import { type RefObject, createContext, useLayoutEffect, useRef } from 'react'
1
+ import { createContext, type RefObject, useLayoutEffect, useRef } from 'react'
2
2
  import { keyframes } from 'zyzz/web'
3
3
  import { variants, vars } from '../../zyzz.config.js'
4
4
 
@@ -93,13 +93,12 @@ export namespace styles {
93
93
  color: 'foreground',
94
94
  display: 'flex',
95
95
  outlineColor: 'transparent !custom',
96
- outlineOffset: '2px !custom',
96
+ outlineOffset: '2',
97
97
  outlineStyle: 'solid !custom',
98
- outlineWidth: '2px !custom',
98
+ outlineWidth: '2',
99
99
  position: 'relative',
100
- transitionDuration: '160ms !custom',
101
- transitionProperty:
102
- 'background-color, border-color, opacity, outline-color, transform !custom',
100
+ transitionDuration: '160',
101
+ transitionProperty: 'background-color, border-color, opacity, outline-color, scale !custom',
103
102
  transitionTimingFunction: 'snappy',
104
103
  selectors: {
105
104
  // The invalid ring fades in on an inset border, so focus changes only the outline color.
@@ -107,13 +106,13 @@ export namespace styles {
107
106
  borderColor: 'transparent !custom',
108
107
  borderRadius: 'inherit !custom',
109
108
  borderStyle: 'solid !custom',
110
- borderWidth: '2px !custom',
109
+ borderWidth: '2',
111
110
  boxSizing: 'border-box',
112
111
  content: '"" !custom',
113
112
  inset: '0',
114
113
  pointerEvents: 'none',
115
114
  position: 'absolute',
116
- transitionDuration: '160ms !custom',
115
+ transitionDuration: '160',
117
116
  transitionProperty: 'border-color !custom',
118
117
  transitionTimingFunction: 'snappy',
119
118
  },
@@ -124,15 +123,15 @@ export namespace styles {
124
123
  width: '100% !custom',
125
124
  },
126
125
  '&:is(button):active:not(:disabled, [data-disabled])': {
127
- transform: 'scale(0.98) !custom',
128
- transitionDuration: '100ms !custom',
126
+ scale: 'press',
127
+ transitionDuration: '100',
129
128
  },
130
129
  '&:hover:not(:disabled, [data-disabled], :has(input:disabled))': {
131
130
  backgroundColor: 'grayAlpha.200',
132
131
  },
133
132
  '&:disabled, &[data-disabled], &:has(input:disabled)': {
134
133
  cursor: 'default',
135
- opacity: '0.4 !custom',
134
+ opacity: 'disabled',
136
135
  },
137
136
  '&:focus-visible, &:has(input:focus-visible)': { outlineColor: 'blue.700' },
138
137
  // Success and invalid draw one ring: inset at rest, and the outline instead while focused.
@@ -185,7 +184,7 @@ export namespace styles {
185
184
  '@media (prefers-reduced-motion: reduce)': {
186
185
  transitionProperty: 'background-color, border-color, opacity, outline-color !custom',
187
186
  selectors: {
188
- '&:active': { transform: 'none !custom' },
187
+ '&:active': { scale: 'none !custom' },
189
188
  '&[data-entered]': { animation: 'none !custom' },
190
189
  },
191
190
  },
@@ -209,7 +208,7 @@ export namespace styles {
209
208
  },
210
209
  small: {
211
210
  borderRadius: '8',
212
- columnGap: '6px !custom',
211
+ columnGap: '6',
213
212
  height: '32',
214
213
  paddingInline: '12',
215
214
  typography: 'copy.13',
@@ -222,7 +221,7 @@ export namespace styles {
222
221
  borderColor: 'grayAlpha.200',
223
222
  borderRadius: '12',
224
223
  borderStyle: 'solid',
225
- borderWidth: '1px !custom',
224
+ borderWidth: '1',
226
225
  height: 'auto !custom',
227
226
  minHeight: '56',
228
227
  paddingBlock: '16',