@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
@@ -3,16 +3,21 @@ import { useRender } from '@base-ui/react/use-render'
3
3
  import {
4
4
  type ComponentPropsWithRef,
5
5
  createContext,
6
+ type ReactNode,
6
7
  use,
7
8
  useId,
8
9
  useLayoutEffect,
9
10
  useState,
10
11
  } from 'react'
11
12
  import type * as zyzz from 'zyzz'
13
+ import { ChevronDown } from '../icons/ChevronDown.js'
12
14
  import { ChevronRight } from '../icons/ChevronRight.js'
13
15
  import { style, variants } from '../zyzz.config.js'
16
+ import * as TabBar from './internal/TabBar.js'
17
+ import * as Text from './internal/Text.js'
14
18
 
15
- type GroupContext = { id: string; setLabelled: (labelled: boolean) => void }
19
+ // A group names itself after the ID of the label inside it, which a caller can set.
20
+ type GroupContext = { id: string; setLabel: (id: string | undefined) => void }
16
21
 
17
22
  const groupContext = createContext<GroupContext | undefined>(undefined)
18
23
 
@@ -43,6 +48,86 @@ const groupContext = createContext<GroupContext | undefined>(undefined)
43
48
  * @see {@link https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html | WCAG 2.2 Name, Role, Value}
44
49
  */
45
50
  export namespace SidebarMenu {
51
+ /**
52
+ * Holds the `AccountRow` at the bottom of a sidebar, under a 1px divider across its full width.
53
+ * Put it last in `AppShell.SidebarFooter`, after the menu of support links, such as Help.
54
+ *
55
+ * @example
56
+ * <SidebarMenu.Account>
57
+ * <Menu.Root>
58
+ * <Menu.Trigger render={<SidebarMenu.AccountRow description="ada@tempo.xyz" label="Ada" />}>
59
+ * <Avatar size="32">
60
+ * <Avatar.Fallback>AL</Avatar.Fallback>
61
+ * </Avatar>
62
+ * </Menu.Trigger>
63
+ * </Menu.Root>
64
+ * </SidebarMenu.Account>
65
+ */
66
+ export function Account(props: Account.Props) {
67
+ const { className, vars, ...attributes } = props
68
+
69
+ return <div {...attributes} {...styles.account({ className, style: props.style, vars })} />
70
+ }
71
+
72
+ export namespace Account {
73
+ export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.account>
74
+ }
75
+
76
+ /**
77
+ * Renders the 44px account `<button>` at the bottom of a sidebar: `children`, such as a 32px
78
+ * `Avatar`, then `label` over `description`. A row that opens a popup, through `aria-haspopup`,
79
+ * ends in a chevron. The children are hidden from assistive technology, so `label` names the
80
+ * account. Pass the row to `Menu.Trigger` through `render` to open the account menu, which sets
81
+ * `aria-haspopup` and fills the row while it is open. Keyboard focus draws a 2px ring inside the
82
+ * row and moves its content 2px inward.
83
+ *
84
+ * @example
85
+ * <Menu.Root>
86
+ * <Menu.Trigger render={<SidebarMenu.AccountRow description="ada@tempo.xyz" label="Ada" />}>
87
+ * <Avatar size="32">
88
+ * <Avatar.Fallback>AL</Avatar.Fallback>
89
+ * </Avatar>
90
+ * </Menu.Trigger>
91
+ * </Menu.Root>
92
+ */
93
+ export function AccountRow(props: AccountRow.Props) {
94
+ const { children, className, description, label, vars, ...attributes } = props
95
+ const popup = Boolean(attributes['aria-haspopup']) && attributes['aria-haspopup'] !== 'false'
96
+
97
+ return (
98
+ <button
99
+ type="button"
100
+ {...attributes}
101
+ {...styles.accountRow({ className, style: props.style, vars })}
102
+ >
103
+ {children !== undefined && children !== null && (
104
+ <span aria-hidden="true" {...styles.accountMedia()}>
105
+ {children}
106
+ </span>
107
+ )}
108
+ <span {...styles.accountText()}>
109
+ <span {...styles.accountLabel()}>{label}</span>
110
+ {description !== undefined && description !== null && (
111
+ <span {...styles.accountDescription()}>{description}</span>
112
+ )}
113
+ </span>
114
+ {popup && <ChevronDown {...styles.accountChevron()} />}
115
+ </button>
116
+ )
117
+ }
118
+
119
+ export namespace AccountRow {
120
+ export type Props = Omit<ComponentPropsWithRef<'button'>, 'children'> &
121
+ zyzz.Props.Variants<typeof styles.accountRow> & {
122
+ /** Leading media, such as a 32px `Avatar`. Absent, the text starts at the row's edge. */
123
+ children?: ReactNode | undefined
124
+ /** Second line in the secondary color, such as the email or address of the account. */
125
+ description?: ReactNode | undefined
126
+ /** First line, which names the account, such as the person's name. */
127
+ label: ReactNode
128
+ }
129
+ }
130
+
46
131
  /**
47
132
  * Renders a `group` that names itself after its `GroupLabel` when one renders inside it.
48
133
  * Without a label, pass `aria-label`.
@@ -50,12 +135,12 @@ export namespace SidebarMenu {
50
135
  export function Group(props: Group.Props) {
51
136
  const { className, vars, ...attributes } = props
52
137
  const id = useId()
53
- const [labelled, setLabelled] = useState(false)
138
+ const [label, setLabel] = useState<string | undefined>(undefined)
54
139
 
55
140
  return (
56
- <groupContext.Provider value={{ id, setLabelled }}>
141
+ <groupContext.Provider value={{ id, setLabel }}>
57
142
  <div
58
- aria-labelledby={labelled ? id : undefined}
143
+ aria-labelledby={label}
59
144
  role="group"
60
145
  {...attributes}
61
146
  {...styles.group({ className, style: props.style, vars })}
@@ -70,20 +155,20 @@ export namespace SidebarMenu {
70
155
 
71
156
  /** Visible heading text for the surrounding `Group`, which it names through `aria-labelledby`. */
72
157
  export function GroupLabel(props: GroupLabel.Props) {
73
- const { className, vars, ...attributes } = props
74
158
  const group = use(groupContext)
75
- const setLabelled = group?.setLabelled
159
+ const { className, id = group?.id, vars, ...attributes } = props
160
+ const setLabel = group?.setLabel
76
161
 
77
162
  useLayoutEffect(() => {
78
- if (!setLabelled) return
79
- setLabelled(true)
80
- return () => setLabelled(false)
81
- }, [setLabelled])
163
+ if (!setLabel) return
164
+ setLabel(id)
165
+ return () => setLabel(undefined)
166
+ }, [id, setLabel])
82
167
 
83
168
  return (
84
169
  <div
85
- id={group?.id}
86
170
  {...attributes}
171
+ id={id}
87
172
  {...styles.groupLabel({ className, style: props.style, vars })}
88
173
  />
89
174
  )
@@ -95,16 +180,46 @@ export namespace SidebarMenu {
95
180
 
96
181
  /**
97
182
  * Renders a link by default. Pass `render` to use a router link. `active` marks the current page
98
- * with `aria-current="page"`.
183
+ * with `aria-current="page"`, and sets its label in the strong weight. Keyboard focus draws a
184
+ * 2px ring inside the row and moves its content 2px inward.
185
+ *
186
+ * Inside an `AppShell`, `tabBar` repeats the item in the bottom bar below 768px, with the same
187
+ * `href`, `render` and handlers. In an `AppShell` with `collapse`, the sidebar shows only the
188
+ * first element of each item from 768px to 1023px, such as its icon, and keeps its text as the
189
+ * accessible name.
190
+ *
191
+ * @example
192
+ * <SidebarMenu.Item active href="/" tabBar="tab">
193
+ * <Home />
194
+ * Home
195
+ * </SidebarMenu.Item>
99
196
  */
100
197
  export function Item(props: Item.Props) {
101
- const { active = false, className, ref, render, vars, ...attributes } = props
198
+ const { active = false, className, ref, render, tabBar, vars, ...attributes } = props
199
+ const store = use(TabBar.Context)
200
+ const id = useId()
201
+
202
+ // Registers on every render, so the bottom bar repeats the current props of the item.
203
+ useLayoutEffect(() => {
204
+ if (!store) return
205
+ if (!tabBar) return store.delete(id)
206
+
207
+ const { children, style: _, ...rest } = attributes
208
+ store.set(id, { active, attributes: rest, children, render, variant: tabBar })
209
+ })
210
+
211
+ useLayoutEffect(() => {
212
+ if (!store) return
213
+ return () => store.delete(id)
214
+ }, [id, store])
102
215
 
103
216
  return useRender({
104
217
  defaultTagName: 'a',
105
218
  props: {
106
219
  ...attributes,
107
220
  'aria-current': active ? 'page' : undefined,
221
+ // Text renders in a span, so the collapsed sidebar can hide it as an element.
222
+ children: Text.wrap(attributes.children),
108
223
  ...styles.item({ active, className, style: props.style, vars }),
109
224
  },
110
225
  ref,
@@ -116,12 +231,40 @@ export namespace SidebarMenu {
116
231
  export type Props = Omit<useRender.ComponentProps<'a'>, 'color'> &
117
232
  Omit<zyzz.Props.Variants<typeof styles.item>, 'active'> & {
118
233
  active?: boolean | undefined
234
+ /**
235
+ * Repeats the item in the bottom bar of an `AppShell` below 768px: `tab` as an icon in the
236
+ * tab bar, or `action` as the floating action button beside it. Give the tab bar up to
237
+ * three items and one action. Absent, the item stays in the sidebar drawer only.
238
+ */
239
+ tabBar?: TabBar.Variant | undefined
119
240
  }
120
241
  }
121
242
 
243
+ /**
244
+ * Renders a 36px tile in the primary content color, which centers a logo in the inverse content
245
+ * color, such as `TempoLogo` with `type="mark"`. Pass it to an `AccountRow` that names a
246
+ * product or a wallet, in place of an `Avatar`.
247
+ *
248
+ * @example
249
+ * <SidebarMenu.AccountRow description="0xc721…s9dk" label="Tempo Wallet">
250
+ * <SidebarMenu.Logo>
251
+ * <TempoLogo type="mark" />
252
+ * </SidebarMenu.Logo>
253
+ * </SidebarMenu.AccountRow>
254
+ */
255
+ export function Logo(props: Logo.Props) {
256
+ const { className, vars, ...attributes } = props
257
+
258
+ return <span {...attributes} {...styles.logo({ className, style: props.style, vars })} />
259
+ }
260
+
261
+ export namespace Logo {
262
+ export type Props = ComponentPropsWithRef<'span'> & zyzz.Props.Variants<typeof styles.logo>
263
+ }
264
+
122
265
  /**
123
266
  * Renders the `<nav>` landmark, labelled `Main` unless you pass `aria-label`. Give each
124
- * landmark on a page a distinct label. `size` sets 32, 40 or 56px rows, and `small` also uses
267
+ * landmark on a page a distinct label. `size` sets 32, 36 or 56px rows, and `small` also uses
125
268
  * 16px icons for long menus.
126
269
  */
127
270
  export function Root(props: Root.Props) {
@@ -187,7 +330,8 @@ export namespace SidebarMenu {
187
330
  {...attributes}
188
331
  {...styles.item({ className, style: props.style, vars })}
189
332
  >
190
- {children}
333
+ {/* Text renders in a span, so the collapsed sidebar can hide it as an element. */}
334
+ {Text.wrap(children)}
191
335
  <ChevronRight {...styles.chevron()} />
192
336
  </BaseUi.Collapsible.Trigger>
193
337
  )
@@ -200,9 +344,149 @@ export namespace SidebarMenu {
200
344
  }
201
345
 
202
346
  namespace styles {
347
+ // The 1px divider takes 1px of the 8px above the row, as the design's inside stroke does.
348
+ export const account = variants(
349
+ {
350
+ base: {
351
+ borderTopColor: 'line.secondary',
352
+ borderTopStyle: 'solid',
353
+ borderTopWidth: '1px !custom',
354
+ paddingTop: 'calc(0.5rem - 1px) !custom',
355
+ },
356
+ },
357
+ { id: 'tds/web/sidebar-menu/account' },
358
+ )
359
+
360
+ export const accountChevron = style(
361
+ {
362
+ color: 'content.secondary',
363
+ flexShrink: '0 !custom',
364
+ fontSize: '16',
365
+ transitionDuration: '160',
366
+ transitionProperty: 'color',
367
+ transitionTimingFunction: 'snappy',
368
+ selectors: {
369
+ ':hover > &, [data-popup-open] > &': { color: 'content.primary' },
370
+ },
371
+ '@media (min-width: 768px) and (max-width: 1023px)': {
372
+ selectors: { '[data-app-shell-rail] &': { display: 'none !custom' } },
373
+ },
374
+ },
375
+ { id: 'tds/web/sidebar-menu/account-chevron' },
376
+ )
377
+
378
+ export const accountDescription = style(
379
+ {
380
+ color: 'content.secondary',
381
+ overflow: 'hidden',
382
+ textOverflow: 'ellipsis',
383
+ typography: 'body.b3',
384
+ whiteSpace: 'nowrap',
385
+ },
386
+ { id: 'tds/web/sidebar-menu/account-description' },
387
+ )
388
+
389
+ export const accountLabel = style(
390
+ {
391
+ color: 'content.primary',
392
+ overflow: 'hidden',
393
+ textOverflow: 'ellipsis',
394
+ typography: 'body.b2Strong',
395
+ whiteSpace: 'nowrap',
396
+ },
397
+ { id: 'tds/web/sidebar-menu/account-label' },
398
+ )
399
+
400
+ export const accountMedia = style(
401
+ { display: 'flex', flexShrink: '0 !custom' },
402
+ { id: 'tds/web/sidebar-menu/account-media' },
403
+ )
404
+
405
+ // A 32px avatar and the two lines of text center in the 44px row with 8px at either end.
406
+ export const accountRow = variants(
407
+ {
408
+ base: {
409
+ '@media (min-width: 768px) and (max-width: 1023px)': {
410
+ selectors: {
411
+ '[data-app-shell-rail] &': {
412
+ columnGap: '0',
413
+ justifyContent: 'center',
414
+ paddingInline: '0',
415
+ },
416
+ },
417
+ },
418
+ alignItems: 'center',
419
+ appearance: 'none !custom',
420
+ backgroundColor: 'transparent !custom',
421
+ border: 'none !custom',
422
+ borderRadius: '2xs',
423
+ boxSizing: 'border-box',
424
+ color: 'content.primary',
425
+ columnGap: '12',
426
+ cursor: 'pointer',
427
+ display: 'flex',
428
+ font: 'inherit !custom',
429
+ minHeight: '44',
430
+ minWidth: '0',
431
+ outlineColor: 'transparent !custom',
432
+ outlineOffset: '0',
433
+ outlineStyle: 'solid !custom',
434
+ outlineWidth: '2',
435
+ paddingBlock: '4',
436
+ paddingInline: '8',
437
+ textAlign: 'start',
438
+ transitionDuration: '160',
439
+ transitionProperty: 'background-color, outline-color, outline-offset, scale !custom',
440
+ transitionTimingFunction: 'snappy',
441
+ width: '100% !custom',
442
+ selectors: {
443
+ '&:active:not(:disabled, [data-disabled])': { scale: 'press' },
444
+ // The design lays out the 2px focus stroke inside the row, so the content moves 2px in.
445
+ '&:focus-visible': {
446
+ outlineColor: 'border.focus',
447
+ outlineOffset: '-2',
448
+ paddingInline: '10',
449
+ },
450
+ // Base UI triggers mark the row `data-popup-open` while their menu or popover is open.
451
+ '&:hover:not(:disabled, [data-disabled]), &[data-popup-open]': {
452
+ backgroundColor: 'container.regular',
453
+ },
454
+ '&:is(:disabled, [data-disabled])': { cursor: 'default', opacity: 'disabled' },
455
+ },
456
+ '@media (prefers-reduced-motion: reduce)': {
457
+ transitionProperty: 'background-color, outline-color !custom',
458
+ selectors: { '&:active:not(:disabled, [data-disabled])': { scale: 'none !custom' } },
459
+ },
460
+ },
461
+ },
462
+ { id: 'tds/web/sidebar-menu/account-row' },
463
+ )
464
+
465
+ export const accountText = style(
466
+ {
467
+ display: 'flex',
468
+ flex: '1 !custom',
469
+ flexDirection: 'column',
470
+ minWidth: '0',
471
+ '@media (min-width: 768px) and (max-width: 1023px)': {
472
+ selectors: {
473
+ '[data-app-shell-rail] &': {
474
+ clipPath: 'inset(50%) !custom',
475
+ height: '1px !custom',
476
+ overflow: 'hidden',
477
+ position: 'absolute',
478
+ whiteSpace: 'nowrap',
479
+ width: '1px !custom',
480
+ },
481
+ },
482
+ },
483
+ },
484
+ { id: 'tds/web/sidebar-menu/account-text' },
485
+ )
486
+
203
487
  export const chevron = style(
204
488
  {
205
- color: 'gray.900',
489
+ color: 'content.secondary',
206
490
  marginInlineStart: 'auto !custom',
207
491
  transitionDuration: '240',
208
492
  transitionProperty: 'transform',
@@ -218,18 +502,13 @@ namespace styles {
218
502
  base: {
219
503
  display: 'flex',
220
504
  flexDirection: 'column',
221
- rowGap: '4',
505
+ rowGap: '2',
222
506
  selectors: {
223
- // Groups sit 24px below preceding content, and a divider separates adjacent groups.
224
- '* + &': { marginTop: '20' },
225
- '[data-sidebar-menu-size="small"] &': { rowGap: '2' },
226
- '[data-sidebar-menu-size="small"] * + &': { marginTop: '12' },
227
- '& + &': {
228
- borderTopColor: 'grayAlpha.200',
229
- borderTopStyle: 'solid',
230
- borderTopWidth: '1px !custom',
231
- paddingTop: '16',
232
- },
507
+ // With the row gap of the menu, groups sit 24px below preceding content, or 16px in a
508
+ // small menu.
509
+ '* + &': { marginTop: '1.375rem !custom' },
510
+ '[data-sidebar-menu-size="large"] * + &': { marginTop: '20' },
511
+ '[data-sidebar-menu-size="small"] * + &': { marginTop: '0.875rem !custom' },
233
512
  },
234
513
  },
235
514
  },
@@ -238,12 +517,17 @@ namespace styles {
238
517
 
239
518
  export const groupLabel = variants(
240
519
  {
520
+ // The label lines up with the icons of the items below it.
241
521
  base: {
242
- color: 'foreground',
243
- paddingBlock: '4',
244
- paddingInline: '12',
245
- selectors: { '[data-sidebar-menu-size="small"] &': { paddingInline: '8' } },
246
- typography: 'label.12',
522
+ color: 'content.tertiary',
523
+ paddingBottom: '4',
524
+ paddingInline: '8',
525
+ selectors: { '[data-sidebar-menu-size="large"] &': { paddingInline: '12' } },
526
+ typography: 'body.b3',
527
+ // The collapsed sidebar keeps the label for the name of its group without painting it.
528
+ '@media (min-width: 768px) and (max-width: 1023px)': {
529
+ selectors: { '[data-app-shell-rail] &': { display: 'none !custom' } },
530
+ },
247
531
  },
248
532
  },
249
533
  { id: 'tds/web/sidebar-menu/group-label' },
@@ -256,67 +540,120 @@ namespace styles {
256
540
  appearance: 'none !custom',
257
541
  backgroundColor: 'transparent !custom',
258
542
  border: 'none !custom',
259
- borderRadius: '12',
543
+ borderRadius: '2xs',
260
544
  boxSizing: 'border-box',
261
- color: 'gray.900',
545
+ color: 'content.secondary',
262
546
  columnGap: '12',
263
547
  cursor: 'pointer',
264
548
  display: 'flex',
265
549
  font: 'inherit !custom',
266
- minHeight: '40',
550
+ minHeight: '36',
267
551
  minWidth: '0',
268
552
  outlineColor: 'transparent !custom',
269
553
  outlineOffset: '0',
270
554
  outlineStyle: 'solid !custom',
271
555
  outlineWidth: '2',
272
556
  paddingBlock: '8',
273
- paddingInline: '12',
557
+ paddingInline: '8',
274
558
  textAlign: 'start',
275
559
  textDecoration: 'none !custom',
276
560
  transitionDuration: '160',
277
561
  transitionProperty: 'background-color, color, outline-color, outline-offset, scale !custom',
278
562
  transitionTimingFunction: 'snappy',
279
- typography: 'label.14.strong',
563
+ typography: 'body.b2',
280
564
  width: '100% !custom',
281
565
  whiteSpace: 'nowrap',
282
566
  selectors: {
283
567
  '& > svg': { flexShrink: '0 !custom', fontSize: '20' },
284
- '[data-sidebar-menu-size="large"] &': { minHeight: '56', typography: 'label.16.strong' },
568
+ '[data-sidebar-menu-size="large"] &': {
569
+ borderRadius: 'xs',
570
+ minHeight: '56',
571
+ paddingInline: '12',
572
+ typography: 'body.b1',
573
+ },
285
574
  // Small rows fit long menus: 32px tall with 16px icons.
286
575
  '[data-sidebar-menu-size="small"] &': {
287
- borderRadius: '8',
288
576
  columnGap: '8',
289
577
  minHeight: '32',
290
578
  paddingBlock: '4',
291
- paddingInline: '8',
292
- typography: 'label.14.strong',
293
579
  },
294
580
  '[data-sidebar-menu-size="small"] & > svg': { fontSize: '16' },
295
581
  '&:active': { scale: 'press' },
296
- '&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '-2' },
297
- '&:hover': { backgroundColor: 'grayAlpha.100', color: 'foreground' },
582
+ // The design lays out the 2px focus stroke inside the row, so the content moves 2px in.
583
+ '&:focus-visible': {
584
+ outlineColor: 'border.focus',
585
+ outlineOffset: '-2',
586
+ paddingInline: '10',
587
+ },
588
+ '[data-sidebar-menu-size="large"] &:focus-visible': {
589
+ paddingInline: '0.875rem !custom',
590
+ },
591
+ '&:hover': { backgroundColor: 'container.regular', color: 'content.primary' },
298
592
  },
299
593
  '@media (prefers-reduced-motion: reduce)': {
300
594
  transitionProperty: 'background-color, color, outline-color !custom',
301
595
  selectors: { '&:active': { scale: 'none !custom' } },
302
596
  },
597
+ // The collapsed sidebar centers the first element, such as the icon, in a 40px row. Its
598
+ // other elements and its text stay in the accessible name.
599
+ '@media (min-width: 768px) and (max-width: 1023px)': {
600
+ selectors: {
601
+ '[data-app-shell-rail] &': {
602
+ columnGap: '0',
603
+ justifyContent: 'center',
604
+ paddingInline: '0',
605
+ position: 'relative',
606
+ },
607
+ '[data-app-shell-rail] & > :not(:first-child)': {
608
+ clipPath: 'inset(50%) !custom',
609
+ height: '1px !custom',
610
+ overflow: 'hidden',
611
+ position: 'absolute',
612
+ whiteSpace: 'nowrap',
613
+ width: '1px !custom',
614
+ },
615
+ },
616
+ },
303
617
  },
304
618
  defaultVariants: { active: false },
305
619
  variants: {
306
620
  active: {
307
621
  false: {},
308
- true: { backgroundColor: 'grayAlpha.100', color: 'foreground' },
622
+ true: {
623
+ backgroundColor: 'container.regular',
624
+ color: 'content.primary',
625
+ typography: 'body.b2Strong',
626
+ selectors: { '[data-sidebar-menu-size="large"] &': { typography: 'body.b1Strong' } },
627
+ },
309
628
  },
310
629
  },
311
630
  },
312
631
  { id: 'tds/web/sidebar-menu/item' },
313
632
  )
314
633
 
634
+ export const logo = variants(
635
+ {
636
+ base: {
637
+ alignItems: 'center',
638
+ backgroundColor: 'content.primary',
639
+ borderRadius: '2xs',
640
+ color: 'inverse.content.primary',
641
+ display: 'flex',
642
+ flexShrink: '0 !custom',
643
+ fontSize: '20',
644
+ height: '36',
645
+ justifyContent: 'center',
646
+ width: '36',
647
+ },
648
+ },
649
+ { id: 'tds/web/sidebar-menu/logo' },
650
+ )
651
+
315
652
  export const root = variants(
316
653
  {
317
- base: { display: 'flex', flexDirection: 'column', minWidth: '0', rowGap: '4' },
654
+ base: { display: 'flex', flexDirection: 'column', minWidth: '0', rowGap: '2' },
318
655
  defaultVariants: { size: 'medium' },
319
- variants: { size: { large: {}, medium: {}, small: { rowGap: '2' } } },
656
+ variants: { size: { large: { rowGap: '4' }, medium: {}, small: {} } },
320
657
  },
321
658
  { id: 'tds/web/sidebar-menu' },
322
659
  )
@@ -327,14 +664,14 @@ namespace styles {
327
664
  flexDirection: 'column',
328
665
  // Nested labels line up with the trigger's label: icon width plus the icon gap.
329
666
  paddingInlineStart: '32',
330
- paddingTop: '4',
331
- rowGap: '4',
667
+ paddingTop: '2',
668
+ rowGap: '2',
332
669
  selectors: {
333
- '[data-sidebar-menu-size="small"] &': {
334
- paddingInlineStart: '24',
335
- paddingTop: '2',
336
- rowGap: '2',
337
- },
670
+ '[data-sidebar-menu-size="large"] &': { paddingTop: '4', rowGap: '4' },
671
+ '[data-sidebar-menu-size="small"] &': { paddingInlineStart: '24' },
672
+ },
673
+ '@media (min-width: 768px) and (max-width: 1023px)': {
674
+ selectors: { '[data-app-shell-rail] &': { paddingInlineStart: '0' } },
338
675
  },
339
676
  },
340
677
  { id: 'tds/web/sidebar-menu/submenu-content' },
@@ -51,15 +51,15 @@ namespace styles {
51
51
  defaultVariants: { shape: 'default', show: true },
52
52
  variants: {
53
53
  shape: {
54
- circle: { borderRadius: 'full' },
55
- default: { borderRadius: '8' },
56
- pill: { borderRadius: 'full' },
54
+ circle: { borderRadius: 'full', cornerShape: 'round' },
55
+ default: { borderRadius: '2xs' },
56
+ pill: { borderRadius: 'full', cornerShape: 'round' },
57
57
  },
58
58
  show: {
59
59
  false: {},
60
60
  true: {
61
- backgroundColor: 'grayAlpha.100',
62
- color: 'foreground',
61
+ backgroundColor: 'container.regular',
62
+ color: 'content.primary',
63
63
  overflow: 'hidden',
64
64
  pointerEvents: 'none',
65
65
  userSelect: 'none',
@@ -185,7 +185,7 @@ namespace styles {
185
185
  )
186
186
 
187
187
  export const indicator = style(
188
- { backgroundColor: 'foreground', borderRadius: 'full' },
188
+ { backgroundColor: 'content.primary', borderRadius: 'full', cornerShape: 'round' },
189
189
  { id: 'tds/web/slider/indicator' },
190
190
  )
191
191
 
@@ -200,10 +200,11 @@ namespace styles {
200
200
 
201
201
  export const thumb = style(
202
202
  {
203
- backgroundColor: 'white',
203
+ backgroundColor: 'neutral.000',
204
204
  borderRadius: 'full',
205
- boxShadow: 'thumb',
205
+ boxShadow: 'small',
206
206
  boxSizing: 'border-box',
207
+ cornerShape: 'round',
207
208
  height: '24',
208
209
  outlineColor: 'transparent !custom',
209
210
  outlineOffset: '0',
@@ -214,7 +215,7 @@ namespace styles {
214
215
  transitionTimingFunction: 'snappy',
215
216
  width: '24',
216
217
  selectors: {
217
- '&:has(:focus-visible)': { outlineColor: 'blue.700', outlineOffset: '2' },
218
+ '&:has(:focus-visible)': { outlineColor: 'border.focus', outlineOffset: '2' },
218
219
  '&[data-dragging]': { transform: 'scale(1.08) !custom' },
219
220
  },
220
221
  '@media (prefers-reduced-motion: reduce)': {
@@ -227,9 +228,10 @@ namespace styles {
227
228
 
228
229
  export const track = style(
229
230
  {
230
- backgroundColor: 'grayAlpha.200',
231
+ backgroundColor: 'container.strong',
231
232
  borderRadius: 'full',
232
233
  boxSizing: 'border-box',
234
+ cornerShape: 'round',
233
235
  height: '4',
234
236
  position: 'relative',
235
237
  userSelect: 'none',
@@ -239,7 +241,11 @@ namespace styles {
239
241
  )
240
242
 
241
243
  export const value = style(
242
- { color: 'gray.900', fontVariantNumeric: 'tabular-nums !custom', typography: 'copy.14' },
244
+ {
245
+ color: 'content.secondary',
246
+ fontVariantNumeric: 'tabular-nums !custom',
247
+ typography: 'body.b2',
248
+ },
243
249
  { id: 'tds/web/slider/value' },
244
250
  )
245
251
  }