@tempoxyz/ds 0.2.6 → 0.3.1

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 (662) hide show
  1. package/README.md +2 -0
  2. package/dist/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  3. package/dist/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  4. package/dist/fonts/JetBrainsMono-Bold.woff2 +0 -0
  5. package/dist/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  6. package/dist/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  7. package/dist/fonts/JetBrainsMono-Medium.woff2 +0 -0
  8. package/dist/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  9. package/dist/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  10. package/dist/fonts/JetBrainsMono-Regular.woff2 +0 -0
  11. package/dist/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  12. package/dist/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  13. package/dist/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  14. package/dist/fonts/Pilat-Black-latin.woff2 +0 -0
  15. package/dist/fonts/Pilat-Black-other.woff2 +0 -0
  16. package/dist/fonts/Pilat-Black.woff2 +0 -0
  17. package/dist/fonts/Pilat-Bold-latin.woff2 +0 -0
  18. package/dist/fonts/Pilat-Bold-other.woff2 +0 -0
  19. package/dist/fonts/Pilat-Bold.woff2 +0 -0
  20. package/dist/fonts/Pilat-Book-latin.woff2 +0 -0
  21. package/dist/fonts/Pilat-Book-other.woff2 +0 -0
  22. package/dist/fonts/Pilat-Book.woff2 +0 -0
  23. package/dist/fonts/Pilat-Demi-latin.woff2 +0 -0
  24. package/dist/fonts/Pilat-Demi-other.woff2 +0 -0
  25. package/dist/fonts/Pilat-Demi.woff2 +0 -0
  26. package/dist/fonts/Pilat-Heavy-latin.woff2 +0 -0
  27. package/dist/fonts/Pilat-Heavy-other.woff2 +0 -0
  28. package/dist/fonts/Pilat-Heavy.woff2 +0 -0
  29. package/dist/fonts/Pilat-Light-latin.woff2 +0 -0
  30. package/dist/fonts/Pilat-Light-other.woff2 +0 -0
  31. package/dist/fonts/Pilat-Light.woff2 +0 -0
  32. package/dist/fonts/Pilat-Regular-latin.woff2 +0 -0
  33. package/dist/fonts/Pilat-Regular-other.woff2 +0 -0
  34. package/dist/fonts/Pilat-Regular.woff2 +0 -0
  35. package/dist/fonts/Pilat-Thin-latin.woff2 +0 -0
  36. package/dist/fonts/Pilat-Thin-other.woff2 +0 -0
  37. package/dist/fonts/Pilat-Thin.woff2 +0 -0
  38. package/dist/oxlint/rules/PreferComponent.js +6 -6
  39. package/dist/oxlint/rules/PreferComponent.js.map +1 -1
  40. package/dist/web/components/Accordion.css +1 -1
  41. package/dist/web/components/Accordion.d.ts +7 -7
  42. package/dist/web/components/Accordion.js.map +1 -1
  43. package/dist/web/components/Accordion.js.zyzz.json +1 -1
  44. package/dist/web/components/AgentLogo.css +1 -0
  45. package/dist/web/components/AgentLogo.d.ts +206 -0
  46. package/dist/web/components/AgentLogo.d.ts.map +1 -0
  47. package/dist/web/components/AgentLogo.js +86 -0
  48. package/dist/web/components/AgentLogo.js.map +1 -0
  49. package/dist/web/components/AgentLogo.js.zyzz.json +1 -0
  50. package/dist/web/components/Alert.css +1 -0
  51. package/dist/web/components/Alert.d.ts +161 -0
  52. package/dist/web/components/Alert.d.ts.map +1 -0
  53. package/dist/web/components/Alert.js +97 -0
  54. package/dist/web/components/Alert.js.map +1 -0
  55. package/dist/web/components/Alert.js.zyzz.json +1 -0
  56. package/dist/web/components/AlertDialog.d.ts +40 -28
  57. package/dist/web/components/AlertDialog.d.ts.map +1 -1
  58. package/dist/web/components/AlertDialog.js +31 -36
  59. package/dist/web/components/AlertDialog.js.map +1 -1
  60. package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
  61. package/dist/web/components/Amount.css +1 -1
  62. package/dist/web/components/Amount.d.ts +5 -5
  63. package/dist/web/components/Amount.d.ts.map +1 -1
  64. package/dist/web/components/Amount.js.map +1 -1
  65. package/dist/web/components/Amount.js.zyzz.json +1 -1
  66. package/dist/web/components/AmountInput.css +1 -1
  67. package/dist/web/components/AmountInput.d.ts +20 -39
  68. package/dist/web/components/AmountInput.d.ts.map +1 -1
  69. package/dist/web/components/AmountInput.js +31 -37
  70. package/dist/web/components/AmountInput.js.map +1 -1
  71. package/dist/web/components/AmountInput.js.zyzz.json +1 -1
  72. package/dist/web/components/AppShell.css +1 -1
  73. package/dist/web/components/AppShell.d.ts +172 -28
  74. package/dist/web/components/AppShell.d.ts.map +1 -1
  75. package/dist/web/components/AppShell.js +89 -29
  76. package/dist/web/components/AppShell.js.map +1 -1
  77. package/dist/web/components/AppShell.js.zyzz.json +1 -1
  78. package/dist/web/components/AssetChip.css +1 -0
  79. package/dist/web/components/AssetChip.d.ts +38 -0
  80. package/dist/web/components/AssetChip.d.ts.map +1 -0
  81. package/dist/web/components/AssetChip.js +47 -0
  82. package/dist/web/components/AssetChip.js.map +1 -0
  83. package/dist/web/components/AssetChip.js.zyzz.json +1 -0
  84. package/dist/web/components/Autocomplete.d.ts +2 -2
  85. package/dist/web/components/Autocomplete.js +4 -4
  86. package/dist/web/components/Autocomplete.js.map +1 -1
  87. package/dist/web/components/Autocomplete.js.zyzz.json +1 -1
  88. package/dist/web/components/Avatar.css +1 -1
  89. package/dist/web/components/Avatar.d.ts +40 -115
  90. package/dist/web/components/Avatar.d.ts.map +1 -1
  91. package/dist/web/components/Avatar.js +19 -32
  92. package/dist/web/components/Avatar.js.map +1 -1
  93. package/dist/web/components/Avatar.js.zyzz.json +1 -1
  94. package/dist/web/components/Badge.css +1 -0
  95. package/dist/web/components/Badge.d.ts +134 -0
  96. package/dist/web/components/Badge.d.ts.map +1 -0
  97. package/dist/web/components/Badge.js +38 -0
  98. package/dist/web/components/Badge.js.map +1 -0
  99. package/dist/web/components/Badge.js.zyzz.json +1 -0
  100. package/dist/web/components/Banner.css +1 -1
  101. package/dist/web/components/Banner.d.ts +12 -12
  102. package/dist/web/components/Banner.d.ts.map +1 -1
  103. package/dist/web/components/Banner.js +5 -5
  104. package/dist/web/components/Banner.js.map +1 -1
  105. package/dist/web/components/Banner.js.zyzz.json +1 -1
  106. package/dist/web/components/BarChart.css +1 -0
  107. package/dist/web/components/BarChart.d.ts +155 -0
  108. package/dist/web/components/BarChart.d.ts.map +1 -0
  109. package/dist/web/components/BarChart.js +119 -0
  110. package/dist/web/components/BarChart.js.map +1 -0
  111. package/dist/web/components/BarChart.js.zyzz.json +1 -0
  112. package/dist/web/components/Breadcrumbs.css +1 -1
  113. package/dist/web/components/Breadcrumbs.d.ts +6 -6
  114. package/dist/web/components/Breadcrumbs.js.map +1 -1
  115. package/dist/web/components/Breadcrumbs.js.zyzz.json +1 -1
  116. package/dist/web/components/Button.css +1 -1
  117. package/dist/web/components/Button.d.ts +167 -32
  118. package/dist/web/components/Button.d.ts.map +1 -1
  119. package/dist/web/components/Button.js +14 -9
  120. package/dist/web/components/Button.js.map +1 -1
  121. package/dist/web/components/Button.js.zyzz.json +1 -1
  122. package/dist/web/components/ButtonGroup.css +1 -0
  123. package/dist/web/components/ButtonGroup.d.ts +56 -0
  124. package/dist/web/components/ButtonGroup.d.ts.map +1 -0
  125. package/dist/web/components/ButtonGroup.js +33 -0
  126. package/dist/web/components/ButtonGroup.js.map +1 -0
  127. package/dist/web/components/ButtonGroup.js.zyzz.json +1 -0
  128. package/dist/web/components/Calendar.css +1 -1
  129. package/dist/web/components/Calendar.d.ts.map +1 -1
  130. package/dist/web/components/Calendar.js +7 -7
  131. package/dist/web/components/Calendar.js.map +1 -1
  132. package/dist/web/components/Calendar.js.zyzz.json +1 -1
  133. package/dist/web/components/Checkbox.css +1 -1
  134. package/dist/web/components/Checkbox.d.ts +11 -11
  135. package/dist/web/components/Checkbox.d.ts.map +1 -1
  136. package/dist/web/components/Checkbox.js +4 -1
  137. package/dist/web/components/Checkbox.js.map +1 -1
  138. package/dist/web/components/Checkbox.js.zyzz.json +1 -1
  139. package/dist/web/components/CheckboxGroup.js.zyzz.json +1 -1
  140. package/dist/web/components/ChoiceGroup.css +1 -1
  141. package/dist/web/components/ChoiceGroup.d.ts +44 -16
  142. package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
  143. package/dist/web/components/ChoiceGroup.js +32 -8
  144. package/dist/web/components/ChoiceGroup.js.map +1 -1
  145. package/dist/web/components/ChoiceGroup.js.zyzz.json +1 -1
  146. package/dist/web/components/Choicebox.css +1 -1
  147. package/dist/web/components/Choicebox.d.ts +9 -9
  148. package/dist/web/components/Choicebox.d.ts.map +1 -1
  149. package/dist/web/components/Choicebox.js +6 -6
  150. package/dist/web/components/Choicebox.js.map +1 -1
  151. package/dist/web/components/Choicebox.js.zyzz.json +1 -1
  152. package/dist/web/components/Combobox.css +1 -1
  153. package/dist/web/components/Combobox.d.ts +2 -2
  154. package/dist/web/components/Combobox.d.ts.map +1 -1
  155. package/dist/web/components/Combobox.js +8 -8
  156. package/dist/web/components/Combobox.js.map +1 -1
  157. package/dist/web/components/Combobox.js.zyzz.json +1 -1
  158. package/dist/web/components/Container.js.zyzz.json +1 -1
  159. package/dist/web/components/CopyButton.js +1 -1
  160. package/dist/web/components/CopyButton.js.map +1 -1
  161. package/dist/web/components/CopyButton.js.zyzz.json +1 -1
  162. package/dist/web/components/DatePicker.css +1 -1
  163. package/dist/web/components/DatePicker.d.ts +37 -56
  164. package/dist/web/components/DatePicker.d.ts.map +1 -1
  165. package/dist/web/components/DatePicker.js +7 -7
  166. package/dist/web/components/DatePicker.js.map +1 -1
  167. package/dist/web/components/DatePicker.js.zyzz.json +1 -1
  168. package/dist/web/components/Dialog.css +1 -1
  169. package/dist/web/components/Dialog.d.ts +189 -20
  170. package/dist/web/components/Dialog.d.ts.map +1 -1
  171. package/dist/web/components/Dialog.js +93 -26
  172. package/dist/web/components/Dialog.js.map +1 -1
  173. package/dist/web/components/Dialog.js.zyzz.json +1 -1
  174. package/dist/web/components/Drawer.css +1 -1
  175. package/dist/web/components/Drawer.d.ts +7 -2
  176. package/dist/web/components/Drawer.d.ts.map +1 -1
  177. package/dist/web/components/Drawer.js +12 -6
  178. package/dist/web/components/Drawer.js.map +1 -1
  179. package/dist/web/components/Drawer.js.zyzz.json +1 -1
  180. package/dist/web/components/Empty.css +1 -1
  181. package/dist/web/components/Empty.d.ts +2 -0
  182. package/dist/web/components/Empty.d.ts.map +1 -1
  183. package/dist/web/components/Empty.js +5 -3
  184. package/dist/web/components/Empty.js.map +1 -1
  185. package/dist/web/components/Empty.js.zyzz.json +1 -1
  186. package/dist/web/components/Field.css +1 -1
  187. package/dist/web/components/Field.d.ts +16 -21
  188. package/dist/web/components/Field.d.ts.map +1 -1
  189. package/dist/web/components/Field.js +38 -36
  190. package/dist/web/components/Field.js.map +1 -1
  191. package/dist/web/components/Field.js.zyzz.json +1 -1
  192. package/dist/web/components/Fieldset.css +1 -1
  193. package/dist/web/components/Fieldset.d.ts +9 -18
  194. package/dist/web/components/Fieldset.d.ts.map +1 -1
  195. package/dist/web/components/Fieldset.js +11 -14
  196. package/dist/web/components/Fieldset.js.map +1 -1
  197. package/dist/web/components/Fieldset.js.zyzz.json +1 -1
  198. package/dist/web/components/Frame.css +1 -1
  199. package/dist/web/components/Frame.d.ts +13 -19
  200. package/dist/web/components/Frame.d.ts.map +1 -1
  201. package/dist/web/components/Frame.js +8 -8
  202. package/dist/web/components/Frame.js.map +1 -1
  203. package/dist/web/components/Frame.js.zyzz.json +1 -1
  204. package/dist/web/components/Gauge.css +1 -1
  205. package/dist/web/components/Gauge.d.ts +2 -2
  206. package/dist/web/components/Gauge.d.ts.map +1 -1
  207. package/dist/web/components/Gauge.js.map +1 -1
  208. package/dist/web/components/Gauge.js.zyzz.json +1 -1
  209. package/dist/web/components/Grid.js.zyzz.json +1 -1
  210. package/dist/web/components/Hex.css +1 -1
  211. package/dist/web/components/Hex.d.ts +11 -53
  212. package/dist/web/components/Hex.d.ts.map +1 -1
  213. package/dist/web/components/Hex.js +5 -7
  214. package/dist/web/components/Hex.js.map +1 -1
  215. package/dist/web/components/Hex.js.zyzz.json +1 -1
  216. package/dist/web/components/IconTile.css +1 -0
  217. package/dist/web/components/IconTile.d.ts +62 -0
  218. package/dist/web/components/IconTile.d.ts.map +1 -0
  219. package/dist/web/components/IconTile.js +28 -0
  220. package/dist/web/components/IconTile.js.map +1 -0
  221. package/dist/web/components/IconTile.js.zyzz.json +1 -0
  222. package/dist/web/components/Identicon.css +1 -1
  223. package/dist/web/components/Identicon.d.ts +1 -8
  224. package/dist/web/components/Identicon.d.ts.map +1 -1
  225. package/dist/web/components/Identicon.js +1 -4
  226. package/dist/web/components/Identicon.js.map +1 -1
  227. package/dist/web/components/Identicon.js.zyzz.json +1 -1
  228. package/dist/web/components/Inline.js.zyzz.json +1 -1
  229. package/dist/web/components/Inset.js.zyzz.json +1 -1
  230. package/dist/web/components/Kbd.css +1 -1
  231. package/dist/web/components/Kbd.d.ts +7 -7
  232. package/dist/web/components/Kbd.js.map +1 -1
  233. package/dist/web/components/Kbd.js.zyzz.json +1 -1
  234. package/dist/web/components/ListGroup.css +1 -0
  235. package/dist/web/components/ListGroup.d.ts +530 -0
  236. package/dist/web/components/ListGroup.d.ts.map +1 -0
  237. package/dist/web/components/ListGroup.js +270 -0
  238. package/dist/web/components/ListGroup.js.map +1 -0
  239. package/dist/web/components/ListGroup.js.zyzz.json +1 -0
  240. package/dist/web/components/LoadingDots.css +1 -1
  241. package/dist/web/components/LoadingDots.d.ts.map +1 -1
  242. package/dist/web/components/LoadingDots.js +2 -2
  243. package/dist/web/components/LoadingDots.js.map +1 -1
  244. package/dist/web/components/LoadingDots.js.zyzz.json +1 -1
  245. package/dist/web/components/Menu.css +1 -1
  246. package/dist/web/components/Menu.d.ts +39 -20
  247. package/dist/web/components/Menu.d.ts.map +1 -1
  248. package/dist/web/components/Menu.js +12 -7
  249. package/dist/web/components/Menu.js.map +1 -1
  250. package/dist/web/components/Menu.js.zyzz.json +1 -1
  251. package/dist/web/components/NetworkLogo.css +1 -0
  252. package/dist/web/components/NetworkLogo.d.ts +58 -0
  253. package/dist/web/components/NetworkLogo.d.ts.map +1 -0
  254. package/dist/web/components/NetworkLogo.js +40 -0
  255. package/dist/web/components/NetworkLogo.js.map +1 -0
  256. package/dist/web/components/NetworkLogo.js.zyzz.json +1 -0
  257. package/dist/web/components/NumberField.css +1 -1
  258. package/dist/web/components/NumberField.d.ts +3 -3
  259. package/dist/web/components/NumberField.d.ts.map +1 -1
  260. package/dist/web/components/NumberField.js +5 -5
  261. package/dist/web/components/NumberField.js.map +1 -1
  262. package/dist/web/components/NumberField.js.zyzz.json +1 -1
  263. package/dist/web/components/OtpField.css +1 -1
  264. package/dist/web/components/OtpField.d.ts +8 -68
  265. package/dist/web/components/OtpField.d.ts.map +1 -1
  266. package/dist/web/components/OtpField.js +12 -9
  267. package/dist/web/components/OtpField.js.map +1 -1
  268. package/dist/web/components/OtpField.js.zyzz.json +1 -1
  269. package/dist/web/components/Pagination.css +1 -1
  270. package/dist/web/components/Pagination.d.ts +16 -14
  271. package/dist/web/components/Pagination.d.ts.map +1 -1
  272. package/dist/web/components/Pagination.js +3 -3
  273. package/dist/web/components/Pagination.js.map +1 -1
  274. package/dist/web/components/Pagination.js.zyzz.json +1 -1
  275. package/dist/web/components/Popover.css +1 -1
  276. package/dist/web/components/Popover.js.map +1 -1
  277. package/dist/web/components/Popover.js.zyzz.json +1 -1
  278. package/dist/web/components/Progress.css +1 -1
  279. package/dist/web/components/Progress.d.ts +2 -2
  280. package/dist/web/components/Progress.d.ts.map +1 -1
  281. package/dist/web/components/Progress.js +5 -5
  282. package/dist/web/components/Progress.js.map +1 -1
  283. package/dist/web/components/Progress.js.zyzz.json +1 -1
  284. package/dist/web/components/Qr.css +1 -1
  285. package/dist/web/components/Qr.d.ts +1 -1
  286. package/dist/web/components/Qr.js.map +1 -1
  287. package/dist/web/components/Qr.js.zyzz.json +1 -1
  288. package/dist/web/components/RadioGroup.css +1 -1
  289. package/dist/web/components/RadioGroup.d.ts.map +1 -1
  290. package/dist/web/components/RadioGroup.js +2 -2
  291. package/dist/web/components/RadioGroup.js.map +1 -1
  292. package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
  293. package/dist/web/components/SecretValue.css +1 -1
  294. package/dist/web/components/SecretValue.d.ts +7 -7
  295. package/dist/web/components/SecretValue.js +1 -1
  296. package/dist/web/components/SecretValue.js.map +1 -1
  297. package/dist/web/components/SecretValue.js.zyzz.json +1 -1
  298. package/dist/web/components/Select.css +1 -1
  299. package/dist/web/components/Select.d.ts +64 -2
  300. package/dist/web/components/Select.d.ts.map +1 -1
  301. package/dist/web/components/Select.js +26 -9
  302. package/dist/web/components/Select.js.map +1 -1
  303. package/dist/web/components/Select.js.zyzz.json +1 -1
  304. package/dist/web/components/Separator.css +1 -1
  305. package/dist/web/components/Separator.d.ts +17 -3
  306. package/dist/web/components/Separator.d.ts.map +1 -1
  307. package/dist/web/components/Separator.js +40 -5
  308. package/dist/web/components/Separator.js.map +1 -1
  309. package/dist/web/components/Separator.js.zyzz.json +1 -1
  310. package/dist/web/components/SidebarMenu.css +1 -1
  311. package/dist/web/components/SidebarMenu.d.ts +238 -39
  312. package/dist/web/components/SidebarMenu.d.ts.map +1 -1
  313. package/dist/web/components/SidebarMenu.js +123 -20
  314. package/dist/web/components/SidebarMenu.js.map +1 -1
  315. package/dist/web/components/SidebarMenu.js.zyzz.json +1 -1
  316. package/dist/web/components/Skeleton.css +1 -1
  317. package/dist/web/components/Skeleton.d.ts +5 -3
  318. package/dist/web/components/Skeleton.d.ts.map +1 -1
  319. package/dist/web/components/Skeleton.js +1 -1
  320. package/dist/web/components/Skeleton.js.map +1 -1
  321. package/dist/web/components/Skeleton.js.zyzz.json +1 -1
  322. package/dist/web/components/Slider.css +1 -1
  323. package/dist/web/components/Slider.d.ts.map +1 -1
  324. package/dist/web/components/Slider.js +5 -5
  325. package/dist/web/components/Slider.js.map +1 -1
  326. package/dist/web/components/Slider.js.zyzz.json +1 -1
  327. package/dist/web/components/Snippet.css +1 -1
  328. package/dist/web/components/Snippet.d.ts +27 -65
  329. package/dist/web/components/Snippet.d.ts.map +1 -1
  330. package/dist/web/components/Snippet.js +47 -10
  331. package/dist/web/components/Snippet.js.map +1 -1
  332. package/dist/web/components/Snippet.js.zyzz.json +1 -1
  333. package/dist/web/components/Spinner.css +1 -1
  334. package/dist/web/components/Spinner.d.ts +25 -16
  335. package/dist/web/components/Spinner.d.ts.map +1 -1
  336. package/dist/web/components/Spinner.js +11 -6
  337. package/dist/web/components/Spinner.js.map +1 -1
  338. package/dist/web/components/Spinner.js.zyzz.json +1 -1
  339. package/dist/web/components/SplitBar.css +1 -0
  340. package/dist/web/components/SplitBar.d.ts +99 -0
  341. package/dist/web/components/SplitBar.d.ts.map +1 -0
  342. package/dist/web/components/SplitBar.js +49 -0
  343. package/dist/web/components/SplitBar.js.map +1 -0
  344. package/dist/web/components/SplitBar.js.zyzz.json +1 -0
  345. package/dist/web/components/SplitButton.css +1 -1
  346. package/dist/web/components/SplitButton.d.ts +4 -1
  347. package/dist/web/components/SplitButton.d.ts.map +1 -1
  348. package/dist/web/components/SplitButton.js +2 -2
  349. package/dist/web/components/SplitButton.js.map +1 -1
  350. package/dist/web/components/SplitButton.js.zyzz.json +1 -1
  351. package/dist/web/components/Stack.js.zyzz.json +1 -1
  352. package/dist/web/components/StatusChip.css +1 -0
  353. package/dist/web/components/StatusChip.d.ts +162 -0
  354. package/dist/web/components/StatusChip.d.ts.map +1 -0
  355. package/dist/web/components/StatusChip.js +37 -0
  356. package/dist/web/components/StatusChip.js.map +1 -0
  357. package/dist/web/components/StatusChip.js.zyzz.json +1 -0
  358. package/dist/web/components/StatusRow.css +1 -0
  359. package/dist/web/components/StatusRow.d.ts +121 -0
  360. package/dist/web/components/StatusRow.d.ts.map +1 -0
  361. package/dist/web/components/StatusRow.js +75 -0
  362. package/dist/web/components/StatusRow.js.map +1 -0
  363. package/dist/web/components/StatusRow.js.zyzz.json +1 -0
  364. package/dist/web/components/Stepper.css +1 -1
  365. package/dist/web/components/Stepper.d.ts +10 -7
  366. package/dist/web/components/Stepper.d.ts.map +1 -1
  367. package/dist/web/components/Stepper.js +5 -4
  368. package/dist/web/components/Stepper.js.map +1 -1
  369. package/dist/web/components/Stepper.js.zyzz.json +1 -1
  370. package/dist/web/components/Surface.css +1 -1
  371. package/dist/web/components/Surface.d.ts +123 -101
  372. package/dist/web/components/Surface.d.ts.map +1 -1
  373. package/dist/web/components/Surface.js +20 -10
  374. package/dist/web/components/Surface.js.map +1 -1
  375. package/dist/web/components/Surface.js.zyzz.json +1 -1
  376. package/dist/web/components/Switch.css +1 -1
  377. package/dist/web/components/Switch.d.ts +14 -18
  378. package/dist/web/components/Switch.d.ts.map +1 -1
  379. package/dist/web/components/Switch.js +13 -15
  380. package/dist/web/components/Switch.js.map +1 -1
  381. package/dist/web/components/Switch.js.zyzz.json +1 -1
  382. package/dist/web/components/Table.css +1 -1
  383. package/dist/web/components/Table.d.ts +152 -67
  384. package/dist/web/components/Table.d.ts.map +1 -1
  385. package/dist/web/components/Table.js +92 -24
  386. package/dist/web/components/Table.js.map +1 -1
  387. package/dist/web/components/Table.js.zyzz.json +1 -1
  388. package/dist/web/components/Tabs.css +1 -1
  389. package/dist/web/components/Tabs.d.ts +49 -42
  390. package/dist/web/components/Tabs.d.ts.map +1 -1
  391. package/dist/web/components/Tabs.js +45 -14
  392. package/dist/web/components/Tabs.js.map +1 -1
  393. package/dist/web/components/Tabs.js.zyzz.json +1 -1
  394. package/dist/web/components/TempoLogo.css +1 -0
  395. package/dist/web/components/TempoLogo.d.ts +47 -0
  396. package/dist/web/components/TempoLogo.d.ts.map +1 -0
  397. package/dist/web/components/TempoLogo.js +48 -0
  398. package/dist/web/components/TempoLogo.js.map +1 -0
  399. package/dist/web/components/TempoLogo.js.zyzz.json +1 -0
  400. package/dist/web/components/TextInput.css +1 -0
  401. package/dist/web/components/{Input.d.ts → TextInput.d.ts} +27 -18
  402. package/dist/web/components/TextInput.d.ts.map +1 -0
  403. package/dist/web/components/TextInput.js +138 -0
  404. package/dist/web/components/TextInput.js.map +1 -0
  405. package/dist/web/components/TextInput.js.zyzz.json +1 -0
  406. package/dist/web/components/Textarea.css +1 -1
  407. package/dist/web/components/Textarea.d.ts +29 -74
  408. package/dist/web/components/Textarea.d.ts.map +1 -1
  409. package/dist/web/components/Textarea.js +5 -12
  410. package/dist/web/components/Textarea.js.map +1 -1
  411. package/dist/web/components/Textarea.js.zyzz.json +1 -1
  412. package/dist/web/components/Toast.css +1 -1
  413. package/dist/web/components/Toast.d.ts +4 -4
  414. package/dist/web/components/Toast.d.ts.map +1 -1
  415. package/dist/web/components/Toast.js +9 -9
  416. package/dist/web/components/Toast.js.map +1 -1
  417. package/dist/web/components/Toast.js.zyzz.json +1 -1
  418. package/dist/web/components/Token.css +1 -1
  419. package/dist/web/components/Token.d.ts +32 -90
  420. package/dist/web/components/Token.d.ts.map +1 -1
  421. package/dist/web/components/Token.js +27 -89
  422. package/dist/web/components/Token.js.map +1 -1
  423. package/dist/web/components/Token.js.zyzz.json +1 -1
  424. package/dist/web/components/TokenLogo.css +1 -0
  425. package/dist/web/components/TokenLogo.d.ts +117 -0
  426. package/dist/web/components/TokenLogo.d.ts.map +1 -0
  427. package/dist/web/components/TokenLogo.js +112 -0
  428. package/dist/web/components/TokenLogo.js.map +1 -0
  429. package/dist/web/components/TokenLogo.js.zyzz.json +1 -0
  430. package/dist/web/components/Tooltip.css +1 -1
  431. package/dist/web/components/Tooltip.js.map +1 -1
  432. package/dist/web/components/Tooltip.js.zyzz.json +1 -1
  433. package/dist/web/components/VerificationCode.css +1 -0
  434. package/dist/web/components/VerificationCode.d.ts +47 -0
  435. package/dist/web/components/VerificationCode.d.ts.map +1 -0
  436. package/dist/web/components/VerificationCode.js +55 -0
  437. package/dist/web/components/VerificationCode.js.map +1 -0
  438. package/dist/web/components/VerificationCode.js.zyzz.json +1 -0
  439. package/dist/web/components/Visual.css +1 -0
  440. package/dist/web/components/Visual.d.ts +65 -0
  441. package/dist/web/components/Visual.d.ts.map +1 -0
  442. package/dist/web/components/Visual.js +51 -0
  443. package/dist/web/components/Visual.js.map +1 -0
  444. package/dist/web/components/Visual.js.zyzz.json +1 -0
  445. package/dist/web/components/internal/Field.css +1 -1
  446. package/dist/web/components/internal/Field.d.ts +41 -87
  447. package/dist/web/components/internal/Field.d.ts.map +1 -1
  448. package/dist/web/components/internal/Field.js +8 -7
  449. package/dist/web/components/internal/Field.js.map +1 -1
  450. package/dist/web/components/internal/Field.js.zyzz.json +1 -1
  451. package/dist/web/components/internal/InputGroup.css +1 -1
  452. package/dist/web/components/internal/InputGroup.d.ts +38 -99
  453. package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
  454. package/dist/web/components/internal/InputGroup.js +6 -6
  455. package/dist/web/components/internal/InputGroup.js.map +1 -1
  456. package/dist/web/components/internal/InputGroup.js.zyzz.json +1 -1
  457. package/dist/web/components/internal/Listbox.css +1 -1
  458. package/dist/web/components/internal/Listbox.d.ts +8 -8
  459. package/dist/web/components/internal/Listbox.js.map +1 -1
  460. package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
  461. package/dist/web/components/internal/RowDisabled.d.ts +3 -0
  462. package/dist/web/components/internal/RowDisabled.d.ts.map +1 -0
  463. package/dist/web/components/internal/RowDisabled.js +9 -0
  464. package/dist/web/components/internal/RowDisabled.js.map +1 -0
  465. package/dist/web/components/internal/RowsSize.d.ts +2 -3
  466. package/dist/web/components/internal/RowsSize.d.ts.map +1 -1
  467. package/dist/web/components/internal/RowsSize.js +3 -3
  468. package/dist/web/components/internal/RowsSize.js.map +1 -1
  469. package/dist/web/components/internal/TabBar.d.ts +33 -0
  470. package/dist/web/components/internal/TabBar.d.ts.map +1 -0
  471. package/dist/web/components/internal/TabBar.js +30 -0
  472. package/dist/web/components/internal/TabBar.js.map +1 -0
  473. package/dist/web/components/internal/Text.d.ts +9 -0
  474. package/dist/web/components/internal/Text.d.ts.map +1 -0
  475. package/dist/web/components/internal/Text.js +35 -0
  476. package/dist/web/components/internal/Text.js.map +1 -0
  477. package/dist/web/index.d.ts +18 -6
  478. package/dist/web/index.d.ts.map +1 -1
  479. package/dist/web/index.js +18 -6
  480. package/dist/web/index.js.map +1 -1
  481. package/dist/web/index.js.zyzz.json +1 -1
  482. package/dist/web/vars.d.ts +612 -704
  483. package/dist/web/vars.d.ts.map +1 -1
  484. package/dist/web/vars.js +7 -6
  485. package/dist/web/vars.js.map +1 -1
  486. package/dist/web/vars.js.zyzz.json +1 -1
  487. package/dist/web/zyzz.config.d.ts +3041 -3506
  488. package/dist/web/zyzz.config.d.ts.map +1 -1
  489. package/dist/web/zyzz.config.js +29 -3
  490. package/dist/web/zyzz.config.js.map +1 -1
  491. package/dist/web/zyzz.config.js.zyzz.json +1 -1
  492. package/package.json +149 -5
  493. package/src/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
  494. package/src/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
  495. package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
  496. package/src/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
  497. package/src/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
  498. package/src/fonts/JetBrainsMono-Medium.woff2 +0 -0
  499. package/src/fonts/{Geist-OFL.txt → JetBrainsMono-OFL.txt} +4 -3
  500. package/src/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
  501. package/src/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
  502. package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
  503. package/src/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
  504. package/src/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
  505. package/src/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
  506. package/src/fonts/Pilat-Black-latin.woff2 +0 -0
  507. package/src/fonts/Pilat-Black-other.woff2 +0 -0
  508. package/src/fonts/Pilat-Black.woff2 +0 -0
  509. package/src/fonts/Pilat-Bold-latin.woff2 +0 -0
  510. package/src/fonts/Pilat-Bold-other.woff2 +0 -0
  511. package/src/fonts/Pilat-Bold.woff2 +0 -0
  512. package/src/fonts/Pilat-Book-latin.woff2 +0 -0
  513. package/src/fonts/Pilat-Book-other.woff2 +0 -0
  514. package/src/fonts/Pilat-Book.woff2 +0 -0
  515. package/src/fonts/Pilat-Demi-latin.woff2 +0 -0
  516. package/src/fonts/Pilat-Demi-other.woff2 +0 -0
  517. package/src/fonts/Pilat-Demi.woff2 +0 -0
  518. package/src/fonts/Pilat-Heavy-latin.woff2 +0 -0
  519. package/src/fonts/Pilat-Heavy-other.woff2 +0 -0
  520. package/src/fonts/Pilat-Heavy.woff2 +0 -0
  521. package/src/fonts/Pilat-Light-latin.woff2 +0 -0
  522. package/src/fonts/Pilat-Light-other.woff2 +0 -0
  523. package/src/fonts/Pilat-Light.woff2 +0 -0
  524. package/src/fonts/Pilat-Regular-latin.woff2 +0 -0
  525. package/src/fonts/Pilat-Regular-other.woff2 +0 -0
  526. package/src/fonts/Pilat-Regular.woff2 +0 -0
  527. package/src/fonts/Pilat-Thin-latin.woff2 +0 -0
  528. package/src/fonts/Pilat-Thin-other.woff2 +0 -0
  529. package/src/fonts/Pilat-Thin.woff2 +0 -0
  530. package/src/fonts/README.md +15 -2
  531. package/src/oxlint/rules/PreferComponent.ts +6 -6
  532. package/src/web/README.md +7 -7
  533. package/src/web/components/Accordion.tsx +8 -8
  534. package/src/web/components/AgentLogo.tsx +330 -0
  535. package/src/web/components/Alert.tsx +321 -0
  536. package/src/web/components/AlertDialog.tsx +47 -111
  537. package/src/web/components/Amount.tsx +6 -6
  538. package/src/web/components/AmountInput.tsx +59 -134
  539. package/src/web/components/AppShell.tsx +367 -43
  540. package/src/web/components/AssetChip.tsx +110 -0
  541. package/src/web/components/Autocomplete.tsx +4 -4
  542. package/src/web/components/Avatar.tsx +42 -119
  543. package/src/web/components/Badge.tsx +122 -0
  544. package/src/web/components/Banner.tsx +13 -11
  545. package/src/web/components/BarChart.tsx +427 -0
  546. package/src/web/components/Breadcrumbs.tsx +7 -7
  547. package/src/web/components/Button.tsx +159 -41
  548. package/src/web/components/ButtonGroup.tsx +59 -0
  549. package/src/web/components/Calendar.tsx +15 -13
  550. package/src/web/components/Checkbox.tsx +14 -11
  551. package/src/web/components/ChoiceGroup.tsx +107 -26
  552. package/src/web/components/Choicebox.tsx +30 -28
  553. package/src/web/components/Combobox.tsx +10 -8
  554. package/src/web/components/CopyButton.tsx +1 -1
  555. package/src/web/components/DatePicker.tsx +42 -61
  556. package/src/web/components/Dialog.tsx +273 -71
  557. package/src/web/components/Drawer.tsx +45 -18
  558. package/src/web/components/Empty.tsx +13 -8
  559. package/src/web/components/Field.tsx +78 -132
  560. package/src/web/components/Fieldset.tsx +16 -37
  561. package/src/web/components/Frame.tsx +13 -20
  562. package/src/web/components/Gauge.tsx +4 -4
  563. package/src/web/components/Hex.tsx +13 -56
  564. package/src/web/components/IconTile.tsx +57 -0
  565. package/src/web/components/Identicon.tsx +1 -10
  566. package/src/web/components/Kbd.tsx +8 -8
  567. package/src/web/components/ListGroup.tsx +857 -0
  568. package/src/web/components/LoadingDots.tsx +1 -0
  569. package/src/web/components/Menu.tsx +50 -35
  570. package/src/web/components/NetworkLogo.tsx +208 -0
  571. package/src/web/components/NumberField.tsx +18 -33
  572. package/src/web/components/OtpField.tsx +51 -102
  573. package/src/web/components/Pagination.tsx +16 -14
  574. package/src/web/components/Popover.tsx +8 -8
  575. package/src/web/components/Progress.tsx +7 -5
  576. package/src/web/components/Qr.tsx +1 -1
  577. package/src/web/components/RadioGroup.tsx +9 -7
  578. package/src/web/components/SecretValue.tsx +11 -11
  579. package/src/web/components/Select.tsx +89 -26
  580. package/src/web/components/Separator.tsx +95 -7
  581. package/src/web/components/SidebarMenu.tsx +390 -53
  582. package/src/web/components/Skeleton.tsx +5 -5
  583. package/src/web/components/Slider.tsx +12 -6
  584. package/src/web/components/Snippet.tsx +134 -75
  585. package/src/web/components/Spinner.tsx +38 -12
  586. package/src/web/components/SplitBar.tsx +158 -0
  587. package/src/web/components/SplitButton.tsx +26 -17
  588. package/src/web/components/StatusChip.tsx +138 -0
  589. package/src/web/components/StatusRow.tsx +162 -0
  590. package/src/web/components/Stepper.tsx +11 -8
  591. package/src/web/components/Surface.tsx +172 -93
  592. package/src/web/components/Switch.tsx +25 -29
  593. package/src/web/components/Table.tsx +281 -70
  594. package/src/web/components/Tabs.tsx +93 -50
  595. package/src/web/components/TempoLogo.tsx +89 -0
  596. package/src/web/components/{Input.tsx → TextInput.tsx} +87 -118
  597. package/src/web/components/Textarea.tsx +33 -78
  598. package/src/web/components/Toast.tsx +24 -22
  599. package/src/web/components/Token.tsx +106 -172
  600. package/src/web/components/TokenLogo.tsx +217 -0
  601. package/src/web/components/Tooltip.tsx +3 -3
  602. package/src/web/components/VerificationCode.tsx +97 -0
  603. package/src/web/components/Visual.tsx +166 -0
  604. package/src/web/components/internal/Field.ts +63 -72
  605. package/src/web/components/internal/InputGroup.ts +44 -101
  606. package/src/web/components/internal/Listbox.ts +20 -20
  607. package/src/web/components/internal/RowDisabled.ts +9 -0
  608. package/src/web/components/internal/RowsSize.ts +3 -5
  609. package/src/web/components/internal/TabBar.ts +52 -0
  610. package/src/web/components/internal/Text.ts +39 -0
  611. package/src/web/components/visuals/Passkey.svg +21 -0
  612. package/src/web/index.ts +18 -6
  613. package/src/web/logos/Base.svg +10 -0
  614. package/src/web/logos/Ethereum.svg +16 -0
  615. package/src/web/logos/HyperEVM.svg +27 -0
  616. package/src/web/logos/Polygon.svg +15 -0
  617. package/src/web/logos/README.md +14 -0
  618. package/src/web/logos/Solana.svg +11 -0
  619. package/src/web/logos/Tempo.svg +11 -0
  620. package/src/web/vars.ts +493 -534
  621. package/src/web/zyzz.config.ts +255 -12
  622. package/dist/fonts/GeistMono-Variable.woff2 +0 -0
  623. package/dist/web/components/AlertDialog.css +0 -1
  624. package/dist/web/components/Callout.css +0 -1
  625. package/dist/web/components/Callout.d.ts +0 -161
  626. package/dist/web/components/Callout.d.ts.map +0 -1
  627. package/dist/web/components/Callout.js +0 -83
  628. package/dist/web/components/Callout.js.map +0 -1
  629. package/dist/web/components/Callout.js.zyzz.json +0 -1
  630. package/dist/web/components/IconChip.css +0 -1
  631. package/dist/web/components/IconChip.d.ts +0 -53
  632. package/dist/web/components/IconChip.d.ts.map +0 -1
  633. package/dist/web/components/IconChip.js +0 -27
  634. package/dist/web/components/IconChip.js.map +0 -1
  635. package/dist/web/components/IconChip.js.zyzz.json +0 -1
  636. package/dist/web/components/Input.css +0 -1
  637. package/dist/web/components/Input.d.ts.map +0 -1
  638. package/dist/web/components/Input.js +0 -118
  639. package/dist/web/components/Input.js.map +0 -1
  640. package/dist/web/components/Input.js.zyzz.json +0 -1
  641. package/dist/web/components/Rows.css +0 -1
  642. package/dist/web/components/Rows.d.ts +0 -484
  643. package/dist/web/components/Rows.d.ts.map +0 -1
  644. package/dist/web/components/Rows.js +0 -171
  645. package/dist/web/components/Rows.js.map +0 -1
  646. package/dist/web/components/Rows.js.zyzz.json +0 -1
  647. package/dist/web/components/Tag.css +0 -1
  648. package/dist/web/components/Tag.d.ts +0 -171
  649. package/dist/web/components/Tag.d.ts.map +0 -1
  650. package/dist/web/components/Tag.js +0 -52
  651. package/dist/web/components/Tag.js.map +0 -1
  652. package/dist/web/components/Tag.js.zyzz.json +0 -1
  653. package/dist/web/components/internal/FieldVariant.d.ts +0 -4
  654. package/dist/web/components/internal/FieldVariant.d.ts.map +0 -1
  655. package/dist/web/components/internal/FieldVariant.js +0 -4
  656. package/dist/web/components/internal/FieldVariant.js.map +0 -1
  657. package/src/fonts/GeistMono-Variable.woff2 +0 -0
  658. package/src/web/components/Callout.tsx +0 -241
  659. package/src/web/components/IconChip.tsx +0 -54
  660. package/src/web/components/Rows.tsx +0 -588
  661. package/src/web/components/Tag.tsx +0 -149
  662. package/src/web/components/internal/FieldVariant.ts +0 -6
@@ -0,0 +1,330 @@
1
+ import { type ComponentPropsWithRef, type ReactNode, useId } from 'react'
2
+ import type * as zyzz from 'zyzz'
3
+ import { variants } from '../zyzz.config.js'
4
+
5
+ // The Agent Logo marks from the TDPS page of Web-Wallet, with each clip and gradient ID suffixed
6
+ // per instance. A brand tile fills with the agent's color and draws its white mark in
7
+ // `currentColor`. An outlined tile draws the mark in its own colors, or in `currentColor` for a
8
+ // black mark.
9
+ const agents = {
10
+ amp: {
11
+ frame: 'outlined',
12
+ mark: (id) => (
13
+ <>
14
+ <g clipPath={`url(#clip0_670_2873-${id})`}>
15
+ <path
16
+ d="M9.42887 14.4874L7.51824 14.9999L6.20762 10.1105L2.62137 13.6968L1.21449 12.2899L4.78824 8.71554L-0.0673828 7.41429L0.445117 5.50366L7.50387 7.42866L9.42887 14.4874Z"
17
+ fill="#F34E3F"
18
+ />
19
+ <path
20
+ d="M12.1909 11.7262L10.2803 12.2387L8.67781 6.25556L2.69531 4.65306L3.20719 2.74243L10.2666 4.66681L12.1916 11.7262H12.1909Z"
21
+ fill="#F34E3F"
22
+ />
23
+ <path
24
+ d="M14.9331 8.98375L13.0225 9.49625L11.4194 3.51375L5.4375 1.91062L5.95 0L13.0094 1.925L14.9331 8.98375Z"
25
+ fill="#F34E3F"
26
+ />
27
+ </g>
28
+ <defs>
29
+ <clipPath id={`clip0_670_2873-${id}`}>
30
+ <rect fill="white" height="15" width="15" />
31
+ </clipPath>
32
+ </defs>
33
+ </>
34
+ ),
35
+ viewBox: '0 0 15 15',
36
+ },
37
+ claude: {
38
+ frame: 'brand',
39
+ mark: () => (
40
+ <path
41
+ d="M3.45602 8.92288L5.75096 7.6361L5.78936 7.52395L5.75096 7.46197H5.63872L5.25476 7.43836L3.94336 7.40294L2.80623 7.35572L1.70455 7.29669L1.42691 7.23767L1.16699 6.89531L1.19357 6.72413L1.42691 6.56771L1.76066 6.59722L2.49906 6.6474L3.60665 6.72413L4.41003 6.77135L5.60033 6.89531H5.78936L5.81594 6.81857L5.75096 6.77135L5.70075 6.72413L4.55476 5.94793L3.31425 5.12745L2.66446 4.65524L2.31298 4.41618L2.13577 4.19188L2.05898 3.70195L2.37796 3.35074L2.80623 3.38026L2.91552 3.40977L3.34969 3.74327L4.27712 4.46045L5.48809 5.35176L5.6653 5.49932L5.73619 5.44915L5.74505 5.41373L5.6653 5.28092L5.00665 4.09153L4.3037 2.88148L3.99062 2.37975L3.90792 2.07871C3.87838 1.95476 3.85771 1.85146 3.85771 1.72455L4.221 1.23168L4.42184 1.16675L4.90623 1.23168L5.11003 1.40876L5.4113 2.09642L5.89864 3.17957L6.65476 4.65229L6.87628 5.08909L6.99442 5.49342L7.03872 5.61738H7.11552V5.54654L7.17754 4.71722L7.29273 3.699L7.40497 2.3886L7.44336 2.01969L7.62649 1.57699L7.98978 1.33793L8.27332 1.47369L8.50666 1.80719L8.47417 2.02264L8.33535 2.9228L8.06362 4.33354L7.8864 5.27797H7.98978L8.10792 5.15992L8.5864 4.52538L9.38978 3.52192L9.74421 3.12349L10.1577 2.68374L10.4235 2.47419H10.9256L11.2948 3.02314L11.1294 3.5898L10.6126 4.245L10.1843 4.79985L9.56995 5.62623L9.18598 6.28733L9.22142 6.34046L9.31298 6.3316L10.7012 6.03647L11.4514 5.90071L12.3463 5.74724L12.751 5.93612L12.7953 6.12796L12.6358 6.52049L11.6788 6.7566L10.5564 6.9809L8.88471 7.37638L8.86404 7.39113L8.88767 7.42065L9.64083 7.49148L9.96277 7.50919H10.7514L12.2193 7.61839L12.6033 7.8722L12.8337 8.1821L12.7953 8.4182L12.2045 8.71924L11.4071 8.53035L9.54632 8.08765L8.90834 7.92828H8.81974V7.9814L9.35138 8.50084L10.3261 9.38034L11.5459 10.5137L11.6079 10.794L11.4514 11.0154L11.286 10.9918L10.2138 10.1861L9.80033 9.82304L8.86404 9.03503H8.80201V9.11767L9.01763 9.43347L10.1577 11.1452L10.2168 11.6706L10.1341 11.8418L9.83872 11.9451L9.51383 11.886L8.84632 10.9505L8.15813 9.89683L7.60286 8.9524L7.53493 8.99076L7.20708 12.5176L7.05349 12.6977L6.69906 12.8334L6.4037 12.6091L6.24716 12.2461L6.4037 11.5289L6.59273 10.5933L6.74632 9.84961L6.88514 8.92584L6.96784 8.6189L6.96193 8.59824L6.894 8.60709L6.19695 9.56333L5.13661 10.9947L4.29779 11.8919L4.09695 11.9716L3.74843 11.7916L3.78092 11.4699L3.97585 11.1836L5.13661 9.70794L5.83661 8.79302L6.28851 8.26473L6.28556 8.188H6.25898L3.17543 10.189L2.62606 10.2598L2.38978 10.0385L2.41931 9.67548L2.53155 9.55742L3.45898 8.91993L3.45602 8.92288Z"
42
+ fill="currentColor"
43
+ />
44
+ ),
45
+ viewBox: '0 0 14 14',
46
+ },
47
+ cli: {
48
+ frame: 'brand',
49
+ mark: () => (
50
+ <>
51
+ <path
52
+ d="M2.1875 2.77083C2.1875 2.44867 2.44867 2.1875 2.77083 2.1875H11.2292C11.5513 2.1875 11.8125 2.44867 11.8125 2.77083V11.2292C11.8125 11.5513 11.5513 11.8125 11.2292 11.8125H2.77083C2.44867 11.8125 2.1875 11.5513 2.1875 11.2292V2.77083Z"
53
+ stroke="currentColor"
54
+ strokeLinecap="round"
55
+ strokeLinejoin="round"
56
+ strokeWidth="0.875"
57
+ />
58
+ <path
59
+ d="M4.22949 4.52075L5.25033 5.54159L4.22949 6.56242"
60
+ stroke="currentColor"
61
+ strokeLinecap="round"
62
+ strokeLinejoin="round"
63
+ strokeWidth="0.875"
64
+ />
65
+ </>
66
+ ),
67
+ viewBox: '0 0 14 14',
68
+ },
69
+ codex: {
70
+ frame: 'codex',
71
+ mark: (id) => (
72
+ <>
73
+ <path
74
+ d="M7.17552 2.64735C7.74755 2.412 8.3703 2.32697 8.98448 2.40035C9.77615 2.49139 10.4815 2.82785 11.1006 3.40973C11.1085 3.41764 11.1196 3.42319 11.1299 3.42635C11.1411 3.4291 11.1528 3.4291 11.1639 3.42635C11.9688 3.21851 12.8207 3.29542 13.5754 3.64406L13.6126 3.66148L13.7044 3.7066C14.4943 4.10696 15.1104 4.78249 15.4366 5.60581C15.602 6.00956 15.6844 6.42994 15.6859 6.86852C15.6978 7.1947 15.6621 7.52087 15.5799 7.83673C15.5758 7.85267 15.5759 7.86939 15.58 7.88531C15.5842 7.90123 15.5923 7.91584 15.6036 7.92777C16.0739 8.40831 16.3858 8.98069 16.5401 9.64569C16.7689 10.7738 16.5346 11.7911 15.8379 12.6968L15.7303 12.8282C15.2689 13.3563 14.6633 13.7383 13.9878 13.927C13.9732 13.9313 13.9597 13.939 13.9486 13.9495C13.9374 13.9599 13.9289 13.9728 13.9237 13.9872C13.7725 14.4234 13.6205 14.7971 13.3379 15.1699C12.6254 16.1096 11.5788 16.6314 10.4 16.625C9.46027 16.6203 8.62744 16.2767 7.90069 15.5943C7.88975 15.584 7.87629 15.5769 7.86169 15.5735C7.84709 15.5702 7.83186 15.5708 7.81756 15.5753C7.5104 15.6742 7.20006 15.6885 6.8644 15.6845C6.32976 15.6802 5.80314 15.5541 5.3246 15.3156C4.82334 15.0672 4.38692 14.7053 4.05002 14.2587C3.92969 14.0988 3.81015 13.9484 3.72227 13.7703C3.60231 13.5258 3.50428 13.2712 3.42935 13.0095C3.27118 12.4138 3.26737 11.7877 3.41827 11.1902C3.42323 11.176 3.42486 11.1608 3.42302 11.1459C3.42031 11.1312 3.41279 11.1178 3.40165 11.1079C3.03595 10.7377 2.75644 10.2914 2.58306 9.80085C2.46776 9.49866 2.4007 9.18021 2.38435 8.85719C2.35559 8.43173 2.39325 8.00439 2.49598 7.59052C2.76277 6.71019 3.2734 6.01906 4.02627 5.51794C4.1941 5.40631 4.35323 5.31923 4.50206 5.25669C4.67227 5.18623 4.84248 5.12685 5.01348 5.07698C5.0257 5.07319 5.03679 5.06643 5.04577 5.05732C5.05475 5.0482 5.06133 5.037 5.06494 5.02473C5.19478 4.55847 5.41807 4.12348 5.72123 3.74619C6.10339 3.2609 6.6043 2.88243 7.17552 2.64735ZM9.9321 11.0113C9.80345 11.0185 9.68244 11.0747 9.59391 11.1684C9.50539 11.262 9.45606 11.386 9.45606 11.5148C9.45606 11.6437 9.50539 11.7676 9.59391 11.8613C9.68244 11.9549 9.80345 12.0111 9.9321 12.0183H12.8106C12.8791 12.0222 12.9477 12.012 13.0121 11.9884C13.0765 11.9648 13.1355 11.9284 13.1853 11.8812C13.2352 11.8341 13.2749 11.7773 13.302 11.7143C13.3291 11.6513 13.3431 11.5834 13.3431 11.5148C13.3431 11.4462 13.3291 11.3783 13.302 11.3153C13.2749 11.2523 13.2352 11.1955 13.1853 11.1484C13.1355 11.1012 13.0765 11.0648 13.0121 11.0412C12.9477 11.0176 12.8791 11.0075 12.8106 11.0113H9.9321ZM6.69894 7.3071C6.63043 7.19552 6.5212 7.11495 6.39436 7.08245C6.26752 7.04995 6.13301 7.06806 6.01928 7.13294C5.90555 7.19783 5.82152 7.30441 5.78495 7.43014C5.74839 7.55586 5.76216 7.69089 5.82335 7.80664L6.83035 9.56731L5.8281 11.2583C5.79437 11.3152 5.77217 11.3782 5.76279 11.4437C5.7534 11.5092 5.75701 11.5759 5.7734 11.64C5.7898 11.7041 5.81865 11.7644 5.85833 11.8173C5.89801 11.8703 5.94773 11.9149 6.00465 11.9486C6.06157 11.9824 6.12457 12.0046 6.19007 12.014C6.25557 12.0233 6.32227 12.0197 6.38637 12.0033C6.45048 11.987 6.51073 11.9581 6.56368 11.9184C6.61663 11.8787 6.66124 11.829 6.69498 11.7721L7.84606 9.82856C7.89145 9.75199 7.91572 9.66476 7.91642 9.57576C7.91711 9.48676 7.8942 9.39916 7.85002 9.32189L6.69894 7.3071Z"
75
+ fill={`url(#paint0_linear_670_2842-${id})`}
76
+ />
77
+ <defs>
78
+ <linearGradient
79
+ gradientUnits="userSpaceOnUse"
80
+ id={`paint0_linear_670_2842-${id}`}
81
+ x1="9.49985"
82
+ x2="9.49985"
83
+ y1="2.37502"
84
+ y2="16.625"
85
+ >
86
+ <stop stopColor="#B1A7FF" />
87
+ <stop offset="0.5" stopColor="#7A9DFF" />
88
+ <stop offset="1" stopColor="#3941FF" />
89
+ </linearGradient>
90
+ </defs>
91
+ </>
92
+ ),
93
+ viewBox: '0 0 19 19',
94
+ },
95
+ cursor: {
96
+ frame: 'brand',
97
+ mark: () => (
98
+ <path
99
+ d="M12.16 3.77448L7.25599 0.943203C7.09852 0.852266 6.90421 0.852266 6.74674 0.943203L1.84301 3.77448C1.71064 3.85091 1.62891 3.99225 1.62891 4.14536V9.85465C1.62891 10.0075 1.71064 10.1491 1.84301 10.2255L6.74697 13.0568C6.90445 13.1477 7.09876 13.1477 7.25623 13.0568L12.1602 10.2255C12.2926 10.1491 12.3743 10.0077 12.3743 9.85465V4.14536C12.3743 3.99249 12.2926 3.85091 12.1602 3.77448H12.16ZM11.8519 4.3742L7.11786 12.5738C7.08586 12.6291 7.00138 12.6065 7.00138 12.5425V7.17347C7.00138 7.06619 6.94404 6.96695 6.85103 6.91308L2.20147 4.2287C2.14622 4.19671 2.16878 4.1122 2.23278 4.1122H11.7009C11.8354 4.1122 11.9194 4.25794 11.8521 4.37444H11.8519V4.3742Z"
100
+ fill="currentColor"
101
+ />
102
+ ),
103
+ viewBox: '0 0 14 14',
104
+ },
105
+ gemini: {
106
+ frame: 'outlined',
107
+ mark: (id) => {
108
+ const d =
109
+ 'M12.8851 6.77177C11.8469 6.32977 10.9028 5.6931 10.1039 4.89614C8.99131 3.78135 8.19757 2.38895 7.80514 0.863643C7.78792 0.795897 7.74861 0.735822 7.69343 0.692913C7.63825 0.650005 7.57035 0.626709 7.50045 0.626709C7.43055 0.626709 7.36264 0.650005 7.30746 0.692913C7.25228 0.735822 7.21298 0.795897 7.19576 0.863643C6.80249 2.38876 6.00862 3.78099 4.89639 4.89614C4.09741 5.69301 3.15335 6.32966 2.11514 6.77177C1.70889 6.94677 1.29139 7.08739 0.863886 7.19552C0.795725 7.21227 0.735148 7.25138 0.691842 7.30662C0.648535 7.36186 0.625 7.43002 0.625 7.50021C0.625 7.57039 0.648535 7.63856 0.691842 7.69379C0.735148 7.74903 0.795725 7.78815 0.863886 7.80489C1.29139 7.91239 1.70764 8.05302 2.11514 8.22802C3.15341 8.67002 4.09749 9.30668 4.89639 10.1036C6.00926 11.2186 6.80322 12.6112 7.19576 14.1368C7.21251 14.2049 7.25163 14.2655 7.30686 14.3088C7.3621 14.3521 7.43026 14.3757 7.50045 14.3757C7.57064 14.3757 7.6388 14.3521 7.69403 14.3088C7.74927 14.2655 7.78839 14.2049 7.80514 14.1368C7.91264 13.7086 8.05326 13.2924 8.22826 12.8849C8.67024 11.8466 9.3069 10.9025 10.1039 10.1036C11.2189 8.99102 12.6115 8.19728 14.137 7.80489C14.2048 7.78767 14.2648 7.74837 14.3077 7.69319C14.3506 7.63801 14.3739 7.5701 14.3739 7.50021C14.3739 7.43031 14.3506 7.3624 14.3077 7.30722C14.2648 7.25204 14.2048 7.21274 14.137 7.19552C13.7091 7.08786 13.2905 6.94616 12.8851 6.77177Z'
110
+
111
+ return (
112
+ <>
113
+ <path d={d} fill="#3186FF" />
114
+ <path d={d} fill={`url(#paint0_linear_670_2851-${id})`} />
115
+ <path d={d} fill={`url(#paint1_linear_670_2851-${id})`} />
116
+ <path d={d} fill={`url(#paint2_linear_670_2851-${id})`} />
117
+ <defs>
118
+ <linearGradient
119
+ gradientUnits="userSpaceOnUse"
120
+ id={`paint0_linear_670_2851-${id}`}
121
+ x1="4.37514"
122
+ x2="6.87514"
123
+ y1="9.68739"
124
+ y2="7.49989"
125
+ >
126
+ <stop stopColor="#08B962" />
127
+ <stop offset="1" stopColor="#08B962" stopOpacity="0" />
128
+ </linearGradient>
129
+ <linearGradient
130
+ gradientUnits="userSpaceOnUse"
131
+ id={`paint1_linear_670_2851-${id}`}
132
+ x1="5.00014"
133
+ x2="7.18764"
134
+ y1="3.43739"
135
+ y2="6.87489"
136
+ >
137
+ <stop stopColor="#F94543" />
138
+ <stop offset="1" stopColor="#F94543" stopOpacity="0" />
139
+ </linearGradient>
140
+ <linearGradient
141
+ gradientUnits="userSpaceOnUse"
142
+ id={`paint2_linear_670_2851-${id}`}
143
+ x1="2.18764"
144
+ x2="10.9376"
145
+ y1="8.43739"
146
+ y2="7.49989"
147
+ >
148
+ <stop stopColor="#FABC12" />
149
+ <stop offset="0.46" stopColor="#FABC12" stopOpacity="0" />
150
+ </linearGradient>
151
+ </defs>
152
+ </>
153
+ )
154
+ },
155
+ viewBox: '0 0 15 15',
156
+ },
157
+ muse: {
158
+ frame: 'brand',
159
+ mark: () => (
160
+ <path
161
+ clipRule="evenodd"
162
+ d="M12.3962 7.00008C8.64905 7.00008 7.00033 8.64881 7.00033 12.3959C7.00033 8.64881 5.3516 7.00008 1.60449 7.00008C5.3516 7.00008 7.00033 5.35135 7.00033 1.60425C7.00033 5.35135 8.64905 7.00008 12.3962 7.00008Z"
163
+ fillRule="evenodd"
164
+ stroke="currentColor"
165
+ strokeLinejoin="round"
166
+ strokeWidth="0.875"
167
+ />
168
+ ),
169
+ viewBox: '0 0 14 14',
170
+ },
171
+ opencode: {
172
+ frame: 'outlined',
173
+ // Figma draws the mark black, which would vanish on the dark elevated tile.
174
+ mark: () => (
175
+ <path
176
+ clipRule="evenodd"
177
+ d="M10 3.75H5V11.25H10V3.75ZM12.5 13.75H2.5V1.25H12.5V13.75Z"
178
+ fill="currentColor"
179
+ fillRule="evenodd"
180
+ />
181
+ ),
182
+ viewBox: '0 0 15 15',
183
+ },
184
+ } satisfies Record<
185
+ string,
186
+ { frame: 'brand' | 'codex' | 'outlined'; mark: (id: string) => ReactNode; viewBox: string }
187
+ >
188
+
189
+ /**
190
+ * The logo of an AI agent that works with a wallet, such as Claude or Codex: its mark on a 24 or
191
+ * 28px rounded tile, rendered as a `span`. It is hidden from assistive technology unless it has an
192
+ * `aria-label` or `aria-labelledby`.
193
+ *
194
+ * - Show the agent's name beside the logo, since many people know agents by name alone.
195
+ * - Use the 24px size in rows and the 28px size where the agent leads a section.
196
+ * - Use `Avatar` for a person and `TokenLogo` for a token.
197
+ *
198
+ * @example
199
+ * <AgentLogo agent="claude" />
200
+ * <AgentLogo agent="codex" aria-label="Codex" size="28" />
201
+ *
202
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/img_role | MDN img role}
203
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html | WCAG 2.2 Non-text Content}
204
+ */
205
+ export function AgentLogo(props: AgentLogo.Props) {
206
+ const { agent, className, size, vars, ...attributes } = props
207
+ const id = useId()
208
+ const labelled = props['aria-label'] || props['aria-labelledby']
209
+ const entry = agents[agent]
210
+
211
+ return (
212
+ <span
213
+ aria-hidden={labelled ? undefined : true}
214
+ role={labelled ? 'img' : undefined}
215
+ {...attributes}
216
+ data-agent={agent}
217
+ {...styles.tile({ className, frame: entry.frame, size, style: props.style, vars })}
218
+ >
219
+ <svg
220
+ aria-hidden="true"
221
+ fill="none"
222
+ viewBox={entry.viewBox}
223
+ xmlns="http://www.w3.org/2000/svg"
224
+ {...styles.mark({ frame: entry.frame, size })}
225
+ >
226
+ {entry.mark(id)}
227
+ </svg>
228
+ </span>
229
+ )
230
+ }
231
+
232
+ export namespace AgentLogo {
233
+ export type Props = Omit<ComponentPropsWithRef<'span'>, 'children'> &
234
+ Omit<zyzz.Props.Variants<typeof styles.tile>, 'frame'> & {
235
+ /** Agent whose logo renders. */
236
+ agent: keyof typeof agents
237
+ }
238
+ }
239
+
240
+ namespace styles {
241
+ // The tiles stay concentric with their marks: a 6px corner at 24px and a 7px corner at 28px, which
242
+ // no radius token sets.
243
+ export const tile = variants(
244
+ {
245
+ base: {
246
+ alignItems: 'center',
247
+ boxSizing: 'border-box',
248
+ display: 'inline-flex',
249
+ flexShrink: '0 !custom',
250
+ justifyContent: 'center',
251
+ verticalAlign: 'middle',
252
+ },
253
+ defaultVariants: { frame: 'brand', size: '24' },
254
+ variants: {
255
+ frame: {
256
+ brand: {
257
+ color: 'neutral.000',
258
+ selectors: {
259
+ '&[data-agent="claude"]': { backgroundColor: '#d97757 !custom' },
260
+ '&[data-agent="cli"]': { backgroundColor: '#0a0a0a !custom' },
261
+ '&[data-agent="cursor"]': { backgroundColor: '#1f1f1f !custom' },
262
+ '&[data-agent="muse"]': { backgroundColor: '#7c5cff !custom' },
263
+ },
264
+ },
265
+ codex: {
266
+ backgroundColor: 'background.elevated',
267
+ border: '1px solid !custom',
268
+ borderColor: 'line.secondary',
269
+ color: 'content.primary',
270
+ },
271
+ outlined: {
272
+ backgroundColor: 'background.elevated',
273
+ border: '1px solid !custom',
274
+ borderColor: 'line.secondary',
275
+ color: 'content.primary',
276
+ },
277
+ },
278
+ size: {
279
+ '24': {
280
+ borderRadius: 'calc(0.375rem * var(--tds-corner-scale, 1)) !custom',
281
+ height: '24',
282
+ width: '24',
283
+ },
284
+ '28': {
285
+ borderRadius: 'calc(0.4375rem * var(--tds-corner-scale, 1)) !custom',
286
+ height: '28',
287
+ width: '28',
288
+ },
289
+ },
290
+ },
291
+ },
292
+ { id: 'tds/web/agent-logo' },
293
+ )
294
+
295
+ // Brand marks fill 14 or 16px, the Codex mark 19 or 22px, and the other outlined marks 15 or 17px.
296
+ export const mark = variants(
297
+ {
298
+ base: { display: 'block', flexShrink: '0 !custom' },
299
+ compoundVariants: [
300
+ {
301
+ when: { frame: 'brand', size: '24' },
302
+ style: { height: '14px !custom', width: '14px !custom' },
303
+ },
304
+ { when: { frame: 'brand', size: '28' }, style: { height: '16', width: '16' } },
305
+ {
306
+ when: { frame: 'codex', size: '24' },
307
+ style: { height: '19px !custom', width: '19px !custom' },
308
+ },
309
+ {
310
+ when: { frame: 'codex', size: '28' },
311
+ style: { height: '22px !custom', width: '22px !custom' },
312
+ },
313
+ {
314
+ when: { frame: 'outlined', size: '24' },
315
+ style: { height: '15px !custom', width: '15px !custom' },
316
+ },
317
+ {
318
+ when: { frame: 'outlined', size: '28' },
319
+ style: { height: '17px !custom', width: '17px !custom' },
320
+ },
321
+ ],
322
+ defaultVariants: { frame: 'brand', size: '24' },
323
+ variants: {
324
+ frame: { brand: {}, codex: {}, outlined: {} },
325
+ size: { '24': {}, '28': {} },
326
+ },
327
+ },
328
+ { id: 'tds/web/agent-logo/mark' },
329
+ )
330
+ }
@@ -0,0 +1,321 @@
1
+ import * as BaseUi from '@base-ui/react/button'
2
+ import type { ComponentPropsWithRef } from 'react'
3
+ import type * as zyzz from 'zyzz'
4
+ import { style, variants } from '../zyzz.config.js'
5
+
6
+ /**
7
+ * An inline message on a tinted container, marked by an indicator in the color of its `intent`.
8
+ * The `negative` and `warning` intents render `role="alert"` and interrupt screen readers. The
9
+ * rest render `role="status"` and announce politely. Pass `role` to override either.
10
+ *
11
+ * - Use for guidance tied to nearby content. Use `Banner` for system or page-wide messages.
12
+ * - Keep the message short, with one `Alert.Action` at most, placed inside `Alert.Content`.
13
+ * - State the outcome in the text, so the meaning never depends on color alone.
14
+ *
15
+ * @example
16
+ * <Alert intent="warning">
17
+ * <Alert.Icon />
18
+ * <Alert.Content>
19
+ * <Alert.Title>New address</Alert.Title>
20
+ * Check the first and last 4 characters.
21
+ * <Alert.Action onClick={review}>Review</Alert.Action>
22
+ * </Alert.Content>
23
+ * <Alert.Dismiss onClick={() => setOpen(false)} />
24
+ * </Alert>
25
+ *
26
+ * @see {@link https://base-ui.com/react/components/button | Base UI Button}
27
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/status_role | MDN status role}
28
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/alert_role | MDN alert role}
29
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html | WCAG 2.2 Status Messages}
30
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/use-of-color.html | WCAG 2.2 Use of Color}
31
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html | WCAG 2.2 Contrast (Minimum)}
32
+ */
33
+ export function Alert(props: Alert.Props) {
34
+ const { className, intent, vars, ...attributes } = props
35
+
36
+ return (
37
+ <div
38
+ // Urgent intents interrupt assistive technology, the rest announce politely.
39
+ role={intent === 'negative' || intent === 'warning' ? 'alert' : 'status'}
40
+ {...attributes}
41
+ {...styles.note({ className, intent, style: props.style, vars })}
42
+ />
43
+ )
44
+ }
45
+
46
+ export namespace Alert {
47
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.note>
48
+
49
+ /**
50
+ * A text `<button>` with a 44px tall target, in the alert's strong type. Place it inside
51
+ * `Alert.Content`, after the message, or at the end of the row, where its label sits in line
52
+ * with the first line. Name the action it performs, such as Review fees.
53
+ */
54
+ export function Action(props: Action.Props) {
55
+ const { className, vars, ...attributes } = props
56
+
57
+ return (
58
+ <BaseUi.Button
59
+ {...attributes}
60
+ data-alert-action=""
61
+ {...styles.action({ className, style: props.style, vars })}
62
+ />
63
+ )
64
+ }
65
+
66
+ export namespace Action {
67
+ export type Props = ComponentPropsWithRef<'button'> &
68
+ zyzz.Props.Variants<typeof styles.action> &
69
+ Pick<BaseUi.Button.Props, 'nativeButton' | 'render'>
70
+ }
71
+
72
+ /**
73
+ * Stacks the title, message, and action in a `<div>` that fills the row and can shrink, so long
74
+ * text wraps beside the indicator. The message flows as text. When it sits beside a paragraph or
75
+ * a list, wrap it in a `p`, so the blocks keep their 4px gap.
76
+ */
77
+ export function Content(props: Content.Props) {
78
+ const { className, vars, ...attributes } = props
79
+
80
+ return <div {...attributes} {...styles.content({ className, style: props.style, vars })} />
81
+ }
82
+
83
+ export namespace Content {
84
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.content>
85
+ }
86
+
87
+ /**
88
+ * A 44px icon button at the end of the row. Without children it shows a `×` glyph labelled
89
+ * `Dismiss`. It only renders the button, so remove the alert in its `onClick`.
90
+ */
91
+ export function Dismiss(props: Dismiss.Props) {
92
+ const { children, className, vars, ...attributes } = props
93
+
94
+ return (
95
+ <BaseUi.Button
96
+ aria-label="Dismiss"
97
+ {...attributes}
98
+ {...styles.dismiss({ className, style: props.style, vars })}
99
+ >
100
+ {children ?? <span aria-hidden="true">×</span>}
101
+ </BaseUi.Button>
102
+ )
103
+ }
104
+
105
+ export namespace Dismiss {
106
+ export type Props = ComponentPropsWithRef<'button'> &
107
+ zyzz.Props.Variants<typeof styles.dismiss> &
108
+ Pick<BaseUi.Button.Props, 'nativeButton' | 'render'>
109
+ }
110
+
111
+ /**
112
+ * Renders an 8px square in the color of the alert's `intent`, inside an `aria-hidden` `<span>`
113
+ * as tall as the first line. The indicator stays decorative, so the text must carry the meaning.
114
+ */
115
+ export function Icon(props: Icon.Props) {
116
+ const { className, vars, ...attributes } = props
117
+
118
+ return (
119
+ <span
120
+ aria-hidden="true"
121
+ {...attributes}
122
+ data-alert-icon=""
123
+ {...styles.icon({ className, style: props.style, vars })}
124
+ >
125
+ <span {...styles.indicator()} />
126
+ </span>
127
+ )
128
+ }
129
+
130
+ export namespace Icon {
131
+ export type Props = Omit<ComponentPropsWithRef<'span'>, 'children'> &
132
+ zyzz.Props.Variants<typeof styles.icon>
133
+ }
134
+
135
+ /** Renders the heading of the message in a `<div>`, in the strong weight of the alert's type. */
136
+ export function Title(props: Title.Props) {
137
+ return <div {...props} data-alert-title="" />
138
+ }
139
+
140
+ export namespace Title {
141
+ export type Props = ComponentPropsWithRef<'div'>
142
+ }
143
+ }
144
+
145
+ namespace styles {
146
+ export const action = style(
147
+ {
148
+ alignItems: 'center',
149
+ alignSelf: 'flex-start',
150
+ backgroundColor: 'transparent !custom',
151
+ border: 'none !custom',
152
+ borderRadius: '3xs',
153
+ color: 'content.primary',
154
+ cursor: 'pointer',
155
+ display: 'inline-flex',
156
+ flexShrink: '0 !custom',
157
+ height: '44',
158
+ outlineColor: 'transparent !custom',
159
+ outlineOffset: '0',
160
+ outlineStyle: 'solid !custom',
161
+ outlineWidth: '2',
162
+ padding: '0',
163
+ transitionDuration: '160',
164
+ transitionProperty: 'opacity, outline-color, outline-offset, scale',
165
+ transitionTimingFunction: 'snappy',
166
+ whiteSpace: 'nowrap',
167
+ selectors: {
168
+ '&:active:not([data-disabled])': { scale: 'press' },
169
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
170
+ '&:hover:not([data-disabled])': { opacity: 'hover' },
171
+ '&[data-disabled]': { cursor: 'default', opacity: 'disabled' },
172
+ },
173
+ '@media (prefers-reduced-motion: reduce)': {
174
+ transitionProperty: 'opacity, outline-color',
175
+ selectors: { '&:active:not([data-disabled])': { scale: 'none !custom' } },
176
+ },
177
+ },
178
+ { id: 'tds/web/alert/action' },
179
+ )
180
+
181
+ // The message flows as text, so inline elements such as `strong` stay on its lines. The title,
182
+ // the action and block children each take a line of their own, 4px from the content beside
183
+ // them.
184
+ export const content = style(
185
+ {
186
+ display: 'block',
187
+ flex: '1 !custom',
188
+ minWidth: '0',
189
+ selectors: {
190
+ '& > [data-alert-action]': {
191
+ display: 'flex',
192
+ marginBlockStart: '4',
193
+ width: 'fit-content !custom',
194
+ },
195
+ '& > [data-alert-title]': { marginBlockEnd: '4' },
196
+ // The browser's block margins of paragraphs and lists give way to the 4px gap. `:where`
197
+ // keeps the reset below any class that sets a margin of its own.
198
+ '& > :where(p, ul, ol)': { marginBlock: '0' },
199
+ // A list sits 4px below the message, and a paragraph 4px below the element before it. A
200
+ // list follows text in practice, which CSS cannot select, so it always takes the gap.
201
+ '& > :is(ul, ol), & > * + :is(p, div)': { marginBlockStart: '4' },
202
+ },
203
+ },
204
+ { id: 'tds/web/alert/content' },
205
+ )
206
+
207
+ export const dismiss = style(
208
+ {
209
+ alignItems: 'center',
210
+ backgroundColor: 'transparent !custom',
211
+ border: 'none !custom',
212
+ borderRadius: 'full',
213
+ color: 'content.secondary',
214
+ cornerShape: 'round',
215
+ cursor: 'pointer',
216
+ display: 'inline-flex',
217
+ flexShrink: '0 !custom',
218
+ height: '44',
219
+ justifyContent: 'center',
220
+ outlineColor: 'transparent !custom',
221
+ outlineOffset: '-2',
222
+ outlineStyle: 'solid !custom',
223
+ outlineWidth: '2',
224
+ padding: '0',
225
+ transitionDuration: '160',
226
+ transitionProperty: 'background-color, color, outline-color, scale',
227
+ transitionTimingFunction: 'snappy',
228
+ typography: 'body.b2Strong',
229
+ width: '44',
230
+ selectors: {
231
+ '&:active:not([data-disabled])': { scale: 'press' },
232
+ '&:focus-visible': { outlineColor: 'border.focus' },
233
+ '&:hover:not([data-disabled])': {
234
+ backgroundColor: 'container.regular',
235
+ color: 'content.primary',
236
+ },
237
+ '&[data-disabled]': { cursor: 'default', opacity: 'disabled' },
238
+ },
239
+ '@media (prefers-reduced-motion: reduce)': {
240
+ transitionProperty: 'background-color, color, outline-color',
241
+ selectors: { '&:active:not([data-disabled])': { scale: 'none !custom' } },
242
+ },
243
+ },
244
+ { id: 'tds/web/alert/dismiss' },
245
+ )
246
+
247
+ export const icon = style(
248
+ {
249
+ alignItems: 'center',
250
+ display: 'inline-flex',
251
+ flexShrink: '0 !custom',
252
+ justifyContent: 'center',
253
+ },
254
+ { id: 'tds/web/alert/icon' },
255
+ )
256
+
257
+ export const indicator = style(
258
+ {
259
+ backgroundColor: 'currentColor !custom',
260
+ // Platform has no 2px radius step, so the literal takes the squircle scale of the steps.
261
+ borderRadius: 'calc(0.125rem * var(--tds-corner-scale, 1)) !custom',
262
+ height: '8',
263
+ width: '8',
264
+ },
265
+ { id: 'tds/web/alert/indicator' },
266
+ )
267
+
268
+ export const note = variants(
269
+ {
270
+ base: {
271
+ alignItems: 'flex-start',
272
+ borderRadius: 'xs',
273
+ boxSizing: 'border-box',
274
+ color: 'content.primary',
275
+ columnGap: '12',
276
+ display: 'flex',
277
+ padding: '16',
278
+ typography: 'body.b3',
279
+ selectors: {
280
+ // An action at the end of the row centers its 44px target on the 16px first line, so its
281
+ // label stays in line with the message.
282
+ '& > [data-alert-action]': { marginBlock: 'calc((1rem - 2.75rem) / 2) !custom' },
283
+ '& [data-alert-action], & [data-alert-title]': { typography: 'body.b3Strong' },
284
+ '& [data-alert-icon]': { height: '16', width: '16' },
285
+ },
286
+ },
287
+ defaultVariants: { intent: 'neutral' },
288
+ variants: {
289
+ // Text stays primary on every tint, and the indicator takes the intent color. Platform has no
290
+ // blue or violet container, so `tip` and `special` take the 8% and 16% accent alphas.
291
+ intent: {
292
+ negative: {
293
+ backgroundColor: 'container.negative',
294
+ selectors: { '& [data-alert-icon]': { color: 'content.negative' } },
295
+ },
296
+ neutral: {
297
+ backgroundColor: 'container.regular',
298
+ selectors: { '& [data-alert-icon]': { color: 'content.subtle' } },
299
+ },
300
+ positive: {
301
+ backgroundColor: 'container.positive',
302
+ selectors: { '& [data-alert-icon]': { color: 'content.positive' } },
303
+ },
304
+ special: {
305
+ backgroundColor: 'light-dark(rgb(126 89 228 / 0.08), rgb(152 119 241 / 0.16)) !custom',
306
+ selectors: { '& [data-alert-icon]': { color: 'accent.violet.background' } },
307
+ },
308
+ tip: {
309
+ backgroundColor: 'light-dark(rgb(68 113 237 / 0.08), rgb(116 152 251 / 0.16)) !custom',
310
+ selectors: { '& [data-alert-icon]': { color: 'accent.blue.background' } },
311
+ },
312
+ warning: {
313
+ backgroundColor: 'container.warning',
314
+ selectors: { '& [data-alert-icon]': { color: 'content.warning' } },
315
+ },
316
+ },
317
+ },
318
+ },
319
+ { id: 'tds/web/alert' },
320
+ )
321
+ }