kaleido-ui 0.2.2 → 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 (318) hide show
  1. package/README.md +37 -10
  2. package/dist/icon-AvUL0Cws.d.cts +135 -0
  3. package/dist/icon-AvUL0Cws.d.ts +135 -0
  4. package/dist/native/index.cjs +0 -126
  5. package/dist/native/index.js +0 -126
  6. package/dist/web/assets/kaleidoswap-brand.js +11 -0
  7. package/dist/web/assets/protocol-icons.js +7 -0
  8. package/dist/web/chunk-25RRZDZ2.js +269 -0
  9. package/dist/web/chunk-27CY5EHL.js +230 -0
  10. package/dist/web/chunk-2GNXC446.js +84 -0
  11. package/dist/web/chunk-2NCH2ZDU.js +129 -0
  12. package/dist/web/chunk-2OGYEUYV.js +220 -0
  13. package/dist/web/chunk-2Q5SSNFO.js +63 -0
  14. package/dist/web/chunk-2REWXJEN.js +96 -0
  15. package/dist/web/chunk-2VAS6VYJ.js +106 -0
  16. package/dist/web/chunk-2VKFRAX3.js +39 -0
  17. package/dist/web/chunk-2Z6KFK4Z.js +41 -0
  18. package/dist/web/chunk-4246Y2F2.js +276 -0
  19. package/dist/web/chunk-4MLPMRXA.js +85 -0
  20. package/dist/web/chunk-4QLR4ZNK.js +383 -0
  21. package/dist/web/chunk-4UMKXXAK.js +33 -0
  22. package/dist/web/chunk-563GMWFT.js +32 -0
  23. package/dist/web/chunk-5BNDC7M4.js +50 -0
  24. package/dist/web/chunk-5GBURTY4.js +33 -0
  25. package/dist/web/chunk-5MM5YGGG.js +43 -0
  26. package/dist/web/chunk-5PZ2XVWL.js +85 -0
  27. package/dist/web/chunk-5V2KMO56.js +55 -0
  28. package/dist/web/chunk-5WBAFYPH.js +62 -0
  29. package/dist/web/chunk-62HIDJCD.js +98 -0
  30. package/dist/web/chunk-6IBQJIHT.js +56 -0
  31. package/dist/web/chunk-6PNGSAJB.js +55 -0
  32. package/dist/web/chunk-6VKWG5FJ.js +159 -0
  33. package/dist/web/chunk-76DAZT7Q.js +107 -0
  34. package/dist/web/chunk-7NS5S2PG.js +126 -0
  35. package/dist/web/chunk-7OE6AXLY.js +27 -0
  36. package/dist/web/chunk-7YUPXESC.js +666 -0
  37. package/dist/web/chunk-A3TKIXSI.js +197 -0
  38. package/dist/web/chunk-A3XHFJ6J.js +120 -0
  39. package/dist/web/chunk-A6MSV4MA.js +83 -0
  40. package/dist/web/chunk-A7MPRLJL.js +169 -0
  41. package/dist/web/chunk-AP7Q2FCS.js +43 -0
  42. package/dist/web/chunk-ASHU5XNR.js +21 -0
  43. package/dist/web/chunk-BGUBHWIO.js +41 -0
  44. package/dist/web/chunk-BY2KCPTX.js +444 -0
  45. package/dist/web/chunk-C7YIQDGQ.js +57 -0
  46. package/dist/web/chunk-CBE7BT3M.js +87 -0
  47. package/dist/web/chunk-CJATW6EO.js +108 -0
  48. package/dist/web/chunk-CRDCVB5X.js +96 -0
  49. package/dist/web/chunk-CRMLYZIX.js +35 -0
  50. package/dist/web/chunk-CXMCWSWC.js +20 -0
  51. package/dist/web/chunk-CZPNI33A.js +31 -0
  52. package/dist/web/chunk-DCUAE6PX.js +202 -0
  53. package/dist/web/chunk-DDMDRAD6.js +403 -0
  54. package/dist/web/chunk-DH7VXKGM.js +247 -0
  55. package/dist/web/chunk-DNHRMPKI.js +63 -0
  56. package/dist/web/chunk-DXFFYCU3.js +83 -0
  57. package/dist/web/chunk-EK5N3ZPW.js +417 -0
  58. package/dist/web/chunk-F2LIZX5K.js +140 -0
  59. package/dist/web/chunk-FSQV54O4.js +61 -0
  60. package/dist/web/chunk-FWOIRFV5.js +73 -0
  61. package/dist/web/chunk-G2MJL3VP.js +54 -0
  62. package/dist/web/chunk-G2ZYNR3W.js +28 -0
  63. package/dist/web/chunk-G373WZMN.js +150 -0
  64. package/dist/web/chunk-GMJGTSCQ.js +82 -0
  65. package/dist/web/chunk-GX7GBHJ6.js +362 -0
  66. package/dist/web/chunk-GZZ5KVON.js +70 -0
  67. package/dist/web/chunk-H3GYLFHP.js +30 -0
  68. package/dist/web/chunk-HDLOPDFX.js +89 -0
  69. package/dist/web/chunk-HP25HN7Q.js +69 -0
  70. package/dist/web/chunk-HVKSBEZN.js +98 -0
  71. package/dist/web/chunk-HWKXZNBN.js +74 -0
  72. package/dist/web/chunk-HY3VMT27.js +64 -0
  73. package/dist/web/chunk-IK32AIOS.js +27 -0
  74. package/dist/web/chunk-IMER4KGH.js +151 -0
  75. package/dist/web/chunk-IV6AAVUE.js +177 -0
  76. package/dist/web/chunk-JWMFTRDC.js +254 -0
  77. package/dist/web/chunk-JY3H7ZAI.js +41 -0
  78. package/dist/web/chunk-JY73M73T.js +175 -0
  79. package/dist/web/chunk-JYM5NHBA.js +80 -0
  80. package/dist/web/chunk-JZ3BUM5L.js +368 -0
  81. package/dist/web/chunk-KIMWCG5N.js +108 -0
  82. package/dist/web/chunk-L2UPQLY7.js +43 -0
  83. package/dist/web/chunk-LFAORJQK.js +81 -0
  84. package/dist/web/chunk-LOGZGZWN.js +1 -0
  85. package/dist/web/chunk-LPDB7EHH.js +65 -0
  86. package/dist/web/chunk-LSY4DY2I.js +72 -0
  87. package/dist/web/chunk-LYCLVP26.js +101 -0
  88. package/dist/web/chunk-LZ6PIXUO.js +43 -0
  89. package/dist/web/chunk-LZ723UCB.js +96 -0
  90. package/dist/web/chunk-M6RXTQEL.js +90 -0
  91. package/dist/web/chunk-MTQ22SKE.js +39 -0
  92. package/dist/web/chunk-MTQOAMDW.js +8 -0
  93. package/dist/web/chunk-NEXA6VGG.js +91 -0
  94. package/dist/web/chunk-NSA777UY.js +89 -0
  95. package/dist/web/chunk-O2TTO5FS.js +24 -0
  96. package/dist/web/chunk-O6NPTMDN.js +191 -0
  97. package/dist/web/chunk-OI7WX7NE.js +17 -0
  98. package/dist/web/chunk-OWSKP527.js +80 -0
  99. package/dist/web/chunk-OX3J3FYX.js +64 -0
  100. package/dist/web/chunk-PCKRLEAO.js +40 -0
  101. package/dist/web/chunk-PMGIJMRO.js +207 -0
  102. package/dist/web/chunk-PS7Q6MMU.js +60 -0
  103. package/dist/web/chunk-PTSOVDKH.js +169 -0
  104. package/dist/web/chunk-QBZSLR7U.js +54 -0
  105. package/dist/web/chunk-QCQRA6L5.js +63 -0
  106. package/dist/web/chunk-QFIGSIXA.js +558 -0
  107. package/dist/web/chunk-QRFFLA3N.js +84 -0
  108. package/dist/web/chunk-QXCCUYNY.js +232 -0
  109. package/dist/web/chunk-QXZ2WY3B.js +38 -0
  110. package/dist/web/chunk-R2MV4S4U.js +50 -0
  111. package/dist/web/chunk-R3IIXFGK.js +48 -0
  112. package/dist/web/chunk-RIOY4LFJ.js +141 -0
  113. package/dist/web/chunk-RV7Z3B3V.js +106 -0
  114. package/dist/web/chunk-RXXYUYBP.js +25 -0
  115. package/dist/web/chunk-S2ICIIH2.js +109 -0
  116. package/dist/web/chunk-SJNOBBU5.js +86 -0
  117. package/dist/web/chunk-STMNX3QT.js +109 -0
  118. package/dist/web/chunk-T7CEJV6P.js +66 -0
  119. package/dist/web/chunk-TBEKRQGW.js +99 -0
  120. package/dist/web/chunk-TCFHH5TE.js +179 -0
  121. package/dist/web/chunk-TI7NWMEQ.js +34 -0
  122. package/dist/web/chunk-TKRMGN7J.js +8 -0
  123. package/dist/web/chunk-TMK3SVYI.js +62 -0
  124. package/dist/web/chunk-TPGNO74K.js +67 -0
  125. package/dist/web/chunk-TS4UYWJJ.js +105 -0
  126. package/dist/web/chunk-TY6SGZC7.js +94 -0
  127. package/dist/web/chunk-UHXOPILM.js +101 -0
  128. package/dist/web/chunk-UK6ZL4MX.js +375 -0
  129. package/dist/web/chunk-UXLWWQ4J.js +20 -0
  130. package/dist/web/chunk-UZ4LWR4X.js +26 -0
  131. package/dist/web/chunk-VLZMX43R.js +45 -0
  132. package/dist/web/chunk-VM6AGMYO.js +46 -0
  133. package/dist/web/chunk-VUGV3ELU.js +176 -0
  134. package/dist/web/chunk-VYQHGSK6.js +244 -0
  135. package/dist/web/chunk-VZF5C3C6.js +146 -0
  136. package/dist/web/chunk-W4E2N3UN.js +58 -0
  137. package/dist/web/chunk-WEPSTI3Z.js +83 -0
  138. package/dist/web/chunk-WOAWUXER.js +139 -0
  139. package/dist/web/chunk-WURSWAKE.js +74 -0
  140. package/dist/web/chunk-WWF7IJBF.js +330 -0
  141. package/dist/web/chunk-X2RA4EG3.js +86 -0
  142. package/dist/web/chunk-XCQGJYGF.js +42 -0
  143. package/dist/web/chunk-XDSOOOYL.js +35 -0
  144. package/dist/web/chunk-XPHFJPUQ.js +291 -0
  145. package/dist/web/chunk-XXH4TYKZ.js +276 -0
  146. package/dist/web/chunk-XZQUQOR3.js +48 -0
  147. package/dist/web/chunk-Y3W6LOOE.js +66 -0
  148. package/dist/web/chunk-YNB4SSLD.js +113 -0
  149. package/dist/web/chunk-YQDCU7ZL.js +49 -0
  150. package/dist/web/chunk-YQQ7GDLZ.js +30 -0
  151. package/dist/web/chunk-YTXWYWVD.js +70 -0
  152. package/dist/web/chunk-YXVOFEDT.js +85 -0
  153. package/dist/web/chunk-Z2SS7UJ4.js +139 -0
  154. package/dist/web/chunk-Z5LVT3BD.js +128 -0
  155. package/dist/web/chunk-Z5O67WTL.js +85 -0
  156. package/dist/web/chunk-ZPNGHBKB.js +86 -0
  157. package/dist/web/chunk-ZR32WYJA.js +55 -0
  158. package/dist/web/chunk-ZRIBB4EB.js +62 -0
  159. package/dist/web/chunk-ZTVV4KBT.js +28 -0
  160. package/dist/web/chunk-ZXCT3Y6P.js +56 -0
  161. package/dist/web/components/account-capabilities-card.js +21 -0
  162. package/dist/web/components/account-menu.js +18 -0
  163. package/dist/web/components/account-settings-shared.js +50 -0
  164. package/dist/web/components/account-status-tabs.js +20 -0
  165. package/dist/web/components/action-tile.js +8 -0
  166. package/dist/web/components/activity-detail-row.js +22 -0
  167. package/dist/web/components/activity-filter-bar.js +22 -0
  168. package/dist/web/components/activity-list.js +23 -0
  169. package/dist/web/components/activity-network-filters.js +19 -0
  170. package/dist/web/components/activity-row.js +15 -0
  171. package/dist/web/components/activity-type-tabs.js +17 -0
  172. package/dist/web/components/alert-banner.js +13 -0
  173. package/dist/web/components/amount.js +8 -0
  174. package/dist/web/components/app-icon.js +15 -0
  175. package/dist/web/components/asset-card.js +21 -0
  176. package/dist/web/components/asset-icon.js +10 -0
  177. package/dist/web/components/asset-selector.js +24 -0
  178. package/dist/web/components/balance-breakdown.js +18 -0
  179. package/dist/web/components/basic-collapsible.js +11 -0
  180. package/dist/web/components/bottom-nav.js +13 -0
  181. package/dist/web/components/bottom-sheet.js +15 -0
  182. package/dist/web/components/btc-unified-receive.js +28 -0
  183. package/dist/web/components/charts/bar-chart.js +24 -0
  184. package/dist/web/components/charts/bar-list.js +24 -0
  185. package/dist/web/components/charts/core.js +63 -0
  186. package/dist/web/components/charts/donut-chart.js +26 -0
  187. package/dist/web/components/charts/index.js +72 -0
  188. package/dist/web/components/charts/line-chart.js +26 -0
  189. package/dist/web/components/charts/meter.js +24 -0
  190. package/dist/web/components/charts/mixed-chart.js +24 -0
  191. package/dist/web/components/charts/scatter-chart.js +24 -0
  192. package/dist/web/components/charts/sparkline.js +8 -0
  193. package/dist/web/components/choice-group.js +11 -0
  194. package/dist/web/components/code-block.js +21 -0
  195. package/dist/web/components/confirm-dialog.js +15 -0
  196. package/dist/web/components/copy-button.js +21 -0
  197. package/dist/web/components/copyable.js +20 -0
  198. package/dist/web/components/date-range-filter.js +16 -0
  199. package/dist/web/components/deposit-asset-selection.js +24 -0
  200. package/dist/web/components/deposit-generated-view.js +23 -0
  201. package/dist/web/components/deposit-invoice-generation.js +35 -0
  202. package/dist/web/components/deposit-network-default-modal.js +13 -0
  203. package/dist/web/components/deposit-pre-generation.js +17 -0
  204. package/dist/web/components/deposit-success-screen.js +20 -0
  205. package/dist/web/components/deposit-ui-shared.js +28 -0
  206. package/dist/web/components/disclosure-card.js +11 -0
  207. package/dist/web/components/dotted-leader.js +8 -0
  208. package/dist/web/components/empty-state.js +8 -0
  209. package/dist/web/components/environment-indicator.js +9 -0
  210. package/dist/web/components/error-boundary.js +10 -0
  211. package/dist/web/components/event-timeline.js +8 -0
  212. package/dist/web/components/extension-page-frame.js +15 -0
  213. package/dist/web/components/filter-bar.js +15 -0
  214. package/dist/web/components/filter-chip-group.js +8 -0
  215. package/dist/web/components/filter-dropdown.js +12 -0
  216. package/dist/web/components/floating-notice.js +12 -0
  217. package/dist/web/components/form-field.js +10 -0
  218. package/dist/web/components/halo-backdrop.js +8 -0
  219. package/dist/web/components/info-chip.js +24 -0
  220. package/dist/web/components/info-panel.js +13 -0
  221. package/dist/web/components/inline-selector.js +11 -0
  222. package/dist/web/components/instants-statement.js +20 -0
  223. package/dist/web/components/kaleidoscope-hero-animation.js +11 -0
  224. package/dist/web/components/kaleidoswap-logo.js +12 -0
  225. package/dist/web/components/list-field.js +14 -0
  226. package/dist/web/components/list-summary.js +8 -0
  227. package/dist/web/components/metric-card.js +14 -0
  228. package/dist/web/components/mobile-hero-animation.js +8 -0
  229. package/dist/web/components/network-badge.js +14 -0
  230. package/dist/web/components/network-icon.js +21 -0
  231. package/dist/web/components/network-status-chip.js +11 -0
  232. package/dist/web/components/notice-bar.js +8 -0
  233. package/dist/web/components/one-time-secret-dialog.js +18 -0
  234. package/dist/web/components/option-selector.js +12 -0
  235. package/dist/web/components/page-header.js +12 -0
  236. package/dist/web/components/page-shell.js +18 -0
  237. package/dist/web/components/pager.js +11 -0
  238. package/dist/web/components/period-select.js +20 -0
  239. package/dist/web/components/qr-code.js +10 -0
  240. package/dist/web/components/query-state.js +19 -0
  241. package/dist/web/components/read-status.js +15 -0
  242. package/dist/web/components/record-list.js +17 -0
  243. package/dist/web/components/recovery-phrase-card.js +20 -0
  244. package/dist/web/components/restricted.js +9 -0
  245. package/dist/web/components/secret-reveal-card.js +20 -0
  246. package/dist/web/components/section-header.js +9 -0
  247. package/dist/web/components/section-label.js +8 -0
  248. package/dist/web/components/selectable-card.js +8 -0
  249. package/dist/web/components/setting-item.js +13 -0
  250. package/dist/web/components/settings-section-card.js +11 -0
  251. package/dist/web/components/settings-selector-row.js +8 -0
  252. package/dist/web/components/settings-tile.js +21 -0
  253. package/dist/web/components/skeleton.js +10 -0
  254. package/dist/web/components/status-badge.js +13 -0
  255. package/dist/web/components/status-icon-badge.js +15 -0
  256. package/dist/web/components/stepper-number-input.js +10 -0
  257. package/dist/web/components/summary-rows.js +9 -0
  258. package/dist/web/components/swap-badge.js +11 -0
  259. package/dist/web/components/swap-input-card.js +28 -0
  260. package/dist/web/components/swap-step-list.js +10 -0
  261. package/dist/web/components/switch-row.js +9 -0
  262. package/dist/web/components/theme-toggle.js +12 -0
  263. package/dist/web/components/transaction-card.js +14 -0
  264. package/dist/web/components/trend-chart.js +28 -0
  265. package/dist/web/components/value-list.js +20 -0
  266. package/dist/web/components/wallet-asset-list.js +22 -0
  267. package/dist/web/components/withdraw-amount-input.js +13 -0
  268. package/dist/web/components/withdraw-confirmation.js +17 -0
  269. package/dist/web/components/withdraw-destination-input.js +14 -0
  270. package/dist/web/components/withdraw-invoice-info.js +10 -0
  271. package/dist/web/components/withdraw-route-selector.js +9 -0
  272. package/dist/web/components/withdraw-success.js +12 -0
  273. package/dist/web/hooks/use-asset-icon.js +11 -0
  274. package/dist/web/hooks/use-copy-to-clipboard.js +7 -0
  275. package/dist/web/hooks/use-media-query.js +9 -0
  276. package/dist/web/hooks/use-theme-mode.js +9 -0
  277. package/dist/web/hooks/use-toast.js +11 -0
  278. package/dist/web/icons/filled.js +15 -0
  279. package/dist/web/icons/index.js +13 -0
  280. package/dist/web/icons/outlined.js +221 -0
  281. package/dist/web/icons/public.js +248 -0
  282. package/dist/web/icons.cjs +776 -0
  283. package/dist/web/icons.d.cts +123 -0
  284. package/dist/web/icons.d.ts +123 -0
  285. package/dist/web/index.cjs +2547 -2496
  286. package/dist/web/index.d.cts +16 -107
  287. package/dist/web/index.d.ts +16 -107
  288. package/dist/web/index.js +592 -14464
  289. package/dist/web/primitives/avatar.js +10 -0
  290. package/dist/web/primitives/button.js +10 -0
  291. package/dist/web/primitives/card.js +20 -0
  292. package/dist/web/primitives/collapsible.js +16 -0
  293. package/dist/web/primitives/dialog.js +30 -0
  294. package/dist/web/primitives/dot-pagination.js +8 -0
  295. package/dist/web/primitives/drawer.js +43 -0
  296. package/dist/web/primitives/dropdown-menu.js +28 -0
  297. package/dist/web/primitives/glyph-button.js +10 -0
  298. package/dist/web/primitives/icon-button.js +15 -0
  299. package/dist/web/primitives/icon-glyph.js +8 -0
  300. package/dist/web/primitives/icon.js +16 -0
  301. package/dist/web/primitives/input.js +9 -0
  302. package/dist/web/primitives/label.js +9 -0
  303. package/dist/web/primitives/menu-search.js +20 -0
  304. package/dist/web/primitives/number-input.js +11 -0
  305. package/dist/web/primitives/popover.js +18 -0
  306. package/dist/web/primitives/scroll-area.js +12 -0
  307. package/dist/web/primitives/select.js +27 -0
  308. package/dist/web/primitives/switch.js +8 -0
  309. package/dist/web/primitives/table.js +27 -0
  310. package/dist/web/primitives/tabs.js +14 -0
  311. package/dist/web/primitives/toast.js +24 -0
  312. package/dist/web/primitives/toaster.js +15 -0
  313. package/dist/web/primitives/tooltip.js +10 -0
  314. package/dist/web/utils/amount-display.js +13 -0
  315. package/dist/web/utils/cn.js +7 -0
  316. package/dist/web/utils/field-styles.js +7 -0
  317. package/dist/web/utils/type-roles.js +7 -0
  318. package/package.json +9 -1
@@ -0,0 +1,403 @@
1
+ "use client";
2
+ import {
3
+ TooltipBubble
4
+ } from "./chunk-YQDCU7ZL.js";
5
+ import {
6
+ ScrollArea
7
+ } from "./chunk-DCUAE6PX.js";
8
+ import {
9
+ GlyphButton
10
+ } from "./chunk-JY3H7ZAI.js";
11
+ import {
12
+ eyebrow
13
+ } from "./chunk-MTQOAMDW.js";
14
+ import {
15
+ IconGlyph
16
+ } from "./chunk-YQQ7GDLZ.js";
17
+ import {
18
+ ChevronLeft,
19
+ ChevronRight
20
+ } from "./chunk-XXH4TYKZ.js";
21
+ import {
22
+ cn
23
+ } from "./chunk-PMGIJMRO.js";
24
+
25
+ // src/web/primitives/drawer.tsx
26
+ import * as React from "react";
27
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
28
+ import { Slot } from "@radix-ui/react-slot";
29
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
30
+ var DrawerContext = React.createContext({ collapsed: false });
31
+ var DrawerOpenContext = React.createContext(void 0);
32
+ var useDrawerCollapsed = () => React.useContext(DrawerContext).collapsed;
33
+ var panel = "flex h-full flex-col border-r border-divider/30 bg-surface-base bg-gradient-card text-foreground shadow-raised";
34
+ var sectionLabel = cn(eyebrow, "text-muted-foreground");
35
+ var DrawerSidebar = React.forwardRef(
36
+ ({
37
+ className,
38
+ children,
39
+ collapsed = false,
40
+ onCollapsedChange,
41
+ header,
42
+ collapseLabel = "Collapse sidebar",
43
+ expandLabel = "Expand sidebar",
44
+ ...props
45
+ }, ref) => /* @__PURE__ */ jsxs(
46
+ "aside",
47
+ {
48
+ ref,
49
+ "data-state": collapsed ? "collapsed" : "expanded",
50
+ className: cn(
51
+ panel,
52
+ // Sticky rather than fixed, so the page beside it needs no margin
53
+ // kept in step with its width.
54
+ "sticky top-0 h-screen shrink-0 transition-[width] duration-300 ease-in-out motion-reduce:transition-none",
55
+ collapsed ? "w-20" : "w-72",
56
+ className
57
+ ),
58
+ ...props,
59
+ children: [
60
+ (header || onCollapsedChange) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center px-4 py-5", collapsed ? "justify-center" : "justify-between gap-3"), children: [
61
+ !collapsed && header && /* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: header }),
62
+ onCollapsedChange && /* @__PURE__ */ jsx(
63
+ GlyphButton,
64
+ {
65
+ icon: collapsed ? ChevronRight : ChevronLeft,
66
+ label: collapsed ? expandLabel : collapseLabel,
67
+ "aria-expanded": !collapsed,
68
+ onClick: () => onCollapsedChange(!collapsed)
69
+ }
70
+ )
71
+ ] }),
72
+ /* @__PURE__ */ jsx(
73
+ DrawerContext.Provider,
74
+ {
75
+ value: { collapsed, expand: onCollapsedChange ? () => onCollapsedChange(false) : void 0 },
76
+ children
77
+ }
78
+ )
79
+ ]
80
+ }
81
+ )
82
+ );
83
+ DrawerSidebar.displayName = "DrawerSidebar";
84
+ var Drawer = ({
85
+ open: openProp,
86
+ defaultOpen = false,
87
+ onOpenChange,
88
+ ...props
89
+ }) => {
90
+ const [uncontrolled, setUncontrolled] = React.useState(defaultOpen);
91
+ const open = openProp ?? uncontrolled;
92
+ const setOpen = React.useCallback(
93
+ (next) => {
94
+ if (openProp === void 0) setUncontrolled(next);
95
+ onOpenChange?.(next);
96
+ },
97
+ [openProp, onOpenChange]
98
+ );
99
+ const close = React.useCallback(() => setOpen(false), [setOpen]);
100
+ return /* @__PURE__ */ jsx(DrawerOpenContext.Provider, { value: close, children: /* @__PURE__ */ jsx(DialogPrimitive.Root, { open, onOpenChange: setOpen, ...props }) });
101
+ };
102
+ Drawer.displayName = "Drawer";
103
+ var DrawerTrigger = DialogPrimitive.Trigger;
104
+ var DrawerPortal = DialogPrimitive.Portal;
105
+ var DrawerClose = DialogPrimitive.Close;
106
+ var DrawerOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
107
+ DialogPrimitive.Overlay,
108
+ {
109
+ ref,
110
+ className: cn(
111
+ "fixed inset-0 z-50 bg-background/80 backdrop-blur-lg data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out motion-reduce:animate-none",
112
+ className
113
+ ),
114
+ ...props
115
+ }
116
+ ));
117
+ DrawerOverlay.displayName = "DrawerOverlay";
118
+ var DrawerContent = React.forwardRef(({ className, children, header, showClose = true, closeLabel = "Close navigation", ...props }, ref) => {
119
+ const close = React.useContext(DrawerOpenContext);
120
+ return /* @__PURE__ */ jsxs(DrawerPortal, { children: [
121
+ /* @__PURE__ */ jsx(DrawerOverlay, {}),
122
+ /* @__PURE__ */ jsxs(
123
+ DialogPrimitive.Content,
124
+ {
125
+ ref,
126
+ className: cn(
127
+ panel,
128
+ // The expanded sidebar's width, never more than 85% of the viewport so
129
+ // a strip of the page stays visible to tap away.
130
+ "fixed inset-y-0 left-0 z-50 w-72 max-w-[85vw] focus:outline-none data-[state=open]:animate-drawer-in-left data-[state=closed]:animate-drawer-out-left motion-reduce:animate-none",
131
+ className
132
+ ),
133
+ ...props,
134
+ children: [
135
+ (header || showClose) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 px-4 py-5", children: [
136
+ /* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: header }),
137
+ showClose && /* @__PURE__ */ jsx(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx(GlyphButton, { icon: ChevronLeft, label: closeLabel }) })
138
+ ] }),
139
+ /* @__PURE__ */ jsx(DrawerContext.Provider, { value: { collapsed: false, close }, children })
140
+ ]
141
+ }
142
+ )
143
+ ] });
144
+ });
145
+ DrawerContent.displayName = "DrawerContent";
146
+ var DrawerTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Title, { ref, className: cn("px-4", sectionLabel, className), ...props }));
147
+ DrawerTitle.displayName = "DrawerTitle";
148
+ var DrawerDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DialogPrimitive.Description, { ref, className: cn("sr-only", className), ...props }));
149
+ DrawerDescription.displayName = "DrawerDescription";
150
+ var DrawerBody = ({ className, children, ...props }) => /* @__PURE__ */ jsx(ScrollArea, { className: "min-h-0 flex-1", viewportClassName: cn("px-4 py-4", className), ...props, children });
151
+ DrawerBody.displayName = "DrawerBody";
152
+ var DrawerSection = ({ className, label, children, ...props }) => {
153
+ const { collapsed } = React.useContext(DrawerContext);
154
+ return /* @__PURE__ */ jsxs("div", { className: cn("group/section [&+&]:mt-6", className), ...props, children: [
155
+ collapsed ? /* @__PURE__ */ jsx("div", { role: "separator", className: "mx-2 my-3 border-t border-divider/60 group-first/section:hidden" }) : label && /* @__PURE__ */ jsx("div", { className: cn("mb-2 px-4", sectionLabel), children: label }),
156
+ /* @__PURE__ */ jsx("div", { className: "space-y-1.5", children })
157
+ ] });
158
+ };
159
+ DrawerSection.displayName = "DrawerSection";
160
+ var activeIcon = "[&>span[aria-hidden=true]]:text-status-success";
161
+ var activeRow = cn(
162
+ "bg-primary/10 bg-gradient-active font-semibold text-foreground ring-1 ring-inset ring-primary/40 shadow-nav-active",
163
+ activeIcon
164
+ );
165
+ var idleRow = "text-content-secondary hover-gradient-violet hover:text-foreground hover:shadow-raised";
166
+ var DrawerGroupContext = React.createContext(false);
167
+ var DrawerNavItem = React.forwardRef(
168
+ ({ className, icon, label, active = false, asChild = false, disabledReason, children, title, onClick, ...props }, ref) => {
169
+ const { collapsed, close } = React.useContext(DrawerContext);
170
+ const nested = React.useContext(DrawerGroupContext);
171
+ const reasonId = React.useId();
172
+ const restricted = (rowClassName, row) => /* @__PURE__ */ jsxs("span", { "data-slot": "drawer-nav-item-restricted", className: "group/tooltip relative block", children: [
173
+ /* @__PURE__ */ jsx(
174
+ "span",
175
+ {
176
+ role: "link",
177
+ "aria-disabled": "true",
178
+ "aria-describedby": reasonId,
179
+ tabIndex: 0,
180
+ title,
181
+ className: cn(rowClassName, "cursor-not-allowed opacity-50 hover:translate-x-0 hover:scale-100"),
182
+ children: row
183
+ }
184
+ ),
185
+ /* @__PURE__ */ jsx(TooltipBubble, { id: reasonId, placement: collapsed ? "right" : "bottom", children: disabledReason })
186
+ ] });
187
+ if (nested) {
188
+ const row = /* @__PURE__ */ jsxs(Fragment, { children: [
189
+ icon && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "flex shrink-0 transition-transform duration-200 hover:scale-110 motion-reduce:transition-none", children: icon }),
190
+ /* @__PURE__ */ jsx("span", { className: "truncate font-medium", children: label })
191
+ ] });
192
+ const rowProps = {
193
+ ref,
194
+ "aria-current": active ? "page" : void 0,
195
+ title,
196
+ className: cn(
197
+ "flex min-w-0 items-center gap-3 rounded-lg px-4 py-2.5 text-caption transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none",
198
+ active ? cn("bg-primary/10 bg-gradient-active font-semibold text-brand", activeIcon) : "text-content-secondary hover:translate-x-1 hover-gradient-violet hover:text-foreground motion-reduce:hover:translate-x-0",
199
+ className
200
+ ),
201
+ onClick: (event) => {
202
+ onClick?.(event);
203
+ close?.();
204
+ },
205
+ ...props
206
+ };
207
+ if (disabledReason) return restricted(rowProps.className, row);
208
+ return asChild && React.isValidElement(children) ? /* @__PURE__ */ jsx(Slot, { ...rowProps, children: React.cloneElement(children, void 0, row) }) : /* @__PURE__ */ jsx("a", { ...rowProps, children: row });
209
+ }
210
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
211
+ icon && /* @__PURE__ */ jsx(
212
+ "span",
213
+ {
214
+ "aria-hidden": "true",
215
+ className: "flex shrink-0 transition-transform duration-300 group-hover:scale-110 motion-reduce:transition-none",
216
+ children: icon
217
+ }
218
+ ),
219
+ /* @__PURE__ */ jsx("span", { className: cn("truncate text-body font-semibold", collapsed && "sr-only"), children: label })
220
+ ] });
221
+ const itemProps = {
222
+ ref,
223
+ "aria-current": active ? "page" : void 0,
224
+ title: title ?? (collapsed && typeof label === "string" ? label : void 0),
225
+ className: cn(
226
+ "group flex min-w-0 items-center rounded-xl px-4 py-3 transition-all duration-300 hover:scale-[1.02] focus:outline-none focus-visible:ring-2 focus-visible:ring-ring active:scale-95 motion-reduce:transition-none motion-reduce:hover:scale-100",
227
+ collapsed ? "justify-center" : "gap-4",
228
+ active ? activeRow : idleRow,
229
+ className
230
+ ),
231
+ // In the mobile drawer, choosing a destination is the end of the errand
232
+ // -- even when the link prevents the default, as a router link does.
233
+ onClick: (event) => {
234
+ onClick?.(event);
235
+ close?.();
236
+ },
237
+ ...props
238
+ };
239
+ if (disabledReason) return restricted(itemProps.className, content);
240
+ const item = asChild && React.isValidElement(children) ? /* @__PURE__ */ jsx(Slot, { ...itemProps, children: React.cloneElement(children, void 0, content) }) : /* @__PURE__ */ jsx("a", { ...itemProps, children: content });
241
+ return item;
242
+ }
243
+ );
244
+ DrawerNavItem.displayName = "DrawerNavItem";
245
+ var DrawerNavGroup = ({
246
+ icon,
247
+ label,
248
+ active = false,
249
+ open: openProp,
250
+ defaultOpen,
251
+ onOpenChange,
252
+ href: hrefProp,
253
+ railHref,
254
+ onNavigate,
255
+ expandGroupLabel,
256
+ children,
257
+ className
258
+ }) => {
259
+ const href = hrefProp ?? railHref;
260
+ const { collapsed, close, expand } = React.useContext(DrawerContext);
261
+ const [uncontrolled, setUncontrolled] = React.useState(defaultOpen ?? active);
262
+ const open = openProp ?? uncontrolled;
263
+ const setOpen = (next) => {
264
+ if (openProp === void 0) setUncontrolled(next);
265
+ onOpenChange?.(next);
266
+ };
267
+ React.useEffect(() => {
268
+ if (active && openProp === void 0) setUncontrolled(true);
269
+ }, [active, openProp]);
270
+ const follow = (event) => {
271
+ if (!href || !onNavigate) return;
272
+ event.preventDefault();
273
+ onNavigate(href);
274
+ };
275
+ const panelId = React.useId();
276
+ const labelId = `${panelId}-label`;
277
+ const rowClass = cn(
278
+ "group flex w-full min-w-0 items-center rounded-xl px-4 py-3 text-left transition-all duration-300 hover:scale-[1.02] focus:outline-none focus-visible:ring-2 focus-visible:ring-ring active:scale-95 motion-reduce:transition-none motion-reduce:hover:scale-100",
279
+ collapsed ? "justify-center" : "gap-4",
280
+ active ? activeRow : idleRow
281
+ );
282
+ const iconNode = icon && /* @__PURE__ */ jsx(
283
+ "span",
284
+ {
285
+ "aria-hidden": "true",
286
+ className: "flex shrink-0 transition-transform duration-300 group-hover:scale-110 motion-reduce:transition-none",
287
+ children: icon
288
+ }
289
+ );
290
+ const rowContent = /* @__PURE__ */ jsxs(Fragment, { children: [
291
+ iconNode,
292
+ /* @__PURE__ */ jsx("span", { id: labelId, className: "min-w-0 flex-1 truncate text-body font-semibold", children: label }),
293
+ /* @__PURE__ */ jsx(
294
+ IconGlyph,
295
+ {
296
+ glyph: ChevronRight,
297
+ className: cn(
298
+ "shrink-0 text-icon-md transition-all duration-300 motion-reduce:transition-none",
299
+ open && "rotate-90"
300
+ )
301
+ }
302
+ )
303
+ ] });
304
+ if (collapsed) {
305
+ const railTitle = typeof label === "string" ? label : void 0;
306
+ return href ? /* @__PURE__ */ jsxs(
307
+ "a",
308
+ {
309
+ href,
310
+ title: railTitle,
311
+ className: cn(rowClass, className),
312
+ onClick: (event) => {
313
+ follow(event);
314
+ setOpen(true);
315
+ expand?.();
316
+ close?.();
317
+ },
318
+ children: [
319
+ iconNode,
320
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: label })
321
+ ]
322
+ }
323
+ ) : expand ? (
324
+ // No first page to go to: the icon unfolds the sidebar onto the group, open.
325
+ /* @__PURE__ */ jsxs(
326
+ "button",
327
+ {
328
+ type: "button",
329
+ title: railTitle,
330
+ "aria-label": expandGroupLabel ?? (railTitle ? `${railTitle}: expand the sidebar to show its pages` : void 0),
331
+ className: cn(rowClass, className),
332
+ onClick: () => {
333
+ setOpen(true);
334
+ expand();
335
+ },
336
+ children: [
337
+ iconNode,
338
+ !expandGroupLabel && !railTitle && /* @__PURE__ */ jsx("span", { className: "sr-only", children: label })
339
+ ]
340
+ }
341
+ )
342
+ ) : /* @__PURE__ */ jsxs("div", { title: railTitle, className: cn(rowClass, className), children: [
343
+ iconNode,
344
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: label })
345
+ ] });
346
+ }
347
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative", className), children: [
348
+ !open && href ? (
349
+ // Closed, with a first page: the row is a link there, and opens.
350
+ /* @__PURE__ */ jsx(
351
+ "a",
352
+ {
353
+ href,
354
+ "aria-expanded": false,
355
+ "aria-controls": panelId,
356
+ className: rowClass,
357
+ onClick: (event) => {
358
+ follow(event);
359
+ setOpen(true);
360
+ close?.();
361
+ },
362
+ children: rowContent
363
+ }
364
+ )
365
+ ) : /* @__PURE__ */ jsx("button", { type: "button", "aria-expanded": open, "aria-controls": panelId, className: rowClass, onClick: () => setOpen(!open), children: rowContent }),
366
+ open && // A named group, so a screen reader says which submenu its pages belong to.
367
+ /* @__PURE__ */ jsx(
368
+ "div",
369
+ {
370
+ id: panelId,
371
+ role: "group",
372
+ "aria-labelledby": labelId,
373
+ className: "mt-2 space-y-1.5 pl-4 data-[state=open]:animate-fade-in motion-reduce:animate-none",
374
+ "data-state": "open",
375
+ children: /* @__PURE__ */ jsx(DrawerGroupContext.Provider, { value: true, children })
376
+ }
377
+ )
378
+ ] });
379
+ };
380
+ DrawerNavGroup.displayName = "DrawerNavGroup";
381
+ var DrawerFooter = ({ className, children, ...props }) => /* @__PURE__ */ jsxs("div", { className: cn("px-4 pb-4", className), ...props, children: [
382
+ /* @__PURE__ */ jsx("div", { role: "separator", className: "mb-4 border-t border-divider/60" }),
383
+ children
384
+ ] });
385
+ DrawerFooter.displayName = "DrawerFooter";
386
+
387
+ export {
388
+ useDrawerCollapsed,
389
+ DrawerSidebar,
390
+ Drawer,
391
+ DrawerTrigger,
392
+ DrawerPortal,
393
+ DrawerClose,
394
+ DrawerOverlay,
395
+ DrawerContent,
396
+ DrawerTitle,
397
+ DrawerDescription,
398
+ DrawerBody,
399
+ DrawerSection,
400
+ DrawerNavItem,
401
+ DrawerNavGroup,
402
+ DrawerFooter
403
+ };
@@ -0,0 +1,247 @@
1
+ "use client";
2
+ import {
3
+ QrCode
4
+ } from "./chunk-F2LIZX5K.js";
5
+ import {
6
+ Label
7
+ } from "./chunk-H3GYLFHP.js";
8
+ import {
9
+ CopyIcon,
10
+ InvoiceStatusBanner,
11
+ PaidOverlay
12
+ } from "./chunk-GX7GBHJ6.js";
13
+ import {
14
+ GlyphButton
15
+ } from "./chunk-JY3H7ZAI.js";
16
+ import {
17
+ eyebrow
18
+ } from "./chunk-MTQOAMDW.js";
19
+ import {
20
+ IconGlyph
21
+ } from "./chunk-YQQ7GDLZ.js";
22
+ import {
23
+ Check,
24
+ ContentCopy,
25
+ Person,
26
+ ProgressActivity,
27
+ Refresh
28
+ } from "./chunk-XXH4TYKZ.js";
29
+ import {
30
+ cn
31
+ } from "./chunk-PMGIJMRO.js";
32
+
33
+ // src/web/components/deposit-generated-view.tsx
34
+ import { useId } from "react";
35
+ import { jsx, jsxs } from "react/jsx-runtime";
36
+ function parseAssetAmount(amountString, asset) {
37
+ const value = Number(amountString);
38
+ if (!Number.isFinite(value)) return 0;
39
+ return Math.round(value * Math.pow(10, asset?.precision ?? 0));
40
+ }
41
+ function formatAssetAmount(amount, asset) {
42
+ const precision = asset?.precision ?? 0;
43
+ return (amount / Math.pow(10, precision)).toLocaleString("en-US", {
44
+ maximumFractionDigits: precision,
45
+ minimumFractionDigits: 0
46
+ });
47
+ }
48
+ function DepositGeneratedView({
49
+ network,
50
+ net,
51
+ isBtc,
52
+ address,
53
+ addressLabel,
54
+ recipientId,
55
+ arkSubMode,
56
+ invoiceStatus,
57
+ isInvoicePending,
58
+ isInvoicePaid,
59
+ isInvoiceFailedOrExpired,
60
+ amount,
61
+ handleAmountChange,
62
+ loading,
63
+ copied,
64
+ copyToClipboard,
65
+ getUnitLabel,
66
+ selectedAsset,
67
+ maxDepositAmount,
68
+ setAddress,
69
+ setRecipientId,
70
+ setAmount,
71
+ setInvoiceStatus,
72
+ showQrNetworkBadge = true,
73
+ showRegenerate = true,
74
+ onRegenerate
75
+ }) {
76
+ const btcAmountId = useId();
77
+ const assetAmountId = useId();
78
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-3 animate-in fade-in zoom-in-95 duration-300", children: [
79
+ (network === "lightning" || network === "arkade" && arkSubMode === "ark") && isBtc && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-2.5 shadow-card", children: [
80
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between px-1", children: /* @__PURE__ */ jsx(Label, { htmlFor: btcAmountId, children: "Specify amount (optional)" }) }),
81
+ /* @__PURE__ */ jsx(
82
+ "input",
83
+ {
84
+ id: btcAmountId,
85
+ type: "text",
86
+ value: amount,
87
+ onChange: handleAmountChange,
88
+ placeholder: "Any amount",
89
+ className: "w-full rounded-lg bg-card/55 bg-gradient-card ring-1 ring-inset ring-secondary/15 hover:ring-secondary/35 px-3 py-1.5 font-mono text-caption font-bold text-foreground shadow-inner transition-all placeholder:text-muted-foreground focus:ring-primary/50 focus:shadow-glow-primary-soft focus:outline-none",
90
+ inputMode: "decimal"
91
+ }
92
+ ),
93
+ amount && /* @__PURE__ */ jsx("p", { className: "text-xxs text-warning-fg/70", children: loading ? /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
94
+ /* @__PURE__ */ jsx(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
95
+ "Updating ",
96
+ network === "arkade" ? "URI" : "invoice",
97
+ "..."
98
+ ] }) : network === "arkade" ? `Unified URI for ${amount} ${getUnitLabel()}` : `Invoice for ${amount} ${getUnitLabel()}` })
99
+ ] }),
100
+ network === "lightning" && !isBtc && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card p-2.5 shadow-card", children: [
101
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between px-1", children: /* @__PURE__ */ jsx(Label, { htmlFor: assetAmountId, children: "Specify amount (optional)" }) }),
102
+ /* @__PURE__ */ jsx(
103
+ "input",
104
+ {
105
+ id: assetAmountId,
106
+ type: "text",
107
+ value: amount,
108
+ onChange: handleAmountChange,
109
+ placeholder: selectedAsset?.ticker ? `Any amount (${selectedAsset.ticker})` : "Any amount",
110
+ className: "w-full rounded-lg bg-card/55 bg-gradient-card ring-1 ring-inset ring-secondary/15 hover:ring-secondary/35 px-3 py-1.5 font-mono text-caption font-bold text-foreground shadow-inner transition-all placeholder:text-muted-foreground focus:ring-primary/50 focus:shadow-glow-primary-soft focus:outline-none",
111
+ inputMode: "decimal"
112
+ }
113
+ ),
114
+ amount && /* @__PURE__ */ jsx("p", { className: "text-xxs text-warning-fg/70", children: loading ? /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
115
+ /* @__PURE__ */ jsx(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-xxs" }),
116
+ "Updating invoice..."
117
+ ] }) : `Invoice for ${amount} ${getUnitLabel()}` }),
118
+ amount && maxDepositAmount > 0 && parseAssetAmount(amount, selectedAsset) > maxDepositAmount && /* @__PURE__ */ jsxs("p", { className: "rounded-lg bg-danger/10 px-2.5 py-1.5 text-xxs text-danger-fg", children: [
119
+ "Exceeds max: ",
120
+ formatAssetAmount(maxDepositAmount, selectedAsset),
121
+ " ",
122
+ getUnitLabel()
123
+ ] })
124
+ ] }),
125
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3", children: [
126
+ /* @__PURE__ */ jsxs(
127
+ "div",
128
+ {
129
+ className: "relative flex flex-col items-center rounded-2xl bg-white p-3.5 transition-all",
130
+ style: net.qrGlow,
131
+ children: [
132
+ showQrNetworkBadge && network !== "spark" && network !== "arkade" && /* @__PURE__ */ jsxs(
133
+ "div",
134
+ {
135
+ className: cn(
136
+ "absolute right-2.5 top-2.5 flex items-center gap-1 rounded-full bg-foreground/90 px-1.5 py-0.5 text-xxs font-bold shadow-sm",
137
+ net.text
138
+ ),
139
+ children: [
140
+ net.icon,
141
+ /* @__PURE__ */ jsx("span", { children: net.label })
142
+ ]
143
+ }
144
+ ),
145
+ /* @__PURE__ */ jsx(QrCode, { value: address, size: 188 }),
146
+ isInvoicePaid && /* @__PURE__ */ jsx(PaidOverlay, {}),
147
+ loading && !isInvoicePaid && // Loading scrim — sits over the QR while a fresh address/invoice
148
+ // is being fetched (e.g. after the New Address button).
149
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center rounded-2xl bg-foreground/80 backdrop-blur-sm", children: /* @__PURE__ */ jsx(IconGlyph, { glyph: ProgressActivity, className: "animate-spin text-icon-3xl text-network-bitcoin-fg" }) })
150
+ ]
151
+ }
152
+ ),
153
+ (() => {
154
+ const isAddressCopied = copied === address;
155
+ return /* @__PURE__ */ jsxs(
156
+ "button",
157
+ {
158
+ type: "button",
159
+ className: cn(
160
+ "flex items-center gap-1 rounded-full px-2.5 py-1 transition-all",
161
+ eyebrow,
162
+ isAddressCopied ? "bg-primary/10 text-brand shadow-glow-primary-soft" : "bg-secondary/15 text-secondary-content shadow-raised hover-gradient-violet hover:text-foreground"
163
+ ),
164
+ onClick: (event) => {
165
+ event.stopPropagation();
166
+ void copyToClipboard(address);
167
+ },
168
+ children: [
169
+ /* @__PURE__ */ jsx(IconGlyph, { glyph: isAddressCopied ? Check : ContentCopy, size: "xs" }),
170
+ isAddressCopied ? "Copied" : network === "lightning" ? "Copy Invoice" : "Copy Address"
171
+ ]
172
+ }
173
+ );
174
+ })()
175
+ ] }),
176
+ network === "lightning" && invoiceStatus && /* @__PURE__ */ jsx(
177
+ InvoiceStatusBanner,
178
+ {
179
+ isInvoicePending,
180
+ isInvoicePaid,
181
+ isInvoiceFailedOrExpired,
182
+ invoiceStatus
183
+ }
184
+ ),
185
+ /* @__PURE__ */ jsxs(
186
+ "div",
187
+ {
188
+ "data-testid": "deposit-generated-address",
189
+ "data-address": address,
190
+ className: cn(
191
+ "group flex cursor-pointer items-center gap-2 rounded-xl bg-card/55 backdrop-blur-xl backdrop-saturate-150 bg-gradient-card px-2.5 py-1.5 shadow-card",
192
+ "transition-all hover-gradient-violet hover:shadow-card-hover active:scale-[0.98]"
193
+ ),
194
+ onClick: () => void copyToClipboard(address),
195
+ children: [
196
+ /* @__PURE__ */ jsx("div", { className: cn("flex size-5 flex-shrink-0 items-center justify-center rounded-md", net.bg), children: net.icon }),
197
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
198
+ /* @__PURE__ */ jsx("p", { className: cn(eyebrow, net.text), children: /* @__PURE__ */ jsx("span", { "data-testid": "deposit-address-label", children: addressLabel }) }),
199
+ /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: address.length > 50 ? `${address.slice(0, 18)}...${address.slice(-14)}` : address })
200
+ ] }),
201
+ /* @__PURE__ */ jsx(CopyIcon, { copied: copied === address })
202
+ ]
203
+ }
204
+ ),
205
+ recipientId && /* @__PURE__ */ jsxs(
206
+ "div",
207
+ {
208
+ className: cn(
209
+ "group flex cursor-pointer items-center gap-2 rounded-xl bg-primary/10 px-2.5 py-1.5 shadow-raised",
210
+ "transition-all hover:bg-primary/15 active:scale-[0.98]"
211
+ ),
212
+ onClick: () => void copyToClipboard(recipientId),
213
+ children: [
214
+ /* @__PURE__ */ jsx("div", { className: "flex size-5 flex-shrink-0 items-center justify-center rounded-md bg-primary/15", children: /* @__PURE__ */ jsx(IconGlyph, { glyph: Person, size: "xs", className: "text-brand" }) }),
215
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
216
+ /* @__PURE__ */ jsx("p", { className: cn("text-brand", eyebrow), children: "Recipient ID" }),
217
+ /* @__PURE__ */ jsx("p", { className: "mt-0.5 truncate font-mono text-tiny text-muted-foreground", children: recipientId.length > 50 ? `${recipientId.slice(0, 18)}...${recipientId.slice(-14)}` : recipientId })
218
+ ] }),
219
+ /* @__PURE__ */ jsx(CopyIcon, { copied: copied === recipientId })
220
+ ]
221
+ }
222
+ ),
223
+ showRegenerate && /* @__PURE__ */ jsx("div", { className: "flex justify-center pt-1", children: /* @__PURE__ */ jsx(
224
+ GlyphButton,
225
+ {
226
+ label: `New ${network === "lightning" ? "invoice" : "address"}`,
227
+ variant: "secondary",
228
+ disabled: loading,
229
+ onClick: () => {
230
+ if (onRegenerate) {
231
+ void onRegenerate();
232
+ return;
233
+ }
234
+ setAddress("");
235
+ setRecipientId("");
236
+ setAmount("");
237
+ setInvoiceStatus(null);
238
+ },
239
+ icon: /* @__PURE__ */ jsx(IconGlyph, { glyph: Refresh, "aria-hidden": "true", className: cn(loading && "animate-spin motion-reduce:animate-none") })
240
+ }
241
+ ) })
242
+ ] });
243
+ }
244
+
245
+ export {
246
+ DepositGeneratedView
247
+ };