kaleido-ui 0.2.1 → 0.2.4

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 (319) hide show
  1. package/README.md +37 -10
  2. package/dist/css/kaleido-ui.css +0 -4
  3. package/dist/icon-AvUL0Cws.d.cts +135 -0
  4. package/dist/icon-AvUL0Cws.d.ts +135 -0
  5. package/dist/native/index.cjs +0 -126
  6. package/dist/native/index.js +0 -126
  7. package/dist/web/assets/kaleidoswap-brand.js +11 -0
  8. package/dist/web/assets/protocol-icons.js +7 -0
  9. package/dist/web/chunk-25RRZDZ2.js +269 -0
  10. package/dist/web/chunk-27CY5EHL.js +230 -0
  11. package/dist/web/chunk-2GNXC446.js +84 -0
  12. package/dist/web/chunk-2NCH2ZDU.js +129 -0
  13. package/dist/web/chunk-2OGYEUYV.js +220 -0
  14. package/dist/web/chunk-2Q5SSNFO.js +63 -0
  15. package/dist/web/chunk-2REWXJEN.js +96 -0
  16. package/dist/web/chunk-2VAS6VYJ.js +106 -0
  17. package/dist/web/chunk-2VKFRAX3.js +39 -0
  18. package/dist/web/chunk-2Z6KFK4Z.js +41 -0
  19. package/dist/web/chunk-4246Y2F2.js +276 -0
  20. package/dist/web/chunk-4MLPMRXA.js +85 -0
  21. package/dist/web/chunk-4QLR4ZNK.js +383 -0
  22. package/dist/web/chunk-4UMKXXAK.js +33 -0
  23. package/dist/web/chunk-563GMWFT.js +32 -0
  24. package/dist/web/chunk-5BNDC7M4.js +50 -0
  25. package/dist/web/chunk-5GBURTY4.js +33 -0
  26. package/dist/web/chunk-5MM5YGGG.js +43 -0
  27. package/dist/web/chunk-5PZ2XVWL.js +85 -0
  28. package/dist/web/chunk-5V2KMO56.js +55 -0
  29. package/dist/web/chunk-5WBAFYPH.js +62 -0
  30. package/dist/web/chunk-62HIDJCD.js +98 -0
  31. package/dist/web/chunk-6IBQJIHT.js +56 -0
  32. package/dist/web/chunk-6PNGSAJB.js +55 -0
  33. package/dist/web/chunk-6VKWG5FJ.js +159 -0
  34. package/dist/web/chunk-76DAZT7Q.js +107 -0
  35. package/dist/web/chunk-7NS5S2PG.js +126 -0
  36. package/dist/web/chunk-7OE6AXLY.js +27 -0
  37. package/dist/web/chunk-7YUPXESC.js +666 -0
  38. package/dist/web/chunk-A3TKIXSI.js +197 -0
  39. package/dist/web/chunk-A3XHFJ6J.js +120 -0
  40. package/dist/web/chunk-A6MSV4MA.js +83 -0
  41. package/dist/web/chunk-A7MPRLJL.js +169 -0
  42. package/dist/web/chunk-AP7Q2FCS.js +43 -0
  43. package/dist/web/chunk-ASHU5XNR.js +21 -0
  44. package/dist/web/chunk-BGUBHWIO.js +41 -0
  45. package/dist/web/chunk-BY2KCPTX.js +444 -0
  46. package/dist/web/chunk-C7YIQDGQ.js +57 -0
  47. package/dist/web/chunk-CBE7BT3M.js +87 -0
  48. package/dist/web/chunk-CJATW6EO.js +108 -0
  49. package/dist/web/chunk-CRDCVB5X.js +96 -0
  50. package/dist/web/chunk-CRMLYZIX.js +35 -0
  51. package/dist/web/chunk-CXMCWSWC.js +20 -0
  52. package/dist/web/chunk-CZPNI33A.js +31 -0
  53. package/dist/web/chunk-DCUAE6PX.js +202 -0
  54. package/dist/web/chunk-DDMDRAD6.js +403 -0
  55. package/dist/web/chunk-DH7VXKGM.js +247 -0
  56. package/dist/web/chunk-DNHRMPKI.js +63 -0
  57. package/dist/web/chunk-DXFFYCU3.js +83 -0
  58. package/dist/web/chunk-EK5N3ZPW.js +417 -0
  59. package/dist/web/chunk-F2LIZX5K.js +140 -0
  60. package/dist/web/chunk-FSQV54O4.js +61 -0
  61. package/dist/web/chunk-FWOIRFV5.js +73 -0
  62. package/dist/web/chunk-G2MJL3VP.js +54 -0
  63. package/dist/web/chunk-G2ZYNR3W.js +28 -0
  64. package/dist/web/chunk-G373WZMN.js +150 -0
  65. package/dist/web/chunk-GMJGTSCQ.js +82 -0
  66. package/dist/web/chunk-GX7GBHJ6.js +362 -0
  67. package/dist/web/chunk-GZZ5KVON.js +70 -0
  68. package/dist/web/chunk-H3GYLFHP.js +30 -0
  69. package/dist/web/chunk-HDLOPDFX.js +89 -0
  70. package/dist/web/chunk-HP25HN7Q.js +69 -0
  71. package/dist/web/chunk-HVKSBEZN.js +98 -0
  72. package/dist/web/chunk-HWKXZNBN.js +74 -0
  73. package/dist/web/chunk-HY3VMT27.js +64 -0
  74. package/dist/web/chunk-IK32AIOS.js +27 -0
  75. package/dist/web/chunk-IMER4KGH.js +151 -0
  76. package/dist/web/chunk-IV6AAVUE.js +177 -0
  77. package/dist/web/chunk-JWMFTRDC.js +254 -0
  78. package/dist/web/chunk-JY3H7ZAI.js +41 -0
  79. package/dist/web/chunk-JY73M73T.js +175 -0
  80. package/dist/web/chunk-JYM5NHBA.js +80 -0
  81. package/dist/web/chunk-JZ3BUM5L.js +368 -0
  82. package/dist/web/chunk-KIMWCG5N.js +108 -0
  83. package/dist/web/chunk-L2UPQLY7.js +43 -0
  84. package/dist/web/chunk-LFAORJQK.js +81 -0
  85. package/dist/web/chunk-LOGZGZWN.js +1 -0
  86. package/dist/web/chunk-LPDB7EHH.js +65 -0
  87. package/dist/web/chunk-LSY4DY2I.js +72 -0
  88. package/dist/web/chunk-LYCLVP26.js +101 -0
  89. package/dist/web/chunk-LZ6PIXUO.js +43 -0
  90. package/dist/web/chunk-LZ723UCB.js +96 -0
  91. package/dist/web/chunk-M6RXTQEL.js +90 -0
  92. package/dist/web/chunk-MTQ22SKE.js +39 -0
  93. package/dist/web/chunk-MTQOAMDW.js +8 -0
  94. package/dist/web/chunk-NEXA6VGG.js +91 -0
  95. package/dist/web/chunk-NSA777UY.js +89 -0
  96. package/dist/web/chunk-O2TTO5FS.js +24 -0
  97. package/dist/web/chunk-O6NPTMDN.js +191 -0
  98. package/dist/web/chunk-OI7WX7NE.js +17 -0
  99. package/dist/web/chunk-OWSKP527.js +80 -0
  100. package/dist/web/chunk-OX3J3FYX.js +64 -0
  101. package/dist/web/chunk-PCKRLEAO.js +40 -0
  102. package/dist/web/chunk-PMGIJMRO.js +207 -0
  103. package/dist/web/chunk-PS7Q6MMU.js +60 -0
  104. package/dist/web/chunk-PTSOVDKH.js +169 -0
  105. package/dist/web/chunk-QBZSLR7U.js +54 -0
  106. package/dist/web/chunk-QCQRA6L5.js +63 -0
  107. package/dist/web/chunk-QFIGSIXA.js +558 -0
  108. package/dist/web/chunk-QRFFLA3N.js +84 -0
  109. package/dist/web/chunk-QXCCUYNY.js +232 -0
  110. package/dist/web/chunk-QXZ2WY3B.js +38 -0
  111. package/dist/web/chunk-R2MV4S4U.js +50 -0
  112. package/dist/web/chunk-R3IIXFGK.js +48 -0
  113. package/dist/web/chunk-RIOY4LFJ.js +141 -0
  114. package/dist/web/chunk-RV7Z3B3V.js +106 -0
  115. package/dist/web/chunk-RXXYUYBP.js +25 -0
  116. package/dist/web/chunk-S2ICIIH2.js +109 -0
  117. package/dist/web/chunk-SJNOBBU5.js +86 -0
  118. package/dist/web/chunk-STMNX3QT.js +109 -0
  119. package/dist/web/chunk-T7CEJV6P.js +66 -0
  120. package/dist/web/chunk-TBEKRQGW.js +99 -0
  121. package/dist/web/chunk-TCFHH5TE.js +179 -0
  122. package/dist/web/chunk-TI7NWMEQ.js +34 -0
  123. package/dist/web/chunk-TKRMGN7J.js +8 -0
  124. package/dist/web/chunk-TMK3SVYI.js +62 -0
  125. package/dist/web/chunk-TPGNO74K.js +67 -0
  126. package/dist/web/chunk-TS4UYWJJ.js +105 -0
  127. package/dist/web/chunk-TY6SGZC7.js +94 -0
  128. package/dist/web/chunk-UHXOPILM.js +101 -0
  129. package/dist/web/chunk-UK6ZL4MX.js +375 -0
  130. package/dist/web/chunk-UXLWWQ4J.js +20 -0
  131. package/dist/web/chunk-UZ4LWR4X.js +26 -0
  132. package/dist/web/chunk-VLZMX43R.js +45 -0
  133. package/dist/web/chunk-VM6AGMYO.js +46 -0
  134. package/dist/web/chunk-VUGV3ELU.js +176 -0
  135. package/dist/web/chunk-VYQHGSK6.js +244 -0
  136. package/dist/web/chunk-VZF5C3C6.js +146 -0
  137. package/dist/web/chunk-W4E2N3UN.js +58 -0
  138. package/dist/web/chunk-WEPSTI3Z.js +83 -0
  139. package/dist/web/chunk-WOAWUXER.js +139 -0
  140. package/dist/web/chunk-WURSWAKE.js +74 -0
  141. package/dist/web/chunk-WWF7IJBF.js +330 -0
  142. package/dist/web/chunk-X2RA4EG3.js +86 -0
  143. package/dist/web/chunk-XCQGJYGF.js +42 -0
  144. package/dist/web/chunk-XDSOOOYL.js +35 -0
  145. package/dist/web/chunk-XPHFJPUQ.js +291 -0
  146. package/dist/web/chunk-XXH4TYKZ.js +276 -0
  147. package/dist/web/chunk-XZQUQOR3.js +48 -0
  148. package/dist/web/chunk-Y3W6LOOE.js +66 -0
  149. package/dist/web/chunk-YNB4SSLD.js +113 -0
  150. package/dist/web/chunk-YQDCU7ZL.js +49 -0
  151. package/dist/web/chunk-YQQ7GDLZ.js +30 -0
  152. package/dist/web/chunk-YTXWYWVD.js +70 -0
  153. package/dist/web/chunk-YXVOFEDT.js +85 -0
  154. package/dist/web/chunk-Z2SS7UJ4.js +139 -0
  155. package/dist/web/chunk-Z5LVT3BD.js +128 -0
  156. package/dist/web/chunk-Z5O67WTL.js +85 -0
  157. package/dist/web/chunk-ZPNGHBKB.js +86 -0
  158. package/dist/web/chunk-ZR32WYJA.js +55 -0
  159. package/dist/web/chunk-ZRIBB4EB.js +62 -0
  160. package/dist/web/chunk-ZTVV4KBT.js +28 -0
  161. package/dist/web/chunk-ZXCT3Y6P.js +56 -0
  162. package/dist/web/components/account-capabilities-card.js +21 -0
  163. package/dist/web/components/account-menu.js +18 -0
  164. package/dist/web/components/account-settings-shared.js +50 -0
  165. package/dist/web/components/account-status-tabs.js +20 -0
  166. package/dist/web/components/action-tile.js +8 -0
  167. package/dist/web/components/activity-detail-row.js +22 -0
  168. package/dist/web/components/activity-filter-bar.js +22 -0
  169. package/dist/web/components/activity-list.js +23 -0
  170. package/dist/web/components/activity-network-filters.js +19 -0
  171. package/dist/web/components/activity-row.js +15 -0
  172. package/dist/web/components/activity-type-tabs.js +17 -0
  173. package/dist/web/components/alert-banner.js +13 -0
  174. package/dist/web/components/amount.js +8 -0
  175. package/dist/web/components/app-icon.js +15 -0
  176. package/dist/web/components/asset-card.js +21 -0
  177. package/dist/web/components/asset-icon.js +10 -0
  178. package/dist/web/components/asset-selector.js +24 -0
  179. package/dist/web/components/balance-breakdown.js +18 -0
  180. package/dist/web/components/basic-collapsible.js +11 -0
  181. package/dist/web/components/bottom-nav.js +13 -0
  182. package/dist/web/components/bottom-sheet.js +15 -0
  183. package/dist/web/components/btc-unified-receive.js +28 -0
  184. package/dist/web/components/charts/bar-chart.js +24 -0
  185. package/dist/web/components/charts/bar-list.js +24 -0
  186. package/dist/web/components/charts/core.js +63 -0
  187. package/dist/web/components/charts/donut-chart.js +26 -0
  188. package/dist/web/components/charts/index.js +72 -0
  189. package/dist/web/components/charts/line-chart.js +26 -0
  190. package/dist/web/components/charts/meter.js +24 -0
  191. package/dist/web/components/charts/mixed-chart.js +24 -0
  192. package/dist/web/components/charts/scatter-chart.js +24 -0
  193. package/dist/web/components/charts/sparkline.js +8 -0
  194. package/dist/web/components/choice-group.js +11 -0
  195. package/dist/web/components/code-block.js +21 -0
  196. package/dist/web/components/confirm-dialog.js +15 -0
  197. package/dist/web/components/copy-button.js +21 -0
  198. package/dist/web/components/copyable.js +20 -0
  199. package/dist/web/components/date-range-filter.js +16 -0
  200. package/dist/web/components/deposit-asset-selection.js +24 -0
  201. package/dist/web/components/deposit-generated-view.js +23 -0
  202. package/dist/web/components/deposit-invoice-generation.js +35 -0
  203. package/dist/web/components/deposit-network-default-modal.js +13 -0
  204. package/dist/web/components/deposit-pre-generation.js +17 -0
  205. package/dist/web/components/deposit-success-screen.js +20 -0
  206. package/dist/web/components/deposit-ui-shared.js +28 -0
  207. package/dist/web/components/disclosure-card.js +11 -0
  208. package/dist/web/components/dotted-leader.js +8 -0
  209. package/dist/web/components/empty-state.js +8 -0
  210. package/dist/web/components/environment-indicator.js +9 -0
  211. package/dist/web/components/error-boundary.js +10 -0
  212. package/dist/web/components/event-timeline.js +8 -0
  213. package/dist/web/components/extension-page-frame.js +15 -0
  214. package/dist/web/components/filter-bar.js +15 -0
  215. package/dist/web/components/filter-chip-group.js +8 -0
  216. package/dist/web/components/filter-dropdown.js +12 -0
  217. package/dist/web/components/floating-notice.js +12 -0
  218. package/dist/web/components/form-field.js +10 -0
  219. package/dist/web/components/halo-backdrop.js +8 -0
  220. package/dist/web/components/info-chip.js +24 -0
  221. package/dist/web/components/info-panel.js +13 -0
  222. package/dist/web/components/inline-selector.js +11 -0
  223. package/dist/web/components/instants-statement.js +20 -0
  224. package/dist/web/components/kaleidoscope-hero-animation.js +11 -0
  225. package/dist/web/components/kaleidoswap-logo.js +12 -0
  226. package/dist/web/components/list-field.js +14 -0
  227. package/dist/web/components/list-summary.js +8 -0
  228. package/dist/web/components/metric-card.js +14 -0
  229. package/dist/web/components/mobile-hero-animation.js +8 -0
  230. package/dist/web/components/network-badge.js +14 -0
  231. package/dist/web/components/network-icon.js +21 -0
  232. package/dist/web/components/network-status-chip.js +11 -0
  233. package/dist/web/components/notice-bar.js +8 -0
  234. package/dist/web/components/one-time-secret-dialog.js +18 -0
  235. package/dist/web/components/option-selector.js +12 -0
  236. package/dist/web/components/page-header.js +12 -0
  237. package/dist/web/components/page-shell.js +18 -0
  238. package/dist/web/components/pager.js +11 -0
  239. package/dist/web/components/period-select.js +20 -0
  240. package/dist/web/components/qr-code.js +10 -0
  241. package/dist/web/components/query-state.js +19 -0
  242. package/dist/web/components/read-status.js +15 -0
  243. package/dist/web/components/record-list.js +17 -0
  244. package/dist/web/components/recovery-phrase-card.js +20 -0
  245. package/dist/web/components/restricted.js +9 -0
  246. package/dist/web/components/secret-reveal-card.js +20 -0
  247. package/dist/web/components/section-header.js +9 -0
  248. package/dist/web/components/section-label.js +8 -0
  249. package/dist/web/components/selectable-card.js +8 -0
  250. package/dist/web/components/setting-item.js +13 -0
  251. package/dist/web/components/settings-section-card.js +11 -0
  252. package/dist/web/components/settings-selector-row.js +8 -0
  253. package/dist/web/components/settings-tile.js +21 -0
  254. package/dist/web/components/skeleton.js +10 -0
  255. package/dist/web/components/status-badge.js +13 -0
  256. package/dist/web/components/status-icon-badge.js +15 -0
  257. package/dist/web/components/stepper-number-input.js +10 -0
  258. package/dist/web/components/summary-rows.js +9 -0
  259. package/dist/web/components/swap-badge.js +11 -0
  260. package/dist/web/components/swap-input-card.js +28 -0
  261. package/dist/web/components/swap-step-list.js +10 -0
  262. package/dist/web/components/switch-row.js +9 -0
  263. package/dist/web/components/theme-toggle.js +12 -0
  264. package/dist/web/components/transaction-card.js +14 -0
  265. package/dist/web/components/trend-chart.js +28 -0
  266. package/dist/web/components/value-list.js +20 -0
  267. package/dist/web/components/wallet-asset-list.js +22 -0
  268. package/dist/web/components/withdraw-amount-input.js +13 -0
  269. package/dist/web/components/withdraw-confirmation.js +17 -0
  270. package/dist/web/components/withdraw-destination-input.js +14 -0
  271. package/dist/web/components/withdraw-invoice-info.js +10 -0
  272. package/dist/web/components/withdraw-route-selector.js +9 -0
  273. package/dist/web/components/withdraw-success.js +12 -0
  274. package/dist/web/hooks/use-asset-icon.js +11 -0
  275. package/dist/web/hooks/use-copy-to-clipboard.js +7 -0
  276. package/dist/web/hooks/use-media-query.js +9 -0
  277. package/dist/web/hooks/use-theme-mode.js +9 -0
  278. package/dist/web/hooks/use-toast.js +11 -0
  279. package/dist/web/icons/filled.js +15 -0
  280. package/dist/web/icons/index.js +13 -0
  281. package/dist/web/icons/outlined.js +221 -0
  282. package/dist/web/icons/public.js +248 -0
  283. package/dist/web/icons.cjs +776 -0
  284. package/dist/web/icons.d.cts +123 -0
  285. package/dist/web/icons.d.ts +123 -0
  286. package/dist/web/index.cjs +3447 -2567
  287. package/dist/web/index.d.cts +507 -113
  288. package/dist/web/index.d.ts +507 -113
  289. package/dist/web/index.js +612 -13675
  290. package/dist/web/primitives/avatar.js +10 -0
  291. package/dist/web/primitives/button.js +10 -0
  292. package/dist/web/primitives/card.js +20 -0
  293. package/dist/web/primitives/collapsible.js +16 -0
  294. package/dist/web/primitives/dialog.js +30 -0
  295. package/dist/web/primitives/dot-pagination.js +8 -0
  296. package/dist/web/primitives/drawer.js +43 -0
  297. package/dist/web/primitives/dropdown-menu.js +28 -0
  298. package/dist/web/primitives/glyph-button.js +10 -0
  299. package/dist/web/primitives/icon-button.js +15 -0
  300. package/dist/web/primitives/icon-glyph.js +8 -0
  301. package/dist/web/primitives/icon.js +16 -0
  302. package/dist/web/primitives/input.js +9 -0
  303. package/dist/web/primitives/label.js +9 -0
  304. package/dist/web/primitives/menu-search.js +20 -0
  305. package/dist/web/primitives/number-input.js +11 -0
  306. package/dist/web/primitives/popover.js +18 -0
  307. package/dist/web/primitives/scroll-area.js +12 -0
  308. package/dist/web/primitives/select.js +27 -0
  309. package/dist/web/primitives/switch.js +8 -0
  310. package/dist/web/primitives/table.js +27 -0
  311. package/dist/web/primitives/tabs.js +14 -0
  312. package/dist/web/primitives/toast.js +24 -0
  313. package/dist/web/primitives/toaster.js +15 -0
  314. package/dist/web/primitives/tooltip.js +10 -0
  315. package/dist/web/utils/amount-display.js +13 -0
  316. package/dist/web/utils/cn.js +7 -0
  317. package/dist/web/utils/field-styles.js +7 -0
  318. package/dist/web/utils/type-roles.js +7 -0
  319. package/package.json +9 -1
package/README.md CHANGED
@@ -13,6 +13,7 @@ npm install kaleido-ui
13
13
  | Import | Description |
14
14
  |--------|-------------|
15
15
  | `kaleido-ui` | Web components (Tailwind CSS + Radix UI) |
16
+ | `kaleido-ui/icons` | Every icon glyph as its own export, plus `createIcon` to build an `Icon` that ships only the glyphs you pass it |
16
17
  | `kaleido-ui/tokens` | Platform-agnostic design tokens (zero deps) |
17
18
  | `kaleido-ui/native` | React Native components (WDK + custom) |
18
19
  | `kaleido-ui/css` | CSS variables (light + dark), keyframes, utilities, and the Tailwind v4 `@theme` tokens |
@@ -50,7 +51,7 @@ npm install kaleido-ui
50
51
  // tailwind.config.js
51
52
  module.exports = {
52
53
  presets: [require('kaleido-ui/tailwind')],
53
- content: ['./src/**/*.{ts,tsx}', './node_modules/kaleido-ui/dist/web/*.js'],
54
+ content: ['./src/**/*.{ts,tsx}', './node_modules/kaleido-ui/dist/web/**/*.js'],
54
55
  plugins: [require('tailwindcss-animate')],
55
56
  }
56
57
  ```
@@ -135,9 +136,9 @@ Works in any JS runtime (Node.js, React Native, web) with zero dependencies.
135
136
  ```ts
136
137
  import { colors, typeScale, radius, shadow } from 'kaleido-ui/tokens'
137
138
 
138
- console.log(colors.primary) // '#2BEE79'
139
+ console.log(colors.primary) // '#15E99A'
139
140
  console.log(colors.network.bitcoin) // '#F7931A'
140
- console.log(typeScale.body) // ['15px', '22px']
141
+ console.log(typeScale.body) // ['16px', '24px']
141
142
  ```
142
143
 
143
144
  ## Web Components
@@ -146,16 +147,40 @@ console.log(typeScale.body) // ['15px', '22px']
146
147
 
147
148
  | Component | Description |
148
149
  |-----------|-------------|
149
- | `Button` | 11 variants (default, destructive, outline, secondary, ghost, link, glow, surface, cta, cta-gradient, danger-subtle), 9 sizes |
150
+ | `Button` | 15 variants (default, destructive, outline, secondary, ghost, link, glow, surface, cta, cta-gradient, danger-subtle, danger-quiet, hyperlink, quiet), 11 sizes (`icon-xl` is deprecated, same as `icon-lg`) |
150
151
  | `Card` | Compositional: Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter |
151
152
  | `Input` | Form text input with focus ring |
153
+ | `Select` | Select (Radix): Select, SelectTrigger, SelectContent, SelectItem, etc. Past four items the list caps its height, scrolls and shows a search field |
154
+ | `DropdownMenu` | Dropdown menu (Radix): DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, etc. Searchable past four items, like `Select` |
155
+ | `Table` | Table, TableHeader, TableBody, TableRow, TableHead, TableCell, etc. `TableHead` takes `sortable`, `sortDirection` (`'asc' \| 'desc' \| 'none'`) and `onSort`, and sets `aria-sort` |
152
156
  | `Dialog` | Modal dialog (Radix): Dialog, DialogContent, DialogHeader, DialogTitle, etc. |
153
157
  | `Tabs` | Tab navigation (Radix): Tabs, TabsList, TabsTrigger, TabsContent |
154
158
  | `Label` | Form label (Radix) |
155
159
  | `Toast` | Toast notifications (Radix): Toast, ToastProvider, Toaster |
156
- | `Icon` | Material Symbols wrapper with size variants (xs-2xl) |
160
+ | `Icon` | Inline SVG icon by name, with size variants (xs-2xl). Looking a name up means shipping the whole set; see below |
157
161
  | `Icons` | Named icon shortcuts (Icons.Send, Icons.Receive, Icons.Swap, etc.) |
158
162
 
163
+ #### Icons and bundle size
164
+
165
+ The ESM build is one module per component and the package declares no side
166
+ effects, so a bundler keeps only what the app imports. `<Icon name="…">` is the
167
+ exception: any name can come in at runtime, so it carries every glyph (~75 KB
168
+ minified). To ship only the glyphs you draw, import them from `kaleido-ui/icons`
169
+ and build your own `Icon`. It takes the same props and the names you give it:
170
+
171
+ ```tsx
172
+ import { createIcon, Close, Check, CheckCircleFilled } from 'kaleido-ui/icons'
173
+
174
+ export const Icon = createIcon({ close: Close, check: Check }, { check: CheckCircleFilled })
175
+
176
+ <Icon name="close" size="sm" />
177
+ <Icon name="check" filled />
178
+ ```
179
+
180
+ `IconButton icon="close"` looks the name up the same way; `GlyphButton` is the
181
+ same button taking the glyph component (`<GlyphButton icon={Close} label="Close" />`),
182
+ and `IconGlyph` draws one glyph at the icon scale (`<IconGlyph glyph={Close} size="sm" />`).
183
+
159
184
  ### Shared Components
160
185
 
161
186
  | Component | Description |
@@ -173,6 +198,8 @@ console.log(typeScale.body) // ['15px', '22px']
173
198
  | `KaleidoswapLogo` | Full logo, `orientation="horizontal" \| "vertical"`. Wordmark uses `currentColor`; size with `h-* w-auto` |
174
199
  | `KaleidoswapMark` | The K pictogram on its own; size with `size-*` |
175
200
  | `HaloBackdrop` | Decorative drifting brand-colour blobs behind a screen (parent needs `relative isolate`) |
201
+ | `TrendChart` | Line/area trend chart with a chart/table switch; pass `view` + `onViewChange` to control the view from the host, or leave them out |
202
+ | `WithdrawAmountInput` | Amount card for the withdraw flow; `unitSlot` replaces the unit label with your own control (e.g. a unit picker) inside the card |
176
203
 
177
204
  ### Hooks
178
205
 
@@ -213,12 +240,12 @@ StatusBadge, NetworkBadge, AlertBanner, SectionLabel
213
240
 
214
241
  | Token | Values |
215
242
  |-------|--------|
216
- | `colors` | primary (#2BEE79), surfaces, text, semantic, network, transaction |
217
- | `typeScale` | xxs (10px) through display (36px) |
218
- | `fontFamily` | Geist Sans, Geist Mono |
243
+ | `colors` | primary (#15E99A, dark theme; `lightSemanticColors` for light), surfaces, text, semantic, network, transaction |
244
+ | `typeScale` | mini (10px) through display (38px) |
245
+ | `fontFamily` | Satoshi (display), Geist Mono (mono) |
219
246
  | `fontWeight` | normal (400) through bold (700) |
220
- | `radius` | sm (8px) through full (9999px) |
221
- | `shadow` | glow, glowStrong, glowSubtle, glowAccent |
247
+ | `radius` | xs (2px) through full (9999px), plus card, panel, nav, pill |
248
+ | `shadow` | glow*, glowPrimary*, glowViolet*, card*, raised, button*, popover, toast |
222
249
  | `transition` | fast (150ms), default (200ms), slow (300ms) |
223
250
  | `brandMark` | The logo's three fills (violet, green, mint): paint, never text |
224
251
  | `themedForeground` | Per-theme AA foregrounds (`brand`, `accent-*-fg`, status and network `-fg`) |
@@ -172,8 +172,6 @@
172
172
  --app-shadow: 7 4 22;
173
173
  --app-shadow-strength: 1;
174
174
  --app-rim-alpha: 0.06;
175
- /* The rule on the left of the current drawer sub-item. */
176
- --app-nav-rule: 2px;
177
175
  /* How much of a hidden (blurred) secret still shows. */
178
176
  --app-hidden-opacity: 0.6;
179
177
  /* Card glass edge: a faint 1px ring, violet light along the top and left,
@@ -259,8 +257,6 @@
259
257
  /* A selected card is only this tint: on light it needs a white floor, or it
260
258
  takes the grey of whatever it sits on. */
261
259
  --gradient-active: linear-gradient(135deg, rgba(21, 233, 154, 0.14) 0%, rgba(21, 233, 154, 0.04) 100%), linear-gradient(#FFFFFF, #FFFFFF);
262
- /* On white the full green rule is heavy: half of it. */
263
- --app-nav-rule: 1px;
264
260
  /* Blurred ink fades into white faster: keep more of it. */
265
261
  --app-hidden-opacity: 0.8;
266
262
  /* The scrollbar thumb is a white wash on dark; on white it needs ink. */
@@ -0,0 +1,135 @@
1
+ import * as React$1 from 'react';
2
+ import { SVGProps, ComponentType } from 'react';
3
+ import * as class_variance_authority_types from 'class-variance-authority/types';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+
7
+ declare const buttonVariants: (props?: ({
8
+ variant?: "glow" | "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "surface" | "cta" | "cta-gradient" | "danger-subtle" | "danger-quiet" | "hyperlink" | "h1" | "h2" | "h3" | "quiet" | null | undefined;
9
+ size?: "default" | "cta" | "xs" | "sm" | "lg" | "xl" | "cta-lg" | "icon-sm" | "icon" | "icon-lg" | "icon-xl" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
12
+ asChild?: boolean;
13
+ }
14
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
15
+
16
+ type IconGlyphComponent = ComponentType<SVGProps<SVGSVGElement>>;
17
+ type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
18
+ interface IconGlyphProps extends SVGProps<SVGSVGElement> {
19
+ glyph: IconGlyphComponent;
20
+ size?: IconSize;
21
+ className?: string;
22
+ }
23
+ /** Draws one glyph component at the icon scale, without the name lookup. */
24
+ declare function IconGlyph({ glyph: Glyph, size, className, ...props }: IconGlyphProps): react_jsx_runtime.JSX.Element;
25
+
26
+ declare const sizes: {
27
+ readonly sm: "icon-sm";
28
+ readonly md: "icon";
29
+ readonly lg: "icon-lg";
30
+ };
31
+ interface GlyphButtonProps extends Omit<ButtonProps, 'size' | 'variant' | 'children' | 'aria-label'> {
32
+ /** What the button does. It is the accessible name and the tooltip; an icon alone names nothing. */
33
+ label: string;
34
+ /** The glyph component (`Close` from `kaleido-ui/icons`), or an element for a glyph that changes (a spinner). */
35
+ icon: IconGlyphComponent | React$1.ReactElement;
36
+ /** sm 32 px for row and inline actions, md 40 px (default) for toolbars and close, lg 50 px for headers and action rows. */
37
+ size?: keyof typeof sizes;
38
+ /**
39
+ * `quiet` (default) for close, back, clear, copy, open; `surface` for an
40
+ * action the screen offers (paste, refresh, edit); `secondary` for the one
41
+ * solid violet action. The danger looks follow Button's names, lightest
42
+ * first: `danger-quiet` tints only on hover, for a row's delete where a
43
+ * filled square would be too loud; `danger-subtle` rests in the danger
44
+ * tint, for an action that deletes or revokes and for the controls of an
45
+ * error surface (a destructive toast's copy and close); `destructive` is
46
+ * the solid red fill, the danger counterpart of `secondary`.
47
+ */
48
+ variant?: 'quiet' | 'surface' | 'secondary' | 'danger-quiet' | 'danger-subtle' | 'destructive';
49
+ /**
50
+ * `square` (default), the rounded square; `circle` for a button that sits on
51
+ * a line or over content rather than in a row, like the swap card's flip.
52
+ */
53
+ shape?: 'square' | 'circle';
54
+ }
55
+ /**
56
+ * `IconButton` for a glyph passed as a component rather than by name, so the
57
+ * bundle carries that glyph and not the whole set.
58
+ */
59
+ declare const GlyphButton: React$1.ForwardRefExoticComponent<GlyphButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
60
+
61
+ type IconName = 'account_balance_wallet' | 'add' | 'add_circle' | 'apps' | 'arrow_back' | 'arrow_circle_up' | 'arrow_downward' | 'arrow_forward' | 'arrow_outward' | 'arrow_upward' | 'autorenew' | 'bolt' | 'bug_report' | 'call_received' | 'cancel' | 'check' | 'check_circle' | 'chevron_left' | 'chevron_right' | 'close' | 'cloud_upload' | 'code' | 'content_copy' | 'content_paste' | 'currency_bitcoin' | 'delete' | 'delete_sweep' | 'description' | 'download' | 'edit' | 'error' | 'expand_less' | 'expand_more' | 'fingerprint' | 'folder_zip' | 'grid_view' | 'help' | 'hexagon' | 'history' | 'hourglass_top' | 'hub' | 'info' | 'inventory_2' | 'ios_share' | 'key' | 'layers' | 'link' | 'lock' | 'lock_open' | 'menu' | 'north_east' | 'open_in_new' | 'person' | 'power_settings_new' | 'qr_code_2' | 'qr_code_scanner' | 'radio_button_unchecked' | 'receipt_long' | 'refresh' | 'remove' | 'remove_circle' | 'restore' | 'rocket_launch' | 'schedule' | 'science' | 'chat_bubble' | 'event' | 'play_arrow' | 'psychology' | 'search' | 'settings' | 'shield' | 'smart_toy' | 'south_west' | 'swap_horiz' | 'swap_vert' | 'sync' | 'sync_alt' | 'timer' | 'timer_off' | 'token' | 'tune' | 'upload' | 'upload_file' | 'verified' | 'visibility' | 'visibility_off' | 'warning' | 'history_toggle_off' | 'payments' | 'toll' | 'trending_up' | 'touch_app' | 'dark_mode' | 'light_mode' | 'palette' | 'keyboard_arrow_up' | 'keyboard_arrow_down' | 'swap_calls' | 'progress_activity' | 'bar_chart' | 'stacked_bar_chart' | 'show_chart' | 'area_chart' | 'scatter_plot' | 'table_rows' | 'language' | 'notifications';
62
+ /**
63
+ * Whether a string names a glyph in the set. Components that take an icon as a
64
+ * string use this to draw it, and draw nothing for an unknown name: printing
65
+ * the name, as a font ligature does without its font, is the one outcome that
66
+ * is always wrong.
67
+ */
68
+ declare const isIconName: (value: unknown) => value is IconName;
69
+
70
+ interface IconProps<N extends string = IconName> extends Omit<IconGlyphProps, 'glyph'> {
71
+ name: N;
72
+ filled?: boolean;
73
+ }
74
+ /**
75
+ * Builds an `Icon` that knows only the glyphs passed in, so a bundle carries
76
+ * those and no others. The default `Icon` is this over the whole set.
77
+ *
78
+ * import { createIcon, Close, Check } from 'kaleido-ui/icons'
79
+ * const Icon = createIcon({ close: Close, check: Check })
80
+ * <Icon name="close" size="sm" />
81
+ */
82
+ declare function createIcon<N extends string>(outlined: Record<N, IconGlyphComponent>, filled?: Partial<Record<N, IconGlyphComponent>>): ({ name, filled: preferFilled, ...props }: IconProps<N>) => react_jsx_runtime.JSX.Element | null;
83
+ declare const Icon: ({ name, filled: preferFilled, ...props }: IconProps<IconName>) => react_jsx_runtime.JSX.Element | null;
84
+ declare const Icons: {
85
+ ArrowBack: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
86
+ ArrowForward: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
87
+ Close: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
88
+ Menu: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
89
+ Send: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
90
+ Receive: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
91
+ Swap: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
92
+ Copy: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
93
+ Paste: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
94
+ Refresh: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
95
+ QrCode: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
96
+ QrScanner: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
97
+ Check: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
98
+ CheckCircle: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
99
+ Error: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
100
+ Warning: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
101
+ Info: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
102
+ Pending: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
103
+ Progress: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
104
+ Wallet: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
105
+ Activity: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
106
+ Settings: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
107
+ Lightning: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
108
+ Bitcoin: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
109
+ Ark: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
110
+ Lock: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
111
+ Unlock: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
112
+ Shield: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
113
+ Key: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
114
+ Fingerprint: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
115
+ Visibility: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
116
+ VisibilityOff: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
117
+ ExpandMore: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
118
+ ExpandLess: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
119
+ ChevronRight: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
120
+ OpenInNew: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
121
+ Search: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
122
+ Add: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
123
+ Download: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
124
+ Upload: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
125
+ Edit: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
126
+ Delete: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
127
+ Timer: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
128
+ Person: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
129
+ Hub: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
130
+ Verified: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
131
+ SmartToy: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
132
+ Psychology: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
133
+ };
134
+
135
+ export { type ButtonProps as B, type GlyphButtonProps as G, type IconName as I, type IconProps as a, Button as b, GlyphButton as c, Icon as d, IconGlyph as e, type IconGlyphComponent as f, type IconGlyphProps as g, type IconSize as h, Icons as i, buttonVariants as j, createIcon as k, isIconName as l };
@@ -0,0 +1,135 @@
1
+ import * as React$1 from 'react';
2
+ import { SVGProps, ComponentType } from 'react';
3
+ import * as class_variance_authority_types from 'class-variance-authority/types';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+
7
+ declare const buttonVariants: (props?: ({
8
+ variant?: "glow" | "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "surface" | "cta" | "cta-gradient" | "danger-subtle" | "danger-quiet" | "hyperlink" | "h1" | "h2" | "h3" | "quiet" | null | undefined;
9
+ size?: "default" | "cta" | "xs" | "sm" | "lg" | "xl" | "cta-lg" | "icon-sm" | "icon" | "icon-lg" | "icon-xl" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
12
+ asChild?: boolean;
13
+ }
14
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
15
+
16
+ type IconGlyphComponent = ComponentType<SVGProps<SVGSVGElement>>;
17
+ type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
18
+ interface IconGlyphProps extends SVGProps<SVGSVGElement> {
19
+ glyph: IconGlyphComponent;
20
+ size?: IconSize;
21
+ className?: string;
22
+ }
23
+ /** Draws one glyph component at the icon scale, without the name lookup. */
24
+ declare function IconGlyph({ glyph: Glyph, size, className, ...props }: IconGlyphProps): react_jsx_runtime.JSX.Element;
25
+
26
+ declare const sizes: {
27
+ readonly sm: "icon-sm";
28
+ readonly md: "icon";
29
+ readonly lg: "icon-lg";
30
+ };
31
+ interface GlyphButtonProps extends Omit<ButtonProps, 'size' | 'variant' | 'children' | 'aria-label'> {
32
+ /** What the button does. It is the accessible name and the tooltip; an icon alone names nothing. */
33
+ label: string;
34
+ /** The glyph component (`Close` from `kaleido-ui/icons`), or an element for a glyph that changes (a spinner). */
35
+ icon: IconGlyphComponent | React$1.ReactElement;
36
+ /** sm 32 px for row and inline actions, md 40 px (default) for toolbars and close, lg 50 px for headers and action rows. */
37
+ size?: keyof typeof sizes;
38
+ /**
39
+ * `quiet` (default) for close, back, clear, copy, open; `surface` for an
40
+ * action the screen offers (paste, refresh, edit); `secondary` for the one
41
+ * solid violet action. The danger looks follow Button's names, lightest
42
+ * first: `danger-quiet` tints only on hover, for a row's delete where a
43
+ * filled square would be too loud; `danger-subtle` rests in the danger
44
+ * tint, for an action that deletes or revokes and for the controls of an
45
+ * error surface (a destructive toast's copy and close); `destructive` is
46
+ * the solid red fill, the danger counterpart of `secondary`.
47
+ */
48
+ variant?: 'quiet' | 'surface' | 'secondary' | 'danger-quiet' | 'danger-subtle' | 'destructive';
49
+ /**
50
+ * `square` (default), the rounded square; `circle` for a button that sits on
51
+ * a line or over content rather than in a row, like the swap card's flip.
52
+ */
53
+ shape?: 'square' | 'circle';
54
+ }
55
+ /**
56
+ * `IconButton` for a glyph passed as a component rather than by name, so the
57
+ * bundle carries that glyph and not the whole set.
58
+ */
59
+ declare const GlyphButton: React$1.ForwardRefExoticComponent<GlyphButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
60
+
61
+ type IconName = 'account_balance_wallet' | 'add' | 'add_circle' | 'apps' | 'arrow_back' | 'arrow_circle_up' | 'arrow_downward' | 'arrow_forward' | 'arrow_outward' | 'arrow_upward' | 'autorenew' | 'bolt' | 'bug_report' | 'call_received' | 'cancel' | 'check' | 'check_circle' | 'chevron_left' | 'chevron_right' | 'close' | 'cloud_upload' | 'code' | 'content_copy' | 'content_paste' | 'currency_bitcoin' | 'delete' | 'delete_sweep' | 'description' | 'download' | 'edit' | 'error' | 'expand_less' | 'expand_more' | 'fingerprint' | 'folder_zip' | 'grid_view' | 'help' | 'hexagon' | 'history' | 'hourglass_top' | 'hub' | 'info' | 'inventory_2' | 'ios_share' | 'key' | 'layers' | 'link' | 'lock' | 'lock_open' | 'menu' | 'north_east' | 'open_in_new' | 'person' | 'power_settings_new' | 'qr_code_2' | 'qr_code_scanner' | 'radio_button_unchecked' | 'receipt_long' | 'refresh' | 'remove' | 'remove_circle' | 'restore' | 'rocket_launch' | 'schedule' | 'science' | 'chat_bubble' | 'event' | 'play_arrow' | 'psychology' | 'search' | 'settings' | 'shield' | 'smart_toy' | 'south_west' | 'swap_horiz' | 'swap_vert' | 'sync' | 'sync_alt' | 'timer' | 'timer_off' | 'token' | 'tune' | 'upload' | 'upload_file' | 'verified' | 'visibility' | 'visibility_off' | 'warning' | 'history_toggle_off' | 'payments' | 'toll' | 'trending_up' | 'touch_app' | 'dark_mode' | 'light_mode' | 'palette' | 'keyboard_arrow_up' | 'keyboard_arrow_down' | 'swap_calls' | 'progress_activity' | 'bar_chart' | 'stacked_bar_chart' | 'show_chart' | 'area_chart' | 'scatter_plot' | 'table_rows' | 'language' | 'notifications';
62
+ /**
63
+ * Whether a string names a glyph in the set. Components that take an icon as a
64
+ * string use this to draw it, and draw nothing for an unknown name: printing
65
+ * the name, as a font ligature does without its font, is the one outcome that
66
+ * is always wrong.
67
+ */
68
+ declare const isIconName: (value: unknown) => value is IconName;
69
+
70
+ interface IconProps<N extends string = IconName> extends Omit<IconGlyphProps, 'glyph'> {
71
+ name: N;
72
+ filled?: boolean;
73
+ }
74
+ /**
75
+ * Builds an `Icon` that knows only the glyphs passed in, so a bundle carries
76
+ * those and no others. The default `Icon` is this over the whole set.
77
+ *
78
+ * import { createIcon, Close, Check } from 'kaleido-ui/icons'
79
+ * const Icon = createIcon({ close: Close, check: Check })
80
+ * <Icon name="close" size="sm" />
81
+ */
82
+ declare function createIcon<N extends string>(outlined: Record<N, IconGlyphComponent>, filled?: Partial<Record<N, IconGlyphComponent>>): ({ name, filled: preferFilled, ...props }: IconProps<N>) => react_jsx_runtime.JSX.Element | null;
83
+ declare const Icon: ({ name, filled: preferFilled, ...props }: IconProps<IconName>) => react_jsx_runtime.JSX.Element | null;
84
+ declare const Icons: {
85
+ ArrowBack: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
86
+ ArrowForward: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
87
+ Close: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
88
+ Menu: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
89
+ Send: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
90
+ Receive: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
91
+ Swap: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
92
+ Copy: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
93
+ Paste: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
94
+ Refresh: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
95
+ QrCode: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
96
+ QrScanner: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
97
+ Check: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
98
+ CheckCircle: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
99
+ Error: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
100
+ Warning: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
101
+ Info: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
102
+ Pending: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
103
+ Progress: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
104
+ Wallet: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
105
+ Activity: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
106
+ Settings: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
107
+ Lightning: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
108
+ Bitcoin: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
109
+ Ark: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
110
+ Lock: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
111
+ Unlock: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
112
+ Shield: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
113
+ Key: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
114
+ Fingerprint: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
115
+ Visibility: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
116
+ VisibilityOff: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
117
+ ExpandMore: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
118
+ ExpandLess: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
119
+ ChevronRight: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
120
+ OpenInNew: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
121
+ Search: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
122
+ Add: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
123
+ Download: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
124
+ Upload: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
125
+ Edit: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
126
+ Delete: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
127
+ Timer: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
128
+ Person: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
129
+ Hub: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
130
+ Verified: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
131
+ SmartToy: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
132
+ Psychology: (props: Omit<IconProps, "name">) => react_jsx_runtime.JSX.Element;
133
+ };
134
+
135
+ export { type ButtonProps as B, type GlyphButtonProps as G, type IconName as I, type IconProps as a, Button as b, GlyphButton as c, Icon as d, IconGlyph as e, type IconGlyphComponent as f, type IconGlyphProps as g, type IconSize as h, Icons as i, buttonVariants as j, createIcon as k, isIconName as l };
@@ -1435,60 +1435,6 @@ function ModeToggle({ icon, size = 40, onToggle }) {
1435
1435
  );
1436
1436
  }
1437
1437
 
1438
- // src/tokens/app-semantic.ts
1439
- var appSemanticDark = {
1440
- // Near-black ramp with a violet cast (~245 deg, low saturation): the
1441
- // surfaces lean violet, the accents carry the colour — green first.
1442
- "surface-base": "14 13 22",
1443
- // #0E0D16 — deepest bg, sidebar
1444
- "surface-raised": "20 19 30",
1445
- // #14131E — page body bg
1446
- "surface-overlay": "28 26 42",
1447
- // #1C1A2A — card bg
1448
- "surface-elevated": "40 38 56",
1449
- // #282638 — sections inside cards
1450
- "surface-high": "54 51 74",
1451
- // #36334A — hover/active highlights
1452
- // An inset box inside a card (DisclosureCard), used at /40: on dark it is
1453
- // the muted fill; on light a cool grey, so the box still reads on white.
1454
- "surface-inset": "20 19 30",
1455
- // #14131E
1456
- primary: "21 233 154",
1457
- // #15E99A
1458
- "primary-emphasis": "18 201 126",
1459
- // #12C97E
1460
- "primary-foreground": "14 13 22",
1461
- secondary: "111 50 255",
1462
- // #6F32FF — brand violet
1463
- "secondary-emphasis": "84 32 204",
1464
- // #5420CC
1465
- "secondary-foreground": "255 255 255",
1466
- "secondary-content": "164 138 255",
1467
- // #A48AFF — violet text/icons on dark
1468
- "content-primary": "237 236 246",
1469
- // #EDECF6 — cool white
1470
- "content-secondary": "152 149 180",
1471
- // #9895B4
1472
- "content-tertiary": "98 95 124",
1473
- // #625F7C
1474
- "content-inverse": "14 13 22",
1475
- "border-subtle": "38 36 54",
1476
- // #262436
1477
- "border-default": "52 50 72",
1478
- // #343248
1479
- "border-strong": "21 233 154",
1480
- "status-success": "34 197 94",
1481
- "status-danger": "248 113 113",
1482
- "status-warning": "245 158 11",
1483
- "status-info": "56 189 248",
1484
- divider: "86 83 110",
1485
- // #56536E
1486
- // Spark's mark is white on dark, black on light.
1487
- "network-spark": "255 255 255"
1488
- // #FFFFFF
1489
- };
1490
- var appSemanticOrder = Object.keys(appSemanticDark);
1491
-
1492
1438
  // src/tokens/typography.ts
1493
1439
  var fontFamily = {
1494
1440
  display: "'Satoshi', system-ui, -apple-system, sans-serif",
@@ -1618,84 +1564,12 @@ var shadowLight = {
1618
1564
  toast: `0 0 0 1px ${lightInk(0.06)}, 0 10px 28px -10px ${lightInk(0.2)}`
1619
1565
  };
1620
1566
 
1621
- // src/tokens/brand.ts
1622
- var brandMark = {
1623
- violet: "#6F32FF",
1624
- green: "#17B581",
1625
- mint: "#15E99A"
1626
- };
1627
- var themedForeground = {
1628
- light: {
1629
- // Brand green at full saturation (no red), as light as it goes and still
1630
- // clears 4.5:1 on every light surface (4.55:1 on #EFEFF4).
1631
- brand: "#007D49",
1632
- "accent-send-fg": "#6428F0",
1633
- "accent-recv-fg": "#007D49",
1634
- "success-fg": "#076A43",
1635
- // a shade under brand: it also sits on a 14% mint tint
1636
- // Tailwind -800 shades: -700 measured only 3.7 to 4.3:1 on the light ramp.
1637
- "warning-fg": "#92400E",
1638
- "danger-fg": "#991B1B",
1639
- "info-fg": "#1E40AF",
1640
- "network-bitcoin-fg": "#92400E",
1641
- "network-lightning-fg": "#854D0E",
1642
- "network-liquid-fg": "#115E59",
1643
- "network-arkade-fg": "#5B21B6",
1644
- "network-spark-fg": "#0D0C14",
1645
- // Spark is black on light
1646
- "network-rgb-fg": "#991B1B",
1647
- "network-taproot-fg": "#464A69"
1648
- },
1649
- dark: {
1650
- brand: colors.primary,
1651
- "accent-send-fg": "#AD94FB",
1652
- "accent-recv-fg": colors.primary,
1653
- "success-fg": colors.success,
1654
- "warning-fg": colors.warning,
1655
- // danger #E53535 and info #4290FF are 3.0:1 and 3.2:1 on the elevated
1656
- // surface. Same hues, lifted until they clear 4.5:1.
1657
- "danger-fg": "#FF9999",
1658
- "info-fg": "#8BBDFF",
1659
- "network-bitcoin-fg": colors.networkText.bitcoin,
1660
- "network-lightning-fg": colors.networkText.lightning,
1661
- "network-liquid-fg": colors.networkText.liquid,
1662
- // The rgb and arkade *-text tokens dip under 4.5:1 on the elevated
1663
- // surface (3.9 and 4.1), so their -fg twins are lifted a step.
1664
- "network-arkade-fg": "#B49CF5",
1665
- "network-spark-fg": colors.network.spark,
1666
- // and white on dark
1667
- "network-rgb-fg": "#F09490",
1668
- "network-taproot-fg": colors.networkText.taproot
1669
- }
1670
- };
1671
- var themedForegroundOrder = Object.keys(themedForeground.light);
1672
- var halo = {
1673
- primary: colors.tx.receive,
1674
- secondary: brandMark.violet,
1675
- blur: "110px"
1676
- };
1677
- var brandTheme = {
1678
- /** AA-safe light primary: white on it is 6.3:1, it is 5.1:1 on the light ramp. */
1679
- lightPrimary: themedForeground.light.brand,
1680
- /** Lifted dark status colours (see `themedForeground.dark`). */
1681
- darkDanger: themedForeground.dark["danger-fg"],
1682
- darkInfo: themedForeground.dark["info-fg"]
1683
- };
1684
-
1685
1567
  // src/tokens/transitions.ts
1686
1568
  var transition = {
1687
1569
  fast: "150ms ease-out",
1688
1570
  default: "200ms ease-out",
1689
1571
  slow: "300ms ease-out"
1690
1572
  };
1691
-
1692
- // src/tokens/chart.ts
1693
- var chartSeries = {
1694
- /** green, violet, azzurro, then yellow, magenta, orange */
1695
- dark: ["#17b581", "#8374da", "#179fd4", "#b3880f", "#db589e", "#de6907"],
1696
- light: ["#17b581", "#6851c3", "#0f9cd0", "#dea805", "#c34189", "#fe904d"]
1697
- };
1698
- var chartSeriesLimit = chartSeries.dark.length;
1699
1573
  // Annotate the CommonJS export names for ESM import in node:
1700
1574
  0 && (module.exports = {
1701
1575
  ActionButton,