@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
@@ -150,17 +150,18 @@ namespace styles {
150
150
  export const action = style(
151
151
  {
152
152
  alignItems: 'center',
153
- backgroundColor: 'grayAlpha.100',
153
+ backgroundColor: 'container.regular',
154
154
  border: 'none !custom',
155
155
  borderRadius: 'full',
156
- color: 'foreground',
156
+ color: 'content.primary',
157
+ cornerShape: 'round',
157
158
  cursor: 'pointer',
158
159
  display: 'inline-flex',
159
160
  flexShrink: '0 !custom',
160
161
  height: '32',
161
162
  paddingInline: '12',
162
163
  // Weight overrides the typography token, so it stays after it.
163
- typography: 'button.12',
164
+ typography: 'body.b3Strong',
164
165
  outlineColor: 'transparent !custom',
165
166
  outlineOffset: '0',
166
167
  outlineStyle: 'solid !custom',
@@ -170,11 +171,11 @@ namespace styles {
170
171
  transitionTimingFunction: 'snappy',
171
172
  selectors: {
172
173
  '&:active': {
173
- backgroundColor: 'grayAlpha.300',
174
+ backgroundColor: 'line.primary',
174
175
  scale: 'press',
175
176
  },
176
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
177
- '&:hover': { backgroundColor: 'grayAlpha.200' },
177
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
178
+ '&:hover': { backgroundColor: 'container.strong' },
178
179
  },
179
180
  '@media (prefers-reduced-motion: reduce)': {
180
181
  transitionProperty: 'background-color, outline-color',
@@ -201,7 +202,8 @@ namespace styles {
201
202
  backgroundColor: 'transparent !custom',
202
203
  border: 'none !custom',
203
204
  borderRadius: 'full',
204
- color: 'gray.700',
205
+ color: 'content.tertiary',
206
+ cornerShape: 'round',
205
207
  cursor: 'pointer',
206
208
  display: 'inline-flex',
207
209
  flexShrink: '0 !custom',
@@ -219,8 +221,8 @@ namespace styles {
219
221
  transitionTimingFunction: 'snappy',
220
222
  selectors: {
221
223
  '&:active': { scale: 'press' },
222
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
223
- '&:hover': { backgroundColor: 'grayAlpha.100' },
224
+ '&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
225
+ '&:hover': { backgroundColor: 'container.regular' },
224
226
  },
225
227
  '@media (prefers-reduced-motion: reduce)': {
226
228
  transitionProperty: 'background-color, outline-color',
@@ -252,7 +254,7 @@ namespace styles {
252
254
  )
253
255
 
254
256
  export const description = style(
255
- { color: 'gray.900', margin: '0', typography: 'copy.14' },
257
+ { color: 'content.secondary', margin: '0', typography: 'body.b2' },
256
258
  { id: 'tds/web/toast/description' },
257
259
  )
258
260
 
@@ -261,11 +263,11 @@ namespace styles {
261
263
  base: { display: 'inline-flex', flexShrink: '0 !custom', fontSize: '20' },
262
264
  variants: {
263
265
  intent: {
264
- info: { color: 'blue.700' },
265
- negative: { color: 'red.800' },
266
+ info: { color: 'accent.blue.background' },
267
+ negative: { color: 'content.negative' },
266
268
  neutral: {},
267
- positive: { color: 'green.700' },
268
- warning: { color: 'amber.700' },
269
+ positive: { color: 'content.positive' },
270
+ warning: { color: 'content.warning' },
269
271
  },
270
272
  },
271
273
  },
@@ -274,11 +276,11 @@ namespace styles {
274
276
 
275
277
  export const root = style(
276
278
  {
277
- backgroundColor: 'background.surface',
278
- borderRadius: '16',
279
- boxShadow: 'popover',
279
+ backgroundColor: 'background.elevated',
280
+ borderRadius: 'sm',
281
+ boxShadow: 'regular',
280
282
  boxSizing: 'border-box',
281
- color: 'foreground',
283
+ color: 'content.primary',
282
284
  height: 'var(--toast-frontmost-height, var(--toast-height)) !custom',
283
285
  insetInline: '0',
284
286
  insetBlockEnd: '0',
@@ -295,7 +297,7 @@ namespace styles {
295
297
  selectors: {
296
298
  '&::after': {
297
299
  content: '"" !custom',
298
- height: '14',
300
+ height: '16',
299
301
  insetBlockStart: '100% !custom',
300
302
  insetInline: '0',
301
303
  position: 'absolute',
@@ -332,7 +334,7 @@ namespace styles {
332
334
  )
333
335
 
334
336
  export const title = style(
335
- { color: 'foreground', margin: '0', typography: 'copy.14.strong' },
337
+ { color: 'content.primary', margin: '0', typography: 'body.b2Strong' },
336
338
  { id: 'tds/web/toast/title' },
337
339
  )
338
340
 
@@ -341,13 +343,13 @@ namespace styles {
341
343
  insetBlockEnd: '16',
342
344
  insetInline: '16',
343
345
  margin: 'auto !custom',
344
- maxWidth: '384',
346
+ maxWidth: '360',
345
347
  position: 'fixed',
346
348
  zIndex: 'toast',
347
349
  '@media (min-width: 40rem)': {
348
350
  insetInlineStart: 'auto !custom',
349
351
  margin: '0',
350
- width: '384',
352
+ width: '360',
351
353
  },
352
354
  },
353
355
  { id: 'tds/web/toast/viewport' },
@@ -1,197 +1,131 @@
1
- import type { ComponentPropsWithRef, ReactNode } from 'react'
2
- import { createContext, use, useEffect, useState } from 'react'
1
+ import * as BaseUi from '@base-ui/react/button'
2
+ import type { ComponentPropsWithRef } from 'react'
3
3
  import type * as zyzz from 'zyzz'
4
- import { variants } from '../zyzz.config.js'
5
-
6
- const blank = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='
7
- const defaultChainId = 4217
8
- const service = 'https://tokenlist.tempo.xyz'
9
-
10
- const TokenContext = createContext<{
11
- /** In-flight symbol lookups, shared by the tokens under one `Token.Provider`. */
12
- addresses?: Map<string, Promise<string | undefined>> | undefined
13
- chainId: number
14
- resolveAddress: Token.ResolveAddress
15
- resolveSrc: Token.ResolveSrc
16
- }>({ chainId: defaultChainId, resolveAddress: asset, resolveSrc: url })
17
-
18
- async function asset(options: Token.ResolveAddress.Options) {
19
- const response = await fetch(`${service}/asset/${options.chainId}/${options.symbol}`)
20
- if (!response.ok) return undefined
21
- return ((await response.json()) as { address?: string | undefined }).address
22
- }
23
-
24
- function url(options: Token.ResolveSrc.Options) {
25
- return `${service}/icon/${options.chainId}/${options.address.toLowerCase()}`
26
- }
4
+ import { ChevronDown } from '../icons/ChevronDown.js'
5
+ import { style } from '../zyzz.config.js'
6
+ import { TokenLogo } from './TokenLogo.js'
27
7
 
28
8
  /**
29
- * A token icon rendered as an `img`, found by contract `address` or by `symbol`. A symbol resolves
30
- * to its address first, through the Tempo token list service unless `Token.Provider` overrides
31
- * it. Pass `src` to skip resolution. A gray circle shows while loading and after a failure.
9
+ * A pill with a token's logo and symbol. By default it renders a native `<button>`, built on Base
10
+ * UI Button, with a chevron that marks it as the trigger of a token picker. Set `readOnly` to
11
+ * render a `<span>` without the chevron, for reviews and receipts.
32
12
  *
33
- * - `alt` is empty unless set, which suits an icon beside the token name. Pass the name as `alt`
34
- * when the icon stands alone.
35
- * - Wrap lists in `Token.Provider` so tokens with the same symbol share one lookup.
36
- * - Prefer `address` when you have it, since a symbol lookup adds a request before the image.
13
+ * - The symbol is the visible label and the button's accessible name. The logo is decorative.
14
+ * - Pass the pill to a trigger's `render`, such as
15
+ * `<Dialog.Trigger render={<Token symbol="pathUSD" />} />`.
16
+ * - Pass `address` when you have it, so the logo loads without a symbol lookup.
17
+ * - The logo resolves through the nearest `TokenLogo.Provider`.
37
18
  *
38
19
  * @example
39
- * <Token symbol="pathUSD" />
40
- * <Token address={address} alt="pathUSD" size="large" />
20
+ * <Token address={address} onClick={openPicker} symbol="pathUSD" />
21
+ * <Token readOnly symbol="USDC" />
41
22
  *
42
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img | MDN img element}
43
- * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html | WCAG 2.2 Non-text Content}
23
+ * @see {@link https://base-ui.com/react/components/button | Base UI Button}
24
+ * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/button/ | WAI-ARIA APG Button pattern}
25
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html | WCAG 2.2 Name, Role, Value}
44
26
  */
45
27
  export function Token(props: Token.Props) {
46
- const { address, chainId, className, ref, size, src, symbol, vars, ...attributes } = props
47
- const inherited = use(TokenContext)
48
- const chain = chainId ?? inherited.chainId
49
- const key = symbol && !src && !address ? `${chain}/${symbol.toLowerCase()}` : undefined
50
- const [lookup, setLookup] = useState<{ address: string | undefined; key: string }>()
51
- const resolved = address ?? (lookup?.key === key ? lookup?.address : undefined)
52
- const source =
53
- src ?? (resolved ? inherited.resolveSrc({ address: resolved, chainId: chain, symbol }) : '')
54
- const [loaded, setLoaded] = useState<{ status: 'error' | 'loaded'; url: string } | undefined>()
55
- const status = (() => {
56
- if (source) return loaded?.url === source ? loaded.status : 'loading'
57
- return key && lookup?.key !== key ? 'loading' : 'error'
58
- })()
59
-
60
- useEffect(() => {
61
- if (!key || !symbol) return
62
-
63
- let active = true
64
- const pending =
65
- inherited.addresses?.get(key) ??
66
- inherited.resolveAddress({ chainId: chain, symbol }).catch(() => undefined)
67
- inherited.addresses?.set(key, pending)
68
-
69
- pending.then((next) => active && setLookup({ address: next, key }))
28
+ const { address, chainId, className, readOnly, src, symbol, vars, ...attributes } = props
29
+ const logo = address ? (
30
+ <TokenLogo address={address} chainId={chainId} size="medium" src={src} />
31
+ ) : (
32
+ <TokenLogo chainId={chainId} size="medium" src={src} symbol={symbol} />
33
+ )
70
34
 
71
- return () => {
72
- active = false
73
- }
74
- }, [chain, inherited, key, symbol])
35
+ if (readOnly)
36
+ return (
37
+ <span {...attributes} {...styles.token({ className, style: props.style, vars })}>
38
+ {logo}
39
+ {symbol}
40
+ </span>
41
+ )
75
42
 
76
43
  return (
77
- <img
78
- alt=""
79
- draggable={false}
80
- {...attributes}
81
- {...styles.token({ className, size, style: props.style, vars })}
82
- data-status={status}
83
- onError={(event) => {
84
- props.onError?.(event)
85
- if (source) setLoaded({ status: 'error', url: source })
86
- }}
87
- onLoad={(event) => {
88
- if (status === 'error' || !source) return
89
-
90
- props.onLoad?.(event)
91
- setLoaded({ status: 'loaded', url: source })
92
- }}
93
- ref={(node) => {
94
- if (typeof ref === 'function') ref(node)
95
- else if (ref) ref.current = node
96
-
97
- // A cached image can finish before hydration attaches the load handlers.
98
- if (source && node?.complete && loaded?.url !== source)
99
- setLoaded({ status: node.naturalWidth > 0 ? 'loaded' : 'error', url: source })
100
- }}
101
- // A blank image hides the browser's broken-image glyph while loading a symbol or after a failure.
102
- src={status === 'error' || !source ? blank : source}
103
- />
44
+ <BaseUi.Button {...attributes} {...styles.token({ className, style: props.style, vars })}>
45
+ {logo}
46
+ {symbol}
47
+ <ChevronDown />
48
+ </BaseUi.Button>
104
49
  )
105
50
  }
106
51
 
107
52
  export namespace Token {
108
- export type Props = Omit<ComponentPropsWithRef<'img'>, 'height' | 'width'> &
109
- zyzz.Props.Variants<typeof styles.token> & {
110
- /**
111
- * Chain to resolve on. Falls back to the nearest `Token.Provider`, then Tempo mainnet.
112
- * @default 4217
113
- */
114
- chainId?: number | undefined
115
- } & (
116
- | {
117
- /** Token contract address. */
118
- address: string
119
- symbol?: undefined
120
- }
121
- | {
122
- address?: undefined
123
- /** Token symbol, such as `pathUSD`. Matched case-insensitively. */
124
- symbol: string
125
- }
126
- )
127
-
128
- /** Finds the contract address for a symbol. Defaults to the Tempo token list service. */
129
- export type ResolveAddress = (options: ResolveAddress.Options) => Promise<string | undefined>
130
-
131
- export namespace ResolveAddress {
132
- export type Options = { chainId: number; symbol: string }
133
- }
134
-
135
- /** Builds the icon URL for a token. Defaults to the Tempo token list service. */
136
- export type ResolveSrc = (options: ResolveSrc.Options) => string
137
-
138
- export namespace ResolveSrc {
139
- export type Options = { address: string; chainId: number; symbol?: string | undefined }
140
- }
141
-
142
- /**
143
- * Sets the default `chainId` and icon sources for nested tokens. Tokens under one provider share
144
- * a single lookup per symbol.
145
- */
146
- export function Provider(props: Provider.Props) {
147
- const [addresses] = useState(() => new Map<string, Promise<string | undefined>>())
148
-
149
- return (
150
- <TokenContext
151
- value={{
152
- addresses,
153
- chainId: props.chainId ?? defaultChainId,
154
- resolveAddress: props.resolveAddress ?? asset,
155
- resolveSrc: props.resolveSrc ?? url,
156
- }}
157
- >
158
- {props.children}
159
- </TokenContext>
53
+ export type Props = zyzz.Props.Variants<typeof styles.token> & {
54
+ /** Token contract address, which loads the logo directly. Without it, `symbol` resolves the logo. */
55
+ address?: string | undefined
56
+ /**
57
+ * Chain to resolve the logo on. Falls back to the nearest `TokenLogo.Provider`, then Tempo mainnet.
58
+ * @default 4217
59
+ */
60
+ chainId?: number | undefined
61
+ /** Logo URL, which skips resolution. */
62
+ src?: string | undefined
63
+ /** Token symbol, such as `pathUSD`, shown as the label. */
64
+ symbol: string
65
+ } & (
66
+ | (Omit<ComponentPropsWithRef<'button'>, 'children'> & {
67
+ /**
68
+ * Renders a read-only `span` without the chevron, for reviews and receipts.
69
+ * @default false
70
+ */
71
+ readOnly?: false | undefined
72
+ })
73
+ | (Omit<ComponentPropsWithRef<'span'>, 'children'> & {
74
+ /** Renders a read-only `span` without the chevron, for reviews and receipts. */
75
+ readOnly: true
76
+ })
160
77
  )
161
- }
162
-
163
- export namespace Provider {
164
- export type Props = {
165
- /**
166
- * Chain for nested tokens without their own `chainId`.
167
- * @default 4217
168
- */
169
- chainId?: number | undefined
170
- children?: ReactNode | undefined
171
- resolveAddress?: ResolveAddress | undefined
172
- resolveSrc?: ResolveSrc | undefined
173
- }
174
- }
175
78
  }
176
79
 
177
80
  namespace styles {
178
- export const token = variants(
81
+ // Figma's Token pill: 36px tall, 8px leading and 12px trailing padding around a 20px logo.
82
+ export const token = style(
179
83
  {
180
- base: {
181
- backgroundColor: 'grayAlpha.200',
182
- borderRadius: 'full',
183
- display: 'inline-block',
184
- flexShrink: '0 !custom',
185
- objectFit: 'cover',
186
- verticalAlign: 'middle',
187
- selectors: { '&[data-status="loaded"]': { backgroundColor: 'transparent !custom' } },
84
+ alignItems: 'center',
85
+ backgroundColor: 'background.elevated',
86
+ borderColor: 'line.primary',
87
+ borderRadius: 'full',
88
+ borderStyle: 'solid',
89
+ borderWidth: 'regular',
90
+ boxSizing: 'border-box',
91
+ color: 'content.primary',
92
+ columnGap: '8',
93
+ cornerShape: 'round',
94
+ display: 'inline-flex',
95
+ flexShrink: '0 !custom',
96
+ height: '36',
97
+ paddingBlock: '0',
98
+ paddingInlineEnd: '12',
99
+ paddingInlineStart: '8',
100
+ typography: 'body.b2Strong',
101
+ verticalAlign: 'middle',
102
+ whiteSpace: 'nowrap',
103
+ selectors: {
104
+ '& > svg': { color: 'content.tertiary', flexShrink: '0 !custom', fontSize: '16' },
105
+ '&:is(button)': {
106
+ cursor: 'pointer',
107
+ outlineColor: 'transparent !custom',
108
+ outlineOffset: '2',
109
+ outlineStyle: 'solid !custom',
110
+ outlineWidth: '2',
111
+ transitionDuration: '160',
112
+ transitionProperty: 'opacity, outline-color, scale',
113
+ transitionTimingFunction: 'snappy',
114
+ userSelect: 'none',
115
+ },
116
+ '&:is(button):active:not(:disabled)': { scale: 'press', transitionDuration: '100' },
117
+ '&:is(button):disabled': { cursor: 'default', opacity: 'disabled' },
118
+ '&:is(button):focus-visible': { outlineColor: 'border.focus' },
119
+ '&:is(button):hover:not(:disabled)': { opacity: 'hover' },
120
+ },
121
+ '@media (forced-colors: active)': {
122
+ outlineStyle: 'none !custom',
123
+ selectors: { '&:is(button):focus-visible': { outlineStyle: 'solid !custom' } },
188
124
  },
189
- defaultVariants: { size: 'medium' },
190
- variants: {
191
- size: {
192
- large: { height: '32', width: '32' },
193
- medium: { height: '24', width: '24' },
194
- small: { height: '16', width: '16' },
125
+ '@media (prefers-reduced-motion: reduce)': {
126
+ selectors: {
127
+ '&:is(button)': { transitionProperty: 'opacity, outline-color' },
128
+ '&:is(button):active:not(:disabled)': { scale: 'none !custom' },
195
129
  },
196
130
  },
197
131
  },
@@ -0,0 +1,217 @@
1
+ import type { ComponentPropsWithRef, ReactNode } from 'react'
2
+ import { createContext, use, useEffect, useState } from 'react'
3
+ import type * as zyzz from 'zyzz'
4
+ import { variants } from '../zyzz.config.js'
5
+
6
+ const blank = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='
7
+ const defaultChainId = 4217
8
+ const service = 'https://tokenlist.tempo.xyz'
9
+
10
+ const TokenContext = createContext<{
11
+ /** In-flight symbol lookups, shared by the tokens under one `TokenLogo.Provider`. */
12
+ addresses?: Map<string, Promise<string | undefined>> | undefined
13
+ chainId: number
14
+ resolveAddress: TokenLogo.ResolveAddress
15
+ resolveSrc: TokenLogo.ResolveSrc
16
+ }>({ chainId: defaultChainId, resolveAddress: asset, resolveSrc: url })
17
+
18
+ async function asset(options: TokenLogo.ResolveAddress.Options) {
19
+ const response = await fetch(`${service}/asset/${options.chainId}/${options.symbol}`)
20
+ if (!response.ok) return undefined
21
+ return ((await response.json()) as { address?: string | undefined }).address
22
+ }
23
+
24
+ function url(options: TokenLogo.ResolveSrc.Options) {
25
+ return `${service}/icon/${options.chainId}/${options.address.toLowerCase()}`
26
+ }
27
+
28
+ /**
29
+ * A token icon rendered as an `img`, found by contract `address` or by `symbol`. A symbol resolves
30
+ * to its address first, through the Tempo token list service unless `TokenLogo.Provider` overrides
31
+ * it. Pass `src` to skip resolution. A gray circle shows while loading and after a failure.
32
+ *
33
+ * - `alt` is empty unless set, which suits an icon beside the token name. Pass the name as `alt`
34
+ * when the icon stands alone.
35
+ * - Wrap lists in `TokenLogo.Provider` so tokens with the same symbol share one lookup.
36
+ * - Prefer `address` when you have it, since a symbol lookup adds a request before the image.
37
+ * - Use `small` (16px) inline beside an amount, `medium` (20px) in a `Token` pill, and `large`
38
+ * (32px) in list rows. Use `Token` for a token label or picker trigger.
39
+ *
40
+ * @example
41
+ * <TokenLogo symbol="pathUSD" />
42
+ * <TokenLogo address={address} alt="pathUSD" size="large" />
43
+ *
44
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/img | MDN img element}
45
+ * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html | WCAG 2.2 Non-text Content}
46
+ */
47
+ export function TokenLogo(props: TokenLogo.Props) {
48
+ const { address, chainId, className, ref, size, src, symbol, vars, ...attributes } = props
49
+ const inherited = use(TokenContext)
50
+ const chain = chainId ?? inherited.chainId
51
+ const key = symbol && !src && !address ? `${chain}/${symbol.toLowerCase()}` : undefined
52
+ const [lookup, setLookup] = useState<{ address: string | undefined; key: string }>()
53
+ const resolved = address ?? (lookup?.key === key ? lookup?.address : undefined)
54
+ const source =
55
+ src ?? (resolved ? inherited.resolveSrc({ address: resolved, chainId: chain, symbol }) : '')
56
+ const [loaded, setLoaded] = useState<{ status: 'error' | 'loaded'; url: string } | undefined>()
57
+ const status = (() => {
58
+ if (source) return loaded?.url === source ? loaded.status : 'loading'
59
+ return key && lookup?.key !== key ? 'loading' : 'error'
60
+ })()
61
+
62
+ useEffect(() => {
63
+ if (!key || !symbol) return
64
+
65
+ let active = true
66
+ const pending =
67
+ inherited.addresses?.get(key) ??
68
+ inherited.resolveAddress({ chainId: chain, symbol }).catch(() => undefined)
69
+ inherited.addresses?.set(key, pending)
70
+
71
+ pending.then((next) => {
72
+ // A failed or unknown lookup leaves the cache, so a token that mounts later requests it again.
73
+ if (next === undefined && inherited.addresses?.get(key) === pending)
74
+ inherited.addresses.delete(key)
75
+
76
+ if (active) setLookup({ address: next, key })
77
+ })
78
+
79
+ return () => {
80
+ active = false
81
+ }
82
+ // The lookup follows the chain and symbol, not the context object or the resolver, which a
83
+ // provider can recreate on every render. Otherwise each render requests a failed lookup again.
84
+ }, [chain, inherited.addresses, key, symbol])
85
+
86
+ return (
87
+ <img
88
+ alt=""
89
+ draggable={false}
90
+ {...attributes}
91
+ {...styles.token({ className, size, style: props.style, vars })}
92
+ data-status={status}
93
+ onError={(event) => {
94
+ props.onError?.(event)
95
+ if (source) setLoaded({ status: 'error', url: source })
96
+ }}
97
+ onLoad={(event) => {
98
+ if (status === 'error' || !source) return
99
+
100
+ props.onLoad?.(event)
101
+ setLoaded({ status: 'loaded', url: source })
102
+ }}
103
+ ref={(node) => {
104
+ if (typeof ref === 'function') ref(node)
105
+ else if (ref) ref.current = node
106
+
107
+ // A cached image can finish before hydration attaches the load handlers.
108
+ if (source && node?.complete && loaded?.url !== source)
109
+ setLoaded({ status: node.naturalWidth > 0 ? 'loaded' : 'error', url: source })
110
+ }}
111
+ // A blank image hides the browser's broken-image glyph while loading a symbol or after a failure.
112
+ src={status === 'error' || !source ? blank : source}
113
+ />
114
+ )
115
+ }
116
+
117
+ export namespace TokenLogo {
118
+ export type Props = Omit<ComponentPropsWithRef<'img'>, 'height' | 'width'> &
119
+ zyzz.Props.Variants<typeof styles.token> & {
120
+ /**
121
+ * Chain to resolve on. Falls back to the nearest `TokenLogo.Provider`, then Tempo mainnet.
122
+ * @default 4217
123
+ */
124
+ chainId?: number | undefined
125
+ } & (
126
+ | {
127
+ /** Token contract address. */
128
+ address: string
129
+ symbol?: undefined
130
+ }
131
+ | {
132
+ address?: undefined
133
+ /** Token symbol, such as `pathUSD`. Matched case-insensitively. */
134
+ symbol: string
135
+ }
136
+ | {
137
+ address?: undefined
138
+ /** Icon URL, which skips the address and symbol lookups. */
139
+ src: string
140
+ symbol?: undefined
141
+ }
142
+ )
143
+
144
+ /** Finds the contract address for a symbol. Defaults to the Tempo token list service. */
145
+ export type ResolveAddress = (options: ResolveAddress.Options) => Promise<string | undefined>
146
+
147
+ export namespace ResolveAddress {
148
+ export type Options = { chainId: number; symbol: string }
149
+ }
150
+
151
+ /** Builds the icon URL for a token. Defaults to the Tempo token list service. */
152
+ export type ResolveSrc = (options: ResolveSrc.Options) => string
153
+
154
+ export namespace ResolveSrc {
155
+ export type Options = { address: string; chainId: number; symbol?: string | undefined }
156
+ }
157
+
158
+ /**
159
+ * Sets the default `chainId` and icon sources for nested tokens. Tokens under one provider share
160
+ * a single lookup per symbol.
161
+ */
162
+ export function Provider(props: Provider.Props) {
163
+ const [addresses] = useState(() => new Map<string, Promise<string | undefined>>())
164
+
165
+ return (
166
+ <TokenContext
167
+ value={{
168
+ addresses,
169
+ chainId: props.chainId ?? defaultChainId,
170
+ resolveAddress: props.resolveAddress ?? asset,
171
+ resolveSrc: props.resolveSrc ?? url,
172
+ }}
173
+ >
174
+ {props.children}
175
+ </TokenContext>
176
+ )
177
+ }
178
+
179
+ export namespace Provider {
180
+ export type Props = {
181
+ /**
182
+ * Chain for nested tokens without their own `chainId`.
183
+ * @default 4217
184
+ */
185
+ chainId?: number | undefined
186
+ children?: ReactNode | undefined
187
+ resolveAddress?: ResolveAddress | undefined
188
+ resolveSrc?: ResolveSrc | undefined
189
+ }
190
+ }
191
+ }
192
+
193
+ namespace styles {
194
+ export const token = variants(
195
+ {
196
+ base: {
197
+ backgroundColor: 'container.strong',
198
+ borderRadius: 'full',
199
+ cornerShape: 'round',
200
+ display: 'inline-block',
201
+ flexShrink: '0 !custom',
202
+ objectFit: 'cover',
203
+ verticalAlign: 'middle',
204
+ selectors: { '&[data-status="loaded"]': { backgroundColor: 'transparent !custom' } },
205
+ },
206
+ defaultVariants: { size: 'medium' },
207
+ variants: {
208
+ size: {
209
+ large: { height: '32', width: '32' },
210
+ medium: { height: '20', width: '20' },
211
+ small: { height: '16', width: '16' },
212
+ },
213
+ },
214
+ },
215
+ { id: 'tds/web/token-logo' },
216
+ )
217
+ }