@wealthx/shadcn 1.0.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/.turbo/turbo-build.log +235 -138
  2. package/CHANGELOG.md +12 -0
  3. package/README.md +82 -0
  4. package/dist/{chunk-6OJF6XRN.mjs → chunk-24FUO7TD.mjs} +4 -8
  5. package/dist/{chunk-4AJ5HWHD.mjs → chunk-2I5S2AMY.mjs} +3 -3
  6. package/dist/chunk-2SF672SZ.mjs +161 -0
  7. package/dist/{chunk-GPRJQ24C.mjs → chunk-34NWQURD.mjs} +2 -2
  8. package/dist/{chunk-MQ72DIBH.mjs → chunk-3GF7OVTP.mjs} +14 -5
  9. package/dist/chunk-3WMX6KWS.mjs +245 -0
  10. package/dist/{chunk-PMKODV6M.mjs → chunk-462HMNO4.mjs} +6 -10
  11. package/dist/chunk-4CX4SBRO.mjs +153 -0
  12. package/dist/chunk-4MN6UQHG.mjs +443 -0
  13. package/dist/chunk-5QQVZTVZ.mjs +233 -0
  14. package/dist/{chunk-BGP2N52Z.mjs → chunk-66MI7Q4B.mjs} +5 -5
  15. package/dist/chunk-6FCGKSZX.mjs +268 -0
  16. package/dist/{chunk-CGOKTPXU.mjs → chunk-6JQFUE5I.mjs} +20 -23
  17. package/dist/{chunk-Z3MK2KKZ.mjs → chunk-7DHU4VGG.mjs} +7 -3
  18. package/dist/{chunk-VZ2NR7L3.mjs → chunk-7PYJD5JI.mjs} +35 -27
  19. package/dist/{chunk-JU2RUWHF.mjs → chunk-7XJHLGUV.mjs} +1 -1
  20. package/dist/{chunk-BMFN37JH.mjs → chunk-7YAU5CY6.mjs} +1 -1
  21. package/dist/chunk-A56YQQHG.mjs +402 -0
  22. package/dist/chunk-AH52LG6N.mjs +315 -0
  23. package/dist/{chunk-SLWCCURD.mjs → chunk-CLIN5525.mjs} +8 -4
  24. package/dist/{chunk-3VQNJ235.mjs → chunk-CSDO6VBW.mjs} +7 -0
  25. package/dist/chunk-D4ILTPOG.mjs +293 -0
  26. package/dist/{chunk-HS7TFG7V.mjs → chunk-D6ID6M4V.mjs} +1 -1
  27. package/dist/chunk-DOH3EHX7.mjs +378 -0
  28. package/dist/{chunk-MJIEMGRD.mjs → chunk-EFRENWEJ.mjs} +9 -17
  29. package/dist/chunk-ERGGHC2V.mjs +185 -0
  30. package/dist/{chunk-OXQQNQZI.mjs → chunk-FEZKMUCF.mjs} +10 -1
  31. package/dist/{chunk-55CEW76V.mjs → chunk-FH6QVUVZ.mjs} +1 -1
  32. package/dist/chunk-FMAXJ2SI.mjs +71 -0
  33. package/dist/chunk-FZIXGLMV.mjs +173 -0
  34. package/dist/{chunk-DS2AMHN2.mjs → chunk-GYMYRIZP.mjs} +2 -2
  35. package/dist/{chunk-KQDD5MU3.mjs → chunk-H45TKD34.mjs} +5 -5
  36. package/dist/{chunk-BBJBJSXQ.mjs → chunk-J5UICVJS.mjs} +1 -1
  37. package/dist/{chunk-RL772EH7.mjs → chunk-JHJHG4GO.mjs} +4 -12
  38. package/dist/chunk-KMCGSZTX.mjs +177 -0
  39. package/dist/{chunk-FHNT55I5.mjs → chunk-KUDCQ4FI.mjs} +4 -4
  40. package/dist/chunk-LE6YFY6D.mjs +209 -0
  41. package/dist/{chunk-HUVTPUV2.mjs → chunk-LLVQKSU3.mjs} +23 -19
  42. package/dist/{chunk-KKHTJNMM.mjs → chunk-MARPPFOJ.mjs} +8 -4
  43. package/dist/{chunk-6AFMNC42.mjs → chunk-N2PT566P.mjs} +15 -11
  44. package/dist/chunk-NLCKVHWB.mjs +161 -0
  45. package/dist/{chunk-YN5SYTOO.mjs → chunk-NQPOYKAQ.mjs} +9 -5
  46. package/dist/{chunk-ZZV5JVNW.mjs → chunk-NSLMILBT.mjs} +3 -7
  47. package/dist/chunk-NXA3CZ7A.mjs +248 -0
  48. package/dist/chunk-OGOYQ7BG.mjs +150 -0
  49. package/dist/{chunk-3NQGYJEZ.mjs → chunk-P6AM5V7O.mjs} +10 -18
  50. package/dist/{chunk-CZ3BW5GL.mjs → chunk-P76HMUI6.mjs} +5 -11
  51. package/dist/chunk-PCPLO5HT.mjs +671 -0
  52. package/dist/chunk-PG6K5XEC.mjs +475 -0
  53. package/dist/chunk-PJHPSRYD.mjs +234 -0
  54. package/dist/{chunk-DDPA2XXS.mjs → chunk-PMB3A7V3.mjs} +2 -2
  55. package/dist/chunk-PR6V5XKM.mjs +209 -0
  56. package/dist/{chunk-46OFHMQA.mjs → chunk-Q76O3RIQ.mjs} +10 -6
  57. package/dist/chunk-QVKWW6KE.mjs +272 -0
  58. package/dist/chunk-RGU7HOEC.mjs +140 -0
  59. package/dist/{chunk-JF4PHPD5.mjs → chunk-RGVKLTLH.mjs} +4 -4
  60. package/dist/{chunk-VG6UF6UT.mjs → chunk-RP3SQYA3.mjs} +2 -2
  61. package/dist/chunk-RRBS6D63.mjs +163 -0
  62. package/dist/chunk-SMQ3DG25.mjs +285 -0
  63. package/dist/chunk-SPJ5KXW7.mjs +199 -0
  64. package/dist/chunk-SYOD63OZ.mjs +225 -0
  65. package/dist/chunk-UFYSFDER.mjs +42 -0
  66. package/dist/chunk-VACKZOMY.mjs +190 -0
  67. package/dist/chunk-VLQZANBF.mjs +42 -0
  68. package/dist/chunk-WA6O6EUR.mjs +1885 -0
  69. package/dist/{chunk-E3K6O4FZ.mjs → chunk-WAZD7NFU.mjs} +5 -2
  70. package/dist/chunk-WG6JGJXB.mjs +165 -0
  71. package/dist/{chunk-I64K754C.mjs → chunk-WNGWBVLV.mjs} +2 -2
  72. package/dist/{chunk-3U7SD3MS.mjs → chunk-WOEHFRGB.mjs} +3 -3
  73. package/dist/{chunk-DKZRJOMF.mjs → chunk-XIRTEFKH.mjs} +12 -12
  74. package/dist/chunk-Y6DWJSKZ.mjs +79 -0
  75. package/dist/chunk-YKPROFLB.mjs +161 -0
  76. package/dist/{chunk-K76E2TQU.mjs → chunk-ZRO5JO3H.mjs} +107 -67
  77. package/dist/{chunk-VYMHBV6D.mjs → chunk-ZU4NV6RG.mjs} +5 -3
  78. package/dist/components/ui/accordion.js +40 -4
  79. package/dist/components/ui/accordion.mjs +2 -2
  80. package/dist/components/ui/add-column-modal.js +789 -0
  81. package/dist/components/ui/add-column-modal.mjs +17 -0
  82. package/dist/components/ui/add-lead-modal.js +647 -0
  83. package/dist/components/ui/add-lead-modal.mjs +16 -0
  84. package/dist/components/ui/ai-assistant-drawer.js +686 -0
  85. package/dist/components/ui/ai-assistant-drawer.mjs +16 -0
  86. package/dist/components/ui/alert-dialog.js +37 -5
  87. package/dist/components/ui/alert-dialog.mjs +4 -4
  88. package/dist/components/ui/alert.js +37 -11
  89. package/dist/components/ui/alert.mjs +2 -2
  90. package/dist/components/ui/avatar.js +36 -8
  91. package/dist/components/ui/avatar.mjs +2 -2
  92. package/dist/components/ui/backoffice-alert-history-chart.js +624 -0
  93. package/dist/components/ui/backoffice-alert-history-chart.mjs +16 -0
  94. package/dist/components/ui/backoffice-contact-history-chart.js +687 -0
  95. package/dist/components/ui/backoffice-contact-history-chart.mjs +16 -0
  96. package/dist/components/ui/badge.js +37 -2
  97. package/dist/components/ui/badge.mjs +2 -2
  98. package/dist/components/ui/borrowing-capacity-line-chart.js +639 -0
  99. package/dist/components/ui/borrowing-capacity-line-chart.mjs +16 -0
  100. package/dist/components/ui/button.js +35 -3
  101. package/dist/components/ui/button.mjs +2 -2
  102. package/dist/components/ui/calendar.js +43 -19
  103. package/dist/components/ui/calendar.mjs +3 -3
  104. package/dist/components/ui/card.js +40 -4
  105. package/dist/components/ui/card.mjs +2 -2
  106. package/dist/components/ui/cash-balance-line-chart.js +627 -0
  107. package/dist/components/ui/cash-balance-line-chart.mjs +16 -0
  108. package/dist/components/ui/cashflow-bar-chart.js +650 -0
  109. package/dist/components/ui/cashflow-bar-chart.mjs +16 -0
  110. package/dist/components/ui/checkbox.js +36 -5
  111. package/dist/components/ui/checkbox.mjs +2 -3
  112. package/dist/components/ui/chip.js +37 -2
  113. package/dist/components/ui/chip.mjs +3 -3
  114. package/dist/components/ui/combobox.js +280 -0
  115. package/dist/components/ui/combobox.mjs +28 -0
  116. package/dist/components/ui/data-table.js +160 -88
  117. package/dist/components/ui/data-table.mjs +10 -11
  118. package/dist/components/ui/date-picker.js +44 -20
  119. package/dist/components/ui/date-picker.mjs +6 -7
  120. package/dist/components/ui/dialog.js +44 -12
  121. package/dist/components/ui/dialog.mjs +4 -4
  122. package/dist/components/ui/drawer.js +46 -10
  123. package/dist/components/ui/drawer.mjs +3 -3
  124. package/dist/components/ui/dropdown-menu.js +40 -16
  125. package/dist/components/ui/dropdown-menu.mjs +3 -3
  126. package/dist/components/ui/empty.js +41 -5
  127. package/dist/components/ui/empty.mjs +2 -2
  128. package/dist/components/ui/expense-bar-chart.js +642 -0
  129. package/dist/components/ui/expense-bar-chart.mjs +16 -0
  130. package/dist/components/ui/field.js +53 -21
  131. package/dist/components/ui/field.mjs +4 -4
  132. package/dist/components/ui/financial-cards.js +1002 -0
  133. package/dist/components/ui/financial-cards.mjs +24 -0
  134. package/dist/components/ui/financial-drawers.js +637 -0
  135. package/dist/components/ui/financial-drawers.mjs +17 -0
  136. package/dist/components/ui/financial-primitives.js +218 -0
  137. package/dist/components/ui/financial-primitives.mjs +22 -0
  138. package/dist/components/ui/financial-sections.js +1422 -0
  139. package/dist/components/ui/financial-sections.mjs +30 -0
  140. package/dist/components/ui/form-primitives.js +682 -0
  141. package/dist/components/ui/form-primitives.mjs +19 -0
  142. package/dist/components/ui/income-bar-chart.js +641 -0
  143. package/dist/components/ui/income-bar-chart.mjs +16 -0
  144. package/dist/components/ui/input-group.js +43 -7
  145. package/dist/components/ui/input-group.mjs +5 -5
  146. package/dist/components/ui/input-otp.js +39 -3
  147. package/dist/components/ui/input-otp.mjs +2 -2
  148. package/dist/components/ui/input.js +34 -2
  149. package/dist/components/ui/input.mjs +2 -2
  150. package/dist/components/ui/kanban-column.js +1143 -0
  151. package/dist/components/ui/kanban-column.mjs +20 -0
  152. package/dist/components/ui/label.js +35 -7
  153. package/dist/components/ui/label.mjs +2 -2
  154. package/dist/components/ui/opportunity-card.js +960 -0
  155. package/dist/components/ui/opportunity-card.mjs +20 -0
  156. package/dist/components/ui/opportunity-edit-modals.js +3360 -0
  157. package/dist/components/ui/opportunity-edit-modals.mjs +37 -0
  158. package/dist/components/ui/opportunity-summary-tab.js +4365 -0
  159. package/dist/components/ui/opportunity-summary-tab.mjs +34 -0
  160. package/dist/components/ui/pagination.js +35 -3
  161. package/dist/components/ui/pagination.mjs +3 -3
  162. package/dist/components/ui/pipeline-alerts.js +103 -0
  163. package/dist/components/ui/pipeline-alerts.mjs +8 -0
  164. package/dist/components/ui/pipeline-board.js +1408 -0
  165. package/dist/components/ui/pipeline-board.mjs +24 -0
  166. package/dist/components/ui/pipeline-chart.js +216 -0
  167. package/dist/components/ui/pipeline-chart.mjs +10 -0
  168. package/dist/components/ui/pipeline-dialogs.js +1183 -0
  169. package/dist/components/ui/pipeline-dialogs.mjs +23 -0
  170. package/dist/components/ui/pipeline-primitives.js +300 -0
  171. package/dist/components/ui/pipeline-primitives.mjs +11 -0
  172. package/dist/components/ui/popover.js +45 -4
  173. package/dist/components/ui/popover.mjs +3 -3
  174. package/dist/components/ui/progress.js +33 -1
  175. package/dist/components/ui/progress.mjs +2 -2
  176. package/dist/components/ui/property-cashflow-doughnut-chart.js +523 -0
  177. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +16 -0
  178. package/dist/components/ui/property-debt-equity-doughnut-chart.js +521 -0
  179. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +16 -0
  180. package/dist/components/ui/property-mobile-estimate-line-chart.js +682 -0
  181. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +16 -0
  182. package/dist/components/ui/radio-group.js +33 -1
  183. package/dist/components/ui/radio-group.mjs +2 -2
  184. package/dist/components/ui/select.js +66 -26
  185. package/dist/components/ui/select.mjs +3 -3
  186. package/dist/components/ui/separator.js +33 -1
  187. package/dist/components/ui/separator.mjs +2 -2
  188. package/dist/components/ui/sheet.js +37 -9
  189. package/dist/components/ui/sheet.mjs +3 -3
  190. package/dist/components/ui/skeleton.js +33 -1
  191. package/dist/components/ui/skeleton.mjs +2 -2
  192. package/dist/components/ui/slider.js +86 -102
  193. package/dist/components/ui/slider.mjs +2 -2
  194. package/dist/components/ui/spinner.js +33 -1
  195. package/dist/components/ui/spinner.mjs +2 -2
  196. package/dist/components/ui/stage-timeline.js +579 -0
  197. package/dist/components/ui/stage-timeline.mjs +15 -0
  198. package/dist/components/ui/switch.js +37 -4
  199. package/dist/components/ui/switch.mjs +2 -3
  200. package/dist/components/ui/table.js +37 -5
  201. package/dist/components/ui/table.mjs +2 -2
  202. package/dist/components/ui/tabs.js +36 -12
  203. package/dist/components/ui/tabs.mjs +2 -2
  204. package/dist/components/ui/textarea.js +34 -2
  205. package/dist/components/ui/textarea.mjs +2 -2
  206. package/dist/components/ui/toggle-group.js +35 -4
  207. package/dist/components/ui/toggle-group.mjs +3 -4
  208. package/dist/components/ui/toggle.js +35 -4
  209. package/dist/components/ui/toggle.mjs +2 -3
  210. package/dist/components/ui/tooltip.js +51 -22
  211. package/dist/components/ui/tooltip.mjs +3 -3
  212. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +528 -0
  213. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +16 -0
  214. package/dist/components/ui/transactions-income-expense-bar-chart.js +516 -0
  215. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +16 -0
  216. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +528 -0
  217. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +16 -0
  218. package/dist/index.js +11613 -2868
  219. package/dist/index.mjs +377 -164
  220. package/dist/lib/theme-provider.js +10 -1
  221. package/dist/lib/theme-provider.mjs +1 -1
  222. package/dist/lib/typography.js +8 -0
  223. package/dist/lib/typography.mjs +3 -1
  224. package/dist/lib/utils.js +33 -1
  225. package/dist/lib/utils.mjs +1 -1
  226. package/dist/styles.css +1 -1
  227. package/package.json +169 -6
  228. package/src/components/index.tsx +323 -13
  229. package/src/components/ui/accordion.tsx +6 -3
  230. package/src/components/ui/add-column-modal.tsx +339 -0
  231. package/src/components/ui/add-lead-modal.tsx +290 -0
  232. package/src/components/ui/ai-assistant-drawer.tsx +408 -0
  233. package/src/components/ui/alert-dialog.tsx +80 -54
  234. package/src/components/ui/alert.tsx +28 -28
  235. package/src/components/ui/avatar.tsx +30 -29
  236. package/src/components/ui/backoffice-alert-history-chart.tsx +260 -0
  237. package/src/components/ui/backoffice-contact-history-chart.tsx +325 -0
  238. package/src/components/ui/badge.tsx +17 -15
  239. package/src/components/ui/borrowing-capacity-line-chart.tsx +357 -0
  240. package/src/components/ui/button.tsx +30 -27
  241. package/src/components/ui/calendar.tsx +53 -67
  242. package/src/components/ui/card.tsx +27 -24
  243. package/src/components/ui/cash-balance-line-chart.tsx +302 -0
  244. package/src/components/ui/cashflow-bar-chart.tsx +363 -0
  245. package/src/components/ui/chart-shared.tsx +261 -0
  246. package/src/components/ui/checkbox.tsx +30 -26
  247. package/src/components/ui/combobox.tsx +223 -0
  248. package/src/components/ui/data-table.tsx +160 -99
  249. package/src/components/ui/date-picker.tsx +0 -2
  250. package/src/components/ui/dialog.tsx +70 -60
  251. package/src/components/ui/drawer.tsx +57 -48
  252. package/src/components/ui/dropdown-menu.tsx +90 -82
  253. package/src/components/ui/empty.tsx +31 -27
  254. package/src/components/ui/expense-bar-chart.tsx +296 -0
  255. package/src/components/ui/field.tsx +70 -62
  256. package/src/components/ui/financial-cards.tsx +830 -0
  257. package/src/components/ui/financial-drawers.tsx +339 -0
  258. package/src/components/ui/financial-primitives.tsx +331 -0
  259. package/src/components/ui/financial-sections.tsx +672 -0
  260. package/src/components/ui/form-primitives.tsx +536 -0
  261. package/src/components/ui/income-bar-chart.tsx +297 -0
  262. package/src/components/ui/input-group.tsx +41 -34
  263. package/src/components/ui/input-otp.tsx +29 -24
  264. package/src/components/ui/input.tsx +8 -8
  265. package/src/components/ui/kanban-column.tsx +333 -0
  266. package/src/components/ui/label.tsx +9 -12
  267. package/src/components/ui/opportunity-card.tsx +616 -0
  268. package/src/components/ui/opportunity-edit-modals.tsx +2528 -0
  269. package/src/components/ui/opportunity-summary-tab.tsx +579 -0
  270. package/src/components/ui/pipeline-alerts.tsx +74 -0
  271. package/src/components/ui/pipeline-board.tsx +268 -0
  272. package/src/components/ui/pipeline-chart.tsx +173 -0
  273. package/src/components/ui/pipeline-dialogs.tsx +303 -0
  274. package/src/components/ui/pipeline-primitives.tsx +108 -0
  275. package/src/components/ui/popover.tsx +41 -36
  276. package/src/components/ui/property-cashflow-doughnut-chart.tsx +188 -0
  277. package/src/components/ui/property-debt-equity-doughnut-chart.tsx +185 -0
  278. package/src/components/ui/property-mobile-estimate-line-chart.tsx +393 -0
  279. package/src/components/ui/select.tsx +65 -52
  280. package/src/components/ui/sheet.tsx +55 -52
  281. package/src/components/ui/slider.tsx +54 -77
  282. package/src/components/ui/stage-timeline.tsx +205 -0
  283. package/src/components/ui/switch.tsx +42 -29
  284. package/src/components/ui/table.tsx +28 -28
  285. package/src/components/ui/tabs.tsx +22 -28
  286. package/src/components/ui/textarea.tsx +8 -8
  287. package/src/components/ui/toggle-group.tsx +0 -2
  288. package/src/components/ui/toggle.tsx +13 -15
  289. package/src/components/ui/tooltip.tsx +30 -28
  290. package/src/components/ui/transactions-expense-categories-doughnut-chart.tsx +191 -0
  291. package/src/components/ui/transactions-income-expense-bar-chart.tsx +205 -0
  292. package/src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx +191 -0
  293. package/src/lib/theme-provider.tsx +10 -0
  294. package/src/lib/typography.ts +9 -0
  295. package/src/lib/utils.ts +41 -3
  296. package/src/styles/globals.css +371 -124
  297. package/src/styles/styles-css.ts +1 -1
  298. package/tsup.config.ts +32 -0
  299. package/dist/chunk-K74JRTJR.mjs +0 -105
  300. package/dist/chunk-V7CNWJT3.mjs +0 -10
@@ -0,0 +1,682 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ // If the importer is in node compatibility mode or this is not an ESM
51
+ // file that has been converted to a CommonJS file using a Babel-
52
+ // compatible transform (i.e. "__esModule" has not been set), then set
53
+ // "default" to the CommonJS "module.exports" for node compatibility.
54
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
55
+ mod
56
+ ));
57
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
+
59
+ // src/components/ui/form-primitives.tsx
60
+ var form_primitives_exports = {};
61
+ __export(form_primitives_exports, {
62
+ AddressAutocomplete: () => AddressAutocomplete,
63
+ ConcernScale: () => ConcernScale,
64
+ CurrencyInputWithSlider: () => CurrencyInputWithSlider,
65
+ OwnershipSplit: () => OwnershipSplit
66
+ });
67
+ module.exports = __toCommonJS(form_primitives_exports);
68
+ var React3 = __toESM(require("react"));
69
+ var import_lucide_react = require("lucide-react");
70
+
71
+ // src/lib/utils.ts
72
+ var import_clsx = require("clsx");
73
+ var import_tailwind_merge = require("tailwind-merge");
74
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
75
+ extend: {
76
+ classGroups: {
77
+ "font-size": [
78
+ {
79
+ text: [
80
+ "display-large",
81
+ "display-medium",
82
+ "display-small",
83
+ "h1",
84
+ "h2",
85
+ "h3",
86
+ "h4",
87
+ "h5",
88
+ "h6",
89
+ "body-large",
90
+ "body-medium",
91
+ "body-small",
92
+ "label-large",
93
+ "label-medium",
94
+ "label-small",
95
+ "button",
96
+ "button-xs",
97
+ "caption",
98
+ "overline",
99
+ "code"
100
+ ]
101
+ }
102
+ ]
103
+ }
104
+ }
105
+ });
106
+ function cn(...inputs) {
107
+ return twMerge((0, import_clsx.clsx)(inputs));
108
+ }
109
+
110
+ // src/components/ui/input.tsx
111
+ var import_jsx_runtime = require("react/jsx-runtime");
112
+ function Input(_a) {
113
+ var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
114
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
115
+ "input",
116
+ __spreadValues({
117
+ className: cn(
118
+ "h-9 w-full min-w-0 border border-input bg-transparent px-3 py-1 text-body-medium font-sans shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-label-medium file:text-foreground placeholder:font-normal placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30",
119
+ "focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20",
120
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
121
+ className
122
+ ),
123
+ "data-slot": "input",
124
+ type
125
+ }, props)
126
+ );
127
+ }
128
+
129
+ // src/components/ui/label.tsx
130
+ var import_jsx_runtime2 = (
131
+ // eslint-disable-next-line jsx-a11y/label-has-associated-control -- htmlFor is passed by the consumer
132
+ require("react/jsx-runtime")
133
+ );
134
+ function Label(_a) {
135
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
136
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
137
+ "label",
138
+ __spreadValues({
139
+ className: cn(
140
+ "flex items-center gap-2 text-label-medium leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
141
+ className
142
+ ),
143
+ "data-slot": "label"
144
+ }, props)
145
+ );
146
+ }
147
+
148
+ // src/components/ui/slider.tsx
149
+ var React = __toESM(require("react"));
150
+ var import_slider = require("@base-ui/react/slider");
151
+ var import_jsx_runtime3 = require("react/jsx-runtime");
152
+ var Slider = React.forwardRef(
153
+ ({
154
+ className,
155
+ value,
156
+ defaultValue = 0,
157
+ min = 0,
158
+ max = 100,
159
+ step = 1,
160
+ disabled = false,
161
+ onValueChange
162
+ }, ref) => {
163
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
164
+ import_slider.Slider.Root,
165
+ {
166
+ ref,
167
+ value,
168
+ defaultValue,
169
+ min,
170
+ max,
171
+ step,
172
+ disabled,
173
+ thumbAlignment: "edge",
174
+ onValueChange: (val) => onValueChange == null ? void 0 : onValueChange(val),
175
+ "data-slot": "slider",
176
+ className: cn(
177
+ "relative w-full touch-none select-none",
178
+ disabled && "opacity-50",
179
+ className
180
+ ),
181
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
182
+ import_slider.Slider.Control,
183
+ {
184
+ className: "relative flex h-5 w-full cursor-pointer items-center",
185
+ "data-slot": "slider-control",
186
+ children: [
187
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
188
+ import_slider.Slider.Track,
189
+ {
190
+ className: "relative h-2 w-full overflow-hidden rounded-full bg-muted",
191
+ "data-slot": "slider-track",
192
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
193
+ import_slider.Slider.Indicator,
194
+ {
195
+ className: "absolute h-full rounded-full bg-primary",
196
+ "data-slot": "slider-indicator"
197
+ }
198
+ )
199
+ }
200
+ ),
201
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
202
+ import_slider.Slider.Thumb,
203
+ {
204
+ className: cn(
205
+ "block size-5 rounded-full border-2 border-primary bg-background shadow-sm",
206
+ "outline-none"
207
+ ),
208
+ "data-slot": "slider-thumb"
209
+ }
210
+ )
211
+ ]
212
+ }
213
+ )
214
+ }
215
+ );
216
+ }
217
+ );
218
+ Slider.displayName = "Slider";
219
+
220
+ // src/components/ui/toggle-group.tsx
221
+ var React2 = __toESM(require("react"));
222
+ var import_toggle_group = require("@base-ui/react/toggle-group");
223
+ var import_toggle2 = require("@base-ui/react/toggle");
224
+
225
+ // src/components/ui/toggle.tsx
226
+ var import_class_variance_authority = require("class-variance-authority");
227
+ var import_toggle = require("@base-ui/react/toggle");
228
+ var import_jsx_runtime4 = require("react/jsx-runtime");
229
+ var toggleVariants = (0, import_class_variance_authority.cva)(
230
+ "inline-flex items-center justify-center gap-2 text-label-medium whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-pressed:bg-primary/10 data-pressed:inset-ring data-pressed:inset-ring-primary data-pressed:text-foreground data-pressed:hover:bg-primary/10 data-pressed:hover:text-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
231
+ {
232
+ variants: {
233
+ variant: {
234
+ default: "bg-transparent hover:bg-muted hover:text-muted-foreground",
235
+ outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
236
+ },
237
+ size: {
238
+ default: "h-9 min-w-9 px-2",
239
+ sm: "h-8 min-w-8 px-1.5 text-caption",
240
+ lg: "h-10 min-w-10 px-2.5"
241
+ }
242
+ },
243
+ defaultVariants: {
244
+ variant: "default",
245
+ size: "default"
246
+ }
247
+ }
248
+ );
249
+
250
+ // src/components/ui/toggle-group.tsx
251
+ var import_jsx_runtime5 = require("react/jsx-runtime");
252
+ var ToggleGroupContext = React2.createContext({
253
+ size: "default",
254
+ variant: "default",
255
+ spacing: 0
256
+ });
257
+ function ToggleGroup(_a) {
258
+ var _b = _a, {
259
+ className,
260
+ variant,
261
+ size,
262
+ spacing = 0,
263
+ type,
264
+ children
265
+ } = _b, props = __objRest(_b, [
266
+ "className",
267
+ "variant",
268
+ "size",
269
+ "spacing",
270
+ "type",
271
+ "children"
272
+ ]);
273
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
274
+ import_toggle_group.ToggleGroup,
275
+ __spreadProps(__spreadValues({
276
+ className: cn(
277
+ // WealthX: removed rounded-md (sharp corners) and shadow-xs (flat panels)
278
+ "group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))]",
279
+ className
280
+ ),
281
+ "data-size": size,
282
+ "data-slot": "toggle-group",
283
+ "data-spacing": spacing,
284
+ "data-variant": variant,
285
+ multiple: type === "multiple",
286
+ style: { "--gap": spacing }
287
+ }, props), {
288
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
289
+ })
290
+ );
291
+ }
292
+ function ToggleGroupItem(_a) {
293
+ var _b = _a, {
294
+ className,
295
+ children,
296
+ variant,
297
+ size
298
+ } = _b, props = __objRest(_b, [
299
+ "className",
300
+ "children",
301
+ "variant",
302
+ "size"
303
+ ]);
304
+ const context = React2.useContext(ToggleGroupContext);
305
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
306
+ import_toggle2.Toggle,
307
+ __spreadProps(__spreadValues({
308
+ className: cn(
309
+ toggleVariants({
310
+ variant: context.variant || variant,
311
+ size: context.size || size
312
+ }),
313
+ "w-auto min-w-0 shrink-0 focus:z-10 focus-visible:z-10",
314
+ // WealthX: no rounded corners on grouped items
315
+ "data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l",
316
+ className
317
+ ),
318
+ "data-size": context.size || size,
319
+ "data-slot": "toggle-group-item",
320
+ "data-spacing": context.spacing,
321
+ "data-variant": context.variant || variant
322
+ }, props), {
323
+ children
324
+ })
325
+ );
326
+ }
327
+
328
+ // src/components/ui/form-primitives.tsx
329
+ var import_jsx_runtime6 = require("react/jsx-runtime");
330
+ function parseCurrencyToNumber(raw) {
331
+ const cleaned = raw.replace(/[^0-9.]/g, "");
332
+ const n = parseFloat(cleaned);
333
+ return isNaN(n) ? 0 : n;
334
+ }
335
+ function formatNumberToCurrency(n) {
336
+ return "$" + Math.round(n).toLocaleString("en-AU");
337
+ }
338
+ function CurrencyInputWithSlider({
339
+ value: controlledValue,
340
+ defaultValue = 0,
341
+ min = 0,
342
+ max = 5e6,
343
+ step = 1e4,
344
+ disabled = false,
345
+ onValueChange,
346
+ className
347
+ }) {
348
+ const [internalValue, setInternalValue] = React3.useState(defaultValue);
349
+ const numericValue = controlledValue !== void 0 ? controlledValue : internalValue;
350
+ const [inputText, setInputText] = React3.useState(
351
+ formatNumberToCurrency(numericValue)
352
+ );
353
+ const [isFocused, setIsFocused] = React3.useState(false);
354
+ React3.useEffect(() => {
355
+ if (!isFocused) {
356
+ setInputText(formatNumberToCurrency(numericValue));
357
+ }
358
+ }, [numericValue, isFocused]);
359
+ const commitValue = (n) => {
360
+ const clamped = Math.max(min, Math.min(max, n));
361
+ if (controlledValue === void 0) setInternalValue(clamped);
362
+ onValueChange == null ? void 0 : onValueChange(clamped);
363
+ setInputText(formatNumberToCurrency(clamped));
364
+ };
365
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cn("flex flex-col gap-3", className), children: [
366
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
367
+ Input,
368
+ {
369
+ type: "text",
370
+ value: isFocused ? inputText : formatNumberToCurrency(numericValue),
371
+ disabled,
372
+ onFocus: () => {
373
+ setIsFocused(true);
374
+ setInputText(formatNumberToCurrency(numericValue));
375
+ },
376
+ onChange: (e) => setInputText(e.target.value),
377
+ onBlur: () => {
378
+ setIsFocused(false);
379
+ commitValue(parseCurrencyToNumber(inputText));
380
+ },
381
+ onKeyDown: (e) => {
382
+ if (e.key === "Enter") {
383
+ e.target.blur();
384
+ }
385
+ },
386
+ className: "tabular-nums",
387
+ "aria-label": "Currency amount"
388
+ }
389
+ ),
390
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
391
+ Slider,
392
+ {
393
+ value: numericValue,
394
+ min,
395
+ max,
396
+ step,
397
+ disabled,
398
+ onValueChange: (n) => {
399
+ if (controlledValue === void 0) setInternalValue(n);
400
+ onValueChange == null ? void 0 : onValueChange(n);
401
+ }
402
+ }
403
+ )
404
+ ] });
405
+ }
406
+ var CONCERN_LABELS = {
407
+ 1: "Not important",
408
+ 2: "Slightly important",
409
+ 3: "Moderately important",
410
+ 4: "Very important",
411
+ 5: "Critical"
412
+ };
413
+ function ConcernScale({
414
+ value: controlledValue,
415
+ defaultValue = 0,
416
+ disabled = false,
417
+ steps = 5,
418
+ lowLabel = "Not important",
419
+ highLabel = "Critical",
420
+ onValueChange,
421
+ className
422
+ }) {
423
+ var _a;
424
+ const [internalValue, setInternalValue] = React3.useState(defaultValue);
425
+ const selected = controlledValue !== void 0 ? controlledValue : internalValue;
426
+ const handleValueChange = (val) => {
427
+ const n = val ? Number(val) : 0;
428
+ if (controlledValue === void 0) setInternalValue(n);
429
+ onValueChange == null ? void 0 : onValueChange(n);
430
+ };
431
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cn("flex flex-col gap-2", className), children: [
432
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
433
+ ToggleGroup,
434
+ {
435
+ type: "single",
436
+ value: selected > 0 ? String(selected) : "",
437
+ onValueChange: handleValueChange,
438
+ variant: "outline",
439
+ size: "sm",
440
+ disabled,
441
+ className: "w-full",
442
+ children: Array.from({ length: steps }, (_, i) => i + 1).map((n) => {
443
+ var _a2;
444
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
445
+ ToggleGroupItem,
446
+ {
447
+ value: String(n),
448
+ "aria-label": (_a2 = CONCERN_LABELS[n]) != null ? _a2 : String(n),
449
+ className: "flex-1",
450
+ children: n
451
+ },
452
+ n
453
+ );
454
+ })
455
+ }
456
+ ),
457
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex justify-between text-[10px] text-muted-foreground", children: [
458
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: lowLabel }),
459
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: highLabel })
460
+ ] }),
461
+ selected > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-xs text-foreground", children: (_a = CONCERN_LABELS[selected]) != null ? _a : `Level ${selected}` })
462
+ ] });
463
+ }
464
+ var DEFAULT_SUGGESTIONS = [
465
+ {
466
+ id: "1",
467
+ label: "12 Harbour View Terrace, Mosman NSW 2088",
468
+ suburb: "Mosman",
469
+ state: "NSW",
470
+ postcode: "2088"
471
+ },
472
+ {
473
+ id: "2",
474
+ label: "5 Coastal Road, Manly NSW 2095",
475
+ suburb: "Manly",
476
+ state: "NSW",
477
+ postcode: "2095"
478
+ },
479
+ {
480
+ id: "3",
481
+ label: "24 Collins Street, Melbourne VIC 3000",
482
+ suburb: "Melbourne",
483
+ state: "VIC",
484
+ postcode: "3000"
485
+ },
486
+ {
487
+ id: "4",
488
+ label: "88 Pacific Highway, St Leonards NSW 2065",
489
+ suburb: "St Leonards",
490
+ state: "NSW",
491
+ postcode: "2065"
492
+ },
493
+ {
494
+ id: "5",
495
+ label: "1 Queen Street, Brisbane QLD 4000",
496
+ suburb: "Brisbane",
497
+ state: "QLD",
498
+ postcode: "4000"
499
+ }
500
+ ];
501
+ function AddressAutocomplete({
502
+ value: controlledValue,
503
+ placeholder = "Start typing an address\u2026",
504
+ suggestions = DEFAULT_SUGGESTIONS,
505
+ disabled = false,
506
+ onValueChange,
507
+ onSelect,
508
+ className
509
+ }) {
510
+ const [internalValue, setInternalValue] = React3.useState("");
511
+ const inputValue = controlledValue !== void 0 ? controlledValue : internalValue;
512
+ const [open, setOpen] = React3.useState(false);
513
+ const [activeIndex, setActiveIndex] = React3.useState(-1);
514
+ const containerRef = React3.useRef(null);
515
+ const listRef = React3.useRef(null);
516
+ const filtered = React3.useMemo(() => {
517
+ if (!inputValue.trim()) return suggestions.slice(0, 5);
518
+ const q = inputValue.toLowerCase();
519
+ return suggestions.filter((s) => s.label.toLowerCase().includes(q)).slice(0, 5);
520
+ }, [inputValue, suggestions]);
521
+ const setValue = (v) => {
522
+ if (controlledValue === void 0) setInternalValue(v);
523
+ onValueChange == null ? void 0 : onValueChange(v);
524
+ };
525
+ const handleSelect = (opt) => {
526
+ setValue(opt.label);
527
+ onSelect == null ? void 0 : onSelect(opt);
528
+ setOpen(false);
529
+ setActiveIndex(-1);
530
+ };
531
+ const handleKeyDown = (e) => {
532
+ if (!open) return;
533
+ if (e.key === "ArrowDown") {
534
+ e.preventDefault();
535
+ setActiveIndex((i) => Math.min(i + 1, filtered.length - 1));
536
+ } else if (e.key === "ArrowUp") {
537
+ e.preventDefault();
538
+ setActiveIndex((i) => Math.max(i - 1, -1));
539
+ } else if (e.key === "Enter" && activeIndex >= 0) {
540
+ e.preventDefault();
541
+ handleSelect(filtered[activeIndex]);
542
+ } else if (e.key === "Escape") {
543
+ setOpen(false);
544
+ }
545
+ };
546
+ React3.useEffect(() => {
547
+ const handler = (e) => {
548
+ if (containerRef.current && !containerRef.current.contains(e.target)) {
549
+ setOpen(false);
550
+ }
551
+ };
552
+ document.addEventListener("mousedown", handler);
553
+ return () => document.removeEventListener("mousedown", handler);
554
+ }, []);
555
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { ref: containerRef, className: cn("relative", className), children: [
556
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "relative", children: [
557
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground pointer-events-none" }),
558
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
559
+ Input,
560
+ {
561
+ type: "text",
562
+ value: inputValue,
563
+ placeholder,
564
+ disabled,
565
+ className: "pl-8",
566
+ onChange: (e) => {
567
+ setValue(e.target.value);
568
+ setOpen(true);
569
+ setActiveIndex(-1);
570
+ },
571
+ onFocus: () => setOpen(true),
572
+ onKeyDown: handleKeyDown,
573
+ "aria-autocomplete": "list",
574
+ "aria-expanded": open
575
+ }
576
+ )
577
+ ] }),
578
+ open && filtered.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
579
+ "ul",
580
+ {
581
+ ref: listRef,
582
+ role: "listbox",
583
+ className: cn(
584
+ "absolute z-50 top-full left-0 right-0 mt-1",
585
+ "border border-border bg-popover shadow-md",
586
+ "max-h-48 overflow-y-auto py-1"
587
+ ),
588
+ children: filtered.map((opt, idx) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
589
+ "li",
590
+ {
591
+ role: "option",
592
+ "aria-selected": idx === activeIndex,
593
+ onMouseEnter: () => setActiveIndex(idx),
594
+ onMouseDown: (e) => {
595
+ e.preventDefault();
596
+ handleSelect(opt);
597
+ },
598
+ className: cn(
599
+ "flex items-center gap-2 px-3 py-2 text-sm cursor-pointer",
600
+ idx === activeIndex ? "bg-accent text-accent-foreground" : "hover:bg-accent/50"
601
+ ),
602
+ children: [
603
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "flex-1 truncate", children: opt.label }),
604
+ idx === activeIndex && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react.Check, { className: "h-3.5 w-3.5 shrink-0 text-primary" })
605
+ ]
606
+ },
607
+ opt.id
608
+ ))
609
+ }
610
+ )
611
+ ] });
612
+ }
613
+ var DEFAULT_OWNERS = [
614
+ { id: "main", name: "Main Applicant", share: 50 },
615
+ { id: "co", name: "Co-Applicant", share: 50 }
616
+ ];
617
+ function OwnershipSplit({
618
+ owners: controlledOwners,
619
+ disabled = false,
620
+ onOwnersChange,
621
+ className
622
+ }) {
623
+ const [internalOwners, setInternalOwners] = React3.useState(DEFAULT_OWNERS);
624
+ const owners = controlledOwners !== void 0 ? controlledOwners : internalOwners;
625
+ const setOwners = (updated) => {
626
+ if (controlledOwners === void 0) setInternalOwners(updated);
627
+ onOwnersChange == null ? void 0 : onOwnersChange(updated);
628
+ };
629
+ const handleSliderChange = (id, newShare) => {
630
+ if (owners.length !== 2) return;
631
+ const clamped = Math.max(0, Math.min(100, Math.round(newShare)));
632
+ const other = owners.find((o) => o.id !== id);
633
+ if (!other) return;
634
+ setOwners(
635
+ owners.map(
636
+ (o) => o.id === id ? __spreadProps(__spreadValues({}, o), { share: clamped }) : __spreadProps(__spreadValues({}, o), { share: 100 - clamped })
637
+ )
638
+ );
639
+ };
640
+ const handleInputChange = (id, raw) => {
641
+ const n = parseInt(raw.replace(/[^0-9]/g, ""), 10);
642
+ if (isNaN(n)) return;
643
+ handleSliderChange(id, n);
644
+ };
645
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn("flex gap-4", className), children: owners.map((owner) => {
646
+ const pct = Math.max(0, Math.min(100, owner.share));
647
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col gap-2 flex-1", children: [
648
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center justify-between", children: [
649
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Label, { className: "text-xs font-medium", children: owner.name }),
650
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
651
+ Input,
652
+ {
653
+ type: "text",
654
+ value: `${pct}%`,
655
+ disabled,
656
+ className: "w-14 h-7 text-xs text-right tabular-nums px-2",
657
+ onChange: (e) => handleInputChange(owner.id, e.target.value),
658
+ onBlur: (e) => handleInputChange(owner.id, e.target.value)
659
+ }
660
+ )
661
+ ] }),
662
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
663
+ Slider,
664
+ {
665
+ value: pct,
666
+ min: 0,
667
+ max: 100,
668
+ step: 1,
669
+ disabled,
670
+ onValueChange: (n) => handleSliderChange(owner.id, n)
671
+ }
672
+ )
673
+ ] }, owner.id);
674
+ }) });
675
+ }
676
+ // Annotate the CommonJS export names for ESM import in node:
677
+ 0 && (module.exports = {
678
+ AddressAutocomplete,
679
+ ConcernScale,
680
+ CurrencyInputWithSlider,
681
+ OwnershipSplit
682
+ });
@@ -0,0 +1,19 @@
1
+ import {
2
+ AddressAutocomplete,
3
+ ConcernScale,
4
+ CurrencyInputWithSlider,
5
+ OwnershipSplit
6
+ } from "../../chunk-DOH3EHX7.mjs";
7
+ import "../../chunk-Y6DWJSKZ.mjs";
8
+ import "../../chunk-PMB3A7V3.mjs";
9
+ import "../../chunk-WOEHFRGB.mjs";
10
+ import "../../chunk-NSLMILBT.mjs";
11
+ import "../../chunk-GYMYRIZP.mjs";
12
+ import "../../chunk-VLQZANBF.mjs";
13
+ import "../../chunk-FWCSY2DS.mjs";
14
+ export {
15
+ AddressAutocomplete,
16
+ ConcernScale,
17
+ CurrencyInputWithSlider,
18
+ OwnershipSplit
19
+ };