kaleido-ui 0.2.2 → 0.2.5

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 +80 -18
  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-2Q5SSNFO.js +63 -0
  10. package/dist/web/chunk-2VKFRAX3.js +39 -0
  11. package/dist/web/chunk-3CHDKHXW.js +150 -0
  12. package/dist/web/chunk-4BTXTIE6.js +126 -0
  13. package/dist/web/chunk-4L55ANVR.js +330 -0
  14. package/dist/web/chunk-4UMKXXAK.js +33 -0
  15. package/dist/web/chunk-536NL4X2.js +89 -0
  16. package/dist/web/chunk-563GMWFT.js +32 -0
  17. package/dist/web/chunk-5GBURTY4.js +33 -0
  18. package/dist/web/chunk-5INE4WNW.js +291 -0
  19. package/dist/web/chunk-5MM5YGGG.js +43 -0
  20. package/dist/web/chunk-5NCVH6N5.js +81 -0
  21. package/dist/web/chunk-5V2KMO56.js +55 -0
  22. package/dist/web/chunk-5WBAFYPH.js +62 -0
  23. package/dist/web/chunk-6PNGSAJB.js +55 -0
  24. package/dist/web/chunk-7L35JISL.js +106 -0
  25. package/dist/web/chunk-7L7DQFHJ.js +85 -0
  26. package/dist/web/chunk-7OE6AXLY.js +27 -0
  27. package/dist/web/chunk-7Y7FEBKK.js +85 -0
  28. package/dist/web/chunk-A6MSV4MA.js +83 -0
  29. package/dist/web/chunk-A7MPRLJL.js +169 -0
  30. package/dist/web/chunk-AMIAAHZM.js +232 -0
  31. package/dist/web/chunk-ASHU5XNR.js +21 -0
  32. package/dist/web/chunk-AU5ZGWGA.js +247 -0
  33. package/dist/web/chunk-AVJ56TMD.js +107 -0
  34. package/dist/web/chunk-AWKCO62W.js +191 -0
  35. package/dist/web/chunk-BGUBHWIO.js +41 -0
  36. package/dist/web/chunk-BYHIH2LP.js +56 -0
  37. package/dist/web/chunk-CBE7BT3M.js +87 -0
  38. package/dist/web/chunk-CJATW6EO.js +108 -0
  39. package/dist/web/chunk-CPIM2QKZ.js +666 -0
  40. package/dist/web/chunk-CRMLYZIX.js +35 -0
  41. package/dist/web/chunk-CXLGQSHM.js +417 -0
  42. package/dist/web/chunk-CXMCWSWC.js +20 -0
  43. package/dist/web/chunk-CXPYTWEC.js +43 -0
  44. package/dist/web/chunk-CZGN7SQH.js +41 -0
  45. package/dist/web/chunk-CZPNI33A.js +31 -0
  46. package/dist/web/chunk-D2ZG6TZM.js +96 -0
  47. package/dist/web/chunk-D5CPIS6B.js +169 -0
  48. package/dist/web/chunk-DCUAE6PX.js +202 -0
  49. package/dist/web/chunk-DUAFJ3CX.js +179 -0
  50. package/dist/web/chunk-DV66AZXI.js +368 -0
  51. package/dist/web/chunk-DY72P3EE.js +86 -0
  52. package/dist/web/chunk-DZMOH67F.js +43 -0
  53. package/dist/web/chunk-EBQ35SOM.js +177 -0
  54. package/dist/web/chunk-EXWE5KM6.js +48 -0
  55. package/dist/web/chunk-F2LIZX5K.js +140 -0
  56. package/dist/web/chunk-FSQV54O4.js +61 -0
  57. package/dist/web/chunk-G26YNXL3.js +82 -0
  58. package/dist/web/chunk-G2MJL3VP.js +54 -0
  59. package/dist/web/chunk-G2ZYNR3W.js +28 -0
  60. package/dist/web/chunk-GEXPB5CG.js +63 -0
  61. package/dist/web/chunk-GX5URFML.js +375 -0
  62. package/dist/web/chunk-GZZ5KVON.js +70 -0
  63. package/dist/web/chunk-H3GYLFHP.js +30 -0
  64. package/dist/web/chunk-HKF7IPXV.js +146 -0
  65. package/dist/web/chunk-HKIYPISK.js +175 -0
  66. package/dist/web/chunk-HLPL5AHD.js +54 -0
  67. package/dist/web/chunk-HO65ENYH.js +99 -0
  68. package/dist/web/chunk-HP25HN7Q.js +69 -0
  69. package/dist/web/chunk-HVKSBEZN.js +98 -0
  70. package/dist/web/chunk-HWKXZNBN.js +74 -0
  71. package/dist/web/chunk-HY3VMT27.js +64 -0
  72. package/dist/web/chunk-I2N3HZ4M.js +60 -0
  73. package/dist/web/chunk-I7KNV2UC.js +109 -0
  74. package/dist/web/chunk-INKE5FS6.js +128 -0
  75. package/dist/web/chunk-IWDBETXQ.js +254 -0
  76. package/dist/web/chunk-IZCLPO4E.js +42 -0
  77. package/dist/web/chunk-JY3H7ZAI.js +41 -0
  78. package/dist/web/chunk-JYM5NHBA.js +80 -0
  79. package/dist/web/chunk-K7JVP24O.js +89 -0
  80. package/dist/web/chunk-KDNYIMGR.js +197 -0
  81. package/dist/web/chunk-KMQN66HU.js +27 -0
  82. package/dist/web/chunk-LOGZGZWN.js +1 -0
  83. package/dist/web/chunk-LPDB7EHH.js +65 -0
  84. package/dist/web/chunk-LSY4DY2I.js +72 -0
  85. package/dist/web/chunk-LYLWGJ4R.js +66 -0
  86. package/dist/web/chunk-MKMZH4XD.js +98 -0
  87. package/dist/web/chunk-MTQ22SKE.js +39 -0
  88. package/dist/web/chunk-MTQOAMDW.js +8 -0
  89. package/dist/web/chunk-NEXA6VGG.js +91 -0
  90. package/dist/web/chunk-NHOCTXPF.js +151 -0
  91. package/dist/web/chunk-NNGVB3US.js +176 -0
  92. package/dist/web/chunk-NXPVF5WX.js +74 -0
  93. package/dist/web/chunk-O2TTO5FS.js +24 -0
  94. package/dist/web/chunk-O4IIYGDL.js +70 -0
  95. package/dist/web/chunk-OI7WX7NE.js +17 -0
  96. package/dist/web/chunk-OWSKP527.js +80 -0
  97. package/dist/web/chunk-OX3J3FYX.js +64 -0
  98. package/dist/web/chunk-OZXDXNMR.js +110 -0
  99. package/dist/web/chunk-PIXLIWSO.js +62 -0
  100. package/dist/web/chunk-PMGIJMRO.js +207 -0
  101. package/dist/web/chunk-Q2IXLUSM.js +56 -0
  102. package/dist/web/chunk-QGWVZ5NG.js +73 -0
  103. package/dist/web/chunk-QLUUM53Z.js +90 -0
  104. package/dist/web/chunk-QRFFLA3N.js +84 -0
  105. package/dist/web/chunk-QTZT7QMI.js +83 -0
  106. package/dist/web/chunk-QXZ2WY3B.js +38 -0
  107. package/dist/web/chunk-R2MV4S4U.js +50 -0
  108. package/dist/web/chunk-RA5YGBRB.js +106 -0
  109. package/dist/web/chunk-RIOY4LFJ.js +141 -0
  110. package/dist/web/chunk-RULT57JR.js +85 -0
  111. package/dist/web/chunk-RWJHJMVJ.js +67 -0
  112. package/dist/web/chunk-RXXYUYBP.js +25 -0
  113. package/dist/web/chunk-SGXLWU4V.js +96 -0
  114. package/dist/web/chunk-SIE2FP2T.js +62 -0
  115. package/dist/web/chunk-STMNX3QT.js +109 -0
  116. package/dist/web/chunk-SUOATMIA.js +113 -0
  117. package/dist/web/chunk-SVYDLG2C.js +558 -0
  118. package/dist/web/chunk-T2NBG4KF.js +276 -0
  119. package/dist/web/chunk-T7CEJV6P.js +66 -0
  120. package/dist/web/chunk-TAA6PO5V.js +63 -0
  121. package/dist/web/chunk-TI7NWMEQ.js +34 -0
  122. package/dist/web/chunk-TJGHAD5O.js +40 -0
  123. package/dist/web/chunk-TKRMGN7J.js +8 -0
  124. package/dist/web/chunk-TS4UYWJJ.js +105 -0
  125. package/dist/web/chunk-TY6SGZC7.js +94 -0
  126. package/dist/web/chunk-U2UWLSDG.js +86 -0
  127. package/dist/web/chunk-UHXOPILM.js +101 -0
  128. package/dist/web/chunk-UXLWWQ4J.js +20 -0
  129. package/dist/web/chunk-UZ4LWR4X.js +26 -0
  130. package/dist/web/chunk-V3UI2XX7.js +444 -0
  131. package/dist/web/chunk-VAMCLWLF.js +403 -0
  132. package/dist/web/chunk-VLZMX43R.js +45 -0
  133. package/dist/web/chunk-VM6AGMYO.js +46 -0
  134. package/dist/web/chunk-VNL2QI5B.js +43 -0
  135. package/dist/web/chunk-VYQHGSK6.js +244 -0
  136. package/dist/web/chunk-W4E2N3UN.js +58 -0
  137. package/dist/web/chunk-W4G74KFZ.js +362 -0
  138. package/dist/web/chunk-WBW5E6LC.js +101 -0
  139. package/dist/web/chunk-WEPSTI3Z.js +83 -0
  140. package/dist/web/chunk-WOAWUXER.js +139 -0
  141. package/dist/web/chunk-X2RA4EG3.js +86 -0
  142. package/dist/web/chunk-X3MYWPNO.js +230 -0
  143. package/dist/web/chunk-XDSOOOYL.js +35 -0
  144. package/dist/web/chunk-XIMTRQZ3.js +220 -0
  145. package/dist/web/chunk-XMUXOKIP.js +159 -0
  146. package/dist/web/chunk-XXH4TYKZ.js +276 -0
  147. package/dist/web/chunk-XYNURYMC.js +129 -0
  148. package/dist/web/chunk-XZQUQOR3.js +48 -0
  149. package/dist/web/chunk-Y2W5YG6Y.js +57 -0
  150. package/dist/web/chunk-YFYAMVTL.js +383 -0
  151. package/dist/web/chunk-YLP46BJK.js +50 -0
  152. package/dist/web/chunk-YMM73FLL.js +84 -0
  153. package/dist/web/chunk-YQDCU7ZL.js +49 -0
  154. package/dist/web/chunk-YQQ7GDLZ.js +30 -0
  155. package/dist/web/chunk-YRRZ22OK.js +139 -0
  156. package/dist/web/chunk-YXVOFEDT.js +85 -0
  157. package/dist/web/chunk-Z3H2FQVX.js +120 -0
  158. package/dist/web/chunk-ZDCKYQKS.js +108 -0
  159. package/dist/web/chunk-ZR32WYJA.js +55 -0
  160. package/dist/web/chunk-ZTVV4KBT.js +28 -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 +2573 -2507
  286. package/dist/web/index.d.cts +32 -110
  287. package/dist/web/index.d.ts +32 -110
  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,139 @@
1
+ "use client";
2
+ import {
3
+ ScrollArea
4
+ } from "./chunk-DCUAE6PX.js";
5
+ import {
6
+ IconGlyph
7
+ } from "./chunk-YQQ7GDLZ.js";
8
+ import {
9
+ cn
10
+ } from "./chunk-PMGIJMRO.js";
11
+ import {
12
+ Search
13
+ } from "./chunk-XXH4TYKZ.js";
14
+
15
+ // src/web/components/inline-selector.tsx
16
+ import { useEffect, useLayoutEffect, useRef, useState } from "react";
17
+ import { jsx, jsxs } from "react/jsx-runtime";
18
+ function InlineSelector({
19
+ label,
20
+ value,
21
+ options,
22
+ onChange,
23
+ disabled = false,
24
+ className,
25
+ triggerClassName,
26
+ panelClassName,
27
+ optionClassName,
28
+ scrollClassName,
29
+ scrollViewportClassName,
30
+ closeOnSelect = true,
31
+ onOpenPanelHeightChange,
32
+ renderTrigger,
33
+ renderPanelHeader,
34
+ renderOption
35
+ }) {
36
+ const [open, setOpen] = useState(false);
37
+ const rootRef = useRef(null);
38
+ const panelRef = useRef(null);
39
+ const onOpenPanelHeightChangeRef = useRef(onOpenPanelHeightChange);
40
+ const selected = options.find((option) => option.id === value);
41
+ const renderArgs = { open, selected, disabled };
42
+ useEffect(() => {
43
+ onOpenPanelHeightChangeRef.current = onOpenPanelHeightChange;
44
+ }, [onOpenPanelHeightChange]);
45
+ useLayoutEffect(() => {
46
+ if (!onOpenPanelHeightChangeRef.current) return;
47
+ if (!open) {
48
+ onOpenPanelHeightChangeRef.current(0);
49
+ return;
50
+ }
51
+ const panel = panelRef.current;
52
+ if (!panel) return;
53
+ const reportHeight = () => {
54
+ onOpenPanelHeightChangeRef.current?.(Math.ceil(panel.getBoundingClientRect().height + 12));
55
+ };
56
+ reportHeight();
57
+ const resizeObserver = new ResizeObserver(reportHeight);
58
+ resizeObserver.observe(panel);
59
+ return () => {
60
+ resizeObserver.disconnect();
61
+ onOpenPanelHeightChangeRef.current?.(0);
62
+ };
63
+ }, [open, options.length]);
64
+ useEffect(() => {
65
+ if (!open) return;
66
+ const handlePointerDown = (event) => {
67
+ const root = rootRef.current;
68
+ if (!root || root.contains(event.target)) return;
69
+ setOpen(false);
70
+ };
71
+ document.addEventListener("pointerdown", handlePointerDown);
72
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
73
+ }, [open]);
74
+ return /* @__PURE__ */ jsxs("div", { ref: rootRef, className: cn("relative min-w-0", className), children: [
75
+ /* @__PURE__ */ jsx(
76
+ "button",
77
+ {
78
+ type: "button",
79
+ disabled,
80
+ "aria-label": label,
81
+ "aria-expanded": open,
82
+ onClick: () => !disabled && setOpen((current) => !current),
83
+ className: cn(
84
+ "w-full outline-none transition-all disabled:cursor-not-allowed disabled:opacity-50",
85
+ triggerClassName
86
+ ),
87
+ children: renderTrigger(renderArgs)
88
+ }
89
+ ),
90
+ open && /* @__PURE__ */ jsxs(
91
+ "div",
92
+ {
93
+ ref: panelRef,
94
+ className: cn(
95
+ "absolute left-0 top-full z-[var(--z-popover)] mt-2 w-full rounded-2xl bg-popover/95 bg-gradient-card p-1.5 shadow-popover backdrop-blur-xl duration-200 animate-in fade-in slide-in-from-top-1",
96
+ panelClassName
97
+ ),
98
+ children: [
99
+ renderPanelHeader?.(renderArgs),
100
+ /* @__PURE__ */ jsx(ScrollArea, { className: cn("max-h-72", scrollClassName), viewportClassName: cn("max-h-72", scrollViewportClassName), children: /* @__PURE__ */ jsx("div", { className: "space-y-1", children: options.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2 px-4 py-8 text-center text-caption text-foreground/55", children: [
101
+ /* @__PURE__ */ jsx(IconGlyph, { glyph: Search, size: "md", className: "opacity-40" }),
102
+ /* @__PURE__ */ jsx("span", { children: "No results" })
103
+ ] }) : options.map((option) => {
104
+ const selectedOption = option.id === value;
105
+ const disabledOption = disabled || Boolean(option.disabled);
106
+ return /* @__PURE__ */ jsx(
107
+ "button",
108
+ {
109
+ type: "button",
110
+ disabled: disabledOption,
111
+ "data-selected": selectedOption ? "true" : void 0,
112
+ onClick: () => {
113
+ if (disabledOption) return;
114
+ onChange(option.id);
115
+ if (closeOnSelect) setOpen(false);
116
+ },
117
+ className: cn(
118
+ "w-full rounded-xl text-left outline-none transition-all disabled:cursor-not-allowed disabled:opacity-50",
119
+ selectedOption ? "bg-primary/10 bg-gradient-active ring-1 ring-inset ring-primary/40" : "hover-gradient-violet",
120
+ optionClassName
121
+ ),
122
+ children: renderOption({
123
+ option,
124
+ selected: selectedOption,
125
+ disabled: disabledOption
126
+ })
127
+ },
128
+ option.id
129
+ );
130
+ }) }) })
131
+ ]
132
+ }
133
+ )
134
+ ] });
135
+ }
136
+
137
+ export {
138
+ InlineSelector
139
+ };
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-PMGIJMRO.js";
5
+
6
+ // src/web/components/action-tile.tsx
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ function ActionTile({
9
+ icon,
10
+ label,
11
+ onClick,
12
+ disabled = false,
13
+ className,
14
+ ariaLabel,
15
+ "data-testid": dataTestId,
16
+ href,
17
+ target,
18
+ rel,
19
+ hideLabel = false
20
+ }) {
21
+ const classes = cn(
22
+ "group relative inline-flex h-10 items-center justify-center gap-1.5 overflow-hidden rounded-xl",
23
+ hideLabel ? "w-10 shrink-0" : "flex-1 px-2.5",
24
+ // Icon and label are both the brand green, and flip together to the
25
+ // ink on green when the hover fill shows.
26
+ "bg-foreground/8 bg-gradient-surface text-brand shadow-raised transition-all duration-200",
27
+ // On light, a neutral grey that leans slightly violet toward the bottom
28
+ // right: the ink at low alpha under a faint secondary wash. Important: the
29
+ // dark surface gradient class is unlayered and would win otherwise.
30
+ "[.light_&]:bg-foreground/[0.05] [.light_&]:!bg-gradient-to-br [.light_&]:from-transparent [.light_&]:to-secondary/[0.08]",
31
+ "hover:-translate-y-0.5 hover:text-primary-foreground hover:shadow-glow-primary-soft",
32
+ // The light glow is a 3px ring, which reads as a second border around the
33
+ // green fill: on light the tile keeps its own shadow instead.
34
+ "[.light_&]:hover:shadow-raised",
35
+ "active:translate-y-0 active:scale-95 disabled:pointer-events-none disabled:opacity-50",
36
+ // A link has no disabled state of its own.
37
+ href && disabled && "pointer-events-none opacity-50",
38
+ className
39
+ );
40
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
41
+ /* @__PURE__ */ jsx(
42
+ "span",
43
+ {
44
+ "aria-hidden": "true",
45
+ className: "pointer-events-none absolute inset-0 bg-primary bg-gradient-primary opacity-0 transition-opacity duration-200 group-hover:opacity-100"
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsx("span", { className: "relative flex shrink-0 items-center justify-center text-current leading-none [&_svg]:size-icon-sm", children: icon }),
49
+ /* @__PURE__ */ jsx("span", { className: cn("relative truncate text-caption font-bold leading-none tracking-wide", hideLabel && "sr-only"), children: label })
50
+ ] });
51
+ if (href) {
52
+ return /* @__PURE__ */ jsx(
53
+ "a",
54
+ {
55
+ href: disabled ? void 0 : href,
56
+ target,
57
+ rel,
58
+ onClick,
59
+ "aria-label": ariaLabel ?? label,
60
+ "aria-disabled": disabled || void 0,
61
+ title: hideLabel ? label : void 0,
62
+ "data-testid": dataTestId,
63
+ className: classes,
64
+ children: content
65
+ }
66
+ );
67
+ }
68
+ return /* @__PURE__ */ jsx(
69
+ "button",
70
+ {
71
+ type: "button",
72
+ onClick,
73
+ disabled,
74
+ "aria-label": ariaLabel ?? label,
75
+ title: hideLabel ? label : void 0,
76
+ "data-testid": dataTestId,
77
+ className: classes,
78
+ children: content
79
+ }
80
+ );
81
+ }
82
+
83
+ export {
84
+ ActionTile
85
+ };
@@ -0,0 +1,120 @@
1
+ "use client";
2
+ import {
3
+ IconGlyph
4
+ } from "./chunk-YQQ7GDLZ.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-PMGIJMRO.js";
8
+ import {
9
+ Error
10
+ } from "./chunk-XXH4TYKZ.js";
11
+
12
+ // src/web/components/page-shell.tsx
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ function PageShell({
15
+ children,
16
+ fullHeight = true,
17
+ centered = true,
18
+ className
19
+ }) {
20
+ return /* @__PURE__ */ jsxs(
21
+ "div",
22
+ {
23
+ className: cn(
24
+ "relative overflow-hidden bg-background text-foreground font-display",
25
+ fullHeight ? "min-h-screen" : "h-screen",
26
+ centered && "flex flex-col items-center justify-center p-6",
27
+ className
28
+ ),
29
+ children: [
30
+ /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "absolute inset-0 bg-page-radial pointer-events-none" }),
31
+ /* @__PURE__ */ jsx("div", { className: cn("relative z-10 w-full", !centered && "h-full min-h-0"), children })
32
+ ]
33
+ }
34
+ );
35
+ }
36
+ function HeadlineGradient({
37
+ children,
38
+ as: Tag = "h1",
39
+ className
40
+ }) {
41
+ return /* @__PURE__ */ jsx(
42
+ Tag,
43
+ {
44
+ className: cn(
45
+ "font-bold tracking-tight bg-gradient-headline bg-clip-text text-transparent",
46
+ className
47
+ ),
48
+ children
49
+ }
50
+ );
51
+ }
52
+ function LoadingCard({ message = "Loading...", className }) {
53
+ return /* @__PURE__ */ jsxs(
54
+ "div",
55
+ {
56
+ className: cn(
57
+ "flex flex-col items-center justify-center py-16 text-muted-foreground",
58
+ className
59
+ ),
60
+ children: [
61
+ /* @__PURE__ */ jsx("div", { className: "mb-4 size-12 animate-spin rounded-full border-4 border-secondary/25 border-t-primary shadow-glow-violet-soft" }),
62
+ /* @__PURE__ */ jsx("p", { className: "text-body", children: message })
63
+ ]
64
+ }
65
+ );
66
+ }
67
+ function ErrorCard({
68
+ title = "Something went wrong",
69
+ description,
70
+ onRetry,
71
+ retryLabel = "Try Again",
72
+ className
73
+ }) {
74
+ return /* @__PURE__ */ jsxs(
75
+ "div",
76
+ {
77
+ className: cn("flex flex-col items-center justify-center py-16 text-center", className),
78
+ children: [
79
+ /* @__PURE__ */ jsx("div", { className: "mb-4 flex size-16 items-center justify-center rounded-full bg-danger/10 shadow-raised", children: /* @__PURE__ */ jsx(IconGlyph, { glyph: Error, className: "text-danger-fg text-icon-4xl" }) }),
80
+ /* @__PURE__ */ jsx("h3", { className: "mb-1 text-body font-semibold", children: title }),
81
+ /* @__PURE__ */ jsx("p", { className: "mb-4 max-w-xs text-caption text-muted-foreground", children: description }),
82
+ onRetry && /* @__PURE__ */ jsx(
83
+ "button",
84
+ {
85
+ type: "button",
86
+ onClick: onRetry,
87
+ className: "rounded-xl bg-secondary/15 bg-gradient-surface px-4 py-2 text-caption font-semibold text-secondary-content shadow-raised transition-all hover-gradient-violet hover:shadow-button-surface-hover",
88
+ children: retryLabel
89
+ }
90
+ )
91
+ ]
92
+ }
93
+ );
94
+ }
95
+ function FadeOverlay({
96
+ edge = "bottom",
97
+ heightClassName = "h-12",
98
+ className
99
+ }) {
100
+ return /* @__PURE__ */ jsx(
101
+ "div",
102
+ {
103
+ "aria-hidden": true,
104
+ className: cn(
105
+ "pointer-events-none absolute inset-x-0 z-10",
106
+ heightClassName,
107
+ edge === "bottom" ? "bottom-0 bg-gradient-to-t from-background to-transparent" : "top-0 bg-gradient-to-b from-background to-transparent",
108
+ className
109
+ )
110
+ }
111
+ );
112
+ }
113
+
114
+ export {
115
+ PageShell,
116
+ HeadlineGradient,
117
+ LoadingCard,
118
+ ErrorCard,
119
+ FadeOverlay
120
+ };
@@ -0,0 +1,108 @@
1
+ "use client";
2
+ import {
3
+ Button
4
+ } from "./chunk-OWSKP527.js";
5
+ import {
6
+ IconGlyph
7
+ } from "./chunk-YQQ7GDLZ.js";
8
+ import {
9
+ cn
10
+ } from "./chunk-PMGIJMRO.js";
11
+ import {
12
+ Check,
13
+ Refresh
14
+ } from "./chunk-XXH4TYKZ.js";
15
+
16
+ // src/web/components/read-status.tsx
17
+ import { useEffect, useRef, useState } from "react";
18
+ import { jsx, jsxs } from "react/jsx-runtime";
19
+ function RefreshButton({ onRefresh, isRefreshing = false, label = "Refresh", className }) {
20
+ return /* @__PURE__ */ jsxs(
21
+ Button,
22
+ {
23
+ type: "button",
24
+ variant: "outline",
25
+ "data-slot": "refresh-button",
26
+ "aria-busy": isRefreshing || void 0,
27
+ className,
28
+ onClick: () => {
29
+ if (!isRefreshing) onRefresh();
30
+ },
31
+ children: [
32
+ /* @__PURE__ */ jsx(
33
+ IconGlyph,
34
+ {
35
+ glyph: Refresh,
36
+ className: cn("text-icon-md", isRefreshing && "animate-spin motion-reduce:animate-none")
37
+ }
38
+ ),
39
+ label
40
+ ]
41
+ }
42
+ );
43
+ }
44
+ var READ_STATUS_UPDATED_MS = 2e3;
45
+ function ReadStatus({
46
+ reads,
47
+ formatTime,
48
+ lastUpdateLabel = "Last update:",
49
+ updatedLabel = "Updated",
50
+ staleLabel = "Could not refresh. Showing the previous read.",
51
+ refreshLabel,
52
+ updatedAnnouncement = (time) => `Updated. Last update: ${time}`,
53
+ updatedMarkMs = READ_STATUS_UPDATED_MS,
54
+ className
55
+ }) {
56
+ const fetching = reads.some((read) => read.isFetching);
57
+ const landed = reads.every((read) => read.data !== void 0);
58
+ const lastRead = landed && reads.length > 0 ? Math.min(...reads.map((read) => read.dataUpdatedAt)) : void 0;
59
+ const previous = reads.some((read) => read.data !== void 0 && read.isError);
60
+ const [updated, setUpdated] = useState(false);
61
+ const [announcement, setAnnouncement] = useState("");
62
+ const requested = useRef(false);
63
+ const wasFetching = useRef(fetching);
64
+ useEffect(() => {
65
+ const finished = wasFetching.current && !fetching;
66
+ wasFetching.current = fetching;
67
+ if (!finished) return;
68
+ if (previous) {
69
+ if (requested.current) setAnnouncement(staleLabel);
70
+ requested.current = false;
71
+ return;
72
+ }
73
+ if (lastRead === void 0) return;
74
+ if (requested.current) setAnnouncement(updatedAnnouncement(formatTime(lastRead)));
75
+ requested.current = false;
76
+ setUpdated(true);
77
+ }, [fetching, previous, lastRead, staleLabel, updatedAnnouncement, formatTime]);
78
+ useEffect(() => {
79
+ if (!updated) return;
80
+ const timer = window.setTimeout(() => setUpdated(false), updatedMarkMs);
81
+ return () => window.clearTimeout(timer);
82
+ }, [updated, updatedMarkMs]);
83
+ const refresh = () => {
84
+ requested.current = true;
85
+ setAnnouncement("");
86
+ for (const read of reads) void read.refetch();
87
+ };
88
+ return /* @__PURE__ */ jsxs("div", { "data-slot": "read-status", className: cn("flex flex-wrap items-center gap-x-3 gap-y-1", className), children: [
89
+ /* @__PURE__ */ jsxs("p", { className: "m-0 text-caption tabular-nums text-muted-foreground", children: [
90
+ previous && /* @__PURE__ */ jsx("span", { className: "mr-2 text-warning-fg", children: staleLabel }),
91
+ lastUpdateLabel,
92
+ " ",
93
+ lastRead === void 0 ? "\u2014" : formatTime(lastRead),
94
+ updated && /* @__PURE__ */ jsxs("span", { className: "ml-2 inline-flex items-center gap-1 text-success-fg", children: [
95
+ /* @__PURE__ */ jsx(IconGlyph, { glyph: Check, className: "text-icon-xs" }),
96
+ updatedLabel
97
+ ] })
98
+ ] }),
99
+ /* @__PURE__ */ jsx(RefreshButton, { onRefresh: refresh, isRefreshing: fetching, label: refreshLabel }),
100
+ /* @__PURE__ */ jsx("span", { "aria-live": "polite", className: "sr-only", children: announcement })
101
+ ] });
102
+ }
103
+
104
+ export {
105
+ RefreshButton,
106
+ READ_STATUS_UPDATED_MS,
107
+ ReadStatus
108
+ };
@@ -0,0 +1,55 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-PMGIJMRO.js";
5
+
6
+ // src/web/primitives/tabs.tsx
7
+ import * as React from "react";
8
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var Tabs = TabsPrimitive.Root;
11
+ var TabsList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
12
+ TabsPrimitive.List,
13
+ {
14
+ ref,
15
+ className: cn(
16
+ "inline-flex h-12 items-center justify-center gap-2 rounded-xl bg-card p-1.5 text-muted-foreground shadow-raised",
17
+ className
18
+ ),
19
+ ...props
20
+ }
21
+ ));
22
+ TabsList.displayName = TabsPrimitive.List.displayName;
23
+ var TabsTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
24
+ TabsPrimitive.Trigger,
25
+ {
26
+ ref,
27
+ className: cn(
28
+ "inline-flex items-center justify-center whitespace-nowrap rounded-lg px-4 py-2 text-caption font-semibold ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
29
+ "text-foreground/70 hover:bg-foreground/[0.06] hover:text-foreground",
30
+ "data-[state=active]:bg-primary active-gradient-primary data-[state=active]:text-primary-foreground data-[state=active]:shadow-button-primary data-[state=active]:hover:brightness-110",
31
+ className
32
+ ),
33
+ ...props
34
+ }
35
+ ));
36
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
37
+ var TabsContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
38
+ TabsPrimitive.Content,
39
+ {
40
+ ref,
41
+ className: cn(
42
+ "mt-4 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 animate-fade-in",
43
+ className
44
+ ),
45
+ ...props
46
+ }
47
+ ));
48
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
49
+
50
+ export {
51
+ Tabs,
52
+ TabsList,
53
+ TabsTrigger,
54
+ TabsContent
55
+ };
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import {
3
+ Icon
4
+ } from "./chunk-A6MSV4MA.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-PMGIJMRO.js";
8
+
9
+ // src/web/components/alert-banner.tsx
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var variantStyles = {
12
+ // One tint for every tone: a 10% wash of the colour, its -fg for icon and text.
13
+ error: { container: "bg-danger/10", icon: "text-danger-fg", iconName: "error" },
14
+ warning: { container: "bg-warning/10", icon: "text-warning-fg", iconName: "warning" },
15
+ info: { container: "bg-info/10", icon: "text-info-fg", iconName: "info" },
16
+ success: { container: "bg-primary/10", icon: "text-brand/90", iconName: "check_circle" }
17
+ };
18
+ function AlertBanner({ variant = "info", icon, children, className }) {
19
+ const styles = variantStyles[variant];
20
+ return /* @__PURE__ */ jsxs("div", { className: cn("rounded-xl p-3 flex items-center gap-2", styles.container, className), children: [
21
+ /* @__PURE__ */ jsx(Icon, { name: icon ?? styles.iconName, size: "md", className: cn("shrink-0", styles.icon) }),
22
+ /* @__PURE__ */ jsx("div", { className: cn("text-body", styles.icon), children })
23
+ ] });
24
+ }
25
+
26
+ export {
27
+ AlertBanner
28
+ };
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import {
3
+ AccountCapabilitiesCard
4
+ } from "../chunk-RWJHJMVJ.js";
5
+ import "../chunk-YFYAMVTL.js";
6
+ import "../chunk-DCUAE6PX.js";
7
+ import "../chunk-ZTVV4KBT.js";
8
+ import "../chunk-A6MSV4MA.js";
9
+ import "../chunk-VYQHGSK6.js";
10
+ import "../chunk-OI7WX7NE.js";
11
+ import "../chunk-MTQOAMDW.js";
12
+ import "../chunk-WBW5E6LC.js";
13
+ import "../chunk-JY3H7ZAI.js";
14
+ import "../chunk-OWSKP527.js";
15
+ import "../chunk-YQQ7GDLZ.js";
16
+ import "../chunk-PMGIJMRO.js";
17
+ import "../chunk-XXH4TYKZ.js";
18
+ import "../chunk-WEPSTI3Z.js";
19
+ export {
20
+ AccountCapabilitiesCard
21
+ };
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import {
3
+ AccountMenu,
4
+ AccountMenuItem,
5
+ AccountMenuSeparator
6
+ } from "../chunk-WOAWUXER.js";
7
+ import "../chunk-W4E2N3UN.js";
8
+ import "../chunk-A6MSV4MA.js";
9
+ import "../chunk-VYQHGSK6.js";
10
+ import "../chunk-OI7WX7NE.js";
11
+ import "../chunk-YQQ7GDLZ.js";
12
+ import "../chunk-PMGIJMRO.js";
13
+ import "../chunk-XXH4TYKZ.js";
14
+ export {
15
+ AccountMenu,
16
+ AccountMenuItem,
17
+ AccountMenuSeparator
18
+ };
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import {
3
+ AccountHeaderIcons,
4
+ AccountInfoGrid,
5
+ AccountNetworkNotice,
6
+ AccountNetworkPicker,
7
+ AccountNetworkSelector,
8
+ AccountNotice,
9
+ AccountSettingsRow,
10
+ AccountSettingsShell,
11
+ AccountStatusPills,
12
+ ExpandIcon,
13
+ InlineAction,
14
+ SectionTitle,
15
+ TransferRouteCard,
16
+ getAccountNetworkLabel,
17
+ getAccountNetworkUi,
18
+ getAccountStatusUi
19
+ } from "../chunk-YFYAMVTL.js";
20
+ import "../chunk-DCUAE6PX.js";
21
+ import "../chunk-ZTVV4KBT.js";
22
+ import "../chunk-A6MSV4MA.js";
23
+ import "../chunk-VYQHGSK6.js";
24
+ import "../chunk-OI7WX7NE.js";
25
+ import "../chunk-MTQOAMDW.js";
26
+ import "../chunk-WBW5E6LC.js";
27
+ import "../chunk-JY3H7ZAI.js";
28
+ import "../chunk-OWSKP527.js";
29
+ import "../chunk-YQQ7GDLZ.js";
30
+ import "../chunk-PMGIJMRO.js";
31
+ import "../chunk-XXH4TYKZ.js";
32
+ import "../chunk-WEPSTI3Z.js";
33
+ export {
34
+ AccountHeaderIcons,
35
+ AccountInfoGrid,
36
+ AccountNetworkNotice,
37
+ AccountNetworkPicker,
38
+ AccountNetworkSelector,
39
+ AccountNotice,
40
+ AccountSettingsRow,
41
+ AccountSettingsShell,
42
+ AccountStatusPills,
43
+ ExpandIcon,
44
+ InlineAction,
45
+ SectionTitle,
46
+ TransferRouteCard,
47
+ getAccountNetworkLabel,
48
+ getAccountNetworkUi,
49
+ getAccountStatusUi
50
+ };
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import {
3
+ AccountStatusDetails,
4
+ AccountStatusTabs
5
+ } from "../chunk-HKIYPISK.js";
6
+ import "../chunk-CZGN7SQH.js";
7
+ import "../chunk-D2ZG6TZM.js";
8
+ import "../chunk-EBQ35SOM.js";
9
+ import "../chunk-MTQOAMDW.js";
10
+ import "../chunk-WBW5E6LC.js";
11
+ import "../chunk-JY3H7ZAI.js";
12
+ import "../chunk-OWSKP527.js";
13
+ import "../chunk-YQQ7GDLZ.js";
14
+ import "../chunk-PMGIJMRO.js";
15
+ import "../chunk-XXH4TYKZ.js";
16
+ import "../chunk-WEPSTI3Z.js";
17
+ export {
18
+ AccountStatusDetails,
19
+ AccountStatusTabs
20
+ };
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import {
3
+ ActionTile
4
+ } from "../chunk-YXVOFEDT.js";
5
+ import "../chunk-PMGIJMRO.js";
6
+ export {
7
+ ActionTile
8
+ };
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import {
3
+ ActivityDetailRow
4
+ } from "../chunk-TAA6PO5V.js";
5
+ import "../chunk-CXMCWSWC.js";
6
+ import "../chunk-GEXPB5CG.js";
7
+ import "../chunk-W4G74KFZ.js";
8
+ import "../chunk-A7MPRLJL.js";
9
+ import "../chunk-PIXLIWSO.js";
10
+ import "../chunk-Q2IXLUSM.js";
11
+ import "../chunk-MTQOAMDW.js";
12
+ import "../chunk-WBW5E6LC.js";
13
+ import "../chunk-JY3H7ZAI.js";
14
+ import "../chunk-OWSKP527.js";
15
+ import "../chunk-YQQ7GDLZ.js";
16
+ import "../chunk-PMGIJMRO.js";
17
+ import "../chunk-XXH4TYKZ.js";
18
+ import "../chunk-WEPSTI3Z.js";
19
+ import "../chunk-BGUBHWIO.js";
20
+ export {
21
+ ActivityDetailRow
22
+ };