@wealthx/shadcn 1.4.1 → 1.5.1

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 +356 -176
  2. package/CHANGELOG.md +12 -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 +367 -3
  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
@@ -248,11 +248,11 @@ function formatDateShort(iso) {
248
248
  }
249
249
  }
250
250
  function formatDateLong(date) {
251
+ const d = typeof date === "string" ? safeParse(date) : date;
251
252
  try {
252
- const d = typeof date === "string" ? safeParse(date) : date;
253
253
  return (0, import_date_fns.format)(d, "EEEE, d MMMM");
254
254
  } catch (e) {
255
- return String(date);
255
+ return d.toLocaleDateString();
256
256
  }
257
257
  }
258
258
 
@@ -515,7 +515,7 @@ function DialogContent(_a) {
515
515
  showCloseButton = true,
516
516
  style,
517
517
  container,
518
- align = "center",
518
+ align = "top",
519
519
  size = "lg",
520
520
  minWidth
521
521
  } = _b, props = __objRest(_b, [
@@ -1260,53 +1260,9 @@ function Textarea(_a) {
1260
1260
  );
1261
1261
  }
1262
1262
 
1263
- // src/components/ui/avatar.tsx
1264
- var import_avatar = require("@base-ui/react/avatar");
1265
- var import_jsx_runtime15 = require("react/jsx-runtime");
1266
- function Avatar(_a) {
1267
- var _b = _a, {
1268
- className,
1269
- size = "default"
1270
- } = _b, props = __objRest(_b, [
1271
- "className",
1272
- "size"
1273
- ]);
1274
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1275
- import_avatar.Avatar.Root,
1276
- __spreadValues({
1277
- className: cn(
1278
- "group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
1279
- className
1280
- ),
1281
- "data-size": size,
1282
- "data-slot": "avatar"
1283
- }, props)
1284
- );
1285
- }
1286
- function AvatarFallback(_a) {
1287
- var _b = _a, {
1288
- className
1289
- } = _b, props = __objRest(_b, [
1290
- "className"
1291
- ]);
1292
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1293
- import_avatar.Avatar.Fallback,
1294
- __spreadValues({
1295
- className: cn(
1296
- "flex size-full items-center justify-center rounded-full overflow-hidden bg-muted text-body-small font-sans text-muted-foreground group-data-[size=sm]/avatar:text-caption",
1297
- className
1298
- ),
1299
- "data-slot": "avatar-fallback"
1300
- }, props)
1301
- );
1302
- }
1303
-
1304
- // src/components/ui/appointment-book-dialog.tsx
1305
- var import_lucide_react7 = require("lucide-react");
1306
-
1307
1263
  // src/components/ui/badge.tsx
1308
1264
  var import_class_variance_authority3 = require("class-variance-authority");
1309
- var import_jsx_runtime16 = require("react/jsx-runtime");
1265
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1310
1266
  var badgeVariants = (0, import_class_variance_authority3.cva)(
1311
1267
  "inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2.5 py-0.5 text-xs font-medium font-sans whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",
1312
1268
  {
@@ -1339,7 +1295,7 @@ function Badge(_a) {
1339
1295
  "asChild"
1340
1296
  ]);
1341
1297
  const Comp = asChild ? Slot : "span";
1342
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1298
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1343
1299
  Comp,
1344
1300
  __spreadValues({
1345
1301
  className: cn(badgeVariants({ variant }), className),
@@ -1349,6 +1305,50 @@ function Badge(_a) {
1349
1305
  );
1350
1306
  }
1351
1307
 
1308
+ // src/components/ui/avatar.tsx
1309
+ var import_avatar = require("@base-ui/react/avatar");
1310
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1311
+ function Avatar(_a) {
1312
+ var _b = _a, {
1313
+ className,
1314
+ size = "default"
1315
+ } = _b, props = __objRest(_b, [
1316
+ "className",
1317
+ "size"
1318
+ ]);
1319
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1320
+ import_avatar.Avatar.Root,
1321
+ __spreadValues({
1322
+ className: cn(
1323
+ "group/avatar relative flex size-8 shrink-0 rounded-full select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
1324
+ className
1325
+ ),
1326
+ "data-size": size,
1327
+ "data-slot": "avatar"
1328
+ }, props)
1329
+ );
1330
+ }
1331
+ function AvatarFallback(_a) {
1332
+ var _b = _a, {
1333
+ className
1334
+ } = _b, props = __objRest(_b, [
1335
+ "className"
1336
+ ]);
1337
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1338
+ import_avatar.Avatar.Fallback,
1339
+ __spreadValues({
1340
+ className: cn(
1341
+ "flex size-full items-center justify-center rounded-full overflow-hidden bg-muted text-body-small font-sans text-muted-foreground group-data-[size=sm]/avatar:text-caption",
1342
+ className
1343
+ ),
1344
+ "data-slot": "avatar-fallback"
1345
+ }, props)
1346
+ );
1347
+ }
1348
+
1349
+ // src/components/ui/appointment-book-dialog.tsx
1350
+ var import_lucide_react7 = require("lucide-react");
1351
+
1352
1352
  // src/components/ui/appointment-time-slot-picker.tsx
1353
1353
  var import_jsx_runtime17 = require("react/jsx-runtime");
1354
1354
  function AppointmentSlotSection({
@@ -1437,15 +1437,24 @@ var FORMAT_OPTIONS = [
1437
1437
  label: "Google Meet",
1438
1438
  icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
1439
1439
  },
1440
+ {
1441
+ value: "microsoft-teams",
1442
+ label: "MS Teams",
1443
+ icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Users, { className: "h-4 w-4" })
1444
+ },
1440
1445
  {
1441
1446
  value: "offline",
1442
1447
  label: "Offline",
1443
1448
  icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MapPin, { className: "h-4 w-4" })
1444
1449
  }
1445
1450
  ];
1451
+ var FORMAT_CALL = FORMAT_OPTIONS[0];
1452
+ var FORMAT_OFFLINE = FORMAT_OPTIONS[3];
1453
+ var ONLINE_MEETING_ICON = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" });
1446
1454
  function MeetingFormatSection({
1447
1455
  format: format2,
1448
1456
  onFormatChange,
1457
+ options = FORMAT_OPTIONS,
1449
1458
  offlineLocation,
1450
1459
  onOfflineLocationChange,
1451
1460
  customAddress,
@@ -1455,7 +1464,7 @@ function MeetingFormatSection({
1455
1464
  isClientMode
1456
1465
  }) {
1457
1466
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-2", children: [
1458
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex gap-2", children: FORMAT_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1467
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex gap-2", children: options.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1459
1468
  Toggle,
1460
1469
  {
1461
1470
  variant: "outline",
@@ -1516,6 +1525,48 @@ function MeetingFormatSection({
1516
1525
  ] })
1517
1526
  ] });
1518
1527
  }
1528
+ function SummaryRow({
1529
+ label,
1530
+ value,
1531
+ border = true
1532
+ }) {
1533
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1534
+ "div",
1535
+ {
1536
+ className: `flex items-center justify-between px-4 py-3 ${border ? "border-b border-border" : ""}`,
1537
+ children: [
1538
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-xs text-muted-foreground", children: label }),
1539
+ typeof value === "string" ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "text-xs font-medium", children: value }) : value
1540
+ ]
1541
+ }
1542
+ );
1543
+ }
1544
+ function BookingConfirmationScreen({
1545
+ booking,
1546
+ onDone
1547
+ }) {
1548
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col items-center gap-6 py-4 text-center", children: [
1549
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "flex h-16 w-16 items-center justify-center bg-success/10", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.CalendarCheck, { className: "h-8 w-8 text-success" }) }),
1550
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
1551
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { className: "text-lg font-semibold", children: "Booking request sent!" }),
1552
+ /* @__PURE__ */ (0, import_jsx_runtime18.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." })
1553
+ ] }),
1554
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "w-full border border-border bg-muted/30 text-left", children: [
1555
+ booking.advisorName && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SummaryRow, { label: "Advisor", value: booking.advisorName }),
1556
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SummaryRow, { label: "Date", value: formatDateLong(booking.date) }),
1557
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SummaryRow, { label: "Time", value: booking.slotLabel }),
1558
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1559
+ SummaryRow,
1560
+ {
1561
+ label: "Status",
1562
+ value: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Badge, { variant: "warning", children: "Pending confirmation" }),
1563
+ border: false
1564
+ }
1565
+ )
1566
+ ] }),
1567
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Button, { className: "w-full", onClick: onDone, children: "Done" })
1568
+ ] });
1569
+ }
1519
1570
  var DAY_MAP = {
1520
1571
  Sun: 0,
1521
1572
  Mon: 1,
@@ -1538,24 +1589,35 @@ function AppointmentBookDialog({
1538
1589
  clientHomeAddress,
1539
1590
  advisorInfo,
1540
1591
  initialClientId,
1592
+ defaultMeetingFormat,
1541
1593
  guestInfo,
1542
1594
  onBook
1543
1595
  }) {
1544
1596
  var _a, _b, _c;
1545
1597
  const isClientMode = clients.length === 0;
1546
1598
  const showGuestForm = isClientMode && !((guestInfo == null ? void 0 : guestInfo.name) && (guestInfo == null ? void 0 : guestInfo.email));
1599
+ const visibleFormatOptions = isClientMode && defaultMeetingFormat ? [
1600
+ FORMAT_CALL,
1601
+ {
1602
+ value: defaultMeetingFormat,
1603
+ label: "Online Meeting",
1604
+ icon: ONLINE_MEETING_ICON
1605
+ },
1606
+ FORMAT_OFFLINE
1607
+ ] : FORMAT_OPTIONS;
1547
1608
  const disabledDayOfWeek = import_react3.default.useMemo(
1548
1609
  () => schedule == null ? void 0 : schedule.filter((d) => !d.enabled).map((d) => DAY_MAP[d.day]).filter((n) => n !== void 0),
1549
1610
  [schedule]
1550
1611
  );
1612
+ const today = import_react3.default.useMemo(() => /* @__PURE__ */ new Date(), []);
1551
1613
  const [clientId, setClientId] = import_react3.default.useState(void 0);
1552
1614
  const [meetingType, setMeetingType] = import_react3.default.useState("");
1553
- const [meetingFormat, setMeetingFormat] = import_react3.default.useState("call");
1615
+ const [meetingFormat, setMeetingFormat] = import_react3.default.useState(defaultMeetingFormat != null ? defaultMeetingFormat : "call");
1554
1616
  const [offlineLocation, setOfflineLocation] = import_react3.default.useState(
1555
1617
  advisorOfficeAddress ? "office" : "custom"
1556
1618
  );
1557
1619
  const [customAddress, setCustomAddress] = import_react3.default.useState("");
1558
- const [date, setDate] = import_react3.default.useState(/* @__PURE__ */ new Date());
1620
+ const [date, setDate] = import_react3.default.useState(() => /* @__PURE__ */ new Date());
1559
1621
  const [selectedSlot, setSelectedSlot] = import_react3.default.useState(void 0);
1560
1622
  const [notes, setNotes] = import_react3.default.useState("");
1561
1623
  const [selectedPhone, setSelectedPhone] = import_react3.default.useState(
@@ -1564,6 +1626,7 @@ function AppointmentBookDialog({
1564
1626
  const [guestName, setGuestName] = import_react3.default.useState((_a = guestInfo == null ? void 0 : guestInfo.name) != null ? _a : "");
1565
1627
  const [guestEmail, setGuestEmail] = import_react3.default.useState((_b = guestInfo == null ? void 0 : guestInfo.email) != null ? _b : "");
1566
1628
  const [guestPhone, setGuestPhone] = import_react3.default.useState((_c = guestInfo == null ? void 0 : guestInfo.phone) != null ? _c : "");
1629
+ const [submittedBooking, setSubmittedBooking] = import_react3.default.useState(null);
1567
1630
  const selectedClient = import_react3.default.useMemo(
1568
1631
  () => clients.find((c) => c.id === clientId),
1569
1632
  [clients, clientId]
@@ -1591,7 +1654,7 @@ function AppointmentBookDialog({
1591
1654
  if (!next) {
1592
1655
  setClientId(void 0);
1593
1656
  setMeetingType("");
1594
- setMeetingFormat("call");
1657
+ setMeetingFormat(defaultMeetingFormat != null ? defaultMeetingFormat : "call");
1595
1658
  setOfflineLocation(advisorOfficeAddress ? "office" : "custom");
1596
1659
  setCustomAddress("");
1597
1660
  setDate(/* @__PURE__ */ new Date());
@@ -1601,10 +1664,17 @@ function AppointmentBookDialog({
1601
1664
  setGuestName((_a2 = guestInfo == null ? void 0 : guestInfo.name) != null ? _a2 : "");
1602
1665
  setGuestEmail((_b2 = guestInfo == null ? void 0 : guestInfo.email) != null ? _b2 : "");
1603
1666
  setGuestPhone((_c2 = guestInfo == null ? void 0 : guestInfo.phone) != null ? _c2 : "");
1667
+ setSubmittedBooking(null);
1604
1668
  }
1605
1669
  onOpenChange(next);
1606
1670
  };
1607
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DialogContent, { size: "2xl", align: "top", children: [
1671
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Dialog, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogContent, { size: "2xl", children: submittedBooking ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1672
+ BookingConfirmationScreen,
1673
+ {
1674
+ booking: submittedBooking,
1675
+ onDone: () => handleOpenChange(false)
1676
+ }
1677
+ ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
1608
1678
  /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DialogHeader, { children: [
1609
1679
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogTitle, { children: isClientMode ? "Book an Appointment" : "New appointment" }),
1610
1680
  /* @__PURE__ */ (0, import_jsx_runtime18.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." }),
@@ -1690,6 +1760,7 @@ function AppointmentBookDialog({
1690
1760
  {
1691
1761
  format: meetingFormat,
1692
1762
  onFormatChange: setMeetingFormat,
1763
+ options: visibleFormatOptions,
1693
1764
  offlineLocation,
1694
1765
  onOfflineLocationChange: setOfflineLocation,
1695
1766
  customAddress,
@@ -1746,8 +1817,8 @@ function AppointmentBookDialog({
1746
1817
  if (d) onDateChange == null ? void 0 : onDateChange(d);
1747
1818
  },
1748
1819
  captionLayout: "label",
1749
- fromDate: /* @__PURE__ */ new Date(),
1750
- disabled: disabledDayOfWeek && disabledDayOfWeek.length > 0 ? [{ before: /* @__PURE__ */ new Date() }, { dayOfWeek: disabledDayOfWeek }] : { before: /* @__PURE__ */ new Date() },
1820
+ fromDate: today,
1821
+ disabled: disabledDayOfWeek && disabledDayOfWeek.length > 0 ? [{ before: today }, { dayOfWeek: disabledDayOfWeek }] : { before: today },
1751
1822
  className: "border border-border"
1752
1823
  }
1753
1824
  )
@@ -1818,14 +1889,22 @@ function AppointmentBookDialog({
1818
1889
  guestEmail: isClientMode ? guestEmail.trim() || void 0 : void 0,
1819
1890
  guestPhone: isClientMode ? guestPhone.trim() || void 0 : void 0
1820
1891
  });
1821
- handleOpenChange(false);
1892
+ if (isClientMode) {
1893
+ setSubmittedBooking({
1894
+ advisorName: advisorInfo == null ? void 0 : advisorInfo.name,
1895
+ date,
1896
+ slotLabel: selectedSlot.label
1897
+ });
1898
+ } else {
1899
+ handleOpenChange(false);
1900
+ }
1822
1901
  }
1823
1902
  },
1824
1903
  children: isClientMode ? "Book Appointment" : "Create appointment"
1825
1904
  }
1826
1905
  )
1827
1906
  ] })
1828
- ] }) });
1907
+ ] }) }) });
1829
1908
  }
1830
1909
  // Annotate the CommonJS export names for ESM import in node:
1831
1910
  0 && (module.exports = {
@@ -1,26 +1,26 @@
1
1
  import {
2
2
  AppointmentBookDialog
3
- } from "../../chunk-FL6DZFJK.mjs";
4
- import "../../chunk-57ZXILTS.mjs";
5
- import "../../chunk-ISUA7DSB.mjs";
3
+ } from "../../chunk-46Q4335I.mjs";
6
4
  import "../../chunk-JTK6VJXY.mjs";
7
- import "../../chunk-OWFQSXVD.mjs";
8
- import "../../chunk-H6NQTIF4.mjs";
9
- import "../../chunk-5VOTTIXF.mjs";
10
- import "../../chunk-6QAFGZC2.mjs";
5
+ import "../../chunk-MXP2RX2V.mjs";
6
+ import "../../chunk-ISUA7DSB.mjs";
7
+ import "../../chunk-FRT3S72S.mjs";
8
+ import "../../chunk-TAX3KL66.mjs";
9
+ import "../../chunk-2GIYVERS.mjs";
11
10
  import "../../chunk-BS75ICOO.mjs";
11
+ import "../../chunk-NCUH54IZ.mjs";
12
+ import "../../chunk-H6NQTIF4.mjs";
12
13
  import "../../chunk-WL6WVV47.mjs";
13
- import "../../chunk-6HIOM2HL.mjs";
14
- import "../../chunk-M4VYX2PV.mjs";
14
+ import "../../chunk-Q35PNFJ7.mjs";
15
+ import "../../chunk-PV3Y7QGK.mjs";
15
16
  import "../../chunk-P7CEBZM6.mjs";
16
- import "../../chunk-2GIYVERS.mjs";
17
- import "../../chunk-ZEDMKQK2.mjs";
17
+ import "../../chunk-OWFQSXVD.mjs";
18
+ import "../../chunk-6QAFGZC2.mjs";
18
19
  import "../../chunk-LBTHZSBT.mjs";
19
- import "../../chunk-P2N2PEFY.mjs";
20
+ import "../../chunk-WDTXHLYM.mjs";
21
+ import "../../chunk-S4CTM3UE.mjs";
20
22
  import "../../chunk-NOOEKOWY.mjs";
21
23
  import "../../chunk-R4HCRDU5.mjs";
22
- import "../../chunk-FEZKMUCF.mjs";
23
- import "../../chunk-QOJ2DQD6.mjs";
24
24
  import "../../chunk-AFML43VJ.mjs";
25
25
  import "../../chunk-WNQUEZJF.mjs";
26
26
  export {
@@ -700,7 +700,7 @@ function MonthView({
700
700
  }) {
701
701
  const todayDate = /* @__PURE__ */ new Date(today + "T00:00:00");
702
702
  const grid = generateMonthGrid(todayDate.getFullYear(), todayDate.getMonth());
703
- const toIso = (d) => d.toISOString().slice(0, 10);
703
+ const toIso = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
704
704
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col", children: [
705
705
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "grid grid-cols-7 border-b border-border", children: MONTH_DAY_HEADERS.map((d) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
706
706
  "div",
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AppointmentCalendarView
3
- } from "../../chunk-XYPW2XA5.mjs";
4
- import "../../chunk-H6NQTIF4.mjs";
5
- import "../../chunk-WL6WVV47.mjs";
3
+ } from "../../chunk-EW72FINW.mjs";
6
4
  import "../../chunk-WE4YKBDE.mjs";
7
- import "../../chunk-M4VYX2PV.mjs";
8
5
  import "../../chunk-2GIYVERS.mjs";
6
+ import "../../chunk-H6NQTIF4.mjs";
7
+ import "../../chunk-WL6WVV47.mjs";
8
+ import "../../chunk-PV3Y7QGK.mjs";
9
9
  import "../../chunk-NOOEKOWY.mjs";
10
10
  import "../../chunk-R4HCRDU5.mjs";
11
11
  import "../../chunk-AFML43VJ.mjs";
@@ -867,7 +867,7 @@ function DialogContent(_a) {
867
867
  showCloseButton = true,
868
868
  style,
869
869
  container,
870
- align = "center",
870
+ align = "top",
871
871
  size = "lg",
872
872
  minWidth
873
873
  } = _b, props = __objRest(_b, [
@@ -1322,6 +1322,23 @@ var STATUS_CONFIG = {
1322
1322
  icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.RefreshCw, { size: 12 })
1323
1323
  }
1324
1324
  };
1325
+ var ICON_CLASS = "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground";
1326
+ var MEETING_FORMAT_META = {
1327
+ call: { icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: ICON_CLASS }), label: "Phone Call" },
1328
+ "google-meet": {
1329
+ icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Video, { className: ICON_CLASS }),
1330
+ label: "Google Meet"
1331
+ },
1332
+ "microsoft-teams": {
1333
+ icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Users, { className: ICON_CLASS }),
1334
+ label: "Microsoft Teams"
1335
+ },
1336
+ offline: { icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MapPin, { className: ICON_CLASS }), label: "In Person" }
1337
+ };
1338
+ var ONLINE_FORMATS = /* @__PURE__ */ new Set([
1339
+ "google-meet",
1340
+ "microsoft-teams"
1341
+ ]);
1325
1342
  function AppointmentDetailSheet({
1326
1343
  appointment,
1327
1344
  open,
@@ -1340,6 +1357,8 @@ function AppointmentDetailSheet({
1340
1357
  const { variant, label, icon } = STATUS_CONFIG[appointment.status];
1341
1358
  const isCancelled = appointment.status === "cancelled";
1342
1359
  const isConfirmed = appointment.status === "confirmed";
1360
+ const fmt = appointment.meetingFormat;
1361
+ const meetingMeta = fmt ? MEETING_FORMAT_META[fmt] : void 0;
1343
1362
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1344
1363
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Sheet, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1345
1364
  SheetContent,
@@ -1421,17 +1440,25 @@ function AppointmentDetailSheet({
1421
1440
  appointment.timeEnd
1422
1441
  ] })
1423
1442
  ] }),
1424
- appointment.meetingFormat && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start gap-3 text-sm", children: [
1425
- appointment.meetingFormat === "call" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Phone, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
1426
- appointment.meetingFormat === "google-meet" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Video, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
1427
- appointment.meetingFormat === "offline" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MapPin, { className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground" }),
1443
+ fmt && meetingMeta && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-start gap-3 text-sm", children: [
1444
+ meetingMeta.icon,
1428
1445
  /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-0.5", children: [
1429
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "font-medium", children: [
1430
- appointment.meetingFormat === "call" && "Phone Call",
1431
- appointment.meetingFormat === "google-meet" && "Google Meet",
1432
- appointment.meetingFormat === "offline" && "In Person"
1433
- ] }),
1434
- appointment.meetingFormat === "offline" && appointment.meetingLocation && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-muted-foreground", children: appointment.meetingLocation })
1446
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "font-medium", children: meetingMeta.label }),
1447
+ fmt === "call" && appointment.callPhone && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-muted-foreground", children: appointment.callPhone }),
1448
+ ONLINE_FORMATS.has(fmt) && appointment.meetingLink && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1449
+ "a",
1450
+ {
1451
+ href: appointment.meetingLink,
1452
+ target: "_blank",
1453
+ rel: "noreferrer",
1454
+ className: "flex items-center gap-1 text-primary hover:underline",
1455
+ children: [
1456
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.ExternalLink, { className: "h-3 w-3" }),
1457
+ "Join Meeting"
1458
+ ]
1459
+ }
1460
+ ),
1461
+ fmt === "offline" && appointment.meetingLocation && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-muted-foreground", children: appointment.meetingLocation })
1435
1462
  ] })
1436
1463
  ] })
1437
1464
  ] }),
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  AppointmentDetailSheet
3
- } from "../../chunk-N6Q5IPKT.mjs";
4
- import "../../chunk-4MM7LHM5.mjs";
5
- import "../../chunk-H6NQTIF4.mjs";
6
- import "../../chunk-SIVYAI3M.mjs";
7
- import "../../chunk-5VOTTIXF.mjs";
8
- import "../../chunk-6QAFGZC2.mjs";
3
+ } from "../../chunk-HO6S3ECM.mjs";
4
+ import "../../chunk-2LLFNGJZ.mjs";
5
+ import "../../chunk-FRT3S72S.mjs";
6
+ import "../../chunk-J5NW5NCT.mjs";
7
+ import "../../chunk-2GIYVERS.mjs";
9
8
  import "../../chunk-BS75ICOO.mjs";
9
+ import "../../chunk-NCUH54IZ.mjs";
10
+ import "../../chunk-H6NQTIF4.mjs";
10
11
  import "../../chunk-WL6WVV47.mjs";
11
- import "../../chunk-TLAWKTSA.mjs";
12
- import "../../chunk-6HIOM2HL.mjs";
13
- import "../../chunk-M4VYX2PV.mjs";
12
+ import "../../chunk-BD3DWDT4.mjs";
13
+ import "../../chunk-Q35PNFJ7.mjs";
14
+ import "../../chunk-PV3Y7QGK.mjs";
14
15
  import "../../chunk-P7CEBZM6.mjs";
15
- import "../../chunk-2GIYVERS.mjs";
16
- import "../../chunk-P2N2PEFY.mjs";
16
+ import "../../chunk-6QAFGZC2.mjs";
17
+ import "../../chunk-WDTXHLYM.mjs";
18
+ import "../../chunk-S4CTM3UE.mjs";
17
19
  import "../../chunk-NOOEKOWY.mjs";
18
20
  import "../../chunk-R4HCRDU5.mjs";
19
- import "../../chunk-FEZKMUCF.mjs";
20
- import "../../chunk-QOJ2DQD6.mjs";
21
21
  import "../../chunk-AFML43VJ.mjs";
22
22
  import "../../chunk-WNQUEZJF.mjs";
23
23
  export {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  AppointmentGmailConnect
3
- } from "../../chunk-FLL633WS.mjs";
4
- import "../../chunk-WL6WVV47.mjs";
3
+ } from "../../chunk-ZXEUBBHJ.mjs";
5
4
  import "../../chunk-2GIYVERS.mjs";
5
+ import "../../chunk-WL6WVV47.mjs";
6
6
  import "../../chunk-LBTHZSBT.mjs";
7
7
  import "../../chunk-NOOEKOWY.mjs";
8
8
  import "../../chunk-R4HCRDU5.mjs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  AppointmentSlotSection,
3
3
  AppointmentTimeSlotPicker
4
- } from "../../chunk-5VOTTIXF.mjs";
5
- import "../../chunk-6QAFGZC2.mjs";
4
+ } from "../../chunk-FRT3S72S.mjs";
6
5
  import "../../chunk-WL6WVV47.mjs";
6
+ import "../../chunk-6QAFGZC2.mjs";
7
7
  import "../../chunk-R4HCRDU5.mjs";
8
8
  import "../../chunk-AFML43VJ.mjs";
9
9
  import "../../chunk-WNQUEZJF.mjs";
@@ -596,7 +596,7 @@ function DialogContent(_a) {
596
596
  showCloseButton = true,
597
597
  style,
598
598
  container,
599
- align = "center",
599
+ align = "top",
600
600
  size = "lg",
601
601
  minWidth
602
602
  } = _b, props = __objRest(_b, [
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  AppointmentUpcomingCard
3
- } from "../../chunk-RCAOCHWA.mjs";
4
- import "../../chunk-H6NQTIF4.mjs";
5
- import "../../chunk-5VOTTIXF.mjs";
6
- import "../../chunk-6QAFGZC2.mjs";
3
+ } from "../../chunk-DFL5CV75.mjs";
4
+ import "../../chunk-FRT3S72S.mjs";
5
+ import "../../chunk-2GIYVERS.mjs";
7
6
  import "../../chunk-BS75ICOO.mjs";
7
+ import "../../chunk-NCUH54IZ.mjs";
8
+ import "../../chunk-H6NQTIF4.mjs";
8
9
  import "../../chunk-WL6WVV47.mjs";
9
- import "../../chunk-6HIOM2HL.mjs";
10
- import "../../chunk-M4VYX2PV.mjs";
10
+ import "../../chunk-Q35PNFJ7.mjs";
11
+ import "../../chunk-PV3Y7QGK.mjs";
11
12
  import "../../chunk-P7CEBZM6.mjs";
12
- import "../../chunk-2GIYVERS.mjs";
13
- import "../../chunk-P2N2PEFY.mjs";
13
+ import "../../chunk-6QAFGZC2.mjs";
14
+ import "../../chunk-WDTXHLYM.mjs";
15
+ import "../../chunk-S4CTM3UE.mjs";
14
16
  import "../../chunk-NOOEKOWY.mjs";
15
17
  import "../../chunk-R4HCRDU5.mjs";
16
- import "../../chunk-FEZKMUCF.mjs";
17
- import "../../chunk-QOJ2DQD6.mjs";
18
18
  import "../../chunk-AFML43VJ.mjs";
19
19
  import "../../chunk-WNQUEZJF.mjs";
20
20
  export {