@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
@@ -90,6 +90,16 @@ export type {
90
90
  AiAgent,
91
91
  } from "./ui/add-column-modal";
92
92
 
93
+ export {
94
+ AgentEvaluationCard,
95
+ showAgentEvaluationToast,
96
+ } from "./ui/agent-evaluation-toast";
97
+ export type {
98
+ AgentEvaluationData,
99
+ AgentEvaluationResult,
100
+ AgentEvaluationCardProps,
101
+ } from "./ui/agent-evaluation-toast";
102
+
93
103
  export { AddLeadModal } from "./ui/add-lead-modal";
94
104
  export type { AddLeadModalProps, LeadContact } from "./ui/add-lead-modal";
95
105
 
@@ -273,6 +283,13 @@ export type {
273
283
  AlertSummaryPeriod,
274
284
  } from "./ui/backoffice-alerts-chart";
275
285
 
286
+ export { BackofficeAlertMatchingChart } from "./ui/backoffice-alert-matching-chart";
287
+ export type {
288
+ BackofficeAlertMatchingChartProps,
289
+ AlertMatchingDataPoint,
290
+ AlertMatchingPeriod,
291
+ } from "./ui/backoffice-alert-matching-chart";
292
+
276
293
  export { BackofficeConnectionsChart } from "./ui/backoffice-connections-chart";
277
294
  export type {
278
295
  BackofficeConnectionsChartProps,
@@ -280,6 +297,13 @@ export type {
280
297
  ConnectionSummaryPeriod,
281
298
  } from "./ui/backoffice-connections-chart";
282
299
 
300
+ export { BackofficeContactMatchingChart } from "./ui/backoffice-contact-matching-chart";
301
+ export type {
302
+ BackofficeContactMatchingChartProps,
303
+ ContactMatchingDataPoint,
304
+ ContactMatchingPeriod,
305
+ } from "./ui/backoffice-contact-matching-chart";
306
+
283
307
  export { BackofficeContactHistoryChart } from "./ui/backoffice-contact-history-chart";
284
308
  export type {
285
309
  BackofficeContactHistoryChartProps,
@@ -290,6 +314,34 @@ export type {
290
314
  export { Badge, badgeVariants } from "./ui/badge";
291
315
  export type { BadgeProps } from "./ui/badge";
292
316
 
317
+ export { BankStatementDocumentTable } from "./ui/bank-statement-document-table";
318
+ export type {
319
+ BankStatementDocumentTableProps,
320
+ BankStatementDocument,
321
+ } from "./ui/bank-statement-document-table";
322
+
323
+ export { BankStatementGenerateDialog } from "./ui/bank-statement-generate-dialog";
324
+ export type {
325
+ BankStatementGenerateDialogProps,
326
+ BankStatementGeneratePayload,
327
+ BankStatementAccount,
328
+ BankStatementRangePreset,
329
+ } from "./ui/bank-statement-generate-dialog";
330
+
331
+ export { BankStatementPDFViewer } from "./ui/bank-statement-pdf-viewer";
332
+ export type {
333
+ BankStatementPDFViewerProps,
334
+ BankStatementViewerAccount,
335
+ } from "./ui/bank-statement-pdf-viewer";
336
+
337
+ export { PropertyReportDialog } from "./ui/property-report-dialog";
338
+ export type {
339
+ PropertyReportDialogProps,
340
+ PropertyReportPayload,
341
+ PropertyItem,
342
+ PropertySearchResult,
343
+ } from "./ui/property-report-dialog";
344
+
293
345
  export { BorrowingCapacityLineChart } from "./ui/borrowing-capacity-line-chart";
294
346
  export type {
295
347
  BorrowingCapacityLineChartProps,
@@ -385,6 +437,59 @@ export type {
385
437
  ComboboxSeparatorProps,
386
438
  } from "./ui/combobox";
387
439
 
440
+ export { CsvImportModal } from "./ui/csv-import-modal";
441
+ export type { CsvImportModalProps } from "./ui/csv-import-modal";
442
+
443
+ export { CreateContactModal } from "./ui/create-contact-modal";
444
+ export type {
445
+ CreateContactModalProps,
446
+ CreateContactFormData,
447
+ StaffOption,
448
+ } from "./ui/create-contact-modal";
449
+
450
+ export { DeleteContactComponent } from "./ui/delete-contact-component";
451
+ export type { DeleteContactComponentProps } from "./ui/delete-contact-component";
452
+
453
+ export { ReviewAlertsDialog } from "./ui/review-alerts-dialog";
454
+ export type {
455
+ ReviewAlertsDialogProps,
456
+ ReviewableAlert,
457
+ AlertSeverity,
458
+ } from "./ui/review-alerts-dialog";
459
+
460
+ export {
461
+ ContactAlertQueryBuilder,
462
+ ContactAlertDialog,
463
+ ALERT_QUERY_FIELDS,
464
+ } from "./ui/contact-alert-dialog";
465
+ export type {
466
+ AlertQueryCombinator,
467
+ AlertQueryOperator,
468
+ AlertQueryFieldType,
469
+ ContactAlertSeverity,
470
+ AlertQueryField,
471
+ AlertQueryRule,
472
+ AlertQueryGroup,
473
+ ContactAlertQueryBuilderProps,
474
+ ContactAlertDialogProps,
475
+ } from "./ui/contact-alert-dialog";
476
+
477
+ export {
478
+ ShareDetailsDialog,
479
+ EmailTemplateDialog,
480
+ } from "./ui/share-details-dialog";
481
+ export type {
482
+ ShareDetailsDialogProps,
483
+ EmailTemplateDialogProps,
484
+ } from "./ui/share-details-dialog";
485
+
486
+ export { FilePreviewDialog } from "./ui/file-preview-dialog";
487
+ export type {
488
+ FilePreviewDialogProps,
489
+ FilePreviewState,
490
+ CsvPreviewColumn,
491
+ } from "./ui/file-preview-dialog";
492
+
388
493
  export {
389
494
  DataTable,
390
495
  DataTableToolbar,
@@ -405,11 +510,18 @@ export type {
405
510
 
406
511
  export { DatePicker } from "./ui/date-picker";
407
512
 
513
+ export { ApplicantDocumentChecklist } from "./ui/applicant-document-checklist";
514
+ export type {
515
+ ApplicantDocumentChecklistProps,
516
+ DocumentChecklistItem,
517
+ } from "./ui/applicant-document-checklist";
518
+
408
519
  export { DocumentChecklistTemplate } from "./ui/document-checklist-template";
409
520
  export type {
410
521
  DocumentChecklistTemplateProps,
411
522
  ChecklistCategory,
412
523
  } from "./ui/document-checklist-template";
524
+
413
525
  export type { DatePickerProps } from "./ui/date-picker";
414
526
 
415
527
  export {
@@ -940,6 +1052,66 @@ export type { AuthLogoProps } from "./ui/auth-logo";
940
1052
  export { AuthPageLayout } from "./ui/auth-page-layout";
941
1053
  export type { AuthPageLayoutProps } from "./ui/auth-page-layout";
942
1054
 
1055
+ export {
1056
+ SignupVideoPanel,
1057
+ SignupShell,
1058
+ FrontendShell,
1059
+ } from "./ui/signup-shell";
1060
+ export type {
1061
+ SignupVideoPanelProps,
1062
+ SignupShellProps,
1063
+ FrontendShellProps,
1064
+ } from "./ui/signup-shell";
1065
+
1066
+ export {
1067
+ SectionHeading,
1068
+ FormField,
1069
+ PasswordField,
1070
+ StaffRowItem,
1071
+ } from "./ui/signup-form-primitives";
1072
+ export type {
1073
+ SectionHeadingProps,
1074
+ FormFieldProps,
1075
+ PasswordFieldProps,
1076
+ StaffMember,
1077
+ StaffRowItemProps,
1078
+ } from "./ui/signup-form-primitives";
1079
+
1080
+ export {
1081
+ PersonalDetailsStep,
1082
+ CompanyInfoStep,
1083
+ BrandingInfoStep,
1084
+ InviteStaffView,
1085
+ PaymentView,
1086
+ StripeView,
1087
+ BackofficeSuccessStep,
1088
+ } from "./ui/backoffice-signup-steps";
1089
+ export type {
1090
+ PersonalDetailsStepProps,
1091
+ InviteStaffViewProps,
1092
+ PaymentViewProps,
1093
+ StripeViewProps,
1094
+ } from "./ui/backoffice-signup-steps";
1095
+
1096
+ export {
1097
+ PhoneVerifyStep,
1098
+ BrokerRequestStep,
1099
+ ConnectBankStep,
1100
+ RetrieveBankDataStep,
1101
+ ConnectPropertyStep,
1102
+ BuyingGoalStep,
1103
+ FrontendSuccessStep,
1104
+ } from "./ui/frontend-signup-steps";
1105
+ export type {
1106
+ PhoneVerifyStepProps,
1107
+ BrokerFormValues,
1108
+ BrokerRequestStepProps,
1109
+ ConnectBankStepProps,
1110
+ ConnectPropertyStepProps,
1111
+ BuyingGoalStepProps,
1112
+ FrontendSuccessStepProps,
1113
+ } from "./ui/frontend-signup-steps";
1114
+
943
1115
  export { PasswordStrengthTooltip } from "./ui/password-strength-tooltip";
944
1116
  export type { PasswordStrengthTooltipProps } from "./ui/password-strength-tooltip";
945
1117
 
@@ -1026,3 +1198,54 @@ export type {
1026
1198
  TransactionsLiabilitiesBreakdownChartProps,
1027
1199
  LiabilitySegment,
1028
1200
  } from "./ui/transactions-liabilities-breakdown-doughnut-chart";
1201
+
1202
+ export { ApplicationMobileLayout } from "./ui/application-mobile-layout";
1203
+ export type { ApplicationMobileLayoutProps } from "./ui/application-mobile-layout";
1204
+
1205
+ export { IncomeWorkDetails } from "./ui/income-work-details";
1206
+ export type {
1207
+ IncomeWorkDetailsProps,
1208
+ IncomeWorkSource,
1209
+ IncomeEmploymentType,
1210
+ IncomeEmploymentStatus,
1211
+ IncomeEmploymentBasis,
1212
+ IncomeFrequency,
1213
+ IncomeCompanyType,
1214
+ } from "./ui/income-work-details";
1215
+
1216
+ export { LoanApplicationBadge } from "./ui/loan-application-badge";
1217
+ export type {
1218
+ LoanApplicationBadgeProps,
1219
+ LoanApplicationBadgeStatus,
1220
+ } from "./ui/loan-application-badge";
1221
+
1222
+ export { LoanEntryShell } from "./ui/loan-entry-shell";
1223
+ export type { LoanEntryShellProps } from "./ui/loan-entry-shell";
1224
+
1225
+ export { LoanWizardShell } from "./ui/loan-wizard-shell";
1226
+ export type {
1227
+ LoanWizardShellProps,
1228
+ LoanWizardSection,
1229
+ LoanWizardApplicantOption,
1230
+ } from "./ui/loan-wizard-shell";
1231
+
1232
+ export {
1233
+ ResourceCarousel,
1234
+ ResourceCenterHeader,
1235
+ ResourceDocumentCard,
1236
+ ResourceEmailTemplateCard,
1237
+ ResourceModal,
1238
+ ResourceVideoCard,
1239
+ } from "./ui/resource-center";
1240
+ export type {
1241
+ ResourceCarouselProps,
1242
+ ResourceCenterHeaderProps,
1243
+ ResourceDocumentCardProps,
1244
+ ResourceDocumentItem,
1245
+ ResourceEmailTemplateCardProps,
1246
+ ResourceEmailTemplateItem,
1247
+ ResourceModalAttachment,
1248
+ ResourceModalProps,
1249
+ ResourceVideoCardProps,
1250
+ ResourceVideoItem,
1251
+ } from "./ui/resource-center";
@@ -0,0 +1,397 @@
1
+ import * as React from "react";
2
+ import { cn } from "@/lib/utils";
3
+ import { Input } from "@/components/ui/input";
4
+ import { Label } from "@/components/ui/label";
5
+ import { DatePicker } from "@/components/ui/date-picker";
6
+ import {
7
+ LoanOptionGroup,
8
+ type LoanOptionItem,
9
+ } from "@/components/ui/loan-option-group";
10
+
11
+ // ─── Option lists (mirror loan-application-constants.tsx) ─────────────────────
12
+
13
+ const TITLE_OPTIONS: LoanOptionItem[] = [
14
+ { value: "Dr", label: "Dr" },
15
+ { value: "Miss", label: "Miss" },
16
+ { value: "Mrs", label: "Mrs" },
17
+ { value: "Mr", label: "Mr" },
18
+ { value: "Prof", label: "Prof" },
19
+ { value: "Rev", label: "Rev" },
20
+ ];
21
+
22
+ const GENDER_OPTIONS: LoanOptionItem[] = [
23
+ { value: "M", label: "Male" },
24
+ { value: "F", label: "Female" },
25
+ { value: "PS", label: "Prefer Not To Say" },
26
+ ];
27
+
28
+ const CITIZEN_STATUS_OPTIONS: LoanOptionItem[] = [
29
+ { value: "australian-citizen", label: "Australian Citizen" },
30
+ { value: "permanent-resident", label: "Permanent Resident" },
31
+ { value: "non-citizen", label: "Non Citizen" },
32
+ ];
33
+
34
+ const APPLICANT_RELATIONSHIP_OPTIONS: LoanOptionItem[] = [
35
+ { value: "Married", label: "Married" },
36
+ { value: "DeFacto", label: "Defacto" },
37
+ { value: "Friend", label: "Friend" },
38
+ { value: "FamilyMember", label: "Family Member" },
39
+ ];
40
+
41
+ const MARITAL_STATUS_OPTIONS: LoanOptionItem[] = [
42
+ { value: "Single", label: "Single" },
43
+ { value: "Married", label: "Married" },
44
+ { value: "DeFacto", label: "De Facto" },
45
+ { value: "Separated", label: "Separated" },
46
+ { value: "Divorced", label: "Divorced" },
47
+ { value: "Widowed", label: "Widowed" },
48
+ ];
49
+
50
+ const YES_NO_OPTIONS: LoanOptionItem[] = [
51
+ { value: "Yes", label: "Yes" },
52
+ { value: "No", label: "No" },
53
+ ];
54
+
55
+ const PROPERTY_OWNERSHIP_OPTIONS: LoanOptionItem[] = [
56
+ { value: "trust", label: "Yes — via Trust" },
57
+ { value: "company", label: "Yes — via Company" },
58
+ { value: "no", label: "No" },
59
+ ];
60
+
61
+ export const MAX_DEPENDANTS = 20;
62
+
63
+ // ─── Types ────────────────────────────────────────────────────────────────────
64
+
65
+ export type AboutYouFormData = {
66
+ title?: string;
67
+ gender?: string;
68
+ citizenStatus?: string;
69
+ /** Only relevant for joint applications */
70
+ applicantRelationship?: string;
71
+ maritalStatus?: string;
72
+ hasDependants?: "Yes" | "No";
73
+ dependants?: number;
74
+ dependantDobs?: (Date | null)[];
75
+ /** Only relevant for joint applications where co-applicant is married/defacto */
76
+ childrenShared?: "Yes" | "No";
77
+ propertyOwnership?: "trust" | "company" | "no";
78
+ trustOrCompanyName?: string;
79
+ tradingAs?: string;
80
+ dateCommenced?: string;
81
+ numberOfDirectors?: number | null;
82
+ numberOfEmployees?: number | null;
83
+ };
84
+
85
+ export type AboutYouFormProps = {
86
+ /** Current form values */
87
+ data: AboutYouFormData;
88
+ /** Called on every field change */
89
+ onChange: (data: AboutYouFormData) => void;
90
+ /**
91
+ * When provided, the Relationship field is shown with this label,
92
+ * e.g. "Relationship with James Harbour"
93
+ */
94
+ coApplicantName?: string;
95
+ /** Whether this form is for the main applicant (affects relationship field visibility) */
96
+ isMainApplicant?: boolean;
97
+ className?: string;
98
+ };
99
+
100
+ // ─── Internal helpers ─────────────────────────────────────────────────────────
101
+
102
+ type FieldRowProps = {
103
+ label: string;
104
+ htmlFor?: string;
105
+ children: React.ReactNode;
106
+ className?: string;
107
+ };
108
+
109
+ function FieldRow({ label, htmlFor, children, className }: FieldRowProps) {
110
+ return (
111
+ <div className={cn("flex flex-col gap-1.5", className)}>
112
+ <Label htmlFor={htmlFor}>{label}</Label>
113
+ {children}
114
+ </div>
115
+ );
116
+ }
117
+
118
+ // ─── Component ────────────────────────────────────────────────────────────────
119
+
120
+ /**
121
+ * AboutYouForm — applicant personal status form in the loan wizard.
122
+ *
123
+ * Matches the frontend's `YourDetailsPersonalStatusStep`.
124
+ * Fields: Title · Gender · Citizen Status · (Relationship) ·
125
+ * Marital Status · Dependants · Property Ownership
126
+ *
127
+ * Uses `LoanOptionGroup` for all button-group selections and
128
+ * `DatePicker` for dependant DOBs.
129
+ *
130
+ * Figma: WealthX-Backoffice---Mobile-App (loan wizard — About You tab)
131
+ */
132
+ export function AboutYouForm({
133
+ data,
134
+ onChange,
135
+ coApplicantName,
136
+ isMainApplicant = true,
137
+ className,
138
+ }: AboutYouFormProps) {
139
+ const hasCoApplicant = Boolean(coApplicantName);
140
+
141
+ const isRelationshipMarriedOrDefacto =
142
+ data.applicantRelationship === "Married" ||
143
+ data.applicantRelationship === "DeFacto";
144
+
145
+ const isRelationshipFriendOrFamily =
146
+ data.applicantRelationship === "Friend" ||
147
+ data.applicantRelationship === "FamilyMember";
148
+
149
+ const showMaritalStatus = !hasCoApplicant || isRelationshipFriendOrFamily;
150
+
151
+ const showDependantsSection = !(
152
+ !isMainApplicant &&
153
+ isRelationshipMarriedOrDefacto &&
154
+ data.childrenShared === "Yes"
155
+ );
156
+
157
+ const showPropertyDetails =
158
+ data.propertyOwnership === "trust" || data.propertyOwnership === "company";
159
+
160
+ function set<K extends keyof AboutYouFormData>(
161
+ key: K,
162
+ value: AboutYouFormData[K],
163
+ ) {
164
+ onChange({ ...data, [key]: value });
165
+ }
166
+
167
+ function handleHasDependantsChange(value: string) {
168
+ if (value === "Yes") {
169
+ onChange({
170
+ ...data,
171
+ hasDependants: "Yes",
172
+ dependants: data.dependants ?? 1,
173
+ dependantDobs: data.dependantDobs?.length ? data.dependantDobs : [null],
174
+ });
175
+ } else {
176
+ onChange({
177
+ ...data,
178
+ hasDependants: "No",
179
+ dependants: 0,
180
+ dependantDobs: [],
181
+ childrenShared: undefined,
182
+ });
183
+ }
184
+ }
185
+
186
+ function handleDependantsCountChange(count: number) {
187
+ const current = data.dependantDobs ?? [];
188
+ const dobs = Array.from({ length: count }, (_, i) => current[i] ?? null);
189
+ onChange({ ...data, dependants: count, dependantDobs: dobs });
190
+ }
191
+
192
+ function handlePropertyOwnershipChange(value: string) {
193
+ if (value === "no") {
194
+ onChange({
195
+ ...data,
196
+ propertyOwnership: "no",
197
+ trustOrCompanyName: "",
198
+ tradingAs: "",
199
+ dateCommenced: "",
200
+ numberOfDirectors: null,
201
+ numberOfEmployees: null,
202
+ });
203
+ } else {
204
+ set("propertyOwnership", value as "trust" | "company");
205
+ }
206
+ }
207
+
208
+ function handleDependantDobChange(index: number, date: Date | undefined) {
209
+ const dobs = [...(data.dependantDobs ?? [])];
210
+ dobs[index] = date ?? null;
211
+ set("dependantDobs", dobs);
212
+ }
213
+
214
+ return (
215
+ <div className={cn("flex flex-col gap-8 font-sans", className)}>
216
+ <LoanOptionGroup
217
+ title="Title"
218
+ options={TITLE_OPTIONS}
219
+ value={data.title ?? ""}
220
+ onChange={(v) => set("title", v as string)}
221
+ />
222
+
223
+ <LoanOptionGroup
224
+ title="Gender"
225
+ options={GENDER_OPTIONS}
226
+ value={data.gender ?? ""}
227
+ onChange={(v) => set("gender", v as string)}
228
+ />
229
+
230
+ <LoanOptionGroup
231
+ title="Citizen Status"
232
+ options={CITIZEN_STATUS_OPTIONS}
233
+ value={data.citizenStatus ?? ""}
234
+ onChange={(v) => set("citizenStatus", v as string)}
235
+ />
236
+
237
+ {hasCoApplicant && (
238
+ <LoanOptionGroup
239
+ title={`Relationship with ${coApplicantName}`}
240
+ options={APPLICANT_RELATIONSHIP_OPTIONS}
241
+ value={data.applicantRelationship ?? ""}
242
+ onChange={(v) => set("applicantRelationship", v as string)}
243
+ />
244
+ )}
245
+
246
+ {showMaritalStatus && (
247
+ <LoanOptionGroup
248
+ title="Marital Status"
249
+ options={MARITAL_STATUS_OPTIONS}
250
+ value={data.maritalStatus ?? ""}
251
+ onChange={(v) => set("maritalStatus", v as string)}
252
+ />
253
+ )}
254
+
255
+ {showDependantsSection && (
256
+ <>
257
+ <LoanOptionGroup
258
+ title="Do you have any dependants?"
259
+ options={YES_NO_OPTIONS}
260
+ value={data.hasDependants ?? ""}
261
+ onChange={(v) => handleHasDependantsChange(v as string)}
262
+ />
263
+
264
+ {data.hasDependants === "Yes" && (
265
+ <div className="flex flex-col gap-4">
266
+ <FieldRow label="Number of dependants" htmlFor="dependantsCount">
267
+ <Input
268
+ id="dependantsCount"
269
+ type="number"
270
+ inputMode="numeric"
271
+ min={1}
272
+ max={MAX_DEPENDANTS}
273
+ value={data.dependants ?? 1}
274
+ onChange={(e) => {
275
+ const v = parseInt(e.target.value, 10);
276
+ if (!isNaN(v) && v >= 1 && v <= MAX_DEPENDANTS) {
277
+ handleDependantsCountChange(v);
278
+ }
279
+ }}
280
+ />
281
+ </FieldRow>
282
+
283
+ {/* Children shared (joint + married/defacto) */}
284
+ {hasCoApplicant && isRelationshipMarriedOrDefacto && (
285
+ <LoanOptionGroup
286
+ title="Are your dependants shared with the co-applicant?"
287
+ options={YES_NO_OPTIONS}
288
+ value={data.childrenShared ?? ""}
289
+ onChange={(v) => set("childrenShared", v as "Yes" | "No")}
290
+ />
291
+ )}
292
+
293
+ {(data.dependantDobs ?? []).map((dob, index) => (
294
+ <FieldRow
295
+ key={index}
296
+ label={`Dependant ${index + 1} — Date of Birth`}
297
+ htmlFor={`dob-${index}`}
298
+ >
299
+ <DatePicker
300
+ value={dob ?? undefined}
301
+ onChange={(date) => handleDependantDobChange(index, date)}
302
+ placeholder="Select date"
303
+ />
304
+ </FieldRow>
305
+ ))}
306
+ </div>
307
+ )}
308
+ </>
309
+ )}
310
+
311
+ <LoanOptionGroup
312
+ title="Do You Own Property in a Trust or Company?"
313
+ options={PROPERTY_OWNERSHIP_OPTIONS}
314
+ value={data.propertyOwnership ?? ""}
315
+ onChange={(v) => handlePropertyOwnershipChange(v as string)}
316
+ />
317
+
318
+ {showPropertyDetails && (
319
+ <div className="flex flex-col gap-4 border border-border p-4">
320
+ <h2 className="text-sm font-semibold text-foreground">
321
+ {data.propertyOwnership === "trust"
322
+ ? "Trust Details"
323
+ : "Company Details"}
324
+ </h2>
325
+
326
+ <div className="grid grid-cols-2 gap-3">
327
+ <FieldRow
328
+ label={
329
+ data.propertyOwnership === "trust"
330
+ ? "Trust Name"
331
+ : "Company Name"
332
+ }
333
+ htmlFor="trustOrCompanyName"
334
+ >
335
+ <Input
336
+ id="trustOrCompanyName"
337
+ value={data.trustOrCompanyName ?? ""}
338
+ onChange={(e) => set("trustOrCompanyName", e.target.value)}
339
+ />
340
+ </FieldRow>
341
+
342
+ <FieldRow label="Trading as" htmlFor="tradingAs">
343
+ <Input
344
+ id="tradingAs"
345
+ value={data.tradingAs ?? ""}
346
+ onChange={(e) => set("tradingAs", e.target.value)}
347
+ />
348
+ </FieldRow>
349
+
350
+ <FieldRow label="Date Commenced" htmlFor="dateCommenced">
351
+ <Input
352
+ id="dateCommenced"
353
+ placeholder="DD/MM/YYYY"
354
+ value={data.dateCommenced ?? ""}
355
+ onChange={(e) => set("dateCommenced", e.target.value)}
356
+ />
357
+ </FieldRow>
358
+
359
+ <FieldRow label="Number of Directors" htmlFor="numberOfDirectors">
360
+ <Input
361
+ id="numberOfDirectors"
362
+ type="number"
363
+ inputMode="numeric"
364
+ min={1}
365
+ value={data.numberOfDirectors ?? ""}
366
+ onChange={(e) =>
367
+ set(
368
+ "numberOfDirectors",
369
+ e.target.value ? parseInt(e.target.value, 10) : null,
370
+ )
371
+ }
372
+ />
373
+ </FieldRow>
374
+
375
+ {data.propertyOwnership === "company" && (
376
+ <FieldRow label="Number of Employees" htmlFor="numberOfEmployees">
377
+ <Input
378
+ id="numberOfEmployees"
379
+ type="number"
380
+ inputMode="numeric"
381
+ min={0}
382
+ value={data.numberOfEmployees ?? ""}
383
+ onChange={(e) =>
384
+ set(
385
+ "numberOfEmployees",
386
+ e.target.value ? parseInt(e.target.value, 10) : null,
387
+ )
388
+ }
389
+ />
390
+ </FieldRow>
391
+ )}
392
+ </div>
393
+ </div>
394
+ )}
395
+ </div>
396
+ );
397
+ }