@tempoxyz/ds 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (735) hide show
  1. package/README.md +2 -0
  2. package/dist/fonts/Inter-cyrillic-ext.woff2 +0 -0
  3. package/dist/fonts/Inter-cyrillic.woff2 +0 -0
  4. package/dist/fonts/Inter-greek-ext.woff2 +0 -0
  5. package/dist/fonts/Inter-greek.woff2 +0 -0
  6. package/dist/fonts/Inter-latin-ext.woff2 +0 -0
  7. package/dist/fonts/Inter-latin.woff2 +0 -0
  8. package/dist/fonts/Inter-symbols.woff2 +0 -0
  9. package/dist/fonts/Inter-vietnamese.woff2 +0 -0
  10. package/dist/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  11. package/dist/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  12. package/dist/fonts/JetBrainsMono-Bold.woff2 +0 -0
  13. package/dist/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  14. package/dist/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  15. package/dist/fonts/JetBrainsMono-Medium.woff2 +0 -0
  16. package/dist/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  17. package/dist/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  18. package/dist/fonts/JetBrainsMono-Regular.woff2 +0 -0
  19. package/dist/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  20. package/dist/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  21. package/dist/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  22. package/dist/fonts/Pilat-Black-latin.woff2 +0 -0
  23. package/dist/fonts/Pilat-Black-other.woff2 +0 -0
  24. package/dist/fonts/Pilat-Black.woff2 +0 -0
  25. package/dist/fonts/Pilat-Bold-latin.woff2 +0 -0
  26. package/dist/fonts/Pilat-Bold-other.woff2 +0 -0
  27. package/dist/fonts/Pilat-Bold.woff2 +0 -0
  28. package/dist/fonts/Pilat-Book-latin.woff2 +0 -0
  29. package/dist/fonts/Pilat-Book-other.woff2 +0 -0
  30. package/dist/fonts/Pilat-Book.woff2 +0 -0
  31. package/dist/fonts/Pilat-Demi-latin.woff2 +0 -0
  32. package/dist/fonts/Pilat-Demi-other.woff2 +0 -0
  33. package/dist/fonts/Pilat-Demi.woff2 +0 -0
  34. package/dist/fonts/Pilat-Heavy-latin.woff2 +0 -0
  35. package/dist/fonts/Pilat-Heavy-other.woff2 +0 -0
  36. package/dist/fonts/Pilat-Heavy.woff2 +0 -0
  37. package/dist/fonts/Pilat-Light-latin.woff2 +0 -0
  38. package/dist/fonts/Pilat-Light-other.woff2 +0 -0
  39. package/dist/fonts/Pilat-Light.woff2 +0 -0
  40. package/dist/fonts/Pilat-Regular-latin.woff2 +0 -0
  41. package/dist/fonts/Pilat-Regular-other.woff2 +0 -0
  42. package/dist/fonts/Pilat-Regular.woff2 +0 -0
  43. package/dist/fonts/Pilat-Thin-latin.woff2 +0 -0
  44. package/dist/fonts/Pilat-Thin-other.woff2 +0 -0
  45. package/dist/fonts/Pilat-Thin.woff2 +0 -0
  46. package/dist/mobile/Haptics.d.ts +39 -0
  47. package/dist/mobile/Haptics.d.ts.map +1 -0
  48. package/dist/mobile/Haptics.js +51 -0
  49. package/dist/mobile/Haptics.js.map +1 -0
  50. package/dist/mobile/components/Button.d.ts.map +1 -1
  51. package/dist/mobile/components/Button.js +3 -3
  52. package/dist/mobile/components/Button.js.map +1 -1
  53. package/dist/mobile/components/IconButton.d.ts.map +1 -1
  54. package/dist/mobile/components/IconButton.js +3 -3
  55. package/dist/mobile/components/IconButton.js.map +1 -1
  56. package/dist/mobile/components/Spinner.js +1 -1
  57. package/dist/mobile/components/Spinner.js.map +1 -1
  58. package/dist/mobile/components/TextButton.d.ts.map +1 -1
  59. package/dist/mobile/components/TextButton.js +3 -3
  60. package/dist/mobile/components/TextButton.js.map +1 -1
  61. package/dist/mobile/components/TextInput.js +1 -1
  62. package/dist/mobile/components/TextInput.js.map +1 -1
  63. package/dist/mobile/components/Toast.js +1 -1
  64. package/dist/mobile/components/Toast.js.map +1 -1
  65. package/dist/mobile/components/Toggle.d.ts.map +1 -1
  66. package/dist/mobile/components/Toggle.js +2 -2
  67. package/dist/mobile/components/Toggle.js.map +1 -1
  68. package/dist/mobile/index.d.ts +2 -0
  69. package/dist/mobile/index.d.ts.map +1 -1
  70. package/dist/mobile/index.js +2 -0
  71. package/dist/mobile/index.js.map +1 -1
  72. package/dist/mobile/useColor.d.ts +23 -0
  73. package/dist/mobile/useColor.d.ts.map +1 -0
  74. package/dist/mobile/useColor.js +29 -0
  75. package/dist/mobile/useColor.js.map +1 -0
  76. package/dist/oxlint/rules/PreferComponent.js +6 -6
  77. package/dist/oxlint/rules/PreferComponent.js.map +1 -1
  78. package/dist/web/components/Accordion.css +1 -1
  79. package/dist/web/components/Accordion.d.ts +7 -7
  80. package/dist/web/components/Accordion.js +8 -8
  81. package/dist/web/components/Accordion.js.map +1 -1
  82. package/dist/web/components/Accordion.js.zyzz.json +1 -1
  83. package/dist/web/components/AgentLogo.css +1 -0
  84. package/dist/web/components/AgentLogo.d.ts +206 -0
  85. package/dist/web/components/AgentLogo.d.ts.map +1 -0
  86. package/dist/web/components/AgentLogo.js +86 -0
  87. package/dist/web/components/AgentLogo.js.map +1 -0
  88. package/dist/web/components/AgentLogo.js.zyzz.json +1 -0
  89. package/dist/web/components/Alert.css +1 -0
  90. package/dist/web/components/Alert.d.ts +156 -0
  91. package/dist/web/components/Alert.d.ts.map +1 -0
  92. package/dist/web/components/Alert.js +92 -0
  93. package/dist/web/components/Alert.js.map +1 -0
  94. package/dist/web/components/Alert.js.zyzz.json +1 -0
  95. package/dist/web/components/AlertDialog.d.ts +40 -28
  96. package/dist/web/components/AlertDialog.d.ts.map +1 -1
  97. package/dist/web/components/AlertDialog.js +31 -36
  98. package/dist/web/components/AlertDialog.js.map +1 -1
  99. package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
  100. package/dist/web/components/Amount.css +1 -1
  101. package/dist/web/components/Amount.d.ts +5 -5
  102. package/dist/web/components/Amount.d.ts.map +1 -1
  103. package/dist/web/components/Amount.js +3 -3
  104. package/dist/web/components/Amount.js.map +1 -1
  105. package/dist/web/components/Amount.js.zyzz.json +1 -1
  106. package/dist/web/components/AmountInput.css +1 -1
  107. package/dist/web/components/AmountInput.d.ts +20 -39
  108. package/dist/web/components/AmountInput.d.ts.map +1 -1
  109. package/dist/web/components/AmountInput.js +32 -38
  110. package/dist/web/components/AmountInput.js.map +1 -1
  111. package/dist/web/components/AmountInput.js.zyzz.json +1 -1
  112. package/dist/web/components/AppShell.css +1 -1
  113. package/dist/web/components/AppShell.d.ts +65 -29
  114. package/dist/web/components/AppShell.d.ts.map +1 -1
  115. package/dist/web/components/AppShell.js +33 -21
  116. package/dist/web/components/AppShell.js.map +1 -1
  117. package/dist/web/components/AppShell.js.zyzz.json +1 -1
  118. package/dist/web/components/AssetChip.css +1 -0
  119. package/dist/web/components/AssetChip.d.ts +38 -0
  120. package/dist/web/components/AssetChip.d.ts.map +1 -0
  121. package/dist/web/components/AssetChip.js +47 -0
  122. package/dist/web/components/AssetChip.js.map +1 -0
  123. package/dist/web/components/AssetChip.js.zyzz.json +1 -0
  124. package/dist/web/components/Autocomplete.d.ts +2 -2
  125. package/dist/web/components/Autocomplete.js +4 -4
  126. package/dist/web/components/Autocomplete.js.map +1 -1
  127. package/dist/web/components/Autocomplete.js.zyzz.json +1 -1
  128. package/dist/web/components/Avatar.css +1 -1
  129. package/dist/web/components/Avatar.d.ts +40 -115
  130. package/dist/web/components/Avatar.d.ts.map +1 -1
  131. package/dist/web/components/Avatar.js +19 -34
  132. package/dist/web/components/Avatar.js.map +1 -1
  133. package/dist/web/components/Avatar.js.zyzz.json +1 -1
  134. package/dist/web/components/Badge.css +1 -0
  135. package/dist/web/components/Badge.d.ts +134 -0
  136. package/dist/web/components/Badge.d.ts.map +1 -0
  137. package/dist/web/components/Badge.js +38 -0
  138. package/dist/web/components/Badge.js.map +1 -0
  139. package/dist/web/components/Badge.js.zyzz.json +1 -0
  140. package/dist/web/components/Banner.css +1 -1
  141. package/dist/web/components/Banner.d.ts +12 -12
  142. package/dist/web/components/Banner.d.ts.map +1 -1
  143. package/dist/web/components/Banner.js +6 -6
  144. package/dist/web/components/Banner.js.map +1 -1
  145. package/dist/web/components/Banner.js.zyzz.json +1 -1
  146. package/dist/web/components/BarChart.css +1 -0
  147. package/dist/web/components/BarChart.d.ts +155 -0
  148. package/dist/web/components/BarChart.d.ts.map +1 -0
  149. package/dist/web/components/BarChart.js +119 -0
  150. package/dist/web/components/BarChart.js.map +1 -0
  151. package/dist/web/components/BarChart.js.zyzz.json +1 -0
  152. package/dist/web/components/Breadcrumbs.css +1 -1
  153. package/dist/web/components/Breadcrumbs.d.ts +6 -6
  154. package/dist/web/components/Breadcrumbs.js +6 -6
  155. package/dist/web/components/Breadcrumbs.js.map +1 -1
  156. package/dist/web/components/Breadcrumbs.js.zyzz.json +1 -1
  157. package/dist/web/components/Button.css +1 -1
  158. package/dist/web/components/Button.d.ts +166 -35
  159. package/dist/web/components/Button.d.ts.map +1 -1
  160. package/dist/web/components/Button.js +14 -10
  161. package/dist/web/components/Button.js.map +1 -1
  162. package/dist/web/components/Button.js.zyzz.json +1 -1
  163. package/dist/web/components/ButtonGroup.css +1 -0
  164. package/dist/web/components/ButtonGroup.d.ts +56 -0
  165. package/dist/web/components/ButtonGroup.d.ts.map +1 -0
  166. package/dist/web/components/ButtonGroup.js +33 -0
  167. package/dist/web/components/ButtonGroup.js.map +1 -0
  168. package/dist/web/components/ButtonGroup.js.zyzz.json +1 -0
  169. package/dist/web/components/Calendar.css +1 -1
  170. package/dist/web/components/Calendar.d.ts.map +1 -1
  171. package/dist/web/components/Calendar.js +8 -8
  172. package/dist/web/components/Calendar.js.map +1 -1
  173. package/dist/web/components/Calendar.js.zyzz.json +1 -1
  174. package/dist/web/components/Checkbox.css +1 -1
  175. package/dist/web/components/Checkbox.d.ts +11 -11
  176. package/dist/web/components/Checkbox.d.ts.map +1 -1
  177. package/dist/web/components/Checkbox.js +9 -6
  178. package/dist/web/components/Checkbox.js.map +1 -1
  179. package/dist/web/components/Checkbox.js.zyzz.json +1 -1
  180. package/dist/web/components/CheckboxGroup.css +1 -1
  181. package/dist/web/components/CheckboxGroup.js +1 -1
  182. package/dist/web/components/CheckboxGroup.js.zyzz.json +1 -1
  183. package/dist/web/components/ChoiceGroup.css +1 -1
  184. package/dist/web/components/ChoiceGroup.d.ts +44 -16
  185. package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
  186. package/dist/web/components/ChoiceGroup.js +33 -9
  187. package/dist/web/components/ChoiceGroup.js.map +1 -1
  188. package/dist/web/components/ChoiceGroup.js.zyzz.json +1 -1
  189. package/dist/web/components/Choicebox.css +1 -1
  190. package/dist/web/components/Choicebox.d.ts +9 -9
  191. package/dist/web/components/Choicebox.d.ts.map +1 -1
  192. package/dist/web/components/Choicebox.js +11 -11
  193. package/dist/web/components/Choicebox.js.map +1 -1
  194. package/dist/web/components/Choicebox.js.zyzz.json +1 -1
  195. package/dist/web/components/Combobox.css +1 -1
  196. package/dist/web/components/Combobox.d.ts +2 -2
  197. package/dist/web/components/Combobox.d.ts.map +1 -1
  198. package/dist/web/components/Combobox.js +8 -8
  199. package/dist/web/components/Combobox.js.map +1 -1
  200. package/dist/web/components/Combobox.js.zyzz.json +1 -1
  201. package/dist/web/components/Container.css +1 -1
  202. package/dist/web/components/Container.js +1 -3
  203. package/dist/web/components/Container.js.zyzz.json +1 -1
  204. package/dist/web/components/CopyButton.css +1 -1
  205. package/dist/web/components/CopyButton.js +4 -4
  206. package/dist/web/components/CopyButton.js.map +1 -1
  207. package/dist/web/components/CopyButton.js.zyzz.json +1 -1
  208. package/dist/web/components/DatePicker.css +1 -1
  209. package/dist/web/components/DatePicker.d.ts +37 -56
  210. package/dist/web/components/DatePicker.d.ts.map +1 -1
  211. package/dist/web/components/DatePicker.js +8 -8
  212. package/dist/web/components/DatePicker.js.map +1 -1
  213. package/dist/web/components/DatePicker.js.zyzz.json +1 -1
  214. package/dist/web/components/Dialog.css +1 -1
  215. package/dist/web/components/Dialog.d.ts +189 -20
  216. package/dist/web/components/Dialog.d.ts.map +1 -1
  217. package/dist/web/components/Dialog.js +94 -27
  218. package/dist/web/components/Dialog.js.map +1 -1
  219. package/dist/web/components/Dialog.js.zyzz.json +1 -1
  220. package/dist/web/components/Drawer.css +1 -1
  221. package/dist/web/components/Drawer.d.ts +7 -2
  222. package/dist/web/components/Drawer.d.ts.map +1 -1
  223. package/dist/web/components/Drawer.js +13 -7
  224. package/dist/web/components/Drawer.js.map +1 -1
  225. package/dist/web/components/Drawer.js.zyzz.json +1 -1
  226. package/dist/web/components/Empty.css +1 -1
  227. package/dist/web/components/Empty.d.ts +2 -0
  228. package/dist/web/components/Empty.d.ts.map +1 -1
  229. package/dist/web/components/Empty.js +7 -5
  230. package/dist/web/components/Empty.js.map +1 -1
  231. package/dist/web/components/Empty.js.zyzz.json +1 -1
  232. package/dist/web/components/Field.css +1 -1
  233. package/dist/web/components/Field.d.ts +16 -21
  234. package/dist/web/components/Field.d.ts.map +1 -1
  235. package/dist/web/components/Field.js +38 -36
  236. package/dist/web/components/Field.js.map +1 -1
  237. package/dist/web/components/Field.js.zyzz.json +1 -1
  238. package/dist/web/components/Fieldset.css +1 -1
  239. package/dist/web/components/Fieldset.d.ts +9 -18
  240. package/dist/web/components/Fieldset.d.ts.map +1 -1
  241. package/dist/web/components/Fieldset.js +12 -15
  242. package/dist/web/components/Fieldset.js.map +1 -1
  243. package/dist/web/components/Fieldset.js.zyzz.json +1 -1
  244. package/dist/web/components/Frame.css +1 -1
  245. package/dist/web/components/Frame.d.ts +13 -19
  246. package/dist/web/components/Frame.d.ts.map +1 -1
  247. package/dist/web/components/Frame.js +9 -11
  248. package/dist/web/components/Frame.js.map +1 -1
  249. package/dist/web/components/Frame.js.zyzz.json +1 -1
  250. package/dist/web/components/Gauge.css +1 -1
  251. package/dist/web/components/Gauge.d.ts +2 -2
  252. package/dist/web/components/Gauge.d.ts.map +1 -1
  253. package/dist/web/components/Gauge.js +6 -6
  254. package/dist/web/components/Gauge.js.map +1 -1
  255. package/dist/web/components/Gauge.js.zyzz.json +1 -1
  256. package/dist/web/components/Grid.css +1 -1
  257. package/dist/web/components/Grid.js +1 -3
  258. package/dist/web/components/Grid.js.zyzz.json +1 -1
  259. package/dist/web/components/Hex.css +1 -1
  260. package/dist/web/components/Hex.d.ts +10 -10
  261. package/dist/web/components/Hex.js +6 -6
  262. package/dist/web/components/Hex.js.map +1 -1
  263. package/dist/web/components/Hex.js.zyzz.json +1 -1
  264. package/dist/web/components/IconTile.css +1 -0
  265. package/dist/web/components/IconTile.d.ts +62 -0
  266. package/dist/web/components/IconTile.d.ts.map +1 -0
  267. package/dist/web/components/IconTile.js +28 -0
  268. package/dist/web/components/IconTile.js.map +1 -0
  269. package/dist/web/components/IconTile.js.zyzz.json +1 -0
  270. package/dist/web/components/Identicon.css +1 -1
  271. package/dist/web/components/Identicon.d.ts +1 -0
  272. package/dist/web/components/Identicon.d.ts.map +1 -1
  273. package/dist/web/components/Identicon.js +1 -3
  274. package/dist/web/components/Identicon.js.map +1 -1
  275. package/dist/web/components/Identicon.js.zyzz.json +1 -1
  276. package/dist/web/components/Inline.css +1 -1
  277. package/dist/web/components/Inline.js +1 -3
  278. package/dist/web/components/Inline.js.zyzz.json +1 -1
  279. package/dist/web/components/Inset.css +1 -1
  280. package/dist/web/components/Inset.js +1 -3
  281. package/dist/web/components/Inset.js.zyzz.json +1 -1
  282. package/dist/web/components/Kbd.css +1 -1
  283. package/dist/web/components/Kbd.d.ts +7 -7
  284. package/dist/web/components/Kbd.js +3 -3
  285. package/dist/web/components/Kbd.js.map +1 -1
  286. package/dist/web/components/Kbd.js.zyzz.json +1 -1
  287. package/dist/web/components/ListGroup.css +1 -0
  288. package/dist/web/components/ListGroup.d.ts +483 -0
  289. package/dist/web/components/ListGroup.d.ts.map +1 -0
  290. package/dist/web/components/ListGroup.js +266 -0
  291. package/dist/web/components/ListGroup.js.map +1 -0
  292. package/dist/web/components/ListGroup.js.zyzz.json +1 -0
  293. package/dist/web/components/LoadingDots.css +1 -1
  294. package/dist/web/components/LoadingDots.d.ts.map +1 -1
  295. package/dist/web/components/LoadingDots.js +3 -3
  296. package/dist/web/components/LoadingDots.js.map +1 -1
  297. package/dist/web/components/LoadingDots.js.zyzz.json +1 -1
  298. package/dist/web/components/Menu.css +1 -1
  299. package/dist/web/components/Menu.d.ts +39 -20
  300. package/dist/web/components/Menu.d.ts.map +1 -1
  301. package/dist/web/components/Menu.js +15 -10
  302. package/dist/web/components/Menu.js.map +1 -1
  303. package/dist/web/components/Menu.js.zyzz.json +1 -1
  304. package/dist/web/components/NetworkLogo.css +1 -0
  305. package/dist/web/components/NetworkLogo.d.ts +58 -0
  306. package/dist/web/components/NetworkLogo.d.ts.map +1 -0
  307. package/dist/web/components/NetworkLogo.js +40 -0
  308. package/dist/web/components/NetworkLogo.js.map +1 -0
  309. package/dist/web/components/NetworkLogo.js.zyzz.json +1 -0
  310. package/dist/web/components/NumberField.css +1 -1
  311. package/dist/web/components/NumberField.d.ts +3 -3
  312. package/dist/web/components/NumberField.d.ts.map +1 -1
  313. package/dist/web/components/NumberField.js +8 -8
  314. package/dist/web/components/NumberField.js.map +1 -1
  315. package/dist/web/components/NumberField.js.zyzz.json +1 -1
  316. package/dist/web/components/OtpField.css +1 -1
  317. package/dist/web/components/OtpField.d.ts +8 -68
  318. package/dist/web/components/OtpField.d.ts.map +1 -1
  319. package/dist/web/components/OtpField.js +13 -10
  320. package/dist/web/components/OtpField.js.map +1 -1
  321. package/dist/web/components/OtpField.js.zyzz.json +1 -1
  322. package/dist/web/components/Pagination.css +1 -1
  323. package/dist/web/components/Pagination.d.ts +16 -14
  324. package/dist/web/components/Pagination.d.ts.map +1 -1
  325. package/dist/web/components/Pagination.js +6 -6
  326. package/dist/web/components/Pagination.js.map +1 -1
  327. package/dist/web/components/Pagination.js.zyzz.json +1 -1
  328. package/dist/web/components/Popover.css +1 -1
  329. package/dist/web/components/Popover.js +5 -5
  330. package/dist/web/components/Popover.js.map +1 -1
  331. package/dist/web/components/Popover.js.zyzz.json +1 -1
  332. package/dist/web/components/Progress.css +1 -1
  333. package/dist/web/components/Progress.d.ts +2 -2
  334. package/dist/web/components/Progress.d.ts.map +1 -1
  335. package/dist/web/components/Progress.js +6 -6
  336. package/dist/web/components/Progress.js.map +1 -1
  337. package/dist/web/components/Progress.js.zyzz.json +1 -1
  338. package/dist/web/components/Qr.css +1 -1
  339. package/dist/web/components/Qr.d.ts +1 -1
  340. package/dist/web/components/Qr.js +1 -3
  341. package/dist/web/components/Qr.js.map +1 -1
  342. package/dist/web/components/Qr.js.zyzz.json +1 -1
  343. package/dist/web/components/RadioGroup.css +1 -1
  344. package/dist/web/components/RadioGroup.d.ts.map +1 -1
  345. package/dist/web/components/RadioGroup.js +4 -4
  346. package/dist/web/components/RadioGroup.js.map +1 -1
  347. package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
  348. package/dist/web/components/SecretValue.css +1 -1
  349. package/dist/web/components/SecretValue.d.ts +7 -7
  350. package/dist/web/components/SecretValue.js +4 -4
  351. package/dist/web/components/SecretValue.js.map +1 -1
  352. package/dist/web/components/SecretValue.js.zyzz.json +1 -1
  353. package/dist/web/components/Select.css +1 -1
  354. package/dist/web/components/Select.d.ts +64 -2
  355. package/dist/web/components/Select.d.ts.map +1 -1
  356. package/dist/web/components/Select.js +24 -7
  357. package/dist/web/components/Select.js.map +1 -1
  358. package/dist/web/components/Select.js.zyzz.json +1 -1
  359. package/dist/web/components/Separator.css +1 -1
  360. package/dist/web/components/Separator.d.ts +17 -3
  361. package/dist/web/components/Separator.d.ts.map +1 -1
  362. package/dist/web/components/Separator.js +40 -5
  363. package/dist/web/components/Separator.js.map +1 -1
  364. package/dist/web/components/Separator.js.zyzz.json +1 -1
  365. package/dist/web/components/SidebarMenu.css +1 -1
  366. package/dist/web/components/SidebarMenu.d.ts +186 -39
  367. package/dist/web/components/SidebarMenu.d.ts.map +1 -1
  368. package/dist/web/components/SidebarMenu.js +91 -19
  369. package/dist/web/components/SidebarMenu.js.map +1 -1
  370. package/dist/web/components/SidebarMenu.js.zyzz.json +1 -1
  371. package/dist/web/components/Skeleton.css +1 -1
  372. package/dist/web/components/Skeleton.d.ts +5 -3
  373. package/dist/web/components/Skeleton.d.ts.map +1 -1
  374. package/dist/web/components/Skeleton.js +1 -3
  375. package/dist/web/components/Skeleton.js.map +1 -1
  376. package/dist/web/components/Skeleton.js.zyzz.json +1 -1
  377. package/dist/web/components/Slider.css +1 -1
  378. package/dist/web/components/Slider.d.ts.map +1 -1
  379. package/dist/web/components/Slider.js +6 -6
  380. package/dist/web/components/Slider.js.map +1 -1
  381. package/dist/web/components/Slider.js.zyzz.json +1 -1
  382. package/dist/web/components/Snippet.css +1 -1
  383. package/dist/web/components/Snippet.d.ts +27 -65
  384. package/dist/web/components/Snippet.d.ts.map +1 -1
  385. package/dist/web/components/Snippet.js +48 -11
  386. package/dist/web/components/Snippet.js.map +1 -1
  387. package/dist/web/components/Snippet.js.zyzz.json +1 -1
  388. package/dist/web/components/Spinner.css +1 -1
  389. package/dist/web/components/Spinner.d.ts +25 -16
  390. package/dist/web/components/Spinner.d.ts.map +1 -1
  391. package/dist/web/components/Spinner.js +13 -8
  392. package/dist/web/components/Spinner.js.map +1 -1
  393. package/dist/web/components/Spinner.js.zyzz.json +1 -1
  394. package/dist/web/components/SplitBar.css +1 -0
  395. package/dist/web/components/SplitBar.d.ts +99 -0
  396. package/dist/web/components/SplitBar.d.ts.map +1 -0
  397. package/dist/web/components/SplitBar.js +49 -0
  398. package/dist/web/components/SplitBar.js.map +1 -0
  399. package/dist/web/components/SplitBar.js.zyzz.json +1 -0
  400. package/dist/web/components/SplitButton.css +1 -1
  401. package/dist/web/components/SplitButton.d.ts +4 -1
  402. package/dist/web/components/SplitButton.d.ts.map +1 -1
  403. package/dist/web/components/SplitButton.js +2 -2
  404. package/dist/web/components/SplitButton.js.map +1 -1
  405. package/dist/web/components/SplitButton.js.zyzz.json +1 -1
  406. package/dist/web/components/Stack.css +1 -1
  407. package/dist/web/components/Stack.js +1 -3
  408. package/dist/web/components/Stack.js.zyzz.json +1 -1
  409. package/dist/web/components/StatusChip.css +1 -0
  410. package/dist/web/components/StatusChip.d.ts +162 -0
  411. package/dist/web/components/StatusChip.d.ts.map +1 -0
  412. package/dist/web/components/StatusChip.js +37 -0
  413. package/dist/web/components/StatusChip.js.map +1 -0
  414. package/dist/web/components/StatusChip.js.zyzz.json +1 -0
  415. package/dist/web/components/StatusRow.css +1 -0
  416. package/dist/web/components/StatusRow.d.ts +121 -0
  417. package/dist/web/components/StatusRow.d.ts.map +1 -0
  418. package/dist/web/components/StatusRow.js +75 -0
  419. package/dist/web/components/StatusRow.js.map +1 -0
  420. package/dist/web/components/StatusRow.js.zyzz.json +1 -0
  421. package/dist/web/components/Stepper.css +1 -1
  422. package/dist/web/components/Stepper.d.ts +10 -7
  423. package/dist/web/components/Stepper.d.ts.map +1 -1
  424. package/dist/web/components/Stepper.js +7 -6
  425. package/dist/web/components/Stepper.js.map +1 -1
  426. package/dist/web/components/Stepper.js.zyzz.json +1 -1
  427. package/dist/web/components/Surface.css +1 -1
  428. package/dist/web/components/Surface.d.ts +56 -119
  429. package/dist/web/components/Surface.d.ts.map +1 -1
  430. package/dist/web/components/Surface.js +19 -14
  431. package/dist/web/components/Surface.js.map +1 -1
  432. package/dist/web/components/Surface.js.zyzz.json +1 -1
  433. package/dist/web/components/Switch.css +1 -1
  434. package/dist/web/components/Switch.d.ts +14 -18
  435. package/dist/web/components/Switch.d.ts.map +1 -1
  436. package/dist/web/components/Switch.js +14 -16
  437. package/dist/web/components/Switch.js.map +1 -1
  438. package/dist/web/components/Switch.js.zyzz.json +1 -1
  439. package/dist/web/components/Table.css +1 -1
  440. package/dist/web/components/Table.d.ts +152 -67
  441. package/dist/web/components/Table.d.ts.map +1 -1
  442. package/dist/web/components/Table.js +91 -25
  443. package/dist/web/components/Table.js.map +1 -1
  444. package/dist/web/components/Table.js.zyzz.json +1 -1
  445. package/dist/web/components/Tabs.css +1 -1
  446. package/dist/web/components/Tabs.d.ts +49 -42
  447. package/dist/web/components/Tabs.d.ts.map +1 -1
  448. package/dist/web/components/Tabs.js +44 -15
  449. package/dist/web/components/Tabs.js.map +1 -1
  450. package/dist/web/components/Tabs.js.zyzz.json +1 -1
  451. package/dist/web/components/TempoLogo.css +1 -0
  452. package/dist/web/components/TempoLogo.d.ts +47 -0
  453. package/dist/web/components/TempoLogo.d.ts.map +1 -0
  454. package/dist/web/components/TempoLogo.js +48 -0
  455. package/dist/web/components/TempoLogo.js.map +1 -0
  456. package/dist/web/components/TempoLogo.js.zyzz.json +1 -0
  457. package/dist/web/components/TextInput.css +1 -0
  458. package/dist/web/components/{Input.d.ts → TextInput.d.ts} +27 -18
  459. package/dist/web/components/TextInput.d.ts.map +1 -0
  460. package/dist/web/components/TextInput.js +138 -0
  461. package/dist/web/components/TextInput.js.map +1 -0
  462. package/dist/web/components/TextInput.js.zyzz.json +1 -0
  463. package/dist/web/components/Textarea.css +1 -1
  464. package/dist/web/components/Textarea.d.ts +29 -74
  465. package/dist/web/components/Textarea.d.ts.map +1 -1
  466. package/dist/web/components/Textarea.js +5 -14
  467. package/dist/web/components/Textarea.js.map +1 -1
  468. package/dist/web/components/Textarea.js.zyzz.json +1 -1
  469. package/dist/web/components/Toast.css +1 -1
  470. package/dist/web/components/Toast.d.ts +4 -4
  471. package/dist/web/components/Toast.d.ts.map +1 -1
  472. package/dist/web/components/Toast.js +10 -10
  473. package/dist/web/components/Toast.js.map +1 -1
  474. package/dist/web/components/Toast.js.zyzz.json +1 -1
  475. package/dist/web/components/Token.css +1 -1
  476. package/dist/web/components/Token.d.ts +32 -90
  477. package/dist/web/components/Token.d.ts.map +1 -1
  478. package/dist/web/components/Token.js +26 -90
  479. package/dist/web/components/Token.js.map +1 -1
  480. package/dist/web/components/Token.js.zyzz.json +1 -1
  481. package/dist/web/components/TokenLogo.css +1 -0
  482. package/dist/web/components/TokenLogo.d.ts +117 -0
  483. package/dist/web/components/TokenLogo.d.ts.map +1 -0
  484. package/dist/web/components/TokenLogo.js +112 -0
  485. package/dist/web/components/TokenLogo.js.map +1 -0
  486. package/dist/web/components/TokenLogo.js.zyzz.json +1 -0
  487. package/dist/web/components/Tooltip.css +1 -1
  488. package/dist/web/components/Tooltip.js +2 -2
  489. package/dist/web/components/Tooltip.js.map +1 -1
  490. package/dist/web/components/Tooltip.js.zyzz.json +1 -1
  491. package/dist/web/components/VerificationCode.css +1 -0
  492. package/dist/web/components/VerificationCode.d.ts +47 -0
  493. package/dist/web/components/VerificationCode.d.ts.map +1 -0
  494. package/dist/web/components/VerificationCode.js +55 -0
  495. package/dist/web/components/VerificationCode.js.map +1 -0
  496. package/dist/web/components/VerificationCode.js.zyzz.json +1 -0
  497. package/dist/web/components/Visual.css +1 -0
  498. package/dist/web/components/Visual.d.ts +65 -0
  499. package/dist/web/components/Visual.d.ts.map +1 -0
  500. package/dist/web/components/Visual.js +51 -0
  501. package/dist/web/components/Visual.js.map +1 -0
  502. package/dist/web/components/Visual.js.zyzz.json +1 -0
  503. package/dist/web/components/internal/Field.css +1 -1
  504. package/dist/web/components/internal/Field.d.ts +41 -87
  505. package/dist/web/components/internal/Field.d.ts.map +1 -1
  506. package/dist/web/components/internal/Field.js +9 -8
  507. package/dist/web/components/internal/Field.js.map +1 -1
  508. package/dist/web/components/internal/Field.js.zyzz.json +1 -1
  509. package/dist/web/components/internal/InputGroup.css +1 -1
  510. package/dist/web/components/internal/InputGroup.d.ts +38 -99
  511. package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
  512. package/dist/web/components/internal/InputGroup.js +6 -8
  513. package/dist/web/components/internal/InputGroup.js.map +1 -1
  514. package/dist/web/components/internal/InputGroup.js.zyzz.json +1 -1
  515. package/dist/web/components/internal/Listbox.css +1 -1
  516. package/dist/web/components/internal/Listbox.d.ts +8 -8
  517. package/dist/web/components/internal/Listbox.js +13 -13
  518. package/dist/web/components/internal/Listbox.js.map +1 -1
  519. package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
  520. package/dist/web/components/internal/RowDisabled.d.ts +3 -0
  521. package/dist/web/components/internal/RowDisabled.d.ts.map +1 -0
  522. package/dist/web/components/internal/RowDisabled.js +9 -0
  523. package/dist/web/components/internal/RowDisabled.js.map +1 -0
  524. package/dist/web/components/internal/RowsSize.d.ts +2 -3
  525. package/dist/web/components/internal/RowsSize.d.ts.map +1 -1
  526. package/dist/web/components/internal/RowsSize.js +3 -3
  527. package/dist/web/components/internal/RowsSize.js.map +1 -1
  528. package/dist/web/index.d.ts +18 -6
  529. package/dist/web/index.d.ts.map +1 -1
  530. package/dist/web/index.js +18 -6
  531. package/dist/web/index.js.map +1 -1
  532. package/dist/web/index.js.zyzz.json +1 -1
  533. package/dist/web/vars.d.ts +591 -699
  534. package/dist/web/vars.d.ts.map +1 -1
  535. package/dist/web/vars.js +7 -6
  536. package/dist/web/vars.js.map +1 -1
  537. package/dist/web/vars.js.zyzz.json +1 -1
  538. package/dist/web/zyzz.config.d.ts +2935 -3480
  539. package/dist/web/zyzz.config.d.ts.map +1 -1
  540. package/dist/web/zyzz.config.js +39 -3
  541. package/dist/web/zyzz.config.js.map +1 -1
  542. package/dist/web/zyzz.config.js.zyzz.json +1 -1
  543. package/package.json +180 -4
  544. package/src/fonts/Inter-cyrillic-ext.woff2 +0 -0
  545. package/src/fonts/Inter-cyrillic.woff2 +0 -0
  546. package/src/fonts/Inter-greek-ext.woff2 +0 -0
  547. package/src/fonts/Inter-greek.woff2 +0 -0
  548. package/src/fonts/Inter-latin-ext.woff2 +0 -0
  549. package/src/fonts/Inter-latin.woff2 +0 -0
  550. package/src/fonts/Inter-symbols.woff2 +0 -0
  551. package/src/fonts/Inter-vietnamese.woff2 +0 -0
  552. package/src/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  553. package/src/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  554. package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
  555. package/src/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  556. package/src/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  557. package/src/fonts/JetBrainsMono-Medium.woff2 +0 -0
  558. package/src/fonts/{Geist-OFL.txt → JetBrainsMono-OFL.txt} +4 -3
  559. package/src/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  560. package/src/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  561. package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
  562. package/src/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  563. package/src/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  564. package/src/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  565. package/src/fonts/Pilat-Black-latin.woff2 +0 -0
  566. package/src/fonts/Pilat-Black-other.woff2 +0 -0
  567. package/src/fonts/Pilat-Black.woff2 +0 -0
  568. package/src/fonts/Pilat-Bold-latin.woff2 +0 -0
  569. package/src/fonts/Pilat-Bold-other.woff2 +0 -0
  570. package/src/fonts/Pilat-Bold.woff2 +0 -0
  571. package/src/fonts/Pilat-Book-latin.woff2 +0 -0
  572. package/src/fonts/Pilat-Book-other.woff2 +0 -0
  573. package/src/fonts/Pilat-Book.woff2 +0 -0
  574. package/src/fonts/Pilat-Demi-latin.woff2 +0 -0
  575. package/src/fonts/Pilat-Demi-other.woff2 +0 -0
  576. package/src/fonts/Pilat-Demi.woff2 +0 -0
  577. package/src/fonts/Pilat-Heavy-latin.woff2 +0 -0
  578. package/src/fonts/Pilat-Heavy-other.woff2 +0 -0
  579. package/src/fonts/Pilat-Heavy.woff2 +0 -0
  580. package/src/fonts/Pilat-Light-latin.woff2 +0 -0
  581. package/src/fonts/Pilat-Light-other.woff2 +0 -0
  582. package/src/fonts/Pilat-Light.woff2 +0 -0
  583. package/src/fonts/Pilat-Regular-latin.woff2 +0 -0
  584. package/src/fonts/Pilat-Regular-other.woff2 +0 -0
  585. package/src/fonts/Pilat-Regular.woff2 +0 -0
  586. package/src/fonts/Pilat-Thin-latin.woff2 +0 -0
  587. package/src/fonts/Pilat-Thin-other.woff2 +0 -0
  588. package/src/fonts/Pilat-Thin.woff2 +0 -0
  589. package/src/fonts/README.md +22 -1
  590. package/src/mobile/Haptics.ts +55 -0
  591. package/src/mobile/README.md +97 -1
  592. package/src/mobile/components/Button.tsx +3 -3
  593. package/src/mobile/components/IconButton.tsx +3 -3
  594. package/src/mobile/components/Spinner.tsx +1 -1
  595. package/src/mobile/components/TextButton.tsx +3 -3
  596. package/src/mobile/components/TextInput.tsx +1 -1
  597. package/src/mobile/components/Toast.tsx +1 -1
  598. package/src/mobile/components/Toggle.tsx +2 -2
  599. package/src/mobile/index.ts +2 -0
  600. package/src/mobile/useColor.ts +31 -0
  601. package/src/oxlint/rules/PreferComponent.ts +6 -6
  602. package/src/web/README.md +7 -7
  603. package/src/web/components/Accordion.tsx +8 -8
  604. package/src/web/components/AgentLogo.tsx +330 -0
  605. package/src/web/components/Alert.tsx +301 -0
  606. package/src/web/components/AlertDialog.tsx +47 -111
  607. package/src/web/components/Amount.tsx +6 -6
  608. package/src/web/components/AmountInput.tsx +59 -134
  609. package/src/web/components/AppShell.tsx +95 -36
  610. package/src/web/components/AssetChip.tsx +110 -0
  611. package/src/web/components/Autocomplete.tsx +4 -4
  612. package/src/web/components/Avatar.tsx +42 -119
  613. package/src/web/components/Badge.tsx +120 -0
  614. package/src/web/components/Banner.tsx +13 -11
  615. package/src/web/components/BarChart.tsx +427 -0
  616. package/src/web/components/Breadcrumbs.tsx +7 -7
  617. package/src/web/components/Button.tsx +156 -42
  618. package/src/web/components/ButtonGroup.tsx +59 -0
  619. package/src/web/components/Calendar.tsx +15 -13
  620. package/src/web/components/Checkbox.tsx +14 -11
  621. package/src/web/components/ChoiceGroup.tsx +107 -26
  622. package/src/web/components/Choicebox.tsx +30 -28
  623. package/src/web/components/Combobox.tsx +10 -8
  624. package/src/web/components/CopyButton.tsx +1 -1
  625. package/src/web/components/DatePicker.tsx +42 -61
  626. package/src/web/components/Dialog.tsx +267 -71
  627. package/src/web/components/Drawer.tsx +45 -18
  628. package/src/web/components/Empty.tsx +13 -8
  629. package/src/web/components/Field.tsx +78 -132
  630. package/src/web/components/Fieldset.tsx +16 -37
  631. package/src/web/components/Frame.tsx +13 -20
  632. package/src/web/components/Gauge.tsx +4 -4
  633. package/src/web/components/Hex.tsx +11 -11
  634. package/src/web/components/IconTile.tsx +57 -0
  635. package/src/web/components/Identicon.tsx +6 -1
  636. package/src/web/components/Kbd.tsx +8 -8
  637. package/src/web/components/ListGroup.tsx +776 -0
  638. package/src/web/components/LoadingDots.tsx +1 -0
  639. package/src/web/components/Menu.tsx +50 -35
  640. package/src/web/components/NetworkLogo.tsx +208 -0
  641. package/src/web/components/NumberField.tsx +18 -33
  642. package/src/web/components/OtpField.tsx +51 -102
  643. package/src/web/components/Pagination.tsx +16 -14
  644. package/src/web/components/Popover.tsx +8 -8
  645. package/src/web/components/Progress.tsx +7 -5
  646. package/src/web/components/Qr.tsx +1 -1
  647. package/src/web/components/RadioGroup.tsx +9 -7
  648. package/src/web/components/SecretValue.tsx +11 -11
  649. package/src/web/components/Select.tsx +87 -26
  650. package/src/web/components/Separator.tsx +95 -7
  651. package/src/web/components/SidebarMenu.tsx +294 -51
  652. package/src/web/components/Skeleton.tsx +5 -5
  653. package/src/web/components/Slider.tsx +12 -6
  654. package/src/web/components/Snippet.tsx +134 -75
  655. package/src/web/components/Spinner.tsx +38 -12
  656. package/src/web/components/SplitBar.tsx +158 -0
  657. package/src/web/components/SplitButton.tsx +26 -17
  658. package/src/web/components/StatusChip.tsx +138 -0
  659. package/src/web/components/StatusRow.tsx +162 -0
  660. package/src/web/components/Stepper.tsx +11 -8
  661. package/src/web/components/Surface.tsx +70 -95
  662. package/src/web/components/Switch.tsx +25 -29
  663. package/src/web/components/Table.tsx +281 -70
  664. package/src/web/components/Tabs.tsx +93 -50
  665. package/src/web/components/TempoLogo.tsx +89 -0
  666. package/src/web/components/{Input.tsx → TextInput.tsx} +87 -118
  667. package/src/web/components/Textarea.tsx +33 -78
  668. package/src/web/components/Toast.tsx +24 -22
  669. package/src/web/components/Token.tsx +106 -172
  670. package/src/web/components/TokenLogo.tsx +217 -0
  671. package/src/web/components/Tooltip.tsx +3 -3
  672. package/src/web/components/VerificationCode.tsx +97 -0
  673. package/src/web/components/Visual.tsx +166 -0
  674. package/src/web/components/internal/Field.ts +63 -72
  675. package/src/web/components/internal/InputGroup.ts +44 -101
  676. package/src/web/components/internal/Listbox.ts +20 -20
  677. package/src/web/components/internal/RowDisabled.ts +9 -0
  678. package/src/web/components/internal/RowsSize.ts +3 -5
  679. package/src/web/components/visuals/Passkey.svg +21 -0
  680. package/src/web/index.ts +18 -6
  681. package/src/web/logos/Base.svg +10 -0
  682. package/src/web/logos/Ethereum.svg +16 -0
  683. package/src/web/logos/HyperEVM.svg +27 -0
  684. package/src/web/logos/Polygon.svg +15 -0
  685. package/src/web/logos/README.md +14 -0
  686. package/src/web/logos/Solana.svg +11 -0
  687. package/src/web/logos/Tempo.svg +11 -0
  688. package/src/web/vars.ts +481 -526
  689. package/src/web/zyzz.config.ts +326 -12
  690. package/dist/fonts/GeistMono-Variable.woff2 +0 -0
  691. package/dist/mobile/internal/useColor.d.ts +0 -4
  692. package/dist/mobile/internal/useColor.d.ts.map +0 -1
  693. package/dist/mobile/internal/useColor.js +0 -12
  694. package/dist/mobile/internal/useColor.js.map +0 -1
  695. package/dist/web/components/AlertDialog.css +0 -1
  696. package/dist/web/components/Callout.css +0 -1
  697. package/dist/web/components/Callout.d.ts +0 -161
  698. package/dist/web/components/Callout.d.ts.map +0 -1
  699. package/dist/web/components/Callout.js +0 -83
  700. package/dist/web/components/Callout.js.map +0 -1
  701. package/dist/web/components/Callout.js.zyzz.json +0 -1
  702. package/dist/web/components/IconChip.css +0 -1
  703. package/dist/web/components/IconChip.d.ts +0 -53
  704. package/dist/web/components/IconChip.d.ts.map +0 -1
  705. package/dist/web/components/IconChip.js +0 -29
  706. package/dist/web/components/IconChip.js.map +0 -1
  707. package/dist/web/components/IconChip.js.zyzz.json +0 -1
  708. package/dist/web/components/Input.css +0 -1
  709. package/dist/web/components/Input.d.ts.map +0 -1
  710. package/dist/web/components/Input.js +0 -118
  711. package/dist/web/components/Input.js.map +0 -1
  712. package/dist/web/components/Input.js.zyzz.json +0 -1
  713. package/dist/web/components/Rows.css +0 -1
  714. package/dist/web/components/Rows.d.ts +0 -432
  715. package/dist/web/components/Rows.d.ts.map +0 -1
  716. package/dist/web/components/Rows.js +0 -160
  717. package/dist/web/components/Rows.js.map +0 -1
  718. package/dist/web/components/Rows.js.zyzz.json +0 -1
  719. package/dist/web/components/Tag.css +0 -1
  720. package/dist/web/components/Tag.d.ts +0 -171
  721. package/dist/web/components/Tag.d.ts.map +0 -1
  722. package/dist/web/components/Tag.js +0 -52
  723. package/dist/web/components/Tag.js.map +0 -1
  724. package/dist/web/components/Tag.js.zyzz.json +0 -1
  725. package/dist/web/components/internal/FieldVariant.d.ts +0 -4
  726. package/dist/web/components/internal/FieldVariant.d.ts.map +0 -1
  727. package/dist/web/components/internal/FieldVariant.js +0 -4
  728. package/dist/web/components/internal/FieldVariant.js.map +0 -1
  729. package/src/fonts/GeistMono-Variable.woff2 +0 -0
  730. package/src/mobile/internal/useColor.ts +0 -13
  731. package/src/web/components/Callout.tsx +0 -241
  732. package/src/web/components/IconChip.tsx +0 -54
  733. package/src/web/components/Rows.tsx +0 -529
  734. package/src/web/components/Tag.tsx +0 -149
  735. package/src/web/components/internal/FieldVariant.ts +0 -6
@@ -0,0 +1,138 @@
1
+ import type { ComponentPropsWithRef } from 'react'
2
+ import type * as zyzz from 'zyzz'
3
+ import { variants } from '../zyzz.config.js'
4
+ import { Spinner } from './Spinner.js'
5
+
6
+ /**
7
+ * A pill that names the status of a payment, an authorization, or a network, rendered as a
8
+ * `span`. A dot in the color of its `intent` leads the label, and `loading` replaces the dot with
9
+ * a spinner. It sets no live region, so a status that changes in place needs one around it.
10
+ *
11
+ * - Keep the label to one or two words that name the status, such as Pending or Needs approval.
12
+ * - Pick the `intent` from the outcome: `positive` for done or live, `warning` for waiting on
13
+ * someone, `negative` for failed, and `neutral` for ended without an outcome.
14
+ * - Set `network` for the chip that names a network, such as Mainnet or Testnet. It keeps an 80px
15
+ * minimum width, with 4px between the dot and the label.
16
+ * - Use `Badge` for a category or an attribute that is not a status.
17
+ *
18
+ * @example
19
+ * <StatusChip intent="warning">Pending</StatusChip>
20
+ * <StatusChip loading size="small">Processing</StatusChip>
21
+ * <StatusChip intent="positive" network>Mainnet</StatusChip>
22
+ *
23
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/span | MDN span element}
24
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/use-of-color.html | WCAG 2.2 Use of Color}
25
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html | WCAG 2.2 Status Messages}
26
+ */
27
+ export function StatusChip(props: StatusChip.Props) {
28
+ const { children, className, intent, loading = false, network, size, vars, ...attributes } = props
29
+
30
+ return (
31
+ <span
32
+ {...attributes}
33
+ data-intent={intent ?? 'neutral'}
34
+ {...styles.chip({ className, intent, network, size, style: props.style, vars })}
35
+ >
36
+ {/* The label names the status, so the mark is decorative. */}
37
+ {loading ? (
38
+ <span aria-hidden="true" {...styles.spinner({ size })}>
39
+ <Spinner />
40
+ </span>
41
+ ) : (
42
+ <span aria-hidden="true" {...styles.dot({ intent, size })} />
43
+ )}
44
+ {children}
45
+ </span>
46
+ )
47
+ }
48
+
49
+ export namespace StatusChip {
50
+ export type Props = ComponentPropsWithRef<'span'> &
51
+ zyzz.Props.Variants<typeof styles.chip> & {
52
+ /**
53
+ * Replaces the dot with a spinner, for a status that is in progress, such as Processing.
54
+ *
55
+ * @default false
56
+ */
57
+ loading?: boolean | undefined
58
+ }
59
+ }
60
+
61
+ namespace styles {
62
+ export const chip = variants(
63
+ {
64
+ base: {
65
+ alignItems: 'center',
66
+ borderRadius: 'full',
67
+ boxSizing: 'border-box',
68
+ color: 'content.secondary',
69
+ cornerShape: 'round',
70
+ display: 'inline-flex',
71
+ flexShrink: '0 !custom',
72
+ paddingInline: '8',
73
+ typography: 'body.b3Strong',
74
+ verticalAlign: 'middle',
75
+ whiteSpace: 'nowrap',
76
+ },
77
+ // A network chip sets the dot 4px from its label at every size, so it outranks the size gap.
78
+ compoundVariants: [{ when: { network: true }, style: { columnGap: '4' } }],
79
+ defaultVariants: { intent: 'neutral', network: false, size: 'medium' },
80
+ variants: {
81
+ intent: {
82
+ negative: { backgroundColor: 'container.negative' },
83
+ neutral: { backgroundColor: 'container.regular' },
84
+ positive: { backgroundColor: 'container.positive' },
85
+ warning: { backgroundColor: 'container.warning' },
86
+ },
87
+ // A network chip keeps its label at the start of an 80px minimum width.
88
+ network: { false: {}, true: { minWidth: '80' } },
89
+ size: {
90
+ medium: { columnGap: '6', height: '28' },
91
+ small: { columnGap: '4', height: '24' },
92
+ },
93
+ },
94
+ },
95
+ { id: 'tds/web/status-chip' },
96
+ )
97
+
98
+ export const dot = variants(
99
+ {
100
+ base: { borderRadius: 'full', cornerShape: 'round', flexShrink: '0 !custom' },
101
+ defaultVariants: { intent: 'neutral', size: 'medium' },
102
+ variants: {
103
+ intent: {
104
+ negative: { backgroundColor: 'content.negative' },
105
+ neutral: { backgroundColor: 'content.subtle' },
106
+ positive: { backgroundColor: 'content.positive' },
107
+ warning: { backgroundColor: 'content.warning' },
108
+ },
109
+ size: {
110
+ medium: { height: '8', width: '8' },
111
+ small: { height: '6', width: '6' },
112
+ },
113
+ },
114
+ },
115
+ { id: 'tds/web/status-chip/dot' },
116
+ )
117
+
118
+ // The spinner shrinks to the 12 or 10px mark, which the attribute selector holds over its own size.
119
+ export const spinner = variants(
120
+ {
121
+ base: {
122
+ display: 'inline-flex',
123
+ flexShrink: '0 !custom',
124
+ selectors: {
125
+ '& > [role="progressbar"]': { height: '100% !custom', width: '100% !custom' },
126
+ },
127
+ },
128
+ defaultVariants: { size: 'medium' },
129
+ variants: {
130
+ size: {
131
+ medium: { height: '12', width: '12' },
132
+ small: { height: '10', width: '10' },
133
+ },
134
+ },
135
+ },
136
+ { id: 'tds/web/status-chip/spinner' },
137
+ )
138
+ }
@@ -0,0 +1,162 @@
1
+ import type { ComponentPropsWithRef } from 'react'
2
+ import type * as zyzz from 'zyzz'
3
+ import { style, variants } from '../zyzz.config.js'
4
+
5
+ /**
6
+ * A row that follows the status of one payment or task, such as a deposit on its way. It renders
7
+ * a `div` with `role="status"`, so screen readers announce a change of its text politely. Compose
8
+ * a leading `StatusRow.Icon`, a `StatusRow.Content` with a title and a description, and an
9
+ * optional trailing `StatusChip`.
10
+ *
11
+ * - Lead with a `Spinner` while the task runs, and with a check once `intent` is `positive`.
12
+ * - State the amount or the task in the title, and the expected wait in the description.
13
+ * - Keep one status row per task. Use `ListGroup` for a list of finished payments.
14
+ *
15
+ * @example
16
+ * <StatusRow>
17
+ * <StatusRow.Icon>
18
+ * <Spinner />
19
+ * </StatusRow.Icon>
20
+ * <StatusRow.Content>
21
+ * <StatusRow.Title>Waiting for $10.00</StatusRow.Title>
22
+ * <StatusRow.Description>Usually under a minute on Tempo.</StatusRow.Description>
23
+ * </StatusRow.Content>
24
+ * <StatusChip intent="warning" size="small">
25
+ * Pending
26
+ * </StatusChip>
27
+ * </StatusRow>
28
+ *
29
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/status_role | MDN status role}
30
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html | WCAG 2.2 Status Messages}
31
+ */
32
+ export function StatusRow(props: StatusRow.Props) {
33
+ const { className, intent, vars, ...attributes } = props
34
+
35
+ return (
36
+ <div
37
+ role="status"
38
+ {...attributes}
39
+ {...styles.row({ className, intent, style: props.style, vars })}
40
+ />
41
+ )
42
+ }
43
+
44
+ export namespace StatusRow {
45
+ /** Stacks a `StatusRow.Title` above a `StatusRow.Description`, and takes the free width. */
46
+ export function Content(props: Content.Props) {
47
+ const { className, vars, ...attributes } = props
48
+
49
+ return <div {...attributes} {...styles.content({ className, style: props.style, vars })} />
50
+ }
51
+
52
+ export namespace Content {
53
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.content>
54
+ }
55
+
56
+ /** Secondary text under the title, such as the expected wait. It wraps onto more lines. */
57
+ export function Description(props: Description.Props) {
58
+ const { className, vars, ...attributes } = props
59
+
60
+ return <span {...attributes} {...styles.description({ className, style: props.style, vars })} />
61
+ }
62
+
63
+ export namespace Description {
64
+ export type Props = ComponentPropsWithRef<'span'> &
65
+ zyzz.Props.Variants<typeof styles.description>
66
+ }
67
+
68
+ /**
69
+ * The leading mark, hidden from assistive technology. An icon renders at 24px in the color of
70
+ * the row's `intent`, and a `Spinner` keeps its 16px.
71
+ */
72
+ export function Icon(props: Icon.Props) {
73
+ const { className, vars, ...attributes } = props
74
+
75
+ return (
76
+ <span
77
+ aria-hidden="true"
78
+ {...attributes}
79
+ data-status-row-icon=""
80
+ {...styles.icon({ className, style: props.style, vars })}
81
+ />
82
+ )
83
+ }
84
+
85
+ export namespace Icon {
86
+ export type Props = ComponentPropsWithRef<'span'> & zyzz.Props.Variants<typeof styles.icon>
87
+ }
88
+
89
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.row>
90
+
91
+ /** The task, such as the amount that the row waits for. */
92
+ export function Title(props: Title.Props) {
93
+ const { className, vars, ...attributes } = props
94
+
95
+ return <span {...attributes} {...styles.title({ className, style: props.style, vars })} />
96
+ }
97
+
98
+ export namespace Title {
99
+ export type Props = ComponentPropsWithRef<'span'> & zyzz.Props.Variants<typeof styles.title>
100
+ }
101
+ }
102
+
103
+ namespace styles {
104
+ export const content = variants(
105
+ {
106
+ base: { display: 'flex', flexDirection: 'column', flexGrow: '1 !custom', minWidth: '0' },
107
+ },
108
+ { id: 'tds/web/status-row/content' },
109
+ )
110
+
111
+ export const description = variants(
112
+ { base: { color: 'content.secondary', typography: 'body.b3' } },
113
+ { id: 'tds/web/status-row/description' },
114
+ )
115
+
116
+ export const icon = variants(
117
+ {
118
+ base: {
119
+ alignItems: 'center',
120
+ display: 'inline-flex',
121
+ flexShrink: '0 !custom',
122
+ selectors: { '& > svg': { height: '24', width: '24' } },
123
+ },
124
+ },
125
+ { id: 'tds/web/status-row/icon' },
126
+ )
127
+
128
+ // Fields and alerts pad a 12px corner by 16px, and the row keeps 12px above and below its text.
129
+ export const row = variants(
130
+ {
131
+ base: {
132
+ alignItems: 'center',
133
+ borderRadius: 'xs',
134
+ boxSizing: 'border-box',
135
+ color: 'content.primary',
136
+ columnGap: '12',
137
+ display: 'flex',
138
+ paddingBlock: '12',
139
+ paddingInline: '16',
140
+ transitionDuration: '200',
141
+ transitionProperty: 'background-color',
142
+ transitionTimingFunction: 'snappy',
143
+ },
144
+ defaultVariants: { intent: 'neutral' },
145
+ variants: {
146
+ intent: {
147
+ neutral: { backgroundColor: 'container.subtle' },
148
+ positive: {
149
+ backgroundColor: 'container.positive',
150
+ selectors: { '& > [data-status-row-icon]': { color: 'content.positive' } },
151
+ },
152
+ },
153
+ },
154
+ },
155
+ { id: 'tds/web/status-row' },
156
+ )
157
+
158
+ export const title = style(
159
+ { color: 'content.primary', typography: 'body.b2Strong' },
160
+ { id: 'tds/web/status-row/title' },
161
+ )
162
+ }
@@ -3,12 +3,13 @@ import type * as zyzz from 'zyzz'
3
3
  import { style, variants } from '../zyzz.config.js'
4
4
 
5
5
  /**
6
- * Shows progress through a fixed sequence of steps as a row of segments. Renders a `div` with
7
- * `role="progressbar"`, the name `Progress`, and the value text `Step <value> of <count>`.
6
+ * Shows progress through a fixed sequence of steps as a row of 24px by 4px segments, 4px apart.
7
+ * Renders a `div` with `role="progressbar"`, the name `Progress`, and the value text
8
+ * `Step <value> of <count>`. The row is as wide as its segments.
8
9
  *
9
10
  * - Pass `aria-label` to name the flow, such as `Account setup`.
11
+ * - Center it in the header of a dialog, beside the Back button.
10
12
  * - Label each step in visible text near the stepper, since the segments carry no text.
11
- * - Pair the filled segments with that text, so completion does not rely on color alone.
12
13
  *
13
14
  * @example
14
15
  * <Stepper.Root aria-label="Account setup" count={4} value={2} />
@@ -61,7 +62,7 @@ export namespace Stepper {
61
62
 
62
63
  namespace styles {
63
64
  export const root = style(
64
- { columnGap: '8', display: 'flex', width: '100% !custom' },
65
+ { columnGap: '4', display: 'flex', width: 'fit-content !custom' },
65
66
  { id: 'tds/web/stepper' },
66
67
  )
67
68
 
@@ -69,17 +70,19 @@ namespace styles {
69
70
  {
70
71
  base: {
71
72
  borderRadius: 'full',
72
- flex: '1 !custom',
73
- height: '8',
73
+ cornerShape: 'round',
74
+ flexShrink: '0 !custom',
75
+ height: '4',
74
76
  transitionDuration: '240',
75
77
  transitionProperty: 'background-color',
76
78
  transitionTimingFunction: 'snappy',
79
+ width: '24',
77
80
  },
78
81
  defaultVariants: { state: 'pending' },
79
82
  variants: {
80
83
  state: {
81
- complete: { backgroundColor: 'foreground' },
82
- pending: { backgroundColor: 'grayAlpha.200' },
84
+ complete: { backgroundColor: 'content.primary' },
85
+ pending: { backgroundColor: 'container.strong' },
83
86
  },
84
87
  },
85
88
  },
@@ -4,14 +4,15 @@ import type * as zyzz from 'zyzz'
4
4
  import { variants, vars } from '../zyzz.config.js'
5
5
 
6
6
  /**
7
- * A card container that renders a `div` by default. Pass `render` to swap the element, such as a
8
- * `section`, `button` or link. A `button`, `a[href]` or `role="button"` surface gains hover, press
9
- * and focus-visible styles and spans the full width.
7
+ * A card container that renders a `div` with a 1px border inside its edge by default. Pass
8
+ * `render` to swap the element, such as a `section`, `button` or link. A `button`, `a[href]` or
9
+ * `role="button"` surface gains hover, press and focus-visible styles and spans the full width.
10
10
  *
11
- * - `size` sets the corner radius and padding together.
11
+ * - `size` sets the corner radius and padding together, at the same value.
12
12
  * - Name the card with `Surface.Title`, which renders an `h2`, so headings keep the card navigable.
13
13
  * - A pressable surface should hold no other interactive controls, since nested targets conflict.
14
- * - A direct child `table` or `Rows` bleeds into the padding, so row fills reach the edges.
14
+ * - A direct child `table` bleeds 12px into the padding at the sides and the bottom, as rows pad
15
+ * their cells, so its text stays on the content edge. The surface draws no border around it.
15
16
  *
16
17
  * @example
17
18
  * <Surface>
@@ -54,7 +55,10 @@ export namespace Surface {
54
55
  export type Props = ComponentPropsWithRef<'p'> & zyzz.Props.Variants<typeof styles.description>
55
56
  }
56
57
 
57
- /** A row above the content holding a `Surface.Title` and, at the end, any actions. */
58
+ /**
59
+ * A row above the content holding a `Surface.Title` and, at the end, any actions, with 20px of
60
+ * space below it.
61
+ */
58
62
  export function Header(props: Header.Props) {
59
63
  const { className, vars, ...attributes } = props
60
64
 
@@ -85,7 +89,10 @@ export namespace Surface {
85
89
  disabled?: boolean | undefined
86
90
  }
87
91
 
88
- /** The card heading, rendered as an `h2`. A leading `svg` icon renders at 24px. */
92
+ /**
93
+ * The card heading, rendered as an `h2`. A leading `svg` icon renders at 24px. In a surface that
94
+ * holds a direct child `table`, the title renders at the size of a section heading.
95
+ */
89
96
  export function Title(props: Title.Props) {
90
97
  const { className, vars, ...attributes } = props
91
98
 
@@ -101,10 +108,10 @@ namespace styles {
101
108
  export const description = variants(
102
109
  {
103
110
  base: {
104
- color: 'gray.900',
111
+ color: 'content.secondary',
105
112
  margin: '0',
106
113
  selectors: { '& + *': { marginBlockStart: '24' } },
107
- typography: 'copy.15',
114
+ typography: 'body.b1',
108
115
  },
109
116
  },
110
117
  { id: 'tds/web/surface/description' },
@@ -117,23 +124,23 @@ namespace styles {
117
124
  columnGap: '16',
118
125
  display: 'flex',
119
126
  justifyContent: 'space-between',
120
- marginBlockEnd: '16',
127
+ marginBlockEnd: '20',
121
128
  minWidth: '0',
122
129
  selectors: {
123
- // A trailing text button bleeds by its inline padding, so its label aligns with the content
124
- // edge, but never past the surface padding.
125
- '& > [data-variant="text"]:not([data-shape="icon"]):last-child': {
126
- marginInlineEnd: '-20',
130
+ // A trailing tertiary button bleeds by its inline padding, so its label aligns with the
131
+ // content edge, but never past the surface padding.
132
+ '& > [data-variant="tertiary"]:not([data-shape="icon"]):last-child': {
133
+ marginInlineEnd: '-24',
127
134
  },
128
- '& > [data-variant="text"][data-size="small"]:not([data-shape="icon"]):last-child': {
129
- marginInlineEnd: '-12',
135
+ '& > [data-variant="tertiary"][data-size="small"]:not([data-shape="icon"]):last-child': {
136
+ marginInlineEnd: '-16',
130
137
  },
131
- '& > [data-variant="text"][data-size="large"]:not([data-shape="icon"]):last-child': {
132
- marginInlineEnd: '-24',
138
+ '& > [data-variant="tertiary"][data-size="xsmall"]:not([data-shape="icon"]):last-child': {
139
+ marginInlineEnd: '-12',
133
140
  },
134
- '[data-surface-size="medium"] > & > [data-variant="text"]:is([data-size="medium"], [data-size="large"]):not([data-shape="icon"]):last-child':
141
+ '[data-surface-size="medium"] > & > [data-variant="tertiary"]:is([data-size="medium"], [data-size="large"]):not([data-shape="icon"]):last-child':
135
142
  { marginInlineEnd: '-16' },
136
- '[data-surface-size="small"] > & > [data-variant="text"]:is([data-size="medium"], [data-size="large"]):not([data-shape="icon"]):last-child':
143
+ '[data-surface-size="small"] > & > [data-variant="tertiary"]:is([data-size="small"], [data-size="medium"], [data-size="large"]):not([data-shape="icon"]):last-child':
137
144
  { marginInlineEnd: '-12' },
138
145
  },
139
146
  },
@@ -153,8 +160,8 @@ namespace styles {
153
160
  appearance: 'none !custom',
154
161
  backgroundColor: 'transparent !custom',
155
162
  border: 'none !custom',
156
- borderRadius: '2',
157
- color: 'foreground',
163
+ borderRadius: '3xs',
164
+ color: 'content.primary',
158
165
  cursor: 'pointer',
159
166
  font: 'inherit !custom',
160
167
  outlineColor: 'transparent !custom',
@@ -171,9 +178,9 @@ namespace styles {
171
178
  transitionTimingFunction: 'snappy',
172
179
  },
173
180
  '& > :is(a, button):hover': { textDecorationColor: 'currentColor !custom' },
174
- '& > :is(a, button):focus-visible': { outlineColor: 'blue.700' },
181
+ '& > :is(a, button):focus-visible': { outlineColor: 'border.focus' },
175
182
  },
176
- typography: 'label.16.strong',
183
+ typography: 'body.b1Strong',
177
184
  },
178
185
  },
179
186
  { id: 'tds/web/surface/links' },
@@ -182,9 +189,12 @@ namespace styles {
182
189
  export const surface = variants(
183
190
  {
184
191
  base: {
185
- backgroundColor: 'background.surface',
192
+ backgroundColor: 'background.elevated',
193
+ borderColor: 'line.secondary',
194
+ borderStyle: 'solid',
195
+ borderWidth: 'regular',
186
196
  boxSizing: 'border-box',
187
- color: 'foreground',
197
+ color: 'content.primary',
188
198
  display: 'block',
189
199
  outlineColor: 'transparent !custom',
190
200
  outlineOffset: '0',
@@ -194,40 +204,47 @@ namespace styles {
194
204
  transitionDuration: '160',
195
205
  transitionProperty: 'background-color, opacity, outline-color, outline-offset, scale',
196
206
  transitionTimingFunction: 'snappy',
197
- typography: 'copy.14',
207
+ typography: 'body.b2',
198
208
  selectors: {
199
209
  '&:is(button, a[href], [role="button"])': {
200
- border: 'none !custom',
201
210
  cursor: 'pointer',
202
211
  textDecoration: 'none !custom',
203
212
  width: '100% !custom',
204
213
  },
205
214
  '&:is(button, a[href], [role="button"]):hover:not(:disabled, [aria-disabled="true"])': {
206
- backgroundColor: 'gray.100',
215
+ backgroundColor: 'container.regular',
207
216
  },
208
217
  '&:is(button, a[href], [role="button"]):active:not(:disabled, [aria-disabled="true"])': {
209
- backgroundColor: 'gray.200',
218
+ backgroundColor: 'container.strong',
210
219
  scale: 'press',
211
220
  },
212
221
  '&:is(button, a[href], [role="button"]):focus-visible': {
213
- outlineColor: 'blue.700',
222
+ outlineColor: 'border.focus',
214
223
  outlineOffset: '2',
215
224
  },
216
- // Edge-to-edge row fills would otherwise cross the rounded corners. A table clips rather
217
- // than hides its overflow, so a sticky header still sticks to the scrolling ancestor.
218
- '&:has(> [data-rows])': { overflow: 'hidden' },
219
- '&:has(> table)': { overflow: 'clip !custom' },
225
+ // Row fills reach the edges of a small surface and would otherwise cross its corners. A
226
+ // table clips rather than hides its overflow, so a sticky header still sticks to the
227
+ // scrolling ancestor. The surface draws no border around the rows.
228
+ '&:has(> table)': { borderStyle: 'none', overflow: 'clip !custom' },
229
+ // A table bleeds by the 12px that its rows pad their edge cells, so the rows sit 12px
230
+ // inside the padding and their text on the content edge.
231
+ '& > table': {
232
+ marginInline: '-12',
233
+ width: `calc(100% + ${vars.spacing['24']}) !custom`,
234
+ },
220
235
  // A table at the top or bottom edge insets its text by the padding alone, as at the sides.
221
236
  // The header row bleeds to the top edge, so a sticky header keeps the padding above its
222
- // text. The caption drops its outer padding. Without a caption, the last row bleeds to the
223
- // bottom edge and keeps the half gap above its text from its 32, 40 or 56px height with
224
- // 20px type.
237
+ // text. The caption drops its outer padding. Without a caption, the last row bleeds 12px
238
+ // into the bottom padding and keeps the half gap above its text from its 32, 40 or 56px
239
+ // height with 20px type.
225
240
  '& > table:last-child > caption': { paddingBlockEnd: '0px !custom' },
241
+ '& > table:last-child:not(:has(> caption))': { marginBlockEnd: '-12' },
226
242
  '& > table:last-child:not(:has(> caption)) > tbody > tr:last-child > td': {
227
243
  height: 'auto !custom',
244
+ paddingBlockEnd: '12',
228
245
  },
229
246
  '& > table[data-size="large"]:last-child:not(:has(> caption)) > tbody > tr:last-child > td':
230
- { paddingBlockStart: '18' },
247
+ { paddingBlockStart: '20' },
231
248
  '& > table[data-size="medium"]:last-child:not(:has(> caption)) > tbody > tr:last-child > td':
232
249
  { paddingBlockStart: '10' },
233
250
  '& > table[data-size="small"]:last-child:not(:has(> caption)) > tbody > tr:last-child > td':
@@ -248,85 +265,37 @@ namespace styles {
248
265
  },
249
266
  defaultVariants: { size: 'large' },
250
267
  variants: {
251
- // Padding is one and a half times the radius, and they scale together. A direct child
252
- // table or Rows bleeds into the inline padding so fills reach the edges. Table cells at the
253
- // edges take back exactly the padding, so their text aligns with the content edge, while rows
254
- // keep their own side padding. Rows at the top or bottom edge take the full block padding,
255
- // since each row brings its own, and take half beside other content.
268
+ // Each size pads by its own radius, and they scale together. A direct child table with a
269
+ // header bleeds into the top padding, and its header cells take back exactly the padding.
256
270
  size: {
257
271
  large: {
258
- borderRadius: '16',
272
+ borderRadius: 'md',
259
273
  padding: '24',
260
274
  selectors: {
261
- '& > table, & > [data-rows]': { marginInline: '-24' },
262
- '& > [data-rows]': { marginBlock: '-12' },
263
- '& > [data-rows]:first-child': { marginBlockStart: '-24' },
264
- '& > [data-rows]:last-child': { marginBlockEnd: '-24' },
265
- '& > table': { width: `calc(100% + ${vars.spacing['48']}) !custom` },
266
- '& > table > caption, & > table tr > :first-child': {
267
- paddingInlineStart: '24',
268
- },
269
- '& > table tr > :last-child': { paddingInlineEnd: '24' },
270
275
  '& > table:first-child:has(> thead)': { marginBlockStart: '-24' },
271
276
  '& > table:first-child > thead > tr:first-child > th': {
272
277
  paddingBlockStart: '24',
273
278
  },
274
- '& > table:last-child:not(:has(> caption))': {
275
- marginBlockEnd: '-24',
276
- },
277
- '& > table:last-child:not(:has(> caption)) > tbody > tr:last-child > td': {
278
- paddingBlockEnd: '24',
279
- },
280
279
  },
281
280
  },
282
281
  medium: {
283
- borderRadius: '12',
282
+ borderRadius: 'sm',
284
283
  padding: '16',
285
284
  selectors: {
286
- '& > table, & > [data-rows]': { marginInline: '-16' },
287
- '& > [data-rows]': { marginBlock: '-8' },
288
- '& > [data-rows]:first-child': { marginBlockStart: '-16' },
289
- '& > [data-rows]:last-child': { marginBlockEnd: '-16' },
290
- '& > table': { width: `calc(100% + ${vars.spacing['32']}) !custom` },
291
- '& > table > caption, & > table tr > :first-child': {
292
- paddingInlineStart: '16',
293
- },
294
- '& > table tr > :last-child': { paddingInlineEnd: '16' },
295
285
  '& > table:first-child:has(> thead)': { marginBlockStart: '-16' },
296
286
  '& > table:first-child > thead > tr:first-child > th': {
297
287
  paddingBlockStart: '16',
298
288
  },
299
- '& > table:last-child:not(:has(> caption))': {
300
- marginBlockEnd: '-16',
301
- },
302
- '& > table:last-child:not(:has(> caption)) > tbody > tr:last-child > td': {
303
- paddingBlockEnd: '16',
304
- },
305
289
  },
306
290
  },
307
291
  small: {
308
- borderRadius: '8',
292
+ borderRadius: 'xs',
309
293
  padding: '12',
310
294
  selectors: {
311
- '& > table, & > [data-rows]': { marginInline: '-12' },
312
- '& > [data-rows]': { marginBlock: '-6' },
313
- '& > [data-rows]:first-child': { marginBlockStart: '-12' },
314
- '& > [data-rows]:last-child': { marginBlockEnd: '-12' },
315
- '& > table': { width: `calc(100% + ${vars.spacing['24']}) !custom` },
316
- '& > table > caption, & > table tr > :first-child': {
317
- paddingInlineStart: '12',
318
- },
319
- '& > table tr > :last-child': { paddingInlineEnd: '12' },
320
295
  '& > table:first-child:has(> thead)': { marginBlockStart: '-12' },
321
296
  '& > table:first-child > thead > tr:first-child > th': {
322
297
  paddingBlockStart: '12',
323
298
  },
324
- '& > table:last-child:not(:has(> caption))': {
325
- marginBlockEnd: '-12',
326
- },
327
- '& > table:last-child:not(:has(> caption)) > tbody > tr:last-child > td': {
328
- paddingBlockEnd: '12',
329
- },
330
299
  },
331
300
  },
332
301
  },
@@ -339,13 +308,19 @@ namespace styles {
339
308
  {
340
309
  base: {
341
310
  alignItems: 'center',
342
- color: 'foreground',
311
+ color: 'content.primary',
343
312
  columnGap: '12',
344
313
  display: 'flex',
345
314
  margin: '0',
346
315
  minWidth: '0',
347
- selectors: { '& > svg': { flexShrink: '0 !custom', fontSize: '24' } },
348
- typography: 'heading.20',
316
+ selectors: {
317
+ '& > svg': { flexShrink: '0 !custom', fontSize: '24' },
318
+ // A card that holds a table titles it as a section of the page.
319
+ '[data-surface-size]:has(> table) > &, [data-surface-size]:has(> table) > * > &': {
320
+ typography: 'heading.h3',
321
+ },
322
+ },
323
+ typography: 'body.b2Strong',
349
324
  },
350
325
  },
351
326
  { id: 'tds/web/surface/title' },