@wealthx/shadcn 1.4.1 → 1.5.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 (430) hide show
  1. package/.turbo/turbo-build.log +360 -180
  2. package/CHANGELOG.md +6 -0
  3. package/dist/chunk-2A53WPEC.mjs +182 -0
  4. package/dist/{chunk-SIVYAI3M.mjs → chunk-2LLFNGJZ.mjs} +15 -15
  5. package/dist/chunk-2QNOPXMQ.mjs +360 -0
  6. package/dist/{chunk-K5QV4TT6.mjs → chunk-2WCIORP7.mjs} +29 -4
  7. package/dist/{chunk-5NF6T2RS.mjs → chunk-3AREQTZU.mjs} +8 -8
  8. package/dist/{chunk-2EM2FRU6.mjs → chunk-3WGFIFP6.mjs} +5 -5
  9. package/dist/{chunk-K4KOD3KR.mjs → chunk-42NEC57Y.mjs} +44 -25
  10. package/dist/{chunk-FL6DZFJK.mjs → chunk-46Q4335I.mjs} +121 -39
  11. package/dist/chunk-4DO3WM7V.mjs +48 -0
  12. package/dist/chunk-5FHBC6DY.mjs +68 -0
  13. package/dist/chunk-5SAYZ4CI.mjs +40 -0
  14. package/dist/chunk-5WMFKQZ6.mjs +180 -0
  15. package/dist/chunk-623YVI5O.mjs +43 -0
  16. package/dist/{chunk-SFH2NJEJ.mjs → chunk-6OSULDEO.mjs} +3 -3
  17. package/dist/{chunk-UALR6JGV.mjs → chunk-6SR4K5T5.mjs} +1 -1
  18. package/dist/{chunk-D2NSIIXG.mjs → chunk-7KT5HPYM.mjs} +11 -11
  19. package/dist/chunk-A6ER36CW.mjs +456 -0
  20. package/dist/{chunk-QX7IFQSF.mjs → chunk-AHKHVBWR.mjs} +4 -4
  21. package/dist/chunk-AHSCWXYJ.mjs +113 -0
  22. package/dist/{chunk-7GWRPXHD.mjs → chunk-AL6GOL2Y.mjs} +1 -1
  23. package/dist/{chunk-OIKBW2QD.mjs → chunk-AUEUTZIC.mjs} +13 -13
  24. package/dist/{chunk-FYPSTTEJ.mjs → chunk-B7DD3ODQ.mjs} +1 -1
  25. package/dist/{chunk-TLAWKTSA.mjs → chunk-BD3DWDT4.mjs} +3 -3
  26. package/dist/{chunk-S2FKV4M5.mjs → chunk-BDESHD25.mjs} +4 -4
  27. package/dist/{chunk-OKTJFDPN.mjs → chunk-BFB3UH7V.mjs} +2 -2
  28. package/dist/{chunk-DGNHGNYH.mjs → chunk-C6SWS7OW.mjs} +1 -1
  29. package/dist/chunk-CDVG7SFT.mjs +271 -0
  30. package/dist/chunk-CUSHAIUL.mjs +109 -0
  31. package/dist/{chunk-QXKGOMUX.mjs → chunk-CW32WTZU.mjs} +4 -4
  32. package/dist/{chunk-SET2ANTY.mjs → chunk-D447W45Z.mjs} +3 -3
  33. package/dist/{chunk-RCAOCHWA.mjs → chunk-DFL5CV75.mjs} +18 -18
  34. package/dist/chunk-DYSVJ473.mjs +162 -0
  35. package/dist/chunk-E3PQDBYI.mjs +288 -0
  36. package/dist/chunk-EMYBNPIA.mjs +83 -0
  37. package/dist/chunk-EUYPMDQG.mjs +348 -0
  38. package/dist/{chunk-XYPW2XA5.mjs → chunk-EW72FINW.mjs} +11 -11
  39. package/dist/chunk-F24U4QQQ.mjs +234 -0
  40. package/dist/{chunk-VB5M6OZQ.mjs → chunk-F4O2YPXJ.mjs} +1 -1
  41. package/dist/chunk-FFXTQTB4.mjs +84 -0
  42. package/dist/{chunk-ZOWL2L5J.mjs → chunk-FYUSF5KO.mjs} +5 -1
  43. package/dist/{chunk-FTPBQVQ6.mjs → chunk-GNER6MCO.mjs} +1 -1
  44. package/dist/{chunk-2D3HQPFN.mjs → chunk-HF4FUBCY.mjs} +5 -5
  45. package/dist/{chunk-RSUIPKGX.mjs → chunk-HNDTLT5X.mjs} +1 -1
  46. package/dist/{chunk-N6Q5IPKT.mjs → chunk-HO6S3ECM.mjs} +46 -18
  47. package/dist/{chunk-L4NSRQ3T.mjs → chunk-HROG643K.mjs} +1 -1
  48. package/dist/chunk-I2EKKSEF.mjs +148 -0
  49. package/dist/{chunk-QTRSCVQ3.mjs → chunk-I3UDLWQ7.mjs} +1 -1
  50. package/dist/{chunk-AE7MASLF.mjs → chunk-IQGKOT7A.mjs} +9 -6
  51. package/dist/chunk-IXR4BQSQ.mjs +290 -0
  52. package/dist/{chunk-4MM7LHM5.mjs → chunk-J5NW5NCT.mjs} +1 -1
  53. package/dist/{chunk-OLKMCXAR.mjs → chunk-JTG5R5YV.mjs} +24 -24
  54. package/dist/chunk-JUBUN65Q.mjs +106 -0
  55. package/dist/chunk-K7TWMLLW.mjs +520 -0
  56. package/dist/{chunk-BOW7U26Y.mjs → chunk-K7WSRWOU.mjs} +4 -4
  57. package/dist/{chunk-NTYQWVLI.mjs → chunk-KAD26MCC.mjs} +1 -1
  58. package/dist/{chunk-KCWNDYPZ.mjs → chunk-KB7MZMED.mjs} +4 -4
  59. package/dist/chunk-KCKYGQVQ.mjs +61 -0
  60. package/dist/{chunk-VY5NEUP7.mjs → chunk-KLJLDNCA.mjs} +1 -1
  61. package/dist/chunk-LLAGF6BA.mjs +49 -0
  62. package/dist/{chunk-G27TSQLQ.mjs → chunk-M4LTX3MH.mjs} +1 -1
  63. package/dist/{chunk-YIZHS72Z.mjs → chunk-MHHA7QGO.mjs} +94 -54
  64. package/dist/{chunk-P2N2PEFY.mjs → chunk-NCUH54IZ.mjs} +4 -4
  65. package/dist/{chunk-PNRUH7JY.mjs → chunk-OECGKCVF.mjs} +5 -5
  66. package/dist/{chunk-YE67AALL.mjs → chunk-OL65UQHQ.mjs} +10 -10
  67. package/dist/{chunk-LQULK2E3.mjs → chunk-OYBIUEGE.mjs} +1 -1
  68. package/dist/{chunk-LR6LHDP3.mjs → chunk-PGR53HMH.mjs} +7 -7
  69. package/dist/chunk-PUJ42INK.mjs +141 -0
  70. package/dist/{chunk-M4VYX2PV.mjs → chunk-PV3Y7QGK.mjs} +2 -2
  71. package/dist/{chunk-UJZ4UHWI.mjs → chunk-PV7PNA6K.mjs} +4 -4
  72. package/dist/{chunk-6HIOM2HL.mjs → chunk-Q35PNFJ7.mjs} +1 -1
  73. package/dist/{chunk-JZY6TNIS.mjs → chunk-Q5SGEIJV.mjs} +27 -27
  74. package/dist/{chunk-ZFCDYW6N.mjs → chunk-QAX6HCUH.mjs} +1 -1
  75. package/dist/chunk-QHJDGB54.mjs +135 -0
  76. package/dist/chunk-QQSOZQOC.mjs +27 -0
  77. package/dist/chunk-RUX3OLVZ.mjs +59 -0
  78. package/dist/{chunk-QOJ2DQD6.mjs → chunk-S4CTM3UE.mjs} +5 -0
  79. package/dist/{chunk-ZEDMKQK2.mjs → chunk-TAX3KL66.mjs} +1 -1
  80. package/dist/chunk-TC43SMIN.mjs +133 -0
  81. package/dist/chunk-TGVXRD53.mjs +174 -0
  82. package/dist/{chunk-K5VHK7CM.mjs → chunk-TLYSVRSK.mjs} +12 -12
  83. package/dist/{chunk-YCWLFG27.mjs → chunk-TOIVHWNC.mjs} +1 -1
  84. package/dist/chunk-TXUBGKB7.mjs +160 -0
  85. package/dist/chunk-UEREFDAE.mjs +75 -0
  86. package/dist/chunk-UTCQN6XU.mjs +123 -0
  87. package/dist/{chunk-37AE3OM5.mjs → chunk-V4CUTCHS.mjs} +4 -4
  88. package/dist/{chunk-THVO2N47.mjs → chunk-VFH632TB.mjs} +9 -9
  89. package/dist/{chunk-3ERBUVHC.mjs → chunk-VJ3GC7W3.mjs} +95 -49
  90. package/dist/{chunk-V6XGXYCJ.mjs → chunk-VLELWBEW.mjs} +4 -4
  91. package/dist/{chunk-FEZKMUCF.mjs → chunk-WDTXHLYM.mjs} +1 -1
  92. package/dist/chunk-WUA546RX.mjs +129 -0
  93. package/dist/chunk-XHGISOX5.mjs +257 -0
  94. package/dist/chunk-XIY5DJXI.mjs +168 -0
  95. package/dist/{chunk-TOWTPLRC.mjs → chunk-XN37434W.mjs} +8 -8
  96. package/dist/{chunk-KLTACJ2G.mjs → chunk-XTWAJWCQ.mjs} +1 -1
  97. package/dist/chunk-Y24TXIFJ.mjs +518 -0
  98. package/dist/{chunk-DMXYRCHM.mjs → chunk-Y6UM3VTN.mjs} +4 -4
  99. package/dist/components/ui/about-you-form.js +1120 -0
  100. package/dist/components/ui/about-you-form.mjs +323 -0
  101. package/dist/components/ui/account-list-carousel.js +304 -0
  102. package/dist/components/ui/account-list-carousel.mjs +11 -0
  103. package/dist/components/ui/add-column-modal.js +1 -1
  104. package/dist/components/ui/add-column-modal.mjs +6 -6
  105. package/dist/components/ui/add-lead-modal.js +2 -2
  106. package/dist/components/ui/add-lead-modal.mjs +6 -6
  107. package/dist/components/ui/advisor-card.mjs +2 -2
  108. package/dist/components/ui/agent-evaluation-toast.js +299 -0
  109. package/dist/components/ui/agent-evaluation-toast.mjs +12 -0
  110. package/dist/components/ui/ai-assistant-drawer.mjs +5 -5
  111. package/dist/components/ui/ai-builder.js +3 -3
  112. package/dist/components/ui/ai-builder.mjs +5 -5
  113. package/dist/components/ui/ai-conversations.js +2 -2
  114. package/dist/components/ui/ai-conversations.mjs +11 -11
  115. package/dist/components/ui/alert-dialog.mjs +3 -3
  116. package/dist/components/ui/applicant-document-checklist.js +346 -0
  117. package/dist/components/ui/applicant-document-checklist.mjs +10 -0
  118. package/dist/components/ui/applicant-expenses-section.js +455 -0
  119. package/dist/components/ui/applicant-expenses-section.mjs +220 -0
  120. package/dist/components/ui/applicant-navigation-bar.js +309 -0
  121. package/dist/components/ui/applicant-navigation-bar.mjs +87 -0
  122. package/dist/components/ui/applicant-switcher.js +268 -0
  123. package/dist/components/ui/applicant-switcher.mjs +46 -0
  124. package/dist/components/ui/application-mobile-layout.js +88 -0
  125. package/dist/components/ui/application-mobile-layout.mjs +8 -0
  126. package/dist/components/ui/appointment-action-dialogs.js +1 -1
  127. package/dist/components/ui/appointment-action-dialogs.mjs +10 -10
  128. package/dist/components/ui/appointment-availability-settings.js +78 -31
  129. package/dist/components/ui/appointment-availability-settings.mjs +12 -10
  130. package/dist/components/ui/appointment-book-dialog.js +137 -58
  131. package/dist/components/ui/appointment-book-dialog.mjs +14 -14
  132. package/dist/components/ui/appointment-calendar-view.js +1 -1
  133. package/dist/components/ui/appointment-calendar-view.mjs +4 -4
  134. package/dist/components/ui/appointment-detail-sheet.js +38 -11
  135. package/dist/components/ui/appointment-detail-sheet.mjs +13 -13
  136. package/dist/components/ui/appointment-gmail-connect.mjs +2 -2
  137. package/dist/components/ui/appointment-time-slot-picker.mjs +2 -2
  138. package/dist/components/ui/appointment-upcoming-card.js +1 -1
  139. package/dist/components/ui/appointment-upcoming-card.mjs +10 -10
  140. package/dist/components/ui/asset-accordion.js +506 -0
  141. package/dist/components/ui/asset-accordion.mjs +202 -0
  142. package/dist/components/ui/assets-liabilities-side-card.js +328 -0
  143. package/dist/components/ui/assets-liabilities-side-card.mjs +127 -0
  144. package/dist/components/ui/auth-page-layout.js +3 -3
  145. package/dist/components/ui/auth-page-layout.mjs +1 -1
  146. package/dist/components/ui/backoffice-alert-history-chart.mjs +4 -4
  147. package/dist/components/ui/backoffice-alert-matching-chart.js +786 -0
  148. package/dist/components/ui/backoffice-alert-matching-chart.mjs +19 -0
  149. package/dist/components/ui/backoffice-alerts-chart.mjs +4 -4
  150. package/dist/components/ui/backoffice-connections-chart.mjs +4 -4
  151. package/dist/components/ui/backoffice-contact-history-chart.mjs +4 -4
  152. package/dist/components/ui/backoffice-contact-matching-chart.js +803 -0
  153. package/dist/components/ui/backoffice-contact-matching-chart.mjs +19 -0
  154. package/dist/components/ui/backoffice-signup-steps.js +1673 -0
  155. package/dist/components/ui/backoffice-signup-steps.mjs +36 -0
  156. package/dist/components/ui/bank-statement-document-table.js +467 -0
  157. package/dist/components/ui/bank-statement-document-table.mjs +12 -0
  158. package/dist/components/ui/bank-statement-generate-dialog.js +1517 -0
  159. package/dist/components/ui/bank-statement-generate-dialog.mjs +27 -0
  160. package/dist/components/ui/bank-statement-pdf-viewer.js +525 -0
  161. package/dist/components/ui/bank-statement-pdf-viewer.mjs +14 -0
  162. package/dist/components/ui/banking-accounts-connect.js +336 -0
  163. package/dist/components/ui/banking-accounts-connect.mjs +114 -0
  164. package/dist/components/ui/borrowing-capacity-atoms.js +382 -0
  165. package/dist/components/ui/borrowing-capacity-atoms.mjs +17 -0
  166. package/dist/components/ui/borrowing-capacity-card.js +835 -0
  167. package/dist/components/ui/borrowing-capacity-card.mjs +89 -0
  168. package/dist/components/ui/borrowing-capacity-line-chart.mjs +4 -4
  169. package/dist/components/ui/broker-info-panel.js +281 -0
  170. package/dist/components/ui/broker-info-panel.mjs +59 -0
  171. package/dist/components/ui/calculator-input-item.js +101 -0
  172. package/dist/components/ui/calculator-input-item.mjs +8 -0
  173. package/dist/components/ui/calculator-section.js +743 -0
  174. package/dist/components/ui/calculator-section.mjs +220 -0
  175. package/dist/components/ui/calendar.mjs +2 -2
  176. package/dist/components/ui/cash-balance-line-chart.mjs +5 -5
  177. package/dist/components/ui/cashflow-bar-chart.mjs +4 -4
  178. package/dist/components/ui/category-edit-dialog.js +737 -0
  179. package/dist/components/ui/category-edit-dialog.mjs +16 -0
  180. package/dist/components/ui/chat-widget.mjs +3 -3
  181. package/dist/components/ui/color-picker.mjs +4 -4
  182. package/dist/components/ui/connect-bank-step.js +511 -0
  183. package/dist/components/ui/connect-bank-step.mjs +287 -0
  184. package/dist/components/ui/contact-alert-dialog.js +1405 -0
  185. package/dist/components/ui/contact-alert-dialog.mjs +27 -0
  186. package/dist/components/ui/create-contact-modal.js +1028 -0
  187. package/dist/components/ui/create-contact-modal.mjs +21 -0
  188. package/dist/components/ui/csv-import-modal.js +583 -0
  189. package/dist/components/ui/csv-import-modal.mjs +14 -0
  190. package/dist/components/ui/currency-input.js +439 -0
  191. package/dist/components/ui/currency-input.mjs +13 -0
  192. package/dist/components/ui/dashboard-expense-categories.js +355 -0
  193. package/dist/components/ui/dashboard-expense-categories.mjs +186 -0
  194. package/dist/components/ui/dashboard-transactions-table.js +1083 -0
  195. package/dist/components/ui/dashboard-transactions-table.mjs +177 -0
  196. package/dist/components/ui/data-table.mjs +6 -6
  197. package/dist/components/ui/date-picker.mjs +6 -6
  198. package/dist/components/ui/debt-accordion.js +523 -0
  199. package/dist/components/ui/debt-accordion.mjs +219 -0
  200. package/dist/components/ui/delete-contact-component.js +479 -0
  201. package/dist/components/ui/delete-contact-component.mjs +14 -0
  202. package/dist/components/ui/dialog.js +1 -1
  203. package/dist/components/ui/dialog.mjs +3 -3
  204. package/dist/components/ui/document-checklist-template.mjs +4 -4
  205. package/dist/components/ui/drawer.mjs +3 -3
  206. package/dist/components/ui/dropdown-menu.mjs +3 -3
  207. package/dist/components/ui/dynamic-tabs.js +274 -0
  208. package/dist/components/ui/dynamic-tabs.mjs +116 -0
  209. package/dist/components/ui/editable-money-item.js +306 -0
  210. package/dist/components/ui/editable-money-item.mjs +12 -0
  211. package/dist/components/ui/expense-bar-chart.mjs +4 -4
  212. package/dist/components/ui/expense-detail-item.js +506 -0
  213. package/dist/components/ui/expense-detail-item.mjs +15 -0
  214. package/dist/components/ui/expense-work-details.js +1259 -0
  215. package/dist/components/ui/expense-work-details.mjs +175 -0
  216. package/dist/components/ui/field.mjs +2 -2
  217. package/dist/components/ui/file-preview-dialog.js +704 -0
  218. package/dist/components/ui/file-preview-dialog.mjs +17 -0
  219. package/dist/components/ui/financial-cards.mjs +2 -2
  220. package/dist/components/ui/financial-drawers.js +1 -1
  221. package/dist/components/ui/financial-drawers.mjs +5 -5
  222. package/dist/components/ui/financial-sections.mjs +4 -4
  223. package/dist/components/ui/form-primitives.mjs +2 -2
  224. package/dist/components/ui/frontend-signup-steps.js +1239 -0
  225. package/dist/components/ui/frontend-signup-steps.mjs +38 -0
  226. package/dist/components/ui/income-bar-chart.mjs +4 -4
  227. package/dist/components/ui/income-sources-card.js +269 -0
  228. package/dist/components/ui/income-sources-card.mjs +100 -0
  229. package/dist/components/ui/income-summary-component.js +361 -0
  230. package/dist/components/ui/income-summary-component.mjs +84 -0
  231. package/dist/components/ui/income-work-details.js +1663 -0
  232. package/dist/components/ui/income-work-details.mjs +28 -0
  233. package/dist/components/ui/incoming-outgoings-card.js +218 -0
  234. package/dist/components/ui/incoming-outgoings-card.mjs +82 -0
  235. package/dist/components/ui/interest-rate-input.js +442 -0
  236. package/dist/components/ui/interest-rate-input.mjs +90 -0
  237. package/dist/components/ui/interest-rate-section.js +337 -0
  238. package/dist/components/ui/interest-rate-section.mjs +84 -0
  239. package/dist/components/ui/interest-rate-used.js +202 -0
  240. package/dist/components/ui/interest-rate-used.mjs +62 -0
  241. package/dist/components/ui/kanban-column.js +338 -160
  242. package/dist/components/ui/kanban-column.mjs +13 -11
  243. package/dist/components/ui/loan-applicant-information.js +336 -0
  244. package/dist/components/ui/loan-applicant-information.mjs +59 -0
  245. package/dist/components/ui/loan-applicant-invite.js +319 -0
  246. package/dist/components/ui/loan-applicant-invite.mjs +68 -0
  247. package/dist/components/ui/loan-application-badge.js +236 -0
  248. package/dist/components/ui/loan-application-badge.mjs +10 -0
  249. package/dist/components/ui/loan-application-cards.js +356 -0
  250. package/dist/components/ui/loan-application-cards.mjs +110 -0
  251. package/dist/components/ui/loan-entry-shell.js +104 -0
  252. package/dist/components/ui/loan-entry-shell.mjs +8 -0
  253. package/dist/components/ui/loan-financials.js +410 -0
  254. package/dist/components/ui/loan-financials.mjs +76 -0
  255. package/dist/components/ui/loan-option-card.js +102 -0
  256. package/dist/components/ui/loan-option-card.mjs +41 -0
  257. package/dist/components/ui/loan-option-group.js +288 -0
  258. package/dist/components/ui/loan-option-group.mjs +10 -0
  259. package/dist/components/ui/loan-steps.js +1121 -0
  260. package/dist/components/ui/loan-steps.mjs +509 -0
  261. package/dist/components/ui/loan-wizard-shell.js +452 -0
  262. package/dist/components/ui/loan-wizard-shell.mjs +11 -0
  263. package/dist/components/ui/money-input-with-slider.js +210 -0
  264. package/dist/components/ui/money-input-with-slider.mjs +10 -0
  265. package/dist/components/ui/money-item-with-color-indicator.js +314 -0
  266. package/dist/components/ui/money-item-with-color-indicator.mjs +20 -0
  267. package/dist/components/ui/opportunity-card.js +235 -97
  268. package/dist/components/ui/opportunity-card.mjs +11 -9
  269. package/dist/components/ui/opportunity-edit-modals.js +1 -1
  270. package/dist/components/ui/opportunity-edit-modals.mjs +15 -15
  271. package/dist/components/ui/opportunity-summary-tab.js +1 -1
  272. package/dist/components/ui/opportunity-summary-tab.mjs +19 -19
  273. package/dist/components/ui/pagination.mjs +4 -4
  274. package/dist/components/ui/password-strength-tooltip.mjs +4 -4
  275. package/dist/components/ui/pipeline-board.js +358 -176
  276. package/dist/components/ui/pipeline-board.mjs +16 -14
  277. package/dist/components/ui/pipeline-chart.mjs +3 -3
  278. package/dist/components/ui/pipeline-dialogs.js +1 -1
  279. package/dist/components/ui/pipeline-dialogs.mjs +9 -9
  280. package/dist/components/ui/pipeline-primitives.js +75 -8
  281. package/dist/components/ui/pipeline-primitives.mjs +3 -2
  282. package/dist/components/ui/popover.mjs +3 -3
  283. package/dist/components/ui/property-asset-card.js +428 -0
  284. package/dist/components/ui/property-asset-card.mjs +156 -0
  285. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +4 -4
  286. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +4 -4
  287. package/dist/components/ui/property-list-carousel.js +295 -0
  288. package/dist/components/ui/property-list-carousel.mjs +11 -0
  289. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +4 -4
  290. package/dist/components/ui/property-report-dialog.js +1148 -0
  291. package/dist/components/ui/property-report-dialog.mjs +25 -0
  292. package/dist/components/ui/resource-center.js +748 -0
  293. package/dist/components/ui/resource-center.mjs +24 -0
  294. package/dist/components/ui/review-alerts-dialog.js +569 -0
  295. package/dist/components/ui/review-alerts-dialog.mjs +15 -0
  296. package/dist/components/ui/savings-goal-modal.js +1148 -0
  297. package/dist/components/ui/savings-goal-modal.mjs +160 -0
  298. package/dist/components/ui/scenario-drawer.js +791 -0
  299. package/dist/components/ui/scenario-drawer.mjs +294 -0
  300. package/dist/components/ui/scenario-item.js +256 -0
  301. package/dist/components/ui/scenario-item.mjs +11 -0
  302. package/dist/components/ui/scenario-list.js +507 -0
  303. package/dist/components/ui/scenario-list.mjs +100 -0
  304. package/dist/components/ui/select.mjs +3 -3
  305. package/dist/components/ui/share-details-dialog.js +636 -0
  306. package/dist/components/ui/share-details-dialog.mjs +19 -0
  307. package/dist/components/ui/sheet.mjs +3 -3
  308. package/dist/components/ui/sidebar-nav.mjs +5 -5
  309. package/dist/components/ui/signup-form-primitives.js +770 -0
  310. package/dist/components/ui/signup-form-primitives.mjs +25 -0
  311. package/dist/components/ui/signup-shell.js +338 -0
  312. package/dist/components/ui/signup-shell.mjs +13 -0
  313. package/dist/components/ui/stage-timeline.js +103 -33
  314. package/dist/components/ui/stage-timeline.mjs +5 -4
  315. package/dist/components/ui/submission-confirmation-card.js +284 -0
  316. package/dist/components/ui/submission-confirmation-card.mjs +62 -0
  317. package/dist/components/ui/tooltip.mjs +3 -3
  318. package/dist/components/ui/top-three-product.js +374 -0
  319. package/dist/components/ui/top-three-product.mjs +129 -0
  320. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +4 -4
  321. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +5 -5
  322. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +4 -4
  323. package/dist/components/ui/transactions-summary-block.js +95 -0
  324. package/dist/components/ui/transactions-summary-block.mjs +34 -0
  325. package/dist/components/ui/two-fa-setup-form.mjs +3 -3
  326. package/dist/index.js +9430 -4573
  327. package/dist/index.mjs +404 -251
  328. package/dist/lib/colors.js +6 -0
  329. package/dist/lib/colors.mjs +3 -1
  330. package/dist/lib/theme-provider.mjs +2 -2
  331. package/dist/styles.css +1 -1
  332. package/package.json +366 -2
  333. package/src/components/index.tsx +223 -0
  334. package/src/components/ui/about-you-form.tsx +397 -0
  335. package/src/components/ui/account-list-carousel.tsx +87 -0
  336. package/src/components/ui/add-lead-modal.tsx +1 -1
  337. package/src/components/ui/agent-evaluation-toast.tsx +191 -0
  338. package/src/components/ui/ai-builder.tsx +3 -5
  339. package/src/components/ui/ai-conversations.tsx +1 -1
  340. package/src/components/ui/applicant-document-checklist.tsx +175 -0
  341. package/src/components/ui/applicant-expenses-section.tsx +260 -0
  342. package/src/components/ui/applicant-navigation-bar.tsx +104 -0
  343. package/src/components/ui/applicant-switcher.tsx +54 -0
  344. package/src/components/ui/application-mobile-layout.tsx +34 -0
  345. package/src/components/ui/appointment-availability-settings.tsx +115 -23
  346. package/src/components/ui/appointment-book-dialog.tsx +406 -259
  347. package/src/components/ui/appointment-calendar-view.tsx +4 -1
  348. package/src/components/ui/appointment-detail-sheet.tsx +59 -24
  349. package/src/components/ui/appointment-time-slot-picker.tsx +5 -1
  350. package/src/components/ui/asset-accordion.tsx +241 -0
  351. package/src/components/ui/assets-liabilities-side-card.tsx +157 -0
  352. package/src/components/ui/auth-page-layout.tsx +3 -3
  353. package/src/components/ui/backoffice-alert-matching-chart.tsx +320 -0
  354. package/src/components/ui/backoffice-contact-matching-chart.tsx +341 -0
  355. package/src/components/ui/backoffice-signup-steps.tsx +615 -0
  356. package/src/components/ui/bank-statement-document-table.tsx +222 -0
  357. package/src/components/ui/bank-statement-generate-dialog.tsx +435 -0
  358. package/src/components/ui/bank-statement-pdf-viewer.tsx +241 -0
  359. package/src/components/ui/banking-accounts-connect.tsx +187 -0
  360. package/src/components/ui/borrowing-capacity-atoms.tsx +228 -0
  361. package/src/components/ui/borrowing-capacity-card.tsx +155 -0
  362. package/src/components/ui/broker-info-panel.tsx +94 -0
  363. package/src/components/ui/calculator-input-item.tsx +49 -0
  364. package/src/components/ui/calculator-section.tsx +275 -0
  365. package/src/components/ui/category-edit-dialog.tsx +300 -0
  366. package/src/components/ui/connect-bank-step.tsx +379 -0
  367. package/src/components/ui/contact-alert-dialog.tsx +710 -0
  368. package/src/components/ui/create-contact-modal.tsx +237 -0
  369. package/src/components/ui/csv-import-modal.tsx +153 -0
  370. package/src/components/ui/currency-input.tsx +104 -0
  371. package/src/components/ui/dashboard-expense-categories.tsx +262 -0
  372. package/src/components/ui/dashboard-transactions-table.tsx +241 -0
  373. package/src/components/ui/debt-accordion.tsx +254 -0
  374. package/src/components/ui/delete-contact-component.tsx +87 -0
  375. package/src/components/ui/dialog.tsx +2 -2
  376. package/src/components/ui/dynamic-tabs.tsx +149 -0
  377. package/src/components/ui/editable-money-item.tsx +176 -0
  378. package/src/components/ui/expense-detail-item.tsx +216 -0
  379. package/src/components/ui/expense-work-details.tsx +229 -0
  380. package/src/components/ui/file-preview-dialog.tsx +292 -0
  381. package/src/components/ui/financial-drawers.tsx +1 -1
  382. package/src/components/ui/frontend-signup-steps.tsx +548 -0
  383. package/src/components/ui/income-sources-card.tsx +143 -0
  384. package/src/components/ui/income-summary-component.tsx +120 -0
  385. package/src/components/ui/income-work-details.tsx +429 -0
  386. package/src/components/ui/incoming-outgoings-card.tsx +111 -0
  387. package/src/components/ui/interest-rate-input.tsx +111 -0
  388. package/src/components/ui/interest-rate-section.tsx +158 -0
  389. package/src/components/ui/interest-rate-used.tsx +82 -0
  390. package/src/components/ui/kanban-column.tsx +53 -2
  391. package/src/components/ui/loan-applicant-information.tsx +64 -0
  392. package/src/components/ui/loan-applicant-invite.tsx +67 -0
  393. package/src/components/ui/loan-application-badge.tsx +70 -0
  394. package/src/components/ui/loan-application-cards.tsx +152 -0
  395. package/src/components/ui/loan-entry-shell.tsx +86 -0
  396. package/src/components/ui/loan-financials.tsx +77 -0
  397. package/src/components/ui/loan-option-card.tsx +62 -0
  398. package/src/components/ui/loan-option-group.tsx +106 -0
  399. package/src/components/ui/loan-steps.tsx +630 -0
  400. package/src/components/ui/loan-wizard-shell.tsx +235 -0
  401. package/src/components/ui/money-input-with-slider.tsx +77 -0
  402. package/src/components/ui/money-item-with-color-indicator.tsx +30 -0
  403. package/src/components/ui/opportunity-card.tsx +46 -18
  404. package/src/components/ui/pipeline-board.tsx +13 -0
  405. package/src/components/ui/pipeline-primitives.tsx +28 -0
  406. package/src/components/ui/property-asset-card.tsx +221 -0
  407. package/src/components/ui/property-list-carousel.tsx +73 -0
  408. package/src/components/ui/property-report-dialog.tsx +355 -0
  409. package/src/components/ui/resource-center.tsx +539 -0
  410. package/src/components/ui/review-alerts-dialog.tsx +163 -0
  411. package/src/components/ui/savings-goal-modal.tsx +169 -0
  412. package/src/components/ui/scenario-drawer.tsx +358 -0
  413. package/src/components/ui/scenario-item.tsx +141 -0
  414. package/src/components/ui/scenario-list.tsx +150 -0
  415. package/src/components/ui/share-details-dialog.tsx +238 -0
  416. package/src/components/ui/signup-form-primitives.tsx +212 -0
  417. package/src/components/ui/signup-shell.tsx +180 -0
  418. package/src/components/ui/stage-timeline.tsx +11 -0
  419. package/src/components/ui/submission-confirmation-card.tsx +68 -0
  420. package/src/components/ui/top-three-product.tsx +207 -0
  421. package/src/components/ui/transactions-summary-block.tsx +59 -0
  422. package/src/lib/colors.ts +12 -0
  423. package/src/lib/format-date.ts +2 -2
  424. package/src/styles/styles-css.ts +1 -1
  425. package/tsup.config.ts +77 -1
  426. package/dist/{chunk-5VOTTIXF.mjs → chunk-FRT3S72S.mjs} +3 -3
  427. package/dist/{chunk-7BTFGCFC.mjs → chunk-MUV4EGDW.mjs} +3 -3
  428. package/dist/{chunk-57ZXILTS.mjs → chunk-MXP2RX2V.mjs} +3 -3
  429. package/dist/{chunk-ZKWXDQDG.mjs → chunk-VCDGLN25.mjs} +3 -3
  430. package/dist/{chunk-FLL633WS.mjs → chunk-ZXEUBBHJ.mjs} +3 -3
@@ -0,0 +1,1120 @@
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/about-you-form.tsx
60
+ var about_you_form_exports = {};
61
+ __export(about_you_form_exports, {
62
+ AboutYouForm: () => AboutYouForm,
63
+ MAX_DEPENDANTS: () => MAX_DEPENDANTS
64
+ });
65
+ module.exports = __toCommonJS(about_you_form_exports);
66
+
67
+ // src/lib/utils.ts
68
+ var import_clsx = require("clsx");
69
+ var import_tailwind_merge = require("tailwind-merge");
70
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
71
+ extend: {
72
+ classGroups: {
73
+ "font-size": [
74
+ {
75
+ text: [
76
+ "display-large",
77
+ "display-medium",
78
+ "display-small",
79
+ "h1",
80
+ "h2",
81
+ "h3",
82
+ "h4",
83
+ "h5",
84
+ "h6",
85
+ "body-large",
86
+ "body-medium",
87
+ "body-small",
88
+ "label-large",
89
+ "label-medium",
90
+ "label-small",
91
+ "button",
92
+ "button-xs",
93
+ "caption",
94
+ "overline",
95
+ "code"
96
+ ]
97
+ }
98
+ ]
99
+ }
100
+ }
101
+ });
102
+ function cn(...inputs) {
103
+ return twMerge((0, import_clsx.clsx)(inputs));
104
+ }
105
+
106
+ // src/components/ui/input.tsx
107
+ var import_jsx_runtime = require("react/jsx-runtime");
108
+ function Input(_a) {
109
+ var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
110
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
111
+ "input",
112
+ __spreadValues({
113
+ className: cn(
114
+ "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",
115
+ "focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/20",
116
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
117
+ className
118
+ ),
119
+ "data-slot": "input",
120
+ type
121
+ }, props)
122
+ );
123
+ }
124
+
125
+ // src/components/ui/label.tsx
126
+ var import_jsx_runtime2 = (
127
+ // eslint-disable-next-line jsx-a11y/label-has-associated-control -- htmlFor is passed by the consumer
128
+ require("react/jsx-runtime")
129
+ );
130
+ function Label(_a) {
131
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
132
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
133
+ "label",
134
+ __spreadValues({
135
+ className: cn(
136
+ "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",
137
+ className
138
+ ),
139
+ "data-slot": "label"
140
+ }, props)
141
+ );
142
+ }
143
+
144
+ // src/components/ui/date-picker.tsx
145
+ var React4 = __toESM(require("react"));
146
+ var import_date_fns2 = require("date-fns");
147
+ var import_lucide_react3 = require("lucide-react");
148
+
149
+ // src/components/ui/button.tsx
150
+ var import_react = require("react");
151
+ var import_class_variance_authority = require("class-variance-authority");
152
+ var import_lucide_react = require("lucide-react");
153
+
154
+ // src/lib/slot.tsx
155
+ var React = __toESM(require("react"));
156
+ function mergeRefs(...refs) {
157
+ return (value) => {
158
+ for (const ref of refs) {
159
+ if (typeof ref === "function") ref(value);
160
+ else if (ref !== null)
161
+ ref.current = value;
162
+ }
163
+ };
164
+ }
165
+ var Slot = React.forwardRef(
166
+ (_a, forwardedRef) => {
167
+ var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
168
+ const child = React.Children.only(children);
169
+ if (!React.isValidElement(child)) return null;
170
+ const childProps = child.props;
171
+ const merged = __spreadValues({}, props);
172
+ for (const key of Object.keys(childProps)) {
173
+ if (key === "className") {
174
+ merged.className = [props.className, childProps.className].filter(Boolean).join(" ");
175
+ } else if (key === "style") {
176
+ merged.style = __spreadValues(__spreadValues({}, props.style), childProps.style);
177
+ } else if (key.startsWith("on") && typeof childProps[key] === "function") {
178
+ const parentHandler = props[key];
179
+ if (typeof parentHandler === "function") {
180
+ merged[key] = (...args) => {
181
+ childProps[key](...args);
182
+ parentHandler(...args);
183
+ };
184
+ } else {
185
+ merged[key] = childProps[key];
186
+ }
187
+ } else {
188
+ merged[key] = childProps[key];
189
+ }
190
+ }
191
+ const childRef = child.ref;
192
+ merged.ref = forwardedRef ? mergeRefs(forwardedRef, childRef) : childRef;
193
+ return React.cloneElement(
194
+ child,
195
+ merged
196
+ );
197
+ }
198
+ );
199
+ Slot.displayName = "Slot";
200
+
201
+ // src/components/ui/button.tsx
202
+ var import_jsx_runtime3 = require("react/jsx-runtime");
203
+ var buttonVariants = (0, import_class_variance_authority.cva)(
204
+ "inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 font-sans text-button whitespace-nowrap transition-all active:scale-[0.98] 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 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
205
+ {
206
+ variants: {
207
+ variant: {
208
+ default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
209
+ secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
210
+ destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
211
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:border-border focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
212
+ "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
213
+ "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:border-brand-secondary focus-visible:ring-brand-secondary/30",
214
+ ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
215
+ link: "text-primary underline-offset-4 hover:underline"
216
+ },
217
+ size: {
218
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
219
+ xs: "h-6 gap-1 px-2 text-button-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
220
+ sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
221
+ lg: "h-10 px-6 has-[>svg]:px-4",
222
+ icon: "size-9",
223
+ "icon-xs": "size-6 [&_svg:not([class*='size-'])]:size-3",
224
+ "icon-sm": "size-8",
225
+ "icon-lg": "size-10"
226
+ }
227
+ },
228
+ defaultVariants: {
229
+ variant: "default",
230
+ size: "default"
231
+ }
232
+ }
233
+ );
234
+ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
235
+ var _b = _a, {
236
+ className,
237
+ variant,
238
+ size,
239
+ asChild = false,
240
+ loading = false,
241
+ disabled,
242
+ type = "button",
243
+ children
244
+ } = _b, props = __objRest(_b, [
245
+ "className",
246
+ "variant",
247
+ "size",
248
+ "asChild",
249
+ "loading",
250
+ "disabled",
251
+ "type",
252
+ "children"
253
+ ]);
254
+ const Comp = asChild ? Slot : "button";
255
+ const isIconOnly = size === "icon" || size === "icon-xs" || size === "icon-sm" || size === "icon-lg";
256
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
257
+ Comp,
258
+ __spreadProps(__spreadValues({
259
+ className: cn(buttonVariants({ variant, size, className })),
260
+ "data-size": size,
261
+ "data-slot": "button",
262
+ "data-variant": variant,
263
+ disabled: loading || disabled,
264
+ ref,
265
+ type
266
+ }, props), {
267
+ children: loading ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
268
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.Loader2, { "aria-hidden": "true", className: "animate-spin" }),
269
+ !isIconOnly && children
270
+ ] }) : children
271
+ })
272
+ );
273
+ });
274
+
275
+ // src/components/ui/calendar.tsx
276
+ var React2 = __toESM(require("react"));
277
+ var import_lucide_react2 = require("lucide-react");
278
+ var import_react_day_picker = require("react-day-picker");
279
+
280
+ // src/lib/format-date.ts
281
+ var import_date_fns = require("date-fns");
282
+ function safeParse(iso) {
283
+ return (0, import_date_fns.parseISO)(iso);
284
+ }
285
+ function formatDateShort(iso) {
286
+ if (!iso) return "\u2014";
287
+ try {
288
+ return (0, import_date_fns.format)(safeParse(iso), "dd MMM yyyy");
289
+ } catch (e) {
290
+ return iso;
291
+ }
292
+ }
293
+
294
+ // src/components/ui/calendar.tsx
295
+ var import_jsx_runtime4 = require("react/jsx-runtime");
296
+ function CalendarRoot(_a) {
297
+ var _b = _a, {
298
+ className,
299
+ rootRef
300
+ } = _b, props = __objRest(_b, [
301
+ "className",
302
+ "rootRef"
303
+ ]);
304
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
305
+ "div",
306
+ __spreadValues({
307
+ className: cn(className),
308
+ "data-slot": "calendar",
309
+ ref: rootRef
310
+ }, props)
311
+ );
312
+ }
313
+ function CalendarChevron(_a) {
314
+ var _b = _a, {
315
+ className,
316
+ orientation
317
+ } = _b, props = __objRest(_b, [
318
+ "className",
319
+ "orientation"
320
+ ]);
321
+ if (orientation === "left") {
322
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.ChevronLeftIcon, __spreadValues({ className: cn("size-4", className) }, props));
323
+ }
324
+ if (orientation === "right") {
325
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.ChevronRightIcon, __spreadValues({ className: cn("size-4", className) }, props));
326
+ }
327
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.ChevronDownIcon, __spreadValues({ className: cn("size-4", className) }, props));
328
+ }
329
+ function CalendarWeekNumber(_a) {
330
+ var _b = _a, {
331
+ children
332
+ } = _b, props = __objRest(_b, [
333
+ "children"
334
+ ]);
335
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("td", __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) }));
336
+ }
337
+ function Calendar(_a) {
338
+ var _b = _a, {
339
+ className,
340
+ classNames,
341
+ showOutsideDays = true,
342
+ captionLayout = "dropdown",
343
+ buttonVariant = "ghost",
344
+ formatters,
345
+ components
346
+ } = _b, props = __objRest(_b, [
347
+ "className",
348
+ "classNames",
349
+ "showOutsideDays",
350
+ "captionLayout",
351
+ "buttonVariant",
352
+ "formatters",
353
+ "components"
354
+ ]);
355
+ const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
356
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
357
+ import_react_day_picker.DayPicker,
358
+ __spreadValues({
359
+ captionLayout,
360
+ className: cn(
361
+ "group/calendar bg-background p-3 font-sans border border-border shadow-sm [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
362
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
363
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
364
+ className
365
+ ),
366
+ classNames: __spreadValues({
367
+ root: cn("w-fit", defaultClassNames.root),
368
+ months: cn(
369
+ "relative flex flex-col gap-4 md:flex-row",
370
+ defaultClassNames.months
371
+ ),
372
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
373
+ nav: cn(
374
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
375
+ defaultClassNames.nav
376
+ ),
377
+ button_previous: cn(
378
+ buttonVariants({ variant: buttonVariant }),
379
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
380
+ defaultClassNames.button_previous
381
+ ),
382
+ button_next: cn(
383
+ buttonVariants({ variant: buttonVariant }),
384
+ "size-(--cell-size) p-0 select-none aria-disabled:opacity-50",
385
+ defaultClassNames.button_next
386
+ ),
387
+ month_caption: cn(
388
+ "flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",
389
+ defaultClassNames.month_caption
390
+ ),
391
+ dropdowns: cn(
392
+ "flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-label-small",
393
+ defaultClassNames.dropdowns
394
+ ),
395
+ dropdown_root: cn(
396
+ "relative border border-input shadow-xs has-focus:border-ring has-focus:ring-[3px] has-focus:ring-ring/50",
397
+ defaultClassNames.dropdown_root
398
+ ),
399
+ dropdown: cn(
400
+ "absolute inset-0 bg-popover opacity-0",
401
+ defaultClassNames.dropdown
402
+ ),
403
+ caption_label: cn(
404
+ "select-none",
405
+ captionLayout === "label" ? "text-label-small" : "flex h-8 items-center gap-1 pr-1 pl-2 text-label-small [&>svg]:size-3.5 [&>svg]:text-muted-foreground",
406
+ defaultClassNames.caption_label
407
+ ),
408
+ table: "w-full border-collapse",
409
+ weekdays: cn("flex", defaultClassNames.weekdays),
410
+ weekday: cn(
411
+ "flex-1 text-caption font-normal text-muted-foreground select-none",
412
+ defaultClassNames.weekday
413
+ ),
414
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
415
+ week_number_header: cn(
416
+ "w-(--cell-size) select-none",
417
+ defaultClassNames.week_number_header
418
+ ),
419
+ week_number: cn(
420
+ "text-caption text-muted-foreground select-none",
421
+ defaultClassNames.week_number
422
+ ),
423
+ day: cn(
424
+ "group/day relative aspect-square h-full w-full p-0 text-center select-none",
425
+ defaultClassNames.day
426
+ ),
427
+ range_start: cn("bg-accent", defaultClassNames.range_start),
428
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
429
+ range_end: cn("bg-accent", defaultClassNames.range_end),
430
+ today: cn("bg-accent text-accent-foreground", defaultClassNames.today),
431
+ outside: cn(
432
+ "text-muted-foreground aria-selected:text-muted-foreground",
433
+ defaultClassNames.outside
434
+ ),
435
+ disabled: cn(
436
+ "text-muted-foreground opacity-50",
437
+ defaultClassNames.disabled
438
+ ),
439
+ hidden: cn("invisible", defaultClassNames.hidden)
440
+ }, classNames),
441
+ components: __spreadValues({
442
+ Root: CalendarRoot,
443
+ Chevron: CalendarChevron,
444
+ DayButton: CalendarDayButton,
445
+ WeekNumber: CalendarWeekNumber
446
+ }, components),
447
+ formatters: __spreadValues({
448
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" })
449
+ }, formatters),
450
+ showOutsideDays
451
+ }, props)
452
+ );
453
+ }
454
+ function CalendarDayButton(_a) {
455
+ var _b = _a, {
456
+ className,
457
+ day,
458
+ modifiers
459
+ } = _b, props = __objRest(_b, [
460
+ "className",
461
+ "day",
462
+ "modifiers"
463
+ ]);
464
+ const defaultClassNames = (0, import_react_day_picker.getDefaultClassNames)();
465
+ const ref = React2.useRef(null);
466
+ React2.useEffect(() => {
467
+ var _a2;
468
+ if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
469
+ }, [modifiers.focused]);
470
+ const selectedSingle = modifiers.selected && !modifiers.range_start && !modifiers.range_end ? !modifiers.range_middle : null;
471
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
472
+ Button,
473
+ __spreadValues({
474
+ className: cn(
475
+ "flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 font-normal rounded-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-accent-foreground [&>span]:text-caption [&>span]:opacity-70",
476
+ defaultClassNames.day,
477
+ className
478
+ ),
479
+ "data-day": formatDateShort(day.date.toISOString()),
480
+ "data-range-end": modifiers.range_end,
481
+ "data-range-middle": modifiers.range_middle,
482
+ "data-range-start": modifiers.range_start,
483
+ "data-selected-single": selectedSingle,
484
+ ref,
485
+ size: "icon",
486
+ variant: "ghost"
487
+ }, props)
488
+ );
489
+ }
490
+
491
+ // src/components/ui/popover.tsx
492
+ var import_popover = require("@base-ui/react/popover");
493
+
494
+ // src/lib/theme-provider.tsx
495
+ var import_react2 = require("react");
496
+ var import_jsx_runtime5 = require("react/jsx-runtime");
497
+ var ThemeVarsContext = (0, import_react2.createContext)({});
498
+ function useThemeVars() {
499
+ return (0, import_react2.useContext)(ThemeVarsContext);
500
+ }
501
+
502
+ // src/components/ui/popover.tsx
503
+ var import_jsx_runtime6 = require("react/jsx-runtime");
504
+ function Popover(_a) {
505
+ var props = __objRest(_a, []);
506
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
507
+ }
508
+ function PopoverTrigger(_a) {
509
+ var props = __objRest(_a, []);
510
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_popover.Popover.Trigger, __spreadValues({ "data-slot": "popover-trigger" }, props));
511
+ }
512
+ function PopoverContent(_a) {
513
+ var _b = _a, {
514
+ className,
515
+ align = "center",
516
+ sideOffset = 4,
517
+ style
518
+ } = _b, props = __objRest(_b, [
519
+ "className",
520
+ "align",
521
+ "sideOffset",
522
+ "style"
523
+ ]);
524
+ const themeVars = useThemeVars();
525
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_popover.Popover.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
526
+ import_popover.Popover.Positioner,
527
+ {
528
+ className: "z-[200]",
529
+ align,
530
+ sideOffset,
531
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
532
+ import_popover.Popover.Popup,
533
+ __spreadValues({
534
+ className: cn(
535
+ "z-50 w-72 border border-border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-ending-style:animate-out data-ending-style:fade-out-0 data-ending-style:zoom-out-95 data-ending-style:fill-mode-forwards data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95",
536
+ className
537
+ ),
538
+ "data-slot": "popover-content",
539
+ style: __spreadValues(__spreadValues({}, themeVars), style)
540
+ }, props)
541
+ )
542
+ }
543
+ ) });
544
+ }
545
+
546
+ // src/components/ui/date-picker.tsx
547
+ var import_jsx_runtime7 = require("react/jsx-runtime");
548
+ function DatePicker({
549
+ value,
550
+ onChange,
551
+ placeholder = "Pick a date",
552
+ showTimePicker = false,
553
+ disabled = false,
554
+ className,
555
+ calendarProps
556
+ }) {
557
+ const [open, setOpen] = React4.useState(false);
558
+ function handleDaySelect(day) {
559
+ if (!day) {
560
+ onChange == null ? void 0 : onChange(void 0);
561
+ return;
562
+ }
563
+ if (showTimePicker && value) {
564
+ day.setHours(value.getHours(), value.getMinutes());
565
+ }
566
+ onChange == null ? void 0 : onChange(day);
567
+ if (!showTimePicker) setOpen(false);
568
+ }
569
+ function handleTimeChange(e) {
570
+ const [hours, minutes] = e.target.value.split(":").map(Number);
571
+ const next = value ? new Date(value) : /* @__PURE__ */ new Date();
572
+ next.setHours(hours, minutes, 0, 0);
573
+ onChange == null ? void 0 : onChange(next);
574
+ }
575
+ const timeValue = value ? `${String(value.getHours()).padStart(2, "0")}:${String(value.getMinutes()).padStart(2, "0")}` : "";
576
+ let displayValue;
577
+ if (value && showTimePicker) {
578
+ displayValue = (0, import_date_fns2.format)(value, "dd/MM/yyyy HH:mm");
579
+ } else if (value) {
580
+ displayValue = (0, import_date_fns2.format)(value, "dd/MM/yyyy");
581
+ }
582
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Popover, { onOpenChange: disabled ? void 0 : setOpen, open, children: [
583
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
584
+ PopoverTrigger,
585
+ {
586
+ render: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
587
+ Button,
588
+ {
589
+ className: cn(
590
+ "w-full justify-start rounded-none font-normal data-[empty=true]:text-muted-foreground",
591
+ // Show open/focus state when the popover is expanded
592
+ "aria-expanded:border-ring aria-expanded:ring-2 aria-expanded:ring-ring/20",
593
+ className
594
+ ),
595
+ "data-empty": !value,
596
+ "data-slot": "date-picker-trigger",
597
+ disabled,
598
+ variant: "outline"
599
+ }
600
+ ),
601
+ children: [
602
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.CalendarIcon, {}),
603
+ value ? displayValue : placeholder
604
+ ]
605
+ }
606
+ ),
607
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
608
+ PopoverContent,
609
+ {
610
+ align: "start",
611
+ className: "w-auto rounded-none p-0 shadow-sm",
612
+ children: [
613
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
614
+ Calendar,
615
+ __spreadProps(__spreadValues({
616
+ captionLayout: "dropdown",
617
+ mode: "single",
618
+ onSelect: handleDaySelect,
619
+ selected: value
620
+ }, calendarProps), {
621
+ className: cn(
622
+ "rounded-none border-0 shadow-none",
623
+ calendarProps == null ? void 0 : calendarProps.className
624
+ )
625
+ })
626
+ ),
627
+ showTimePicker ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "border-t border-border px-3 pb-3 pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { className: "mb-1.5 block text-xs font-medium text-muted-foreground", children: [
628
+ "Time",
629
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
630
+ Input,
631
+ {
632
+ className: "mt-1.5 h-8",
633
+ onChange: handleTimeChange,
634
+ type: "time",
635
+ value: timeValue
636
+ }
637
+ )
638
+ ] }) }) : null
639
+ ]
640
+ }
641
+ )
642
+ ] });
643
+ }
644
+
645
+ // src/components/ui/toggle-group.tsx
646
+ var React5 = __toESM(require("react"));
647
+ var import_toggle_group = require("@base-ui/react/toggle-group");
648
+ var import_toggle2 = require("@base-ui/react/toggle");
649
+
650
+ // src/components/ui/toggle.tsx
651
+ var import_class_variance_authority2 = require("class-variance-authority");
652
+ var import_toggle = require("@base-ui/react/toggle");
653
+ var import_jsx_runtime8 = require("react/jsx-runtime");
654
+ var toggleVariants = (0, import_class_variance_authority2.cva)(
655
+ "inline-flex items-center justify-center gap-2 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",
656
+ {
657
+ variants: {
658
+ variant: {
659
+ default: "bg-transparent hover:bg-muted hover:text-muted-foreground",
660
+ outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
661
+ },
662
+ size: {
663
+ default: "h-9 min-w-9 px-2 text-label-large",
664
+ sm: "h-8 min-w-8 px-1.5 text-label-medium",
665
+ lg: "h-10 min-w-10 px-2.5 text-h5"
666
+ }
667
+ },
668
+ defaultVariants: {
669
+ variant: "default",
670
+ size: "default"
671
+ }
672
+ }
673
+ );
674
+
675
+ // src/components/ui/toggle-group.tsx
676
+ var import_jsx_runtime9 = require("react/jsx-runtime");
677
+ var ToggleGroupContext = React5.createContext({
678
+ size: "default",
679
+ variant: "default",
680
+ spacing: 0
681
+ });
682
+ function ToggleGroup(_a) {
683
+ var _b = _a, {
684
+ className,
685
+ variant,
686
+ size,
687
+ spacing = 0,
688
+ type,
689
+ children
690
+ } = _b, props = __objRest(_b, [
691
+ "className",
692
+ "variant",
693
+ "size",
694
+ "spacing",
695
+ "type",
696
+ "children"
697
+ ]);
698
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
699
+ import_toggle_group.ToggleGroup,
700
+ __spreadProps(__spreadValues({
701
+ className: cn(
702
+ // WealthX: removed rounded-md (sharp corners) and shadow-xs (flat panels)
703
+ "group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))]",
704
+ className
705
+ ),
706
+ "data-size": size,
707
+ "data-slot": "toggle-group",
708
+ "data-spacing": spacing,
709
+ "data-variant": variant,
710
+ multiple: type === "multiple",
711
+ style: { "--gap": spacing }
712
+ }, props), {
713
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
714
+ })
715
+ );
716
+ }
717
+ function ToggleGroupItem(_a) {
718
+ var _b = _a, {
719
+ className,
720
+ children,
721
+ variant,
722
+ size
723
+ } = _b, props = __objRest(_b, [
724
+ "className",
725
+ "children",
726
+ "variant",
727
+ "size"
728
+ ]);
729
+ const context = React5.useContext(ToggleGroupContext);
730
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
731
+ import_toggle2.Toggle,
732
+ __spreadProps(__spreadValues({
733
+ className: cn(
734
+ toggleVariants({
735
+ variant: context.variant || variant,
736
+ size: context.size || size
737
+ }),
738
+ "w-auto min-w-0 shrink-0 focus:z-10 focus-visible:z-10",
739
+ // WealthX: no rounded corners on grouped items
740
+ "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",
741
+ className
742
+ ),
743
+ "data-size": context.size || size,
744
+ "data-slot": "toggle-group-item",
745
+ "data-spacing": context.spacing,
746
+ "data-variant": context.variant || variant
747
+ }, props), {
748
+ children
749
+ })
750
+ );
751
+ }
752
+
753
+ // src/components/ui/loan-option-group.tsx
754
+ var import_jsx_runtime10 = require("react/jsx-runtime");
755
+ function LoanOptionGroup({
756
+ title,
757
+ options,
758
+ value,
759
+ values = [],
760
+ onChange,
761
+ multiple = false,
762
+ max,
763
+ showRank = false,
764
+ allowUnSelect = true,
765
+ error = false,
766
+ helperText,
767
+ disabled = false,
768
+ className
769
+ }) {
770
+ const controlledValue = multiple ? values : value ? [value] : [];
771
+ const handleValueChange = (next) => {
772
+ var _a;
773
+ if (multiple) {
774
+ if (max !== void 0 && next.length > max) return;
775
+ onChange([...next]);
776
+ } else {
777
+ if (next.length === 0 && !allowUnSelect) return;
778
+ onChange((_a = next[0]) != null ? _a : "");
779
+ }
780
+ };
781
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("flex flex-col gap-3 font-sans", className), children: [
782
+ title && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
783
+ "p",
784
+ {
785
+ className: cn(
786
+ "text-sm font-medium text-foreground",
787
+ error && "text-destructive"
788
+ ),
789
+ children: title
790
+ }
791
+ ),
792
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
793
+ ToggleGroup,
794
+ {
795
+ value: controlledValue,
796
+ onValueChange: handleValueChange,
797
+ variant: "outline",
798
+ type: multiple ? "multiple" : "single",
799
+ spacing: 2,
800
+ disabled,
801
+ className: "flex-wrap justify-start",
802
+ children: options.map((opt) => {
803
+ const rank = showRank && multiple ? values.indexOf(opt.value) : -1;
804
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
805
+ ToggleGroupItem,
806
+ {
807
+ value: opt.value,
808
+ className: "h-auto px-4 py-2 text-sm font-medium",
809
+ children: [
810
+ rank >= 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "text-xs font-bold opacity-70", children: [
811
+ "#",
812
+ rank + 1
813
+ ] }),
814
+ opt.label
815
+ ]
816
+ },
817
+ opt.value
818
+ );
819
+ })
820
+ }
821
+ ),
822
+ error && helperText && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "text-xs text-destructive", children: helperText })
823
+ ] });
824
+ }
825
+
826
+ // src/components/ui/about-you-form.tsx
827
+ var import_jsx_runtime11 = require("react/jsx-runtime");
828
+ var TITLE_OPTIONS = [
829
+ { value: "Dr", label: "Dr" },
830
+ { value: "Miss", label: "Miss" },
831
+ { value: "Mrs", label: "Mrs" },
832
+ { value: "Mr", label: "Mr" },
833
+ { value: "Prof", label: "Prof" },
834
+ { value: "Rev", label: "Rev" }
835
+ ];
836
+ var GENDER_OPTIONS = [
837
+ { value: "M", label: "Male" },
838
+ { value: "F", label: "Female" },
839
+ { value: "PS", label: "Prefer Not To Say" }
840
+ ];
841
+ var CITIZEN_STATUS_OPTIONS = [
842
+ { value: "australian-citizen", label: "Australian Citizen" },
843
+ { value: "permanent-resident", label: "Permanent Resident" },
844
+ { value: "non-citizen", label: "Non Citizen" }
845
+ ];
846
+ var APPLICANT_RELATIONSHIP_OPTIONS = [
847
+ { value: "Married", label: "Married" },
848
+ { value: "DeFacto", label: "Defacto" },
849
+ { value: "Friend", label: "Friend" },
850
+ { value: "FamilyMember", label: "Family Member" }
851
+ ];
852
+ var MARITAL_STATUS_OPTIONS = [
853
+ { value: "Single", label: "Single" },
854
+ { value: "Married", label: "Married" },
855
+ { value: "DeFacto", label: "De Facto" },
856
+ { value: "Separated", label: "Separated" },
857
+ { value: "Divorced", label: "Divorced" },
858
+ { value: "Widowed", label: "Widowed" }
859
+ ];
860
+ var YES_NO_OPTIONS = [
861
+ { value: "Yes", label: "Yes" },
862
+ { value: "No", label: "No" }
863
+ ];
864
+ var PROPERTY_OWNERSHIP_OPTIONS = [
865
+ { value: "trust", label: "Yes \u2014 via Trust" },
866
+ { value: "company", label: "Yes \u2014 via Company" },
867
+ { value: "no", label: "No" }
868
+ ];
869
+ var MAX_DEPENDANTS = 20;
870
+ function FieldRow({ label, htmlFor, children, className }) {
871
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: cn("flex flex-col gap-1.5", className), children: [
872
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Label, { htmlFor, children: label }),
873
+ children
874
+ ] });
875
+ }
876
+ function AboutYouForm({
877
+ data,
878
+ onChange,
879
+ coApplicantName,
880
+ isMainApplicant = true,
881
+ className
882
+ }) {
883
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
884
+ const hasCoApplicant = Boolean(coApplicantName);
885
+ const isRelationshipMarriedOrDefacto = data.applicantRelationship === "Married" || data.applicantRelationship === "DeFacto";
886
+ const isRelationshipFriendOrFamily = data.applicantRelationship === "Friend" || data.applicantRelationship === "FamilyMember";
887
+ const showMaritalStatus = !hasCoApplicant || isRelationshipFriendOrFamily;
888
+ const showDependantsSection = !(!isMainApplicant && isRelationshipMarriedOrDefacto && data.childrenShared === "Yes");
889
+ const showPropertyDetails = data.propertyOwnership === "trust" || data.propertyOwnership === "company";
890
+ function set(key, value) {
891
+ onChange(__spreadProps(__spreadValues({}, data), { [key]: value }));
892
+ }
893
+ function handleHasDependantsChange(value) {
894
+ var _a2, _b2;
895
+ if (value === "Yes") {
896
+ onChange(__spreadProps(__spreadValues({}, data), {
897
+ hasDependants: "Yes",
898
+ dependants: (_a2 = data.dependants) != null ? _a2 : 1,
899
+ dependantDobs: ((_b2 = data.dependantDobs) == null ? void 0 : _b2.length) ? data.dependantDobs : [null]
900
+ }));
901
+ } else {
902
+ onChange(__spreadProps(__spreadValues({}, data), {
903
+ hasDependants: "No",
904
+ dependants: 0,
905
+ dependantDobs: [],
906
+ childrenShared: void 0
907
+ }));
908
+ }
909
+ }
910
+ function handleDependantsCountChange(count) {
911
+ var _a2;
912
+ const current = (_a2 = data.dependantDobs) != null ? _a2 : [];
913
+ const dobs = Array.from({ length: count }, (_, i) => {
914
+ var _a3;
915
+ return (_a3 = current[i]) != null ? _a3 : null;
916
+ });
917
+ onChange(__spreadProps(__spreadValues({}, data), { dependants: count, dependantDobs: dobs }));
918
+ }
919
+ function handlePropertyOwnershipChange(value) {
920
+ if (value === "no") {
921
+ onChange(__spreadProps(__spreadValues({}, data), {
922
+ propertyOwnership: "no",
923
+ trustOrCompanyName: "",
924
+ tradingAs: "",
925
+ dateCommenced: "",
926
+ numberOfDirectors: null,
927
+ numberOfEmployees: null
928
+ }));
929
+ } else {
930
+ set("propertyOwnership", value);
931
+ }
932
+ }
933
+ function handleDependantDobChange(index, date) {
934
+ var _a2;
935
+ const dobs = [...(_a2 = data.dependantDobs) != null ? _a2 : []];
936
+ dobs[index] = date != null ? date : null;
937
+ set("dependantDobs", dobs);
938
+ }
939
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: cn("flex flex-col gap-8 font-sans", className), children: [
940
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
941
+ LoanOptionGroup,
942
+ {
943
+ title: "Title",
944
+ options: TITLE_OPTIONS,
945
+ value: (_a = data.title) != null ? _a : "",
946
+ onChange: (v) => set("title", v)
947
+ }
948
+ ),
949
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
950
+ LoanOptionGroup,
951
+ {
952
+ title: "Gender",
953
+ options: GENDER_OPTIONS,
954
+ value: (_b = data.gender) != null ? _b : "",
955
+ onChange: (v) => set("gender", v)
956
+ }
957
+ ),
958
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
959
+ LoanOptionGroup,
960
+ {
961
+ title: "Citizen Status",
962
+ options: CITIZEN_STATUS_OPTIONS,
963
+ value: (_c = data.citizenStatus) != null ? _c : "",
964
+ onChange: (v) => set("citizenStatus", v)
965
+ }
966
+ ),
967
+ hasCoApplicant && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
968
+ LoanOptionGroup,
969
+ {
970
+ title: `Relationship with ${coApplicantName}`,
971
+ options: APPLICANT_RELATIONSHIP_OPTIONS,
972
+ value: (_d = data.applicantRelationship) != null ? _d : "",
973
+ onChange: (v) => set("applicantRelationship", v)
974
+ }
975
+ ),
976
+ showMaritalStatus && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
977
+ LoanOptionGroup,
978
+ {
979
+ title: "Marital Status",
980
+ options: MARITAL_STATUS_OPTIONS,
981
+ value: (_e = data.maritalStatus) != null ? _e : "",
982
+ onChange: (v) => set("maritalStatus", v)
983
+ }
984
+ ),
985
+ showDependantsSection && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
986
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
987
+ LoanOptionGroup,
988
+ {
989
+ title: "Do you have any dependants?",
990
+ options: YES_NO_OPTIONS,
991
+ value: (_f = data.hasDependants) != null ? _f : "",
992
+ onChange: (v) => handleHasDependantsChange(v)
993
+ }
994
+ ),
995
+ data.hasDependants === "Yes" && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-4", children: [
996
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FieldRow, { label: "Number of dependants", htmlFor: "dependantsCount", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
997
+ Input,
998
+ {
999
+ id: "dependantsCount",
1000
+ type: "number",
1001
+ inputMode: "numeric",
1002
+ min: 1,
1003
+ max: MAX_DEPENDANTS,
1004
+ value: (_g = data.dependants) != null ? _g : 1,
1005
+ onChange: (e) => {
1006
+ const v = parseInt(e.target.value, 10);
1007
+ if (!isNaN(v) && v >= 1 && v <= MAX_DEPENDANTS) {
1008
+ handleDependantsCountChange(v);
1009
+ }
1010
+ }
1011
+ }
1012
+ ) }),
1013
+ hasCoApplicant && isRelationshipMarriedOrDefacto && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1014
+ LoanOptionGroup,
1015
+ {
1016
+ title: "Are your dependants shared with the co-applicant?",
1017
+ options: YES_NO_OPTIONS,
1018
+ value: (_h = data.childrenShared) != null ? _h : "",
1019
+ onChange: (v) => set("childrenShared", v)
1020
+ }
1021
+ ),
1022
+ ((_i = data.dependantDobs) != null ? _i : []).map((dob, index) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1023
+ FieldRow,
1024
+ {
1025
+ label: `Dependant ${index + 1} \u2014 Date of Birth`,
1026
+ htmlFor: `dob-${index}`,
1027
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1028
+ DatePicker,
1029
+ {
1030
+ value: dob != null ? dob : void 0,
1031
+ onChange: (date) => handleDependantDobChange(index, date),
1032
+ placeholder: "Select date"
1033
+ }
1034
+ )
1035
+ },
1036
+ index
1037
+ ))
1038
+ ] })
1039
+ ] }),
1040
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1041
+ LoanOptionGroup,
1042
+ {
1043
+ title: "Do You Own Property in a Trust or Company?",
1044
+ options: PROPERTY_OWNERSHIP_OPTIONS,
1045
+ value: (_j = data.propertyOwnership) != null ? _j : "",
1046
+ onChange: (v) => handlePropertyOwnershipChange(v)
1047
+ }
1048
+ ),
1049
+ showPropertyDetails && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col gap-4 border border-border p-4", children: [
1050
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h2", { className: "text-sm font-semibold text-foreground", children: data.propertyOwnership === "trust" ? "Trust Details" : "Company Details" }),
1051
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "grid grid-cols-2 gap-3", children: [
1052
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1053
+ FieldRow,
1054
+ {
1055
+ label: data.propertyOwnership === "trust" ? "Trust Name" : "Company Name",
1056
+ htmlFor: "trustOrCompanyName",
1057
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1058
+ Input,
1059
+ {
1060
+ id: "trustOrCompanyName",
1061
+ value: (_k = data.trustOrCompanyName) != null ? _k : "",
1062
+ onChange: (e) => set("trustOrCompanyName", e.target.value)
1063
+ }
1064
+ )
1065
+ }
1066
+ ),
1067
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FieldRow, { label: "Trading as", htmlFor: "tradingAs", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1068
+ Input,
1069
+ {
1070
+ id: "tradingAs",
1071
+ value: (_l = data.tradingAs) != null ? _l : "",
1072
+ onChange: (e) => set("tradingAs", e.target.value)
1073
+ }
1074
+ ) }),
1075
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FieldRow, { label: "Date Commenced", htmlFor: "dateCommenced", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1076
+ Input,
1077
+ {
1078
+ id: "dateCommenced",
1079
+ placeholder: "DD/MM/YYYY",
1080
+ value: (_m = data.dateCommenced) != null ? _m : "",
1081
+ onChange: (e) => set("dateCommenced", e.target.value)
1082
+ }
1083
+ ) }),
1084
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FieldRow, { label: "Number of Directors", htmlFor: "numberOfDirectors", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1085
+ Input,
1086
+ {
1087
+ id: "numberOfDirectors",
1088
+ type: "number",
1089
+ inputMode: "numeric",
1090
+ min: 1,
1091
+ value: (_n = data.numberOfDirectors) != null ? _n : "",
1092
+ onChange: (e) => set(
1093
+ "numberOfDirectors",
1094
+ e.target.value ? parseInt(e.target.value, 10) : null
1095
+ )
1096
+ }
1097
+ ) }),
1098
+ data.propertyOwnership === "company" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(FieldRow, { label: "Number of Employees", htmlFor: "numberOfEmployees", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1099
+ Input,
1100
+ {
1101
+ id: "numberOfEmployees",
1102
+ type: "number",
1103
+ inputMode: "numeric",
1104
+ min: 0,
1105
+ value: (_o = data.numberOfEmployees) != null ? _o : "",
1106
+ onChange: (e) => set(
1107
+ "numberOfEmployees",
1108
+ e.target.value ? parseInt(e.target.value, 10) : null
1109
+ )
1110
+ }
1111
+ ) })
1112
+ ] })
1113
+ ] })
1114
+ ] });
1115
+ }
1116
+ // Annotate the CommonJS export names for ESM import in node:
1117
+ 0 && (module.exports = {
1118
+ AboutYouForm,
1119
+ MAX_DEPENDANTS
1120
+ });