@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
@@ -1,14 +1,14 @@
1
- import {
2
- Field,
3
- FieldError,
4
- FieldLabel
5
- } from "./chunk-7BTFGCFC.mjs";
6
1
  import {
7
2
  ChatWidgetHeader,
8
3
  ChatWidgetInputBar,
9
4
  ChatWidgetLauncher,
10
5
  ChatWidgetMessage
11
6
  } from "./chunk-BBXSNDS3.mjs";
7
+ import {
8
+ Field,
9
+ FieldError,
10
+ FieldLabel
11
+ } from "./chunk-MUV4EGDW.mjs";
12
12
  import {
13
13
  Input
14
14
  } from "./chunk-LBTHZSBT.mjs";
@@ -1,23 +1,29 @@
1
1
  import {
2
2
  TaskCheckItem
3
- } from "./chunk-K5QV4TT6.mjs";
4
- import {
5
- formatCurrency
6
- } from "./chunk-MN5NYQCL.mjs";
3
+ } from "./chunk-2WCIORP7.mjs";
7
4
  import {
8
5
  DropdownMenu,
9
6
  DropdownMenuContent,
10
7
  DropdownMenuItem,
11
8
  DropdownMenuSeparator,
12
9
  DropdownMenuTrigger
13
- } from "./chunk-RSUIPKGX.mjs";
10
+ } from "./chunk-HNDTLT5X.mjs";
11
+ import {
12
+ Tooltip,
13
+ TooltipContent,
14
+ TooltipProvider,
15
+ TooltipTrigger
16
+ } from "./chunk-6SR4K5T5.mjs";
17
+ import {
18
+ Separator
19
+ } from "./chunk-2GIYVERS.mjs";
14
20
  import {
15
21
  Badge
16
22
  } from "./chunk-WL6WVV47.mjs";
17
23
  import {
18
24
  formatDateDayMonth,
19
25
  formatDateShort
20
- } from "./chunk-M4VYX2PV.mjs";
26
+ } from "./chunk-PV3Y7QGK.mjs";
21
27
  import {
22
28
  Accordion,
23
29
  AccordionContent,
@@ -25,8 +31,8 @@ import {
25
31
  AccordionTrigger
26
32
  } from "./chunk-UNACI2YK.mjs";
27
33
  import {
28
- Separator
29
- } from "./chunk-2GIYVERS.mjs";
34
+ formatCurrency
35
+ } from "./chunk-MN5NYQCL.mjs";
30
36
  import {
31
37
  Button,
32
38
  buttonVariants
@@ -87,6 +93,7 @@ function OpportunityCard({
87
93
  isModifyCompletedLoan,
88
94
  tasks = [],
89
95
  nextTask,
96
+ onCardClick,
90
97
  onViewDetails,
91
98
  onTaskToggle,
92
99
  onMarkAsDone,
@@ -96,6 +103,8 @@ function OpportunityCard({
96
103
  onDelete,
97
104
  onPutOnHold,
98
105
  isSubmitting = false,
106
+ draggable = false,
107
+ onDragStart,
99
108
  className
100
109
  }) {
101
110
  const resolvedPriority = resolvePriority(
@@ -110,15 +119,21 @@ function OpportunityCard({
110
119
  const hasTasks = tasks.length > 0;
111
120
  const hasActions = onMarkAsDone || onMoveToNextStage;
112
121
  const hasMenu = onViewDetails || onChangePriority || onPutOnHold || onDelete;
122
+ const stopProp = (e) => e.stopPropagation();
113
123
  return /* @__PURE__ */ jsxs(
114
124
  "div",
115
125
  {
116
126
  className: cn(
117
127
  "flex flex-col gap-2 border border-border bg-background p-4 text-foreground shadow-sm",
128
+ onCardClick && "cursor-pointer",
129
+ draggable && "cursor-grab active:cursor-grabbing",
118
130
  isSubmitting && "opacity-60",
119
131
  className
120
132
  ),
121
133
  "data-slot": "opportunity-card",
134
+ draggable,
135
+ onDragStart,
136
+ onClick: onCardClick,
122
137
  children: [
123
138
  onHoldTo && /* @__PURE__ */ jsxs(
124
139
  "div",
@@ -145,20 +160,22 @@ function OpportunityCard({
145
160
  (loanPurposeLabel || loanType) && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "self-start", children: loanPurposeLabel != null ? loanPurposeLabel : formatLoanType(loanType) }),
146
161
  /* @__PURE__ */ jsx("span", { className: "text-base font-bold tabular-nums text-foreground", children: formatCurrency(amount) })
147
162
  ] }),
148
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 -mr-1 -mt-1", children: [
149
- onLaunchAssistant && /* @__PURE__ */ jsx(
150
- Button,
151
- {
152
- type: "button",
153
- variant: "ghost",
154
- size: "icon",
155
- className: "size-7 shrink-0",
156
- onClick: onLaunchAssistant,
157
- "aria-label": "Launch AI Assistant",
158
- title: "Launch AI Assistant",
159
- children: /* @__PURE__ */ jsx(Bot, { className: "size-4" })
160
- }
161
- ),
163
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 -mr-1 -mt-1", onClick: stopProp, children: [
164
+ onLaunchAssistant && /* @__PURE__ */ jsx(TooltipProvider, { delay: 0, children: /* @__PURE__ */ jsxs(Tooltip, { children: [
165
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
166
+ Button,
167
+ {
168
+ type: "button",
169
+ variant: "ghost",
170
+ size: "icon",
171
+ className: "size-7 shrink-0",
172
+ onClick: onLaunchAssistant,
173
+ "aria-label": "Launch AI",
174
+ children: /* @__PURE__ */ jsx(Bot, { className: "size-4" })
175
+ }
176
+ ) }),
177
+ /* @__PURE__ */ jsx(TooltipContent, { children: "Launch AI" })
178
+ ] }) }),
162
179
  hasMenu && /* @__PURE__ */ jsxs(DropdownMenu, { children: [
163
180
  /* @__PURE__ */ jsx(
164
181
  DropdownMenuTrigger,
@@ -243,7 +260,8 @@ function OpportunityCard({
243
260
  )
244
261
  ] })
245
262
  ] }),
246
- hasTasks && /* @__PURE__ */ jsxs(Fragment, { children: [
263
+ hasTasks && // stopPropagation: accordion expand/collapse + task checkboxes must not bubble to onCardClick
264
+ /* @__PURE__ */ jsxs("div", { onClick: stopProp, children: [
247
265
  /* @__PURE__ */ jsx(
248
266
  "div",
249
267
  {
@@ -297,9 +315,10 @@ function OpportunityCard({
297
315
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: nextTask })
298
316
  ] })
299
317
  ] }),
300
- hasActions && /* @__PURE__ */ jsxs(Fragment, { children: [
318
+ hasActions && // stopPropagation: button clicks must not bubble to onCardClick
319
+ /* @__PURE__ */ jsxs("div", { onClick: stopProp, children: [
301
320
  /* @__PURE__ */ jsx(Separator, {}),
302
- (onMoveToNextStage || onMarkAsDone) && /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
321
+ (onMoveToNextStage || onMarkAsDone) && /* @__PURE__ */ jsxs("div", { className: "flex gap-2 pt-2", children: [
303
322
  onMoveToNextStage && /* @__PURE__ */ jsx(
304
323
  Button,
305
324
  {
@@ -1,46 +1,27 @@
1
- import {
2
- AddressAutocomplete
3
- } from "./chunk-57ZXILTS.mjs";
4
1
  import {
5
2
  RadioGroup,
6
3
  RadioGroupCard,
7
4
  RadioGroupItem
8
5
  } from "./chunk-JTK6VJXY.mjs";
9
6
  import {
10
- Avatar,
11
- AvatarFallback
12
- } from "./chunk-H6NQTIF4.mjs";
7
+ AddressAutocomplete
8
+ } from "./chunk-MXP2RX2V.mjs";
13
9
  import {
14
10
  AppointmentSlotSection
15
- } from "./chunk-5VOTTIXF.mjs";
16
- import {
17
- Toggle
18
- } from "./chunk-6QAFGZC2.mjs";
19
- import {
20
- Textarea
21
- } from "./chunk-BS75ICOO.mjs";
22
- import {
23
- Calendar
24
- } from "./chunk-6HIOM2HL.mjs";
25
- import {
26
- formatDateLong
27
- } from "./chunk-M4VYX2PV.mjs";
28
- import {
29
- Label
30
- } from "./chunk-P7CEBZM6.mjs";
31
- import {
32
- Separator
33
- } from "./chunk-2GIYVERS.mjs";
11
+ } from "./chunk-FRT3S72S.mjs";
34
12
  import {
35
13
  Select,
36
14
  SelectContent,
37
15
  SelectItem,
38
16
  SelectTrigger,
39
17
  SelectValue
40
- } from "./chunk-ZEDMKQK2.mjs";
18
+ } from "./chunk-TAX3KL66.mjs";
41
19
  import {
42
- Input
43
- } from "./chunk-LBTHZSBT.mjs";
20
+ Separator
21
+ } from "./chunk-2GIYVERS.mjs";
22
+ import {
23
+ Textarea
24
+ } from "./chunk-BS75ICOO.mjs";
44
25
  import {
45
26
  Dialog,
46
27
  DialogClose,
@@ -49,14 +30,36 @@ import {
49
30
  DialogFooter,
50
31
  DialogHeader,
51
32
  DialogTitle
52
- } from "./chunk-P2N2PEFY.mjs";
33
+ } from "./chunk-NCUH54IZ.mjs";
34
+ import {
35
+ Avatar,
36
+ AvatarFallback
37
+ } from "./chunk-H6NQTIF4.mjs";
38
+ import {
39
+ Badge
40
+ } from "./chunk-WL6WVV47.mjs";
41
+ import {
42
+ Calendar
43
+ } from "./chunk-Q35PNFJ7.mjs";
44
+ import {
45
+ formatDateLong
46
+ } from "./chunk-PV3Y7QGK.mjs";
47
+ import {
48
+ Label
49
+ } from "./chunk-P7CEBZM6.mjs";
50
+ import {
51
+ Toggle
52
+ } from "./chunk-6QAFGZC2.mjs";
53
+ import {
54
+ Input
55
+ } from "./chunk-LBTHZSBT.mjs";
53
56
  import {
54
57
  Button
55
58
  } from "./chunk-NOOEKOWY.mjs";
56
59
 
57
60
  // src/components/ui/appointment-book-dialog.tsx
58
61
  import React from "react";
59
- import { MapPin, Phone, Video } from "lucide-react";
62
+ import { CalendarCheck, MapPin, Phone, Users, Video } from "lucide-react";
60
63
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
61
64
  function ClientSearch({
62
65
  clients,
@@ -113,15 +116,24 @@ var FORMAT_OPTIONS = [
113
116
  label: "Google Meet",
114
117
  icon: /* @__PURE__ */ jsx(Video, { className: "h-4 w-4" })
115
118
  },
119
+ {
120
+ value: "microsoft-teams",
121
+ label: "MS Teams",
122
+ icon: /* @__PURE__ */ jsx(Users, { className: "h-4 w-4" })
123
+ },
116
124
  {
117
125
  value: "offline",
118
126
  label: "Offline",
119
127
  icon: /* @__PURE__ */ jsx(MapPin, { className: "h-4 w-4" })
120
128
  }
121
129
  ];
130
+ var FORMAT_CALL = FORMAT_OPTIONS[0];
131
+ var FORMAT_OFFLINE = FORMAT_OPTIONS[3];
132
+ var ONLINE_MEETING_ICON = /* @__PURE__ */ jsx(Video, { className: "h-4 w-4" });
122
133
  function MeetingFormatSection({
123
134
  format,
124
135
  onFormatChange,
136
+ options = FORMAT_OPTIONS,
125
137
  offlineLocation,
126
138
  onOfflineLocationChange,
127
139
  customAddress,
@@ -131,7 +143,7 @@ function MeetingFormatSection({
131
143
  isClientMode
132
144
  }) {
133
145
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
134
- /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: FORMAT_OPTIONS.map((opt) => /* @__PURE__ */ jsxs(
146
+ /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: options.map((opt) => /* @__PURE__ */ jsxs(
135
147
  Toggle,
136
148
  {
137
149
  variant: "outline",
@@ -192,6 +204,48 @@ function MeetingFormatSection({
192
204
  ] })
193
205
  ] });
194
206
  }
207
+ function SummaryRow({
208
+ label,
209
+ value,
210
+ border = true
211
+ }) {
212
+ return /* @__PURE__ */ jsxs(
213
+ "div",
214
+ {
215
+ className: `flex items-center justify-between px-4 py-3 ${border ? "border-b border-border" : ""}`,
216
+ children: [
217
+ /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: label }),
218
+ typeof value === "string" ? /* @__PURE__ */ jsx("span", { className: "text-xs font-medium", children: value }) : value
219
+ ]
220
+ }
221
+ );
222
+ }
223
+ function BookingConfirmationScreen({
224
+ booking,
225
+ onDone
226
+ }) {
227
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-6 py-4 text-center", children: [
228
+ /* @__PURE__ */ jsx("div", { className: "flex h-16 w-16 items-center justify-center bg-success/10", children: /* @__PURE__ */ jsx(CalendarCheck, { className: "h-8 w-8 text-success" }) }),
229
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
230
+ /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold", children: "Booking request sent!" }),
231
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Your advisor will review and confirm the appointment. You'll receive a notification once it's confirmed." })
232
+ ] }),
233
+ /* @__PURE__ */ jsxs("div", { className: "w-full border border-border bg-muted/30 text-left", children: [
234
+ booking.advisorName && /* @__PURE__ */ jsx(SummaryRow, { label: "Advisor", value: booking.advisorName }),
235
+ /* @__PURE__ */ jsx(SummaryRow, { label: "Date", value: formatDateLong(booking.date) }),
236
+ /* @__PURE__ */ jsx(SummaryRow, { label: "Time", value: booking.slotLabel }),
237
+ /* @__PURE__ */ jsx(
238
+ SummaryRow,
239
+ {
240
+ label: "Status",
241
+ value: /* @__PURE__ */ jsx(Badge, { variant: "warning", children: "Pending confirmation" }),
242
+ border: false
243
+ }
244
+ )
245
+ ] }),
246
+ /* @__PURE__ */ jsx(Button, { className: "w-full", onClick: onDone, children: "Done" })
247
+ ] });
248
+ }
195
249
  var DAY_MAP = {
196
250
  Sun: 0,
197
251
  Mon: 1,
@@ -214,24 +268,35 @@ function AppointmentBookDialog({
214
268
  clientHomeAddress,
215
269
  advisorInfo,
216
270
  initialClientId,
271
+ defaultMeetingFormat,
217
272
  guestInfo,
218
273
  onBook
219
274
  }) {
220
275
  var _a, _b, _c;
221
276
  const isClientMode = clients.length === 0;
222
277
  const showGuestForm = isClientMode && !((guestInfo == null ? void 0 : guestInfo.name) && (guestInfo == null ? void 0 : guestInfo.email));
278
+ const visibleFormatOptions = isClientMode && defaultMeetingFormat ? [
279
+ FORMAT_CALL,
280
+ {
281
+ value: defaultMeetingFormat,
282
+ label: "Online Meeting",
283
+ icon: ONLINE_MEETING_ICON
284
+ },
285
+ FORMAT_OFFLINE
286
+ ] : FORMAT_OPTIONS;
223
287
  const disabledDayOfWeek = React.useMemo(
224
288
  () => schedule == null ? void 0 : schedule.filter((d) => !d.enabled).map((d) => DAY_MAP[d.day]).filter((n) => n !== void 0),
225
289
  [schedule]
226
290
  );
291
+ const today = React.useMemo(() => /* @__PURE__ */ new Date(), []);
227
292
  const [clientId, setClientId] = React.useState(void 0);
228
293
  const [meetingType, setMeetingType] = React.useState("");
229
- const [meetingFormat, setMeetingFormat] = React.useState("call");
294
+ const [meetingFormat, setMeetingFormat] = React.useState(defaultMeetingFormat != null ? defaultMeetingFormat : "call");
230
295
  const [offlineLocation, setOfflineLocation] = React.useState(
231
296
  advisorOfficeAddress ? "office" : "custom"
232
297
  );
233
298
  const [customAddress, setCustomAddress] = React.useState("");
234
- const [date, setDate] = React.useState(/* @__PURE__ */ new Date());
299
+ const [date, setDate] = React.useState(() => /* @__PURE__ */ new Date());
235
300
  const [selectedSlot, setSelectedSlot] = React.useState(void 0);
236
301
  const [notes, setNotes] = React.useState("");
237
302
  const [selectedPhone, setSelectedPhone] = React.useState(
@@ -240,6 +305,7 @@ function AppointmentBookDialog({
240
305
  const [guestName, setGuestName] = React.useState((_a = guestInfo == null ? void 0 : guestInfo.name) != null ? _a : "");
241
306
  const [guestEmail, setGuestEmail] = React.useState((_b = guestInfo == null ? void 0 : guestInfo.email) != null ? _b : "");
242
307
  const [guestPhone, setGuestPhone] = React.useState((_c = guestInfo == null ? void 0 : guestInfo.phone) != null ? _c : "");
308
+ const [submittedBooking, setSubmittedBooking] = React.useState(null);
243
309
  const selectedClient = React.useMemo(
244
310
  () => clients.find((c) => c.id === clientId),
245
311
  [clients, clientId]
@@ -267,7 +333,7 @@ function AppointmentBookDialog({
267
333
  if (!next) {
268
334
  setClientId(void 0);
269
335
  setMeetingType("");
270
- setMeetingFormat("call");
336
+ setMeetingFormat(defaultMeetingFormat != null ? defaultMeetingFormat : "call");
271
337
  setOfflineLocation(advisorOfficeAddress ? "office" : "custom");
272
338
  setCustomAddress("");
273
339
  setDate(/* @__PURE__ */ new Date());
@@ -277,10 +343,17 @@ function AppointmentBookDialog({
277
343
  setGuestName((_a2 = guestInfo == null ? void 0 : guestInfo.name) != null ? _a2 : "");
278
344
  setGuestEmail((_b2 = guestInfo == null ? void 0 : guestInfo.email) != null ? _b2 : "");
279
345
  setGuestPhone((_c2 = guestInfo == null ? void 0 : guestInfo.phone) != null ? _c2 : "");
346
+ setSubmittedBooking(null);
280
347
  }
281
348
  onOpenChange(next);
282
349
  };
283
- return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { size: "2xl", align: "top", children: [
350
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsx(DialogContent, { size: "2xl", children: submittedBooking ? /* @__PURE__ */ jsx(
351
+ BookingConfirmationScreen,
352
+ {
353
+ booking: submittedBooking,
354
+ onDone: () => handleOpenChange(false)
355
+ }
356
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
284
357
  /* @__PURE__ */ jsxs(DialogHeader, { children: [
285
358
  /* @__PURE__ */ jsx(DialogTitle, { children: isClientMode ? "Book an Appointment" : "New appointment" }),
286
359
  /* @__PURE__ */ jsx(DialogDescription, { children: isClientMode ? "Request a meeting with your advisor. They will confirm once the appointment is reviewed." : "Book a meeting with a client. They will receive a confirmation email once the appointment is created." }),
@@ -366,6 +439,7 @@ function AppointmentBookDialog({
366
439
  {
367
440
  format: meetingFormat,
368
441
  onFormatChange: setMeetingFormat,
442
+ options: visibleFormatOptions,
369
443
  offlineLocation,
370
444
  onOfflineLocationChange: setOfflineLocation,
371
445
  customAddress,
@@ -422,8 +496,8 @@ function AppointmentBookDialog({
422
496
  if (d) onDateChange == null ? void 0 : onDateChange(d);
423
497
  },
424
498
  captionLayout: "label",
425
- fromDate: /* @__PURE__ */ new Date(),
426
- disabled: disabledDayOfWeek && disabledDayOfWeek.length > 0 ? [{ before: /* @__PURE__ */ new Date() }, { dayOfWeek: disabledDayOfWeek }] : { before: /* @__PURE__ */ new Date() },
499
+ fromDate: today,
500
+ disabled: disabledDayOfWeek && disabledDayOfWeek.length > 0 ? [{ before: today }, { dayOfWeek: disabledDayOfWeek }] : { before: today },
427
501
  className: "border border-border"
428
502
  }
429
503
  )
@@ -494,14 +568,22 @@ function AppointmentBookDialog({
494
568
  guestEmail: isClientMode ? guestEmail.trim() || void 0 : void 0,
495
569
  guestPhone: isClientMode ? guestPhone.trim() || void 0 : void 0
496
570
  });
497
- handleOpenChange(false);
571
+ if (isClientMode) {
572
+ setSubmittedBooking({
573
+ advisorName: advisorInfo == null ? void 0 : advisorInfo.name,
574
+ date,
575
+ slotLabel: selectedSlot.label
576
+ });
577
+ } else {
578
+ handleOpenChange(false);
579
+ }
498
580
  }
499
581
  },
500
582
  children: isClientMode ? "Book Appointment" : "Create appointment"
501
583
  }
502
584
  )
503
585
  ] })
504
- ] }) });
586
+ ] }) }) });
505
587
  }
506
588
 
507
589
  export {
@@ -0,0 +1,48 @@
1
+ import {
2
+ Badge
3
+ } from "./chunk-WL6WVV47.mjs";
4
+ import {
5
+ cn
6
+ } from "./chunk-AFML43VJ.mjs";
7
+
8
+ // src/components/ui/loan-application-badge.tsx
9
+ import { CheckIcon } from "lucide-react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var STATUS_CONFIG = {
12
+ SENT: {
13
+ label: "Sent Application",
14
+ statusClassName: "border-info/40 bg-info/10 text-info-text",
15
+ showCheck: false
16
+ },
17
+ IN_PROGRESS: {
18
+ label: "Application In Progress",
19
+ statusClassName: "border-warning/40 bg-warning/10 text-warning-text",
20
+ showCheck: false
21
+ },
22
+ COMPLETED: {
23
+ label: "Loan Application",
24
+ statusClassName: "border-success/40 bg-success/10 text-success-text",
25
+ showCheck: true
26
+ }
27
+ };
28
+ function LoanApplicationBadge({
29
+ status,
30
+ className
31
+ }) {
32
+ const { label, statusClassName, showCheck } = STATUS_CONFIG[status];
33
+ return /* @__PURE__ */ jsxs(
34
+ Badge,
35
+ {
36
+ variant: "outline",
37
+ className: cn("w-fit text-xs gap-1", statusClassName, className),
38
+ children: [
39
+ showCheck && /* @__PURE__ */ jsx(CheckIcon, { "aria-hidden": "true", className: "size-3" }),
40
+ label
41
+ ]
42
+ }
43
+ );
44
+ }
45
+
46
+ export {
47
+ LoanApplicationBadge
48
+ };
@@ -0,0 +1,68 @@
1
+ import {
2
+ formatCurrency
3
+ } from "./chunk-MN5NYQCL.mjs";
4
+ import {
5
+ Button
6
+ } from "./chunk-NOOEKOWY.mjs";
7
+ import {
8
+ cn
9
+ } from "./chunk-AFML43VJ.mjs";
10
+
11
+ // src/components/ui/account-list-carousel.tsx
12
+ import { Plus } from "lucide-react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ function AccountCard({
15
+ item,
16
+ isCombined
17
+ }) {
18
+ return /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 flex-col gap-1.5 border border-border p-3 w-36", children: [
19
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground truncate", children: isCombined ? "All accounts" : item.institution }),
20
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground truncate", children: item.name }),
21
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold tabular-nums text-foreground", children: formatCurrency(item.balance) })
22
+ ] });
23
+ }
24
+ function AccountListCarousel({
25
+ accounts,
26
+ type,
27
+ onAddAccount,
28
+ className
29
+ }) {
30
+ const combinedBalance = accounts.reduce((sum, a) => sum + a.balance, 0);
31
+ const showCombined = type === "bankAccount" && accounts.length > 0;
32
+ const showAddButton = type !== "propertyLoan" && onAddAccount;
33
+ return /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ className: cn(
37
+ "flex gap-2 overflow-x-auto pb-1 scrollbar-none",
38
+ className
39
+ ),
40
+ children: [
41
+ showCombined && /* @__PURE__ */ jsx(
42
+ AccountCard,
43
+ {
44
+ item: { name: "Combined", balance: combinedBalance },
45
+ isCombined: true
46
+ }
47
+ ),
48
+ accounts.map((account) => /* @__PURE__ */ jsx(AccountCard, { item: account }, account.id)),
49
+ showAddButton && /* @__PURE__ */ jsxs(
50
+ Button,
51
+ {
52
+ variant: "outline",
53
+ onClick: onAddAccount,
54
+ className: "shrink-0 h-auto w-36 flex-col gap-1.5 border-dashed p-3 text-muted-foreground",
55
+ children: [
56
+ /* @__PURE__ */ jsx(Plus, { className: "h-4 w-4" }),
57
+ /* @__PURE__ */ jsx("span", { className: "text-xs", children: "Add Account" })
58
+ ]
59
+ }
60
+ )
61
+ ]
62
+ }
63
+ );
64
+ }
65
+
66
+ export {
67
+ AccountListCarousel
68
+ };
@@ -0,0 +1,40 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-AFML43VJ.mjs";
4
+
5
+ // src/components/ui/calculator-input-item.tsx
6
+ import { Pencil } from "lucide-react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function CalculatorInputItem({
9
+ label,
10
+ value,
11
+ onEdit,
12
+ className
13
+ }) {
14
+ return /* @__PURE__ */ jsxs(
15
+ "div",
16
+ {
17
+ className: cn("flex items-center justify-between gap-3 py-2", className),
18
+ children: [
19
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm text-muted-foreground", children: label }),
20
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
21
+ /* @__PURE__ */ jsx("span", { className: "text-base font-semibold tabular-nums text-foreground", children: value }),
22
+ onEdit && /* @__PURE__ */ jsx(
23
+ "button",
24
+ {
25
+ type: "button",
26
+ "aria-label": "Edit value",
27
+ onClick: onEdit,
28
+ className: "p-1 text-muted-foreground transition-colors hover:text-foreground",
29
+ children: /* @__PURE__ */ jsx(Pencil, { size: 14 })
30
+ }
31
+ )
32
+ ] })
33
+ ]
34
+ }
35
+ );
36
+ }
37
+
38
+ export {
39
+ CalculatorInputItem
40
+ };