@tempoxyz/ds 0.2.2 → 0.2.5

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 (340) hide show
  1. package/dist/mobile/components/Button.d.ts +1 -1
  2. package/dist/mobile/components/Button.js +1 -1
  3. package/dist/mobile/components/Button.js.map +1 -1
  4. package/dist/mobile/components/IconButton.d.ts +1 -1
  5. package/dist/mobile/components/IconButton.js +1 -1
  6. package/dist/mobile/components/IconButton.js.map +1 -1
  7. package/dist/mobile/components/Spinner.d.ts +3 -3
  8. package/dist/mobile/components/Spinner.d.ts.map +1 -1
  9. package/dist/mobile/components/Spinner.js +3 -3
  10. package/dist/mobile/components/Spinner.js.map +1 -1
  11. package/dist/mobile/components/Toast.d.ts +1 -1
  12. package/dist/mobile/components/Toast.d.ts.map +1 -1
  13. package/dist/mobile/components/Toast.js +1 -1
  14. package/dist/mobile/components/Toast.js.map +1 -1
  15. package/dist/mobile/components/Toggle.d.ts +2 -2
  16. package/dist/mobile/components/Toggle.js +2 -2
  17. package/dist/mobile/components/Toggle.js.map +1 -1
  18. package/dist/mobile/vars.d.ts +24 -0
  19. package/dist/mobile/vars.d.ts.map +1 -1
  20. package/dist/mobile/vars.js +12 -0
  21. package/dist/mobile/vars.js.map +1 -1
  22. package/dist/mobile/zyzz.config.d.ts +96 -0
  23. package/dist/mobile/zyzz.config.d.ts.map +1 -1
  24. package/dist/web/components/Accordion.css +1 -1
  25. package/dist/web/components/Accordion.d.ts +7 -7
  26. package/dist/web/components/Accordion.js.map +1 -1
  27. package/dist/web/components/Accordion.js.zyzz.json +1 -1
  28. package/dist/web/components/AlertDialog.css +1 -1
  29. package/dist/web/components/AlertDialog.d.ts.map +1 -1
  30. package/dist/web/components/AlertDialog.js +1 -1
  31. package/dist/web/components/AlertDialog.js.map +1 -1
  32. package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
  33. package/dist/web/components/Amount.js.zyzz.json +1 -1
  34. package/dist/web/components/AmountInput.css +1 -1
  35. package/dist/web/components/AmountInput.js +1 -1
  36. package/dist/web/components/AmountInput.js.map +1 -1
  37. package/dist/web/components/AmountInput.js.zyzz.json +1 -1
  38. package/dist/web/components/AppShell.css +1 -1
  39. package/dist/web/components/AppShell.d.ts +10 -10
  40. package/dist/web/components/AppShell.js.map +1 -1
  41. package/dist/web/components/AppShell.js.zyzz.json +1 -1
  42. package/dist/web/components/Autocomplete.js.zyzz.json +1 -1
  43. package/dist/web/components/Avatar.css +1 -1
  44. package/dist/web/components/Avatar.d.ts +3 -3
  45. package/dist/web/components/Avatar.js.map +1 -1
  46. package/dist/web/components/Avatar.js.zyzz.json +1 -1
  47. package/dist/web/components/Banner.css +1 -1
  48. package/dist/web/components/Banner.js +2 -2
  49. package/dist/web/components/Banner.js.map +1 -1
  50. package/dist/web/components/Banner.js.zyzz.json +1 -1
  51. package/dist/web/components/Breadcrumbs.css +1 -1
  52. package/dist/web/components/Breadcrumbs.d.ts +4 -4
  53. package/dist/web/components/Breadcrumbs.js.map +1 -1
  54. package/dist/web/components/Breadcrumbs.js.zyzz.json +1 -1
  55. package/dist/web/components/Button.css +1 -1
  56. package/dist/web/components/Button.d.ts +12 -11
  57. package/dist/web/components/Button.d.ts.map +1 -1
  58. package/dist/web/components/Button.js +2 -2
  59. package/dist/web/components/Button.js.map +1 -1
  60. package/dist/web/components/Button.js.zyzz.json +1 -1
  61. package/dist/web/components/Calendar.css +1 -1
  62. package/dist/web/components/Calendar.js.map +1 -1
  63. package/dist/web/components/Calendar.js.zyzz.json +1 -1
  64. package/dist/web/components/Callout.css +1 -1
  65. package/dist/web/components/Callout.d.ts +6 -6
  66. package/dist/web/components/Callout.js +1 -1
  67. package/dist/web/components/Callout.js.map +1 -1
  68. package/dist/web/components/Callout.js.zyzz.json +1 -1
  69. package/dist/web/components/Checkbox.css +1 -1
  70. package/dist/web/components/Checkbox.d.ts +8 -8
  71. package/dist/web/components/Checkbox.js.map +1 -1
  72. package/dist/web/components/Checkbox.js.zyzz.json +1 -1
  73. package/dist/web/components/CheckboxGroup.js.zyzz.json +1 -1
  74. package/dist/web/components/ChoiceGroup.css +1 -1
  75. package/dist/web/components/ChoiceGroup.d.ts +2 -2
  76. package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
  77. package/dist/web/components/ChoiceGroup.js +2 -2
  78. package/dist/web/components/ChoiceGroup.js.map +1 -1
  79. package/dist/web/components/ChoiceGroup.js.zyzz.json +1 -1
  80. package/dist/web/components/Choicebox.css +1 -1
  81. package/dist/web/components/Choicebox.d.ts +4 -4
  82. package/dist/web/components/Choicebox.js +1 -1
  83. package/dist/web/components/Choicebox.js.map +1 -1
  84. package/dist/web/components/Choicebox.js.zyzz.json +1 -1
  85. package/dist/web/components/Combobox.css +1 -1
  86. package/dist/web/components/Combobox.js.map +1 -1
  87. package/dist/web/components/Combobox.js.zyzz.json +1 -1
  88. package/dist/web/components/Container.js.zyzz.json +1 -1
  89. package/dist/web/components/CopyButton.js.zyzz.json +1 -1
  90. package/dist/web/components/DatePicker.css +1 -1
  91. package/dist/web/components/DatePicker.d.ts +19 -19
  92. package/dist/web/components/DatePicker.d.ts.map +1 -1
  93. package/dist/web/components/DatePicker.js +2 -2
  94. package/dist/web/components/DatePicker.js.map +1 -1
  95. package/dist/web/components/DatePicker.js.zyzz.json +1 -1
  96. package/dist/web/components/Dialog.css +1 -1
  97. package/dist/web/components/Dialog.d.ts.map +1 -1
  98. package/dist/web/components/Dialog.js +1 -1
  99. package/dist/web/components/Dialog.js.map +1 -1
  100. package/dist/web/components/Dialog.js.zyzz.json +1 -1
  101. package/dist/web/components/Drawer.css +1 -1
  102. package/dist/web/components/Drawer.js.map +1 -1
  103. package/dist/web/components/Drawer.js.zyzz.json +1 -1
  104. package/dist/web/components/Empty.js.zyzz.json +1 -1
  105. package/dist/web/components/Field.css +1 -1
  106. package/dist/web/components/Field.js.map +1 -1
  107. package/dist/web/components/Field.js.zyzz.json +1 -1
  108. package/dist/web/components/Fieldset.js.zyzz.json +1 -1
  109. package/dist/web/components/Frame.css +1 -1
  110. package/dist/web/components/Frame.d.ts +27 -10
  111. package/dist/web/components/Frame.d.ts.map +1 -1
  112. package/dist/web/components/Frame.js +12 -5
  113. package/dist/web/components/Frame.js.map +1 -1
  114. package/dist/web/components/Frame.js.zyzz.json +1 -1
  115. package/dist/web/components/Gauge.css +1 -1
  116. package/dist/web/components/Gauge.js.map +1 -1
  117. package/dist/web/components/Gauge.js.zyzz.json +1 -1
  118. package/dist/web/components/Grid.js.zyzz.json +1 -1
  119. package/dist/web/components/Hex.css +1 -1
  120. package/dist/web/components/Hex.d.ts +5 -5
  121. package/dist/web/components/Hex.js +1 -1
  122. package/dist/web/components/Hex.js.map +1 -1
  123. package/dist/web/components/Hex.js.zyzz.json +1 -1
  124. package/dist/web/components/IconChip.css +1 -1
  125. package/dist/web/components/IconChip.d.ts +1 -1
  126. package/dist/web/components/IconChip.d.ts.map +1 -1
  127. package/dist/web/components/IconChip.js.map +1 -1
  128. package/dist/web/components/IconChip.js.zyzz.json +1 -1
  129. package/dist/web/components/Identicon.js.zyzz.json +1 -1
  130. package/dist/web/components/Inline.js.zyzz.json +1 -1
  131. package/dist/web/components/Input.css +1 -1
  132. package/dist/web/components/Input.js.map +1 -1
  133. package/dist/web/components/Input.js.zyzz.json +1 -1
  134. package/dist/web/components/Inset.js.zyzz.json +1 -1
  135. package/dist/web/components/Kbd.css +1 -1
  136. package/dist/web/components/Kbd.d.ts +1 -1
  137. package/dist/web/components/Kbd.js.map +1 -1
  138. package/dist/web/components/Kbd.js.zyzz.json +1 -1
  139. package/dist/web/components/LoadingDots.css +1 -1
  140. package/dist/web/components/LoadingDots.d.ts +2 -2
  141. package/dist/web/components/LoadingDots.js.map +1 -1
  142. package/dist/web/components/LoadingDots.js.zyzz.json +1 -1
  143. package/dist/web/components/Menu.css +1 -1
  144. package/dist/web/components/Menu.d.ts +11 -11
  145. package/dist/web/components/Menu.d.ts.map +1 -1
  146. package/dist/web/components/Menu.js +1 -1
  147. package/dist/web/components/Menu.js.map +1 -1
  148. package/dist/web/components/Menu.js.zyzz.json +1 -1
  149. package/dist/web/components/NumberField.css +1 -1
  150. package/dist/web/components/NumberField.js +1 -1
  151. package/dist/web/components/NumberField.js.map +1 -1
  152. package/dist/web/components/NumberField.js.zyzz.json +1 -1
  153. package/dist/web/components/OtpField.css +1 -1
  154. package/dist/web/components/OtpField.d.ts.map +1 -1
  155. package/dist/web/components/OtpField.js +1 -1
  156. package/dist/web/components/OtpField.js.map +1 -1
  157. package/dist/web/components/OtpField.js.zyzz.json +1 -1
  158. package/dist/web/components/Pagination.css +1 -1
  159. package/dist/web/components/Pagination.d.ts +12 -12
  160. package/dist/web/components/Pagination.js +1 -1
  161. package/dist/web/components/Pagination.js.map +1 -1
  162. package/dist/web/components/Pagination.js.zyzz.json +1 -1
  163. package/dist/web/components/Popover.css +1 -1
  164. package/dist/web/components/Popover.d.ts.map +1 -1
  165. package/dist/web/components/Popover.js +1 -1
  166. package/dist/web/components/Popover.js.map +1 -1
  167. package/dist/web/components/Popover.js.zyzz.json +1 -1
  168. package/dist/web/components/Progress.css +1 -1
  169. package/dist/web/components/Progress.js.map +1 -1
  170. package/dist/web/components/Progress.js.zyzz.json +1 -1
  171. package/dist/web/components/Qr.js.zyzz.json +1 -1
  172. package/dist/web/components/RadioGroup.css +1 -1
  173. package/dist/web/components/RadioGroup.d.ts +4 -4
  174. package/dist/web/components/RadioGroup.js.map +1 -1
  175. package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
  176. package/dist/web/components/Rows.css +1 -1
  177. package/dist/web/components/Rows.d.ts +20 -9
  178. package/dist/web/components/Rows.d.ts.map +1 -1
  179. package/dist/web/components/Rows.js +6 -4
  180. package/dist/web/components/Rows.js.map +1 -1
  181. package/dist/web/components/Rows.js.zyzz.json +1 -1
  182. package/dist/web/components/SecretValue.css +1 -1
  183. package/dist/web/components/SecretValue.d.ts +4 -4
  184. package/dist/web/components/SecretValue.js +1 -1
  185. package/dist/web/components/SecretValue.js.map +1 -1
  186. package/dist/web/components/SecretValue.js.zyzz.json +1 -1
  187. package/dist/web/components/Select.css +1 -1
  188. package/dist/web/components/Select.js.map +1 -1
  189. package/dist/web/components/Select.js.zyzz.json +1 -1
  190. package/dist/web/components/Separator.js.zyzz.json +1 -1
  191. package/dist/web/components/SidebarMenu.css +1 -1
  192. package/dist/web/components/SidebarMenu.d.ts +11 -11
  193. package/dist/web/components/SidebarMenu.d.ts.map +1 -1
  194. package/dist/web/components/SidebarMenu.js +1 -1
  195. package/dist/web/components/SidebarMenu.js.map +1 -1
  196. package/dist/web/components/SidebarMenu.js.zyzz.json +1 -1
  197. package/dist/web/components/Skeleton.js.zyzz.json +1 -1
  198. package/dist/web/components/Slider.css +1 -1
  199. package/dist/web/components/Slider.d.ts.map +1 -1
  200. package/dist/web/components/Slider.js.map +1 -1
  201. package/dist/web/components/Slider.js.zyzz.json +1 -1
  202. package/dist/web/components/Snippet.css +1 -1
  203. package/dist/web/components/Snippet.d.ts +4 -4
  204. package/dist/web/components/Snippet.js +1 -1
  205. package/dist/web/components/Snippet.js.map +1 -1
  206. package/dist/web/components/Snippet.js.zyzz.json +1 -1
  207. package/dist/web/components/Spinner.js.zyzz.json +1 -1
  208. package/dist/web/components/SplitButton.css +1 -1
  209. package/dist/web/components/SplitButton.d.ts.map +1 -1
  210. package/dist/web/components/SplitButton.js +1 -1
  211. package/dist/web/components/SplitButton.js.map +1 -1
  212. package/dist/web/components/SplitButton.js.zyzz.json +1 -1
  213. package/dist/web/components/Stack.js.zyzz.json +1 -1
  214. package/dist/web/components/Stepper.css +1 -1
  215. package/dist/web/components/Stepper.d.ts +1 -1
  216. package/dist/web/components/Stepper.js.map +1 -1
  217. package/dist/web/components/Stepper.js.zyzz.json +1 -1
  218. package/dist/web/components/Surface.css +1 -1
  219. package/dist/web/components/Surface.d.ts +65 -47
  220. package/dist/web/components/Surface.d.ts.map +1 -1
  221. package/dist/web/components/Surface.js +3 -3
  222. package/dist/web/components/Surface.js.map +1 -1
  223. package/dist/web/components/Surface.js.zyzz.json +1 -1
  224. package/dist/web/components/Switch.css +1 -1
  225. package/dist/web/components/Switch.d.ts +14 -14
  226. package/dist/web/components/Switch.d.ts.map +1 -1
  227. package/dist/web/components/Switch.js.map +1 -1
  228. package/dist/web/components/Switch.js.zyzz.json +1 -1
  229. package/dist/web/components/Table.css +1 -1
  230. package/dist/web/components/Table.d.ts +4 -4
  231. package/dist/web/components/Table.js.map +1 -1
  232. package/dist/web/components/Table.js.zyzz.json +1 -1
  233. package/dist/web/components/Tabs.css +1 -1
  234. package/dist/web/components/Tabs.d.ts +14 -14
  235. package/dist/web/components/Tabs.js +1 -1
  236. package/dist/web/components/Tabs.js.map +1 -1
  237. package/dist/web/components/Tabs.js.zyzz.json +1 -1
  238. package/dist/web/components/Tag.css +1 -1
  239. package/dist/web/components/Tag.d.ts +10 -10
  240. package/dist/web/components/Tag.js +1 -1
  241. package/dist/web/components/Tag.js.map +1 -1
  242. package/dist/web/components/Tag.js.zyzz.json +1 -1
  243. package/dist/web/components/Textarea.css +1 -1
  244. package/dist/web/components/Textarea.d.ts +14 -14
  245. package/dist/web/components/Textarea.js.map +1 -1
  246. package/dist/web/components/Textarea.js.zyzz.json +1 -1
  247. package/dist/web/components/Toast.css +1 -1
  248. package/dist/web/components/Toast.d.ts.map +1 -1
  249. package/dist/web/components/Toast.js +2 -2
  250. package/dist/web/components/Toast.js.map +1 -1
  251. package/dist/web/components/Toast.js.zyzz.json +1 -1
  252. package/dist/web/components/Token.js.zyzz.json +1 -1
  253. package/dist/web/components/Tooltip.css +1 -1
  254. package/dist/web/components/Tooltip.d.ts.map +1 -1
  255. package/dist/web/components/Tooltip.js +1 -1
  256. package/dist/web/components/Tooltip.js.map +1 -1
  257. package/dist/web/components/Tooltip.js.zyzz.json +1 -1
  258. package/dist/web/components/internal/Field.css +1 -1
  259. package/dist/web/components/internal/Field.d.ts +7 -7
  260. package/dist/web/components/internal/Field.js.map +1 -1
  261. package/dist/web/components/internal/Field.js.zyzz.json +1 -1
  262. package/dist/web/components/internal/InputGroup.css +1 -1
  263. package/dist/web/components/internal/InputGroup.d.ts +23 -12
  264. package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
  265. package/dist/web/components/internal/InputGroup.js +1 -1
  266. package/dist/web/components/internal/InputGroup.js.map +1 -1
  267. package/dist/web/components/internal/InputGroup.js.zyzz.json +1 -1
  268. package/dist/web/components/internal/Listbox.css +1 -1
  269. package/dist/web/components/internal/Listbox.d.ts +9 -9
  270. package/dist/web/components/internal/Listbox.d.ts.map +1 -1
  271. package/dist/web/components/internal/Listbox.js +1 -1
  272. package/dist/web/components/internal/Listbox.js.map +1 -1
  273. package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
  274. package/dist/web/index.js.zyzz.json +1 -1
  275. package/dist/web/vars.d.ts +91 -0
  276. package/dist/web/vars.d.ts.map +1 -1
  277. package/dist/web/vars.js.map +1 -1
  278. package/dist/web/vars.js.zyzz.json +1 -1
  279. package/dist/web/zyzz.config.d.ts +455 -0
  280. package/dist/web/zyzz.config.d.ts.map +1 -1
  281. package/dist/web/zyzz.config.js.zyzz.json +1 -1
  282. package/package.json +1 -1
  283. package/src/mobile/components/Button.tsx +1 -1
  284. package/src/mobile/components/IconButton.tsx +1 -1
  285. package/src/mobile/components/Spinner.tsx +3 -4
  286. package/src/mobile/components/Toast.tsx +1 -2
  287. package/src/mobile/components/Toggle.tsx +2 -2
  288. package/src/mobile/vars.ts +14 -0
  289. package/src/web/components/Accordion.tsx +8 -8
  290. package/src/web/components/AlertDialog.tsx +11 -8
  291. package/src/web/components/AmountInput.tsx +12 -12
  292. package/src/web/components/AppShell.tsx +23 -23
  293. package/src/web/components/Avatar.tsx +3 -3
  294. package/src/web/components/Banner.tsx +15 -15
  295. package/src/web/components/Breadcrumbs.tsx +4 -4
  296. package/src/web/components/Button.tsx +15 -12
  297. package/src/web/components/Calendar.tsx +5 -5
  298. package/src/web/components/Callout.tsx +15 -15
  299. package/src/web/components/Checkbox.tsx +9 -9
  300. package/src/web/components/ChoiceGroup.tsx +13 -14
  301. package/src/web/components/Choicebox.tsx +21 -21
  302. package/src/web/components/Combobox.tsx +3 -3
  303. package/src/web/components/DatePicker.tsx +24 -24
  304. package/src/web/components/Dialog.tsx +26 -17
  305. package/src/web/components/Drawer.tsx +6 -6
  306. package/src/web/components/Field.tsx +9 -9
  307. package/src/web/components/Frame.tsx +30 -9
  308. package/src/web/components/Gauge.tsx +1 -1
  309. package/src/web/components/Hex.tsx +5 -5
  310. package/src/web/components/IconChip.tsx +1 -2
  311. package/src/web/components/Input.tsx +10 -10
  312. package/src/web/components/Kbd.tsx +1 -1
  313. package/src/web/components/LoadingDots.tsx +4 -4
  314. package/src/web/components/Menu.tsx +15 -12
  315. package/src/web/components/NumberField.tsx +16 -16
  316. package/src/web/components/OtpField.tsx +14 -6
  317. package/src/web/components/Pagination.tsx +12 -12
  318. package/src/web/components/Popover.tsx +14 -11
  319. package/src/web/components/Progress.tsx +2 -2
  320. package/src/web/components/RadioGroup.tsx +11 -11
  321. package/src/web/components/Rows.tsx +35 -16
  322. package/src/web/components/SecretValue.tsx +4 -4
  323. package/src/web/components/Select.tsx +1 -1
  324. package/src/web/components/SidebarMenu.tsx +14 -15
  325. package/src/web/components/Slider.tsx +6 -7
  326. package/src/web/components/Snippet.tsx +8 -8
  327. package/src/web/components/SplitButton.tsx +17 -5
  328. package/src/web/components/Stepper.tsx +1 -1
  329. package/src/web/components/Surface.tsx +56 -50
  330. package/src/web/components/Switch.tsx +21 -23
  331. package/src/web/components/Table.tsx +4 -4
  332. package/src/web/components/Tabs.tsx +14 -14
  333. package/src/web/components/Tag.tsx +12 -12
  334. package/src/web/components/Textarea.tsx +14 -14
  335. package/src/web/components/Toast.tsx +23 -20
  336. package/src/web/components/Tooltip.tsx +12 -9
  337. package/src/web/components/internal/Field.ts +19 -19
  338. package/src/web/components/internal/InputGroup.ts +22 -13
  339. package/src/web/components/internal/Listbox.ts +17 -14
  340. package/src/web/vars.ts +81 -2
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tempoxyz/ds",
3
3
  "type": "module",
4
- "version": "0.2.2",
4
+ "version": "0.2.5",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "DESIGN.md",
@@ -139,7 +139,7 @@ export namespace styles {
139
139
  {
140
140
  // React Native has no backdrop blur, so the overlay keeps only its translucent fill.
141
141
  when: { appearance: 'overlay', variant: 'secondary' },
142
- style: { backgroundColor: 'rgba(112, 112, 112, 0.32) !custom' },
142
+ style: { backgroundColor: 'component.button.overlay.fill' },
143
143
  },
144
144
  ],
145
145
  },
@@ -108,7 +108,7 @@ export namespace styles {
108
108
  {
109
109
  // React Native has no backdrop blur, so the overlay keeps only its translucent fill.
110
110
  when: { appearance: 'overlay', variant: 'secondary' },
111
- style: { backgroundColor: 'rgba(112, 112, 112, 0.32) !custom' },
111
+ style: { backgroundColor: 'component.button.overlay.fill' },
112
112
  },
113
113
  ],
114
114
  },
@@ -90,11 +90,10 @@ export namespace styles {
90
90
  true: {
91
91
  backgroundColor: 'background.elevated',
92
92
  borderRadius: 'xs',
93
- boxShadow:
94
- 'rgba(0, 0, 0, 0.04) 0px 4px 12px, rgba(0, 0, 0, 0.04) 0px 8px 32px, rgba(0, 0, 0, 0.04) 0px 12px 36px !custom',
95
- height: '44px !custom',
93
+ boxShadow: 'elevated',
94
+ height: '44',
96
95
  padding: '2',
97
- width: '44px !custom',
96
+ width: '44',
98
97
  },
99
98
  },
100
99
  },
@@ -74,8 +74,7 @@ export namespace styles {
74
74
  alignSelf: 'flex-start',
75
75
  backgroundColor: 'background.elevated',
76
76
  borderRadius: 'full',
77
- boxShadow:
78
- 'rgba(0, 0, 0, 0.04) 0px 2px 8px, rgba(0, 0, 0, 0.08) 0px 8px 48px, rgba(0, 0, 0, 0.08) 0px 24px 64px !custom',
77
+ boxShadow: 'floating',
79
78
  flexDirection: 'row',
80
79
  gap: '12',
81
80
  minHeight: '48',
@@ -71,9 +71,9 @@ export namespace styles {
71
71
  {
72
72
  base: {
73
73
  borderRadius: 'full',
74
- height: '28px !custom',
74
+ height: '28',
75
75
  justifyContent: 'center',
76
- width: '44px !custom',
76
+ width: '44',
77
77
  },
78
78
  defaultVariants: { disabled: false, value: false },
79
79
  variants: {
@@ -47,6 +47,10 @@ export const variables = Vars.define(
47
47
  },
48
48
  component: {
49
49
  button: {
50
+ // Neutral 056 at 32% alpha. `primitives.ts` has no step for it, so the value stays literal.
51
+ overlay: {
52
+ fill: { light: 'rgba(112, 112, 112, 0.32)', dark: 'rgba(112, 112, 112, 0.32)' },
53
+ },
50
54
  primary: {
51
55
  border: {
52
56
  light: core.color.neutral.shade['000'],
@@ -145,15 +149,25 @@ export const variables = Vars.define(
145
149
  xs: core.spacing['12'],
146
150
  },
147
151
  responsive: { '2Tier': 'Mobile', '3Tier': 'Mobile', '4Tier': 'Mobile' },
152
+ // Box shadows, since `color.shadow` holds only shadow colors. `elevated` lifts a control off its
153
+ // background, and `floating` lifts an overlay such as a toast.
154
+ shadow: {
155
+ elevated:
156
+ '0px 4px 12px rgba(0, 0, 0, 0.04), 0px 8px 32px rgba(0, 0, 0, 0.04), 0px 12px 36px rgba(0, 0, 0, 0.04)',
157
+ floating:
158
+ '0px 2px 8px rgba(0, 0, 0, 0.04), 0px 8px 48px rgba(0, 0, 0, 0.08), 0px 24px 64px rgba(0, 0, 0, 0.08)',
159
+ },
148
160
  spacing: {
149
161
  '12': core.spacing['12'],
150
162
  '16': core.spacing['16'],
151
163
  '2': core.spacing['2'],
152
164
  '20': core.spacing['20'],
153
165
  '24': core.spacing['24'],
166
+ '28': core.spacing['28'],
154
167
  '32': core.spacing['32'],
155
168
  '4': core.spacing['4'],
156
169
  '40': core.spacing['40'],
170
+ '44': core.spacing['44'],
157
171
  '48': core.spacing['48'],
158
172
  '64': core.spacing['64'],
159
173
  '8': core.spacing['8'],
@@ -143,7 +143,7 @@ namespace styles {
143
143
  {
144
144
  flexShrink: '0 !custom',
145
145
  height: '16',
146
- transitionDuration: '240ms',
146
+ transitionDuration: '240',
147
147
  transitionProperty: 'transform',
148
148
  transitionTimingFunction: 'spring',
149
149
  width: '16',
@@ -169,11 +169,11 @@ namespace styles {
169
169
  height: 'var(--accordion-panel-height) !custom',
170
170
  overflow: 'hidden',
171
171
  // Revealing content needs its measured height, which a transform cannot provide.
172
- transitionDuration: '240ms',
172
+ transitionDuration: '240',
173
173
  transitionProperty: 'height, opacity',
174
174
  transitionTimingFunction: 'spring',
175
175
  selectors: {
176
- '&[data-ending-style]': { transitionDuration: '180ms' },
176
+ '&[data-ending-style]': { transitionDuration: '180' },
177
177
  '&[data-ending-style], &[data-starting-style]': {
178
178
  height: '0',
179
179
  opacity: '0 !custom',
@@ -232,21 +232,21 @@ namespace styles {
232
232
  justifyContent: 'space-between',
233
233
  minHeight: '40',
234
234
  outlineColor: 'transparent !custom',
235
- outlineOffset: '0px !custom',
235
+ outlineOffset: '0',
236
236
  outlineStyle: 'solid !custom',
237
- outlineWidth: '2px !custom',
237
+ outlineWidth: '2',
238
238
  paddingBlock: '8',
239
239
  paddingInline: '0',
240
240
  textAlign: 'start',
241
- transitionDuration: '160ms',
241
+ transitionDuration: '160',
242
242
  transitionProperty: 'opacity, outline-color, outline-offset',
243
243
  transitionTimingFunction: 'snappy',
244
244
  // Weight overrides the typography token, so it stays after it.
245
245
  typography: 'button.14',
246
246
  width: '100% !custom',
247
247
  selectors: {
248
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
249
- '&[data-disabled]': { cursor: 'default', opacity: '0.4 !custom' },
248
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
249
+ '&[data-disabled]': { cursor: 'default', opacity: 'disabled' },
250
250
  },
251
251
  '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'opacity, outline-color' },
252
252
  },
@@ -107,31 +107,34 @@ export namespace AlertDialog {
107
107
  namespace styles {
108
108
  export const popup = style(
109
109
  {
110
- backgroundColor: 'light-dark(#fff, #1f1e1e) !custom',
110
+ backgroundColor: 'background.raised',
111
111
  borderRadius: '16',
112
- boxShadow: '0 32px 64px -16px rgb(0 0 0 / 0.28) !custom',
112
+ boxShadow: 'modal',
113
113
  boxSizing: 'border-box',
114
114
  color: 'foreground',
115
115
  maxWidth: '384',
116
116
  outline: 'none !custom',
117
117
  padding: '24',
118
- transitionDuration: '280ms',
119
- transitionProperty: 'opacity, transform',
118
+ transitionDuration: '280',
119
+ transitionProperty: 'opacity, scale',
120
120
  transitionTimingFunction: 'spring',
121
121
  typography: 'copy.14',
122
122
  width: '100% !custom',
123
123
  selectors: {
124
124
  '&[data-ending-style]': {
125
125
  opacity: '0 !custom',
126
- transform: 'scale(0.96) !custom',
127
- transitionDuration: '180ms',
126
+ scale: 'enter',
127
+ transitionDuration: '180',
128
+ },
129
+ '&[data-starting-style]': {
130
+ opacity: '0 !custom',
131
+ scale: 'enter',
128
132
  },
129
- '&[data-starting-style]': { opacity: '0 !custom', transform: 'scale(0.96) !custom' },
130
133
  },
131
134
  '@media (prefers-reduced-motion: reduce)': {
132
135
  transitionProperty: 'opacity',
133
136
  selectors: {
134
- '&[data-ending-style], &[data-starting-style]': { transform: 'none !custom' },
137
+ '&[data-ending-style], &[data-starting-style]': { scale: 'none !custom' },
135
138
  },
136
139
  },
137
140
  },
@@ -199,33 +199,33 @@ namespace styles {
199
199
  cursor: 'pointer',
200
200
  flexShrink: '0 !custom',
201
201
  outlineColor: 'transparent !custom',
202
- outlineOffset: '0px !custom',
202
+ outlineOffset: '0',
203
203
  outlineStyle: 'solid !custom',
204
- outlineWidth: '2px !custom',
204
+ outlineWidth: '2',
205
205
  position: 'relative',
206
- transitionDuration: '160ms',
207
- transitionProperty: 'background-color, outline-color, outline-offset, transform',
206
+ transitionDuration: '160',
207
+ transitionProperty: 'background-color, outline-color, outline-offset, scale',
208
208
  transitionTimingFunction: 'snappy',
209
209
  selectors: {
210
210
  // Each field size insets Max equally from the end and the top, with a concentric radius.
211
211
  '[data-size="large"] > &': {
212
212
  borderRadius: '8',
213
213
  height: '40',
214
- marginInlineEnd: '-12px !custom',
214
+ marginInlineEnd: '-12',
215
215
  paddingInline: '16',
216
216
  typography: 'button.14',
217
217
  },
218
218
  '[data-size="medium"] > &': {
219
219
  borderRadius: '6',
220
220
  height: '28',
221
- marginInlineEnd: '-10px !custom',
221
+ marginInlineEnd: '-10',
222
222
  paddingInline: '12',
223
223
  typography: 'button.12',
224
224
  },
225
225
  '[data-size="small"] > &': {
226
226
  borderRadius: '4',
227
227
  height: '24',
228
- marginInlineEnd: '-8px !custom',
228
+ marginInlineEnd: '-8',
229
229
  paddingInline: '8',
230
230
  typography: 'button.12',
231
231
  },
@@ -233,7 +233,7 @@ namespace styles {
233
233
  '[data-variant="stacked"] > [data-size="small"] > &': {
234
234
  borderRadius: '6',
235
235
  height: '28',
236
- marginInlineEnd: '-10px !custom',
236
+ marginInlineEnd: '-10',
237
237
  paddingInline: '12',
238
238
  typography: 'button.12',
239
239
  },
@@ -245,15 +245,15 @@ namespace styles {
245
245
  paddingInline: '12',
246
246
  typography: 'button.12',
247
247
  },
248
- '&::after': { content: '"" !custom', inset: '-4px !custom', position: 'absolute' },
249
- '&:active': { transform: 'scale(0.98) !custom' },
250
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
248
+ '&::after': { content: '"" !custom', inset: '-4', position: 'absolute' },
249
+ '&:active': { scale: 'press' },
250
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
251
251
  '&:hover': { backgroundColor: 'grayAlpha.300' },
252
252
  '[data-invalid] &': { display: 'none' },
253
253
  },
254
254
  '@media (prefers-reduced-motion: reduce)': {
255
255
  transitionProperty: 'background-color, outline-color',
256
- selectors: { '&:active': { transform: 'none !custom' } },
256
+ selectors: { '&:active': { scale: 'none !custom' } },
257
257
  },
258
258
  },
259
259
  { id: 'tds/web/amount-input/max' },
@@ -294,12 +294,12 @@ namespace styles {
294
294
  inset: '0',
295
295
  opacity: '0.6 !custom',
296
296
  position: 'fixed',
297
- transitionDuration: '280ms !custom',
297
+ transitionDuration: '280',
298
298
  transitionProperty: 'opacity !custom',
299
299
  transitionTimingFunction: 'spring',
300
- zIndex: '40 !custom',
300
+ zIndex: 'overlay',
301
301
  selectors: {
302
- '&[data-ending-style]': { opacity: '0 !custom', transitionDuration: '200ms !custom' },
302
+ '&[data-ending-style]': { opacity: '0 !custom', transitionDuration: '200' },
303
303
  '&[data-starting-style]': { opacity: '0 !custom' },
304
304
  },
305
305
  },
@@ -310,23 +310,23 @@ namespace styles {
310
310
  {
311
311
  backgroundColor: 'currentColor !custom',
312
312
  borderRadius: 'full',
313
- height: '1.5px !custom',
313
+ height: '2',
314
314
  insetInlineStart: '0',
315
315
  position: 'absolute',
316
316
  top: '50% !custom',
317
- transitionDuration: '240ms !custom',
317
+ transitionDuration: '240',
318
318
  transitionProperty: 'transform !custom',
319
319
  transitionTimingFunction: 'spring',
320
320
  width: '100% !custom',
321
321
  selectors: {
322
322
  // Two bars 6px apart meet at the centre and cross into a close mark while the drawer is open.
323
- '&:first-child': { transform: 'translateY(-3.75px) !custom' },
324
- '&:last-child': { transform: 'translateY(2.25px) !custom' },
323
+ '&:first-child': { transform: 'translateY(-4px) !custom' },
324
+ '&:last-child': { transform: 'translateY(2px) !custom' },
325
325
  '[data-popup-open] &:first-child': {
326
- transform: 'translateY(-0.75px) rotate(45deg) !custom',
326
+ transform: 'translateY(-1px) rotate(45deg) !custom',
327
327
  },
328
328
  '[data-popup-open] &:last-child': {
329
- transform: 'translateY(-0.75px) rotate(-45deg) !custom',
329
+ transform: 'translateY(-1px) rotate(-45deg) !custom',
330
330
  },
331
331
  },
332
332
  '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'none !custom' },
@@ -348,17 +348,17 @@ namespace styles {
348
348
  outline: 'none !custom',
349
349
  overflowY: 'auto',
350
350
  transform: 'translateX(var(--drawer-swipe-movement-x, 0px)) !custom',
351
- transitionDuration: '280ms !custom',
351
+ transitionDuration: '280',
352
352
  transitionProperty: 'transform !custom',
353
353
  transitionTimingFunction: 'spring',
354
354
  width: 'min(18rem, 85vw) !custom',
355
355
  selectors: {
356
356
  '&[data-ending-style]': {
357
357
  transform: 'translateX(100%) !custom',
358
- transitionDuration: '200ms !custom',
358
+ transitionDuration: '200',
359
359
  },
360
360
  '&[data-starting-style]': { transform: 'translateX(100%) !custom' },
361
- '&[data-swiping]': { transitionDuration: '0ms !custom', userSelect: 'none' },
361
+ '&[data-swiping]': { transitionDuration: '0', userSelect: 'none' },
362
362
  },
363
363
  '@media (prefers-reduced-motion: reduce)': {
364
364
  transitionProperty: 'opacity !custom',
@@ -452,7 +452,7 @@ namespace styles {
452
452
  flexShrink: '0 !custom',
453
453
  minHeight: '0',
454
454
  paddingBottom: '20',
455
- paddingInline: '10px !custom',
455
+ paddingInline: '10',
456
456
  rowGap: '24',
457
457
  },
458
458
  },
@@ -481,11 +481,11 @@ namespace styles {
481
481
  base: {
482
482
  flex: '1 !custom',
483
483
  // Bleeding into the sidebar's inline padding puts the scrollbar at the sidebar edge.
484
- marginInline: '-10px !custom',
484
+ marginInline: '-10',
485
485
  minHeight: '0',
486
486
  overflowY: 'auto',
487
487
  overscrollBehavior: 'contain',
488
- paddingInline: '10px !custom',
488
+ paddingInline: '10',
489
489
  // Classic scrollbars keep their own lane instead of covering content at the edge.
490
490
  scrollbarGutter: 'stable',
491
491
  scrollbarWidth: 'thin',
@@ -560,7 +560,7 @@ namespace styles {
560
560
  borderColor: 'grayAlpha.200',
561
561
  borderRadius: 'full',
562
562
  borderStyle: 'solid',
563
- borderWidth: '1px !custom',
563
+ borderWidth: '1',
564
564
  boxShadow: 'raised',
565
565
  boxSizing: 'border-box',
566
566
  color: 'foreground',
@@ -571,26 +571,26 @@ namespace styles {
571
571
  insetInlineEnd: '16',
572
572
  justifyContent: 'center',
573
573
  outlineColor: 'transparent !custom',
574
- outlineOffset: '0px !custom',
574
+ outlineOffset: '0',
575
575
  outlineStyle: 'solid !custom',
576
- outlineWidth: '2px !custom',
576
+ outlineWidth: '2',
577
577
  padding: '0',
578
578
  // Fixed above the drawer and its backdrop, so the same button closes what it opened.
579
579
  position: 'fixed',
580
- transitionDuration: '160ms !custom',
580
+ transitionDuration: '160',
581
581
  transitionProperty: 'background-color, outline-color, outline-offset, transform !custom',
582
582
  transitionTimingFunction: 'snappy',
583
583
  width: '40',
584
- zIndex: '60 !custom',
584
+ zIndex: 'modal',
585
585
  selectors: {
586
586
  '&:active': { transform: 'scale(0.96) !custom' },
587
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
587
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
588
588
  '&:hover': { backgroundColor: 'gray.100' },
589
589
  // While open, the button rides out with the drawer and rests 8px outside its left edge,
590
590
  // so the close mark never covers the sidebar. The width matches the drawer's.
591
591
  '&[data-popup-open]': {
592
592
  transform: 'translateX(calc(8px - min(18rem, 85vw))) !custom',
593
- transitionDuration: '280ms !custom',
593
+ transitionDuration: '280',
594
594
  transitionTimingFunction: 'spring',
595
595
  },
596
596
  },
@@ -610,7 +610,7 @@ namespace styles {
610
610
  inset: '0',
611
611
  justifyContent: 'flex-end',
612
612
  position: 'fixed',
613
- zIndex: '50 !custom',
613
+ zIndex: 'popover',
614
614
  },
615
615
  { id: 'tds/web/app-shell/viewport' },
616
616
  )
@@ -141,7 +141,7 @@ namespace styles {
141
141
  // Margin changes the group's width, which a transform cannot. Transitions retarget from
142
142
  // the current margin, so a brief hover reverses smoothly.
143
143
  '& > * + *': {
144
- transitionDuration: '220ms',
144
+ transitionDuration: '220',
145
145
  transitionProperty: 'margin-inline-start',
146
146
  transitionTimingFunction: 'snappy',
147
147
  },
@@ -160,11 +160,11 @@ namespace styles {
160
160
  false: { columnGap: '8' },
161
161
  true: {
162
162
  selectors: {
163
- '& > * + *': { marginInlineStart: '-0.5rem !custom' },
163
+ '& > * + *': { marginInlineStart: '-8' },
164
164
  '& > *': {
165
165
  outlineColor: 'background.primary',
166
166
  outlineStyle: 'solid !custom',
167
- outlineWidth: '2px !custom',
167
+ outlineWidth: '2',
168
168
  },
169
169
  },
170
170
  },
@@ -102,28 +102,28 @@ namespace styles {
102
102
  flexShrink: '0 !custom',
103
103
  // Inline padding keeps the focus ring off the label. The matching negative margin holds the label
104
104
  // where it sits without padding.
105
- marginInline: '-4px !custom',
105
+ marginInline: '-4',
106
106
  outlineColor: 'transparent !custom',
107
- outlineOffset: '0px !custom',
107
+ outlineOffset: '0',
108
108
  outlineStyle: 'solid !custom',
109
- outlineWidth: '2px !custom',
109
+ outlineWidth: '2',
110
110
  paddingBlock: '0',
111
111
  paddingInline: '4',
112
112
  textDecoration: 'underline !custom',
113
113
  textUnderlineOffset: '2px !custom',
114
- transitionDuration: '160ms',
115
- transitionProperty: 'outline-color, outline-offset, text-decoration-color, transform',
114
+ transitionDuration: '160',
115
+ transitionProperty: 'outline-color, outline-offset, text-decoration-color, scale',
116
116
  transitionTimingFunction: 'snappy',
117
117
  typography: 'copy.14.strong',
118
118
  whiteSpace: 'nowrap',
119
119
  selectors: {
120
- '&:active': { transform: 'scale(0.97) !custom' },
121
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
120
+ '&:active': { scale: 'press' },
121
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
122
122
  '&:hover': { textDecorationColor: 'transparent !custom' },
123
123
  },
124
124
  '@media (prefers-reduced-motion: reduce)': {
125
125
  transitionProperty: 'outline-color, text-decoration-color',
126
- selectors: { '&:active': { transform: 'none !custom' } },
126
+ selectors: { '&:active': { scale: 'none !custom' } },
127
127
  },
128
128
  },
129
129
  { id: 'tds/web/banner/action' },
@@ -179,24 +179,24 @@ namespace styles {
179
179
  insetInlineEnd: '8',
180
180
  justifyContent: 'center',
181
181
  outlineColor: 'transparent !custom',
182
- outlineOffset: '0px !custom',
182
+ outlineOffset: '0',
183
183
  outlineStyle: 'solid !custom',
184
- outlineWidth: '2px !custom',
184
+ outlineWidth: '2',
185
185
  padding: '0',
186
186
  position: 'absolute',
187
- transitionDuration: '160ms',
188
- transitionProperty: 'background-color, outline-color, outline-offset, transform',
187
+ transitionDuration: '160',
188
+ transitionProperty: 'background-color, outline-color, outline-offset, scale',
189
189
  transitionTimingFunction: 'snappy',
190
190
  translate: '0 -50% !custom',
191
191
  width: '32',
192
192
  selectors: {
193
- '&:active': { transform: 'scale(0.94) !custom' },
194
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
193
+ '&:active': { scale: 'press' },
194
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
195
195
  '&:hover': { backgroundColor: 'grayAlpha.200' },
196
196
  },
197
197
  '@media (prefers-reduced-motion: reduce)': {
198
198
  transitionProperty: 'background-color, outline-color',
199
- selectors: { '&:active': { transform: 'none !custom' } },
199
+ selectors: { '&:active': { scale: 'none !custom' } },
200
200
  },
201
201
  },
202
202
  { id: 'tds/web/banner/dismiss' },
@@ -101,17 +101,17 @@ namespace styles {
101
101
  borderRadius: '6',
102
102
  color: 'gray.900',
103
103
  outlineColor: 'transparent !custom',
104
- outlineOffset: '0px !custom',
104
+ outlineOffset: '0',
105
105
  outlineStyle: 'solid !custom',
106
- outlineWidth: '2px !custom',
106
+ outlineWidth: '2',
107
107
  textDecoration: 'none !custom',
108
- transitionDuration: '160ms',
108
+ transitionDuration: '160',
109
109
  transitionProperty: 'color, outline-color, outline-offset',
110
110
  transitionTimingFunction: 'snappy',
111
111
  // Weight overrides the typography token, so it stays after it.
112
112
  typography: 'copy.14',
113
113
  selectors: {
114
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
114
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
115
115
  '&:hover:is(a)': { color: 'foreground' },
116
116
  },
117
117
  '@media (prefers-reduced-motion: reduce)': { transitionProperty: 'color, outline-color' },
@@ -10,7 +10,7 @@ import { Spinner } from './Spinner.js'
10
10
  * shows a blue outline on keyboard focus.
11
11
  *
12
12
  * - Use `Button` for actions and `Button.Link` for navigation.
13
- * - Label with a specific verb, such as Send payment. Give `shape="icon"` buttons an `aria-label`.
13
+ * - Label with a specific verb, such as Send payment. Give `shape="icon"` buttons, which render as circles, an `aria-label`.
14
14
  * - Keep one `primary` button per view or section. Reserve `negative` for destructive actions.
15
15
  * - Set `focusableWhenDisabled` when a disabled button needs to stay reachable while nearby text
16
16
  * explains why it is unavailable.
@@ -102,23 +102,23 @@ namespace styles {
102
102
  display: 'inline-flex',
103
103
  justifyContent: 'center',
104
104
  outlineColor: 'transparent !custom',
105
- outlineOffset: '2px !custom',
105
+ outlineOffset: '2',
106
106
  outlineStyle: 'solid !custom',
107
- outlineWidth: '2px !custom',
107
+ outlineWidth: '2',
108
108
  position: 'relative',
109
109
  textDecoration: 'none !custom',
110
- transitionDuration: '160ms !custom',
110
+ transitionDuration: '160',
111
111
  transitionProperty:
112
- 'background-color, box-shadow, color, opacity, outline-color, transform !custom',
112
+ 'background-color, box-shadow, color, opacity, outline-color, scale !custom',
113
113
  transitionTimingFunction: 'snappy',
114
114
  userSelect: 'none',
115
115
  whiteSpace: 'nowrap',
116
116
  selectors: {
117
117
  '&:active:not(:disabled)': {
118
- transform: 'scale(0.97) !custom',
119
- transitionDuration: '100ms !custom',
118
+ scale: 'press',
119
+ transitionDuration: '100',
120
120
  },
121
- '&:disabled': { cursor: 'default', opacity: '0.4 !custom' },
121
+ '&:disabled': { cursor: 'default', opacity: 'disabled' },
122
122
  '&:focus-visible': { outlineColor: 'blue.700' },
123
123
  '&[data-loading]': { opacity: '1 !custom' },
124
124
  },
@@ -128,10 +128,13 @@ namespace styles {
128
128
  },
129
129
  '@media (prefers-reduced-motion: reduce)': {
130
130
  transitionProperty: 'background-color, color, opacity, outline-color !custom',
131
- selectors: { '&:active:not(:disabled)': { transform: 'none !custom' } },
131
+ selectors: { '&:active:not(:disabled)': { scale: 'none !custom' } },
132
132
  },
133
133
  },
134
- compoundVariants: [{ when: { shape: 'icon' }, style: { paddingInline: '0' } }],
134
+ // Icon buttons are circles at every size, so the shape outranks the size radius and padding.
135
+ compoundVariants: [
136
+ { when: { shape: 'icon' }, style: { borderRadius: 'full', paddingInline: '0' } },
137
+ ],
135
138
  defaultVariants: { shape: 'default', size: 'medium', variant: 'primary' },
136
139
  variants: {
137
140
  shape: {
@@ -171,7 +174,7 @@ namespace styles {
171
174
  'linear-gradient(rgb(255 255 255 / 0.08), rgb(255 255 255 / 0)) !custom',
172
175
  boxShadow: 'raised',
173
176
  color: 'background.primary',
174
- selectors: { '&:hover:not(:disabled)': { opacity: '0.86 !custom' } },
177
+ selectors: { '&:hover:not(:disabled)': { opacity: 'hover' } },
175
178
  },
176
179
  // Matches the Input field fill.
177
180
  secondary: {
@@ -199,7 +202,7 @@ namespace styles {
199
202
  alignItems: 'inherit !custom',
200
203
  columnGap: 'inherit !custom',
201
204
  display: 'inline-flex',
202
- transitionDuration: '160ms !custom',
205
+ transitionDuration: '160',
203
206
  transitionProperty: 'opacity, visibility !custom',
204
207
  transitionTimingFunction: 'snappy',
205
208
  },
@@ -457,12 +457,12 @@ namespace styles {
457
457
  height: '40',
458
458
  justifyContent: 'center',
459
459
  outlineColor: 'transparent !custom',
460
- outlineOffset: '0px !custom',
460
+ outlineOffset: '0',
461
461
  outlineStyle: 'solid !custom',
462
- outlineWidth: '2px !custom',
462
+ outlineWidth: '2',
463
463
  padding: '0',
464
464
  position: 'relative',
465
- transitionDuration: '160ms',
465
+ transitionDuration: '160',
466
466
  transitionProperty:
467
467
  'background-color, color, opacity, outline-color, outline-offset, transform',
468
468
  transitionTimingFunction: 'snappy',
@@ -470,11 +470,11 @@ namespace styles {
470
470
  width: '40',
471
471
  selectors: {
472
472
  '&:active:not([aria-disabled="true"])': { transform: 'scale(0.96) !custom' },
473
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2px !custom' },
473
+ '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
474
474
  '&:hover:not([aria-disabled="true"]):not([data-selected])': {
475
475
  backgroundColor: 'grayAlpha.200',
476
476
  },
477
- '&[aria-disabled="true"]': { cursor: 'default', opacity: '0.4 !custom' },
477
+ '&[aria-disabled="true"]': { cursor: 'default', opacity: 'disabled' },
478
478
  '&[data-selected]': { backgroundColor: 'foreground', color: 'background.primary' },
479
479
  '&[data-today]::after': {
480
480
  backgroundColor: 'blue.700',