@wealthx/shadcn 1.3.2 → 1.3.4

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 (313) hide show
  1. package/.turbo/turbo-build.log +227 -191
  2. package/CHANGELOG.md +12 -0
  3. package/dist/{chunk-2UM72RJ7.mjs → chunk-2D3HQPFN.mjs} +12 -10
  4. package/dist/chunk-2EM2FRU6.mjs +613 -0
  5. package/dist/{chunk-FH6QVUVZ.mjs → chunk-2GIYVERS.mjs} +2 -2
  6. package/dist/chunk-2P7HP7LR.mjs +68 -0
  7. package/dist/{chunk-HISNT2MG.mjs → chunk-37AE3OM5.mjs} +5 -5
  8. package/dist/{chunk-HBZLGDIN.mjs → chunk-3ERBUVHC.mjs} +169 -110
  9. package/dist/{chunk-C7CQJNMR.mjs → chunk-3VDET466.mjs} +2 -2
  10. package/dist/{chunk-462HMNO4.mjs → chunk-4MM7LHM5.mjs} +2 -2
  11. package/dist/{chunk-QMY3AZJH.mjs → chunk-4Z66LMIQ.mjs} +2 -2
  12. package/dist/{chunk-U5X52X37.mjs → chunk-57ZXILTS.mjs} +6 -6
  13. package/dist/{chunk-2A5RRQGG.mjs → chunk-5NF6T2RS.mjs} +11 -20
  14. package/dist/{chunk-3OYFOX3X.mjs → chunk-5VOTTIXF.mjs} +2 -2
  15. package/dist/{chunk-LBMRIB3G.mjs → chunk-6AJUS7VX.mjs} +1 -1
  16. package/dist/{chunk-OODBHKG7.mjs → chunk-6HIOM2HL.mjs} +7 -4
  17. package/dist/{chunk-BDYZCBRT.mjs → chunk-6QAFGZC2.mjs} +2 -2
  18. package/dist/{chunk-U4NDAF2P.mjs → chunk-6TX73WG7.mjs} +1 -1
  19. package/dist/{chunk-GD4BJDJR.mjs → chunk-7BTFGCFC.mjs} +4 -4
  20. package/dist/{chunk-FAKPBKLT.mjs → chunk-7GWRPXHD.mjs} +4 -4
  21. package/dist/{chunk-NMOI6CQD.mjs → chunk-7YI3HEBH.mjs} +5 -5
  22. package/dist/{chunk-T4BJLT57.mjs → chunk-AE7MASLF.mjs} +5 -5
  23. package/dist/{chunk-VLQZANBF.mjs → chunk-AFML43VJ.mjs} +6 -1
  24. package/dist/chunk-BBXSNDS3.mjs +260 -0
  25. package/dist/chunk-BOW7U26Y.mjs +203 -0
  26. package/dist/{chunk-34NWQURD.mjs → chunk-BS75ICOO.mjs} +2 -2
  27. package/dist/chunk-D2NSIIXG.mjs +394 -0
  28. package/dist/{chunk-3GF7OVTP.mjs → chunk-DGNHGNYH.mjs} +2 -2
  29. package/dist/{chunk-VLARHE5V.mjs → chunk-DMXYRCHM.mjs} +6 -6
  30. package/dist/{chunk-OGOYQ7BG.mjs → chunk-DQB4EPIS.mjs} +1 -1
  31. package/dist/{chunk-MIZQHHUO.mjs → chunk-FL6DZFJK.mjs} +106 -38
  32. package/dist/{chunk-I3RZS7V2.mjs → chunk-FLL633WS.mjs} +19 -33
  33. package/dist/{chunk-PBL4OQV2.mjs → chunk-FTPBQVQ6.mjs} +4 -4
  34. package/dist/chunk-FYPSTTEJ.mjs +169 -0
  35. package/dist/{chunk-6O6KD7CE.mjs → chunk-G27TSQLQ.mjs} +6 -6
  36. package/dist/{chunk-66MI7Q4B.mjs → chunk-GT3RU6GA.mjs} +2 -2
  37. package/dist/{chunk-D6ID6M4V.mjs → chunk-GTAVSBDO.mjs} +2 -2
  38. package/dist/{chunk-24FUO7TD.mjs → chunk-H6NQTIF4.mjs} +2 -2
  39. package/dist/{chunk-7DHU4VGG.mjs → chunk-HK4HUQTV.mjs} +2 -2
  40. package/dist/chunk-I4KVSZCH.mjs +101 -0
  41. package/dist/{chunk-RGVKLTLH.mjs → chunk-IKXYTCSB.mjs} +2 -2
  42. package/dist/{chunk-Y6DWJSKZ.mjs → chunk-ISUA7DSB.mjs} +1 -1
  43. package/dist/{chunk-J5UICVJS.mjs → chunk-JPGL36WQ.mjs} +2 -2
  44. package/dist/{chunk-7XJHLGUV.mjs → chunk-JTK6VJXY.mjs} +2 -2
  45. package/dist/{chunk-7YAU5CY6.mjs → chunk-JVMXMFBB.mjs} +2 -2
  46. package/dist/{chunk-IAE3F7DR.mjs → chunk-JZY6TNIS.mjs} +21 -21
  47. package/dist/{chunk-K5A5L6T2.mjs → chunk-K4KOD3KR.mjs} +12 -12
  48. package/dist/{chunk-MBON7YRJ.mjs → chunk-K5QV4TT6.mjs} +3 -3
  49. package/dist/{chunk-IHMFS7NZ.mjs → chunk-K5VHK7CM.mjs} +21 -21
  50. package/dist/{chunk-RJI6GKVF.mjs → chunk-KCWNDYPZ.mjs} +5 -5
  51. package/dist/{chunk-UFYSFDER.mjs → chunk-KFH36NKF.mjs} +1 -1
  52. package/dist/{chunk-EBXQWIYG.mjs → chunk-KLTACJ2G.mjs} +5 -5
  53. package/dist/{chunk-3TTACBDP.mjs → chunk-KWD6GANL.mjs} +4 -4
  54. package/dist/{chunk-IOJRDS6V.mjs → chunk-L4NSRQ3T.mjs} +218 -147
  55. package/dist/{chunk-GYMYRIZP.mjs → chunk-LBTHZSBT.mjs} +2 -2
  56. package/dist/{chunk-AMQZRHEZ.mjs → chunk-LQULK2E3.mjs} +5 -5
  57. package/dist/{chunk-YJG55G2H.mjs → chunk-LR6LHDP3.mjs} +5 -5
  58. package/dist/{chunk-7PV3IWCN.mjs → chunk-M4VYX2PV.mjs} +19 -1
  59. package/dist/{chunk-P76HMUI6.mjs → chunk-MDUKXXIL.mjs} +2 -2
  60. package/dist/{chunk-LV35NGVG.mjs → chunk-N6Q5IPKT.mjs} +9 -9
  61. package/dist/{chunk-DOEO3CDL.mjs → chunk-NB3ZL36B.mjs} +1 -1
  62. package/dist/{chunk-XREGSKX3.mjs → chunk-NOOEKOWY.mjs} +5 -5
  63. package/dist/{chunk-NL3ZO62D.mjs → chunk-NT4FX27K.mjs} +1 -1
  64. package/dist/{chunk-QZ4RE6NA.mjs → chunk-NTYQWVLI.mjs} +6 -6
  65. package/dist/{chunk-ERGGHC2V.mjs → chunk-OEOOYMC2.mjs} +2 -2
  66. package/dist/{chunk-4GAWMKMI.mjs → chunk-OIKBW2QD.mjs} +291 -54
  67. package/dist/{chunk-DUJTAXMH.mjs → chunk-OKTJFDPN.mjs} +6 -6
  68. package/dist/chunk-OLKMCXAR.mjs +1219 -0
  69. package/dist/{chunk-EI5F6FMT.mjs → chunk-OWFQSXVD.mjs} +3 -3
  70. package/dist/{chunk-6DZEXFNB.mjs → chunk-P2N2PEFY.mjs} +3 -3
  71. package/dist/{chunk-NSLMILBT.mjs → chunk-P7CEBZM6.mjs} +2 -2
  72. package/dist/{chunk-7S5AESZO.mjs → chunk-PNRUH7JY.mjs} +6 -6
  73. package/dist/{chunk-ZU4NV6RG.mjs → chunk-PNSYFE3K.mjs} +2 -2
  74. package/dist/{chunk-JKGDCQTZ.mjs → chunk-QTRSCVQ3.mjs} +5 -5
  75. package/dist/{chunk-ABFDMHOR.mjs → chunk-QX7IFQSF.mjs} +5 -5
  76. package/dist/{chunk-CFMQP5QS.mjs → chunk-QXKGOMUX.mjs} +6 -6
  77. package/dist/{chunk-NQPOYKAQ.mjs → chunk-R2ON6CAN.mjs} +2 -2
  78. package/dist/{chunk-DBHJ5KC3.mjs → chunk-R4HCRDU5.mjs} +1 -1
  79. package/dist/{chunk-EWRB4PAD.mjs → chunk-RCAOCHWA.mjs} +14 -14
  80. package/dist/{chunk-EFRENWEJ.mjs → chunk-RSUIPKGX.mjs} +2 -2
  81. package/dist/{chunk-DGHAXJBN.mjs → chunk-S2FKV4M5.mjs} +5 -5
  82. package/dist/{chunk-RGU7HOEC.mjs → chunk-SET2ANTY.mjs} +5 -7
  83. package/dist/chunk-SFH2NJEJ.mjs +47 -0
  84. package/dist/{chunk-6AW4KJHE.mjs → chunk-SIVYAI3M.mjs} +12 -12
  85. package/dist/{chunk-5FQIKDKP.mjs → chunk-THVO2N47.mjs} +8 -8
  86. package/dist/{chunk-JMHR3YGZ.mjs → chunk-TLAWKTSA.mjs} +3 -3
  87. package/dist/{chunk-HVY6KCCF.mjs → chunk-TOWTPLRC.mjs} +68 -72
  88. package/dist/{chunk-6JQFUE5I.mjs → chunk-UALR6JGV.mjs} +2 -2
  89. package/dist/{chunk-N6TNTQL6.mjs → chunk-UJZ4UHWI.mjs} +9 -11
  90. package/dist/{chunk-MARPPFOJ.mjs → chunk-UNACI2YK.mjs} +2 -2
  91. package/dist/{chunk-3NCUZIFP.mjs → chunk-V6XGXYCJ.mjs} +7 -7
  92. package/dist/chunk-VB5M6OZQ.mjs +57 -0
  93. package/dist/{chunk-5IS7G74I.mjs → chunk-VY5NEUP7.mjs} +6 -6
  94. package/dist/{chunk-JHJHG4GO.mjs → chunk-WE4YKBDE.mjs} +2 -2
  95. package/dist/{chunk-BKNFWEH2.mjs → chunk-WL6WVV47.mjs} +3 -3
  96. package/dist/{chunk-FWCSY2DS.mjs → chunk-WNQUEZJF.mjs} +22 -1
  97. package/dist/{chunk-2Y7YJKPE.mjs → chunk-WZ6UJCBL.mjs} +1 -1
  98. package/dist/{chunk-UMTOX62O.mjs → chunk-XYPW2XA5.mjs} +13 -10
  99. package/dist/chunk-Y2MTAVAK.mjs +34 -0
  100. package/dist/{chunk-6CR5N2JW.mjs → chunk-YCWLFG27.mjs} +6 -6
  101. package/dist/{chunk-PU4YZQXV.mjs → chunk-YE67AALL.mjs} +12 -12
  102. package/dist/{chunk-M3FV7LOK.mjs → chunk-YEWNFK5S.mjs} +6 -1
  103. package/dist/{chunk-R3VSPKNP.mjs → chunk-YIZHS72Z.mjs} +11 -12
  104. package/dist/{chunk-7PYJD5JI.mjs → chunk-ZEDMKQK2.mjs} +2 -2
  105. package/dist/{chunk-N2PT566P.mjs → chunk-ZFCDYW6N.mjs} +4 -4
  106. package/dist/chunk-ZGQIVGIN.mjs +57 -0
  107. package/dist/{chunk-Q2BGOAMG.mjs → chunk-ZKWXDQDG.mjs} +4 -4
  108. package/dist/{chunk-GHC7LLUX.mjs → chunk-ZOWL2L5J.mjs} +5 -5
  109. package/dist/components/ui/accordion.mjs +3 -3
  110. package/dist/components/ui/add-column-modal.js +2 -2
  111. package/dist/components/ui/add-column-modal.mjs +10 -10
  112. package/dist/components/ui/add-lead-modal.js +424 -82
  113. package/dist/components/ui/add-lead-modal.mjs +12 -9
  114. package/dist/components/ui/advisor-card.js +2 -2
  115. package/dist/components/ui/advisor-card.mjs +8 -8
  116. package/dist/components/ui/ai-assistant-drawer.js +2 -2
  117. package/dist/components/ui/ai-assistant-drawer.mjs +9 -9
  118. package/dist/components/ui/ai-builder.js +958 -0
  119. package/dist/components/ui/ai-builder.mjs +25 -0
  120. package/dist/components/ui/ai-conversations.js +2045 -0
  121. package/dist/components/ui/ai-conversations.mjs +41 -0
  122. package/dist/components/ui/alert-dialog.js +2 -2
  123. package/dist/components/ui/alert-dialog.mjs +5 -5
  124. package/dist/components/ui/alert.mjs +3 -3
  125. package/dist/components/ui/appointment-action-dialogs.js +19 -3
  126. package/dist/components/ui/appointment-action-dialogs.mjs +15 -14
  127. package/dist/components/ui/appointment-availability-settings.js +181 -111
  128. package/dist/components/ui/appointment-availability-settings.mjs +20 -18
  129. package/dist/components/ui/appointment-book-dialog.js +113 -24
  130. package/dist/components/ui/appointment-book-dialog.mjs +21 -20
  131. package/dist/components/ui/appointment-calendar-view.js +19 -3
  132. package/dist/components/ui/appointment-calendar-view.mjs +10 -9
  133. package/dist/components/ui/appointment-detail-sheet.js +19 -3
  134. package/dist/components/ui/appointment-detail-sheet.mjs +18 -17
  135. package/dist/components/ui/appointment-gmail-connect.js +49 -89
  136. package/dist/components/ui/appointment-gmail-connect.mjs +8 -9
  137. package/dist/components/ui/appointment-mini-card.js +2 -2
  138. package/dist/components/ui/appointment-mini-card.mjs +6 -6
  139. package/dist/components/ui/appointment-time-slot-picker.mjs +6 -6
  140. package/dist/components/ui/appointment-upcoming-card.js +19 -3
  141. package/dist/components/ui/appointment-upcoming-card.mjs +15 -14
  142. package/dist/components/ui/auth-logo.js +95 -0
  143. package/dist/components/ui/auth-logo.mjs +8 -0
  144. package/dist/components/ui/auth-page-layout.js +108 -0
  145. package/dist/components/ui/auth-page-layout.mjs +8 -0
  146. package/dist/components/ui/avatar.mjs +3 -3
  147. package/dist/components/ui/backoffice-alert-history-chart.js +2 -2
  148. package/dist/components/ui/backoffice-alert-history-chart.mjs +9 -9
  149. package/dist/components/ui/backoffice-alerts-chart.js +2 -2
  150. package/dist/components/ui/backoffice-alerts-chart.mjs +11 -11
  151. package/dist/components/ui/backoffice-connections-chart.js +2 -2
  152. package/dist/components/ui/backoffice-connections-chart.mjs +11 -11
  153. package/dist/components/ui/backoffice-contact-history-chart.js +2 -2
  154. package/dist/components/ui/backoffice-contact-history-chart.mjs +9 -9
  155. package/dist/components/ui/badge.mjs +4 -4
  156. package/dist/components/ui/borrowing-capacity-line-chart.js +145 -132
  157. package/dist/components/ui/borrowing-capacity-line-chart.mjs +9 -9
  158. package/dist/components/ui/button.js +2 -2
  159. package/dist/components/ui/button.mjs +4 -4
  160. package/dist/components/ui/calendar.js +17 -3
  161. package/dist/components/ui/calendar.mjs +6 -5
  162. package/dist/components/ui/card.mjs +3 -3
  163. package/dist/components/ui/cash-balance-line-chart.js +158 -158
  164. package/dist/components/ui/cash-balance-line-chart.mjs +9 -9
  165. package/dist/components/ui/cashflow-bar-chart.js +2 -2
  166. package/dist/components/ui/cashflow-bar-chart.mjs +9 -9
  167. package/dist/components/ui/chat-widget-primitives.js +573 -0
  168. package/dist/components/ui/chat-widget-primitives.mjs +21 -0
  169. package/dist/components/ui/chat-widget.js +1268 -0
  170. package/dist/components/ui/chat-widget.mjs +29 -0
  171. package/dist/components/ui/checkbox.mjs +3 -3
  172. package/dist/components/ui/chip.js +2 -2
  173. package/dist/components/ui/chip.mjs +6 -6
  174. package/dist/components/ui/color-picker.js +2 -2
  175. package/dist/components/ui/color-picker.mjs +7 -7
  176. package/dist/components/ui/combobox.mjs +3 -3
  177. package/dist/components/ui/data-table.js +2 -2
  178. package/dist/components/ui/data-table.mjs +12 -12
  179. package/dist/components/ui/date-picker.js +22 -6
  180. package/dist/components/ui/date-picker.mjs +9 -8
  181. package/dist/components/ui/dialog.js +2 -2
  182. package/dist/components/ui/dialog.mjs +5 -5
  183. package/dist/components/ui/document-checklist-template.js +630 -0
  184. package/dist/components/ui/document-checklist-template.mjs +15 -0
  185. package/dist/components/ui/drawer.js +2 -2
  186. package/dist/components/ui/drawer.mjs +3 -3
  187. package/dist/components/ui/dropdown-menu.mjs +3 -3
  188. package/dist/components/ui/empty.mjs +3 -3
  189. package/dist/components/ui/expense-bar-chart.js +2 -2
  190. package/dist/components/ui/expense-bar-chart.mjs +9 -9
  191. package/dist/components/ui/field.mjs +5 -5
  192. package/dist/components/ui/financial-cards.js +431 -291
  193. package/dist/components/ui/financial-cards.mjs +10 -9
  194. package/dist/components/ui/financial-drawers.js +4 -4
  195. package/dist/components/ui/financial-drawers.mjs +8 -8
  196. package/dist/components/ui/financial-primitives.mjs +3 -3
  197. package/dist/components/ui/financial-sections.js +8 -9
  198. package/dist/components/ui/financial-sections.mjs +12 -12
  199. package/dist/components/ui/form-primitives.mjs +8 -8
  200. package/dist/components/ui/income-bar-chart.js +2 -2
  201. package/dist/components/ui/income-bar-chart.mjs +9 -9
  202. package/dist/components/ui/input-group.js +2 -2
  203. package/dist/components/ui/input-group.mjs +7 -7
  204. package/dist/components/ui/input-otp.mjs +3 -3
  205. package/dist/components/ui/input.mjs +3 -3
  206. package/dist/components/ui/kanban-column.js +19 -23
  207. package/dist/components/ui/kanban-column.mjs +14 -14
  208. package/dist/components/ui/label.mjs +3 -3
  209. package/dist/components/ui/onboarding-layout.js +476 -0
  210. package/dist/components/ui/onboarding-layout.mjs +11 -0
  211. package/dist/components/ui/opportunity-card.js +2 -2
  212. package/dist/components/ui/opportunity-card.mjs +12 -12
  213. package/dist/components/ui/opportunity-edit-modals.js +22 -6
  214. package/dist/components/ui/opportunity-edit-modals.mjs +21 -20
  215. package/dist/components/ui/opportunity-summary-tab.js +991 -674
  216. package/dist/components/ui/opportunity-summary-tab.mjs +26 -26
  217. package/dist/components/ui/page-header.mjs +3 -3
  218. package/dist/components/ui/page-top-bar.mjs +3 -3
  219. package/dist/components/ui/pagination.js +2 -2
  220. package/dist/components/ui/pagination.mjs +6 -6
  221. package/dist/components/ui/password-strength-tooltip.js +197 -0
  222. package/dist/components/ui/password-strength-tooltip.mjs +11 -0
  223. package/dist/components/ui/pipeline-alerts.mjs +3 -3
  224. package/dist/components/ui/pipeline-board.js +19 -23
  225. package/dist/components/ui/pipeline-board.mjs +18 -18
  226. package/dist/components/ui/pipeline-chart.js +12 -6
  227. package/dist/components/ui/pipeline-chart.mjs +4 -3
  228. package/dist/components/ui/pipeline-dialogs.js +28 -12
  229. package/dist/components/ui/pipeline-dialogs.mjs +14 -13
  230. package/dist/components/ui/pipeline-primitives.mjs +6 -6
  231. package/dist/components/ui/popover.mjs +3 -3
  232. package/dist/components/ui/progress.mjs +3 -3
  233. package/dist/components/ui/property-cashflow-doughnut-chart.js +2 -2
  234. package/dist/components/ui/property-cashflow-doughnut-chart.mjs +9 -9
  235. package/dist/components/ui/property-debt-equity-doughnut-chart.js +2 -2
  236. package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +9 -9
  237. package/dist/components/ui/property-mobile-estimate-line-chart.js +2 -2
  238. package/dist/components/ui/property-mobile-estimate-line-chart.mjs +9 -9
  239. package/dist/components/ui/radio-group.mjs +3 -3
  240. package/dist/components/ui/select.mjs +3 -3
  241. package/dist/components/ui/separator.mjs +3 -3
  242. package/dist/components/ui/sheet.mjs +3 -3
  243. package/dist/components/ui/sidebar-nav.js +6 -5
  244. package/dist/components/ui/sidebar-nav.mjs +7 -7
  245. package/dist/components/ui/skeleton.mjs +3 -3
  246. package/dist/components/ui/slider.mjs +3 -3
  247. package/dist/components/ui/sonner.mjs +2 -2
  248. package/dist/components/ui/spinner.mjs +3 -3
  249. package/dist/components/ui/stage-timeline.mjs +10 -10
  250. package/dist/components/ui/stepper.mjs +3 -3
  251. package/dist/components/ui/switch.mjs +3 -3
  252. package/dist/components/ui/table.mjs +3 -3
  253. package/dist/components/ui/tabs.mjs +3 -3
  254. package/dist/components/ui/textarea.mjs +3 -3
  255. package/dist/components/ui/toggle-group.mjs +4 -4
  256. package/dist/components/ui/toggle.mjs +3 -3
  257. package/dist/components/ui/tooltip.mjs +3 -3
  258. package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +2 -2
  259. package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +9 -9
  260. package/dist/components/ui/transactions-income-expense-bar-chart.js +2 -2
  261. package/dist/components/ui/transactions-income-expense-bar-chart.mjs +9 -9
  262. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +2 -2
  263. package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +9 -9
  264. package/dist/components/ui/two-fa-setup-form.js +612 -0
  265. package/dist/components/ui/two-fa-setup-form.mjs +16 -0
  266. package/dist/components/ui/upload-card.js +187 -0
  267. package/dist/components/ui/upload-card.mjs +10 -0
  268. package/dist/components/ui/video-background.js +118 -0
  269. package/dist/components/ui/video-background.mjs +8 -0
  270. package/dist/index.js +12674 -9311
  271. package/dist/index.mjs +341 -245
  272. package/dist/lib/colors.mjs +1 -1
  273. package/dist/lib/theme-provider.mjs +1 -1
  274. package/dist/lib/typography.mjs +2 -2
  275. package/dist/lib/utils.js +8 -2
  276. package/dist/lib/utils.mjs +6 -4
  277. package/dist/styles.css +1 -1
  278. package/package.json +61 -1
  279. package/src/components/index.tsx +126 -1
  280. package/src/components/ui/add-lead-modal.tsx +101 -142
  281. package/src/components/ui/ai-builder.tsx +560 -0
  282. package/src/components/ui/ai-conversations.tsx +1690 -0
  283. package/src/components/ui/appointment-availability-settings.tsx +152 -101
  284. package/src/components/ui/appointment-book-dialog.tsx +138 -24
  285. package/src/components/ui/appointment-calendar-view.tsx +2 -3
  286. package/src/components/ui/appointment-gmail-connect.tsx +23 -42
  287. package/src/components/ui/auth-logo.tsx +50 -0
  288. package/src/components/ui/auth-page-layout.tsx +59 -0
  289. package/src/components/ui/borrowing-capacity-line-chart.tsx +10 -8
  290. package/src/components/ui/button.tsx +2 -2
  291. package/src/components/ui/calendar.tsx +2 -1
  292. package/src/components/ui/cash-balance-line-chart.tsx +11 -20
  293. package/src/components/ui/chart-shared.tsx +10 -0
  294. package/src/components/ui/chat-widget-primitives.tsx +336 -0
  295. package/src/components/ui/chat-widget.tsx +822 -0
  296. package/src/components/ui/document-checklist-template.tsx +264 -0
  297. package/src/components/ui/drawer.tsx +2 -2
  298. package/src/components/ui/financial-cards.tsx +176 -78
  299. package/src/components/ui/financial-drawers.tsx +2 -2
  300. package/src/components/ui/financial-sections.tsx +1 -1
  301. package/src/components/ui/kanban-column.tsx +2 -5
  302. package/src/components/ui/onboarding-layout.tsx +109 -0
  303. package/src/components/ui/opportunity-summary-tab.tsx +469 -142
  304. package/src/components/ui/password-strength-tooltip.tsx +70 -0
  305. package/src/components/ui/pipeline-chart.tsx +2 -6
  306. package/src/components/ui/sidebar-nav.tsx +1 -11
  307. package/src/components/ui/two-fa-setup-form.tsx +229 -0
  308. package/src/components/ui/upload-card.tsx +98 -0
  309. package/src/components/ui/video-background.tsx +55 -0
  310. package/src/lib/format-date.ts +26 -0
  311. package/src/lib/utils.ts +11 -0
  312. package/src/styles/styles-css.ts +1 -1
  313. package/tsup.config.ts +13 -0
@@ -209,9 +209,9 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
209
209
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
210
210
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
211
211
  destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
212
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
212
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:border-border focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
213
213
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
214
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
214
+ "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:border-brand-secondary focus-visible:ring-brand-secondary/30",
215
215
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
216
216
  link: "text-primary underline-offset-4 hover:underline"
217
217
  },
@@ -316,38 +316,9 @@ function Separator(_a) {
316
316
  );
317
317
  }
318
318
 
319
- // src/components/ui/spinner.tsx
320
- var import_class_variance_authority3 = require("class-variance-authority");
319
+ // src/components/ui/appointment-gmail-connect.tsx
321
320
  var import_lucide_react2 = require("lucide-react");
322
321
  var import_jsx_runtime5 = require("react/jsx-runtime");
323
- var spinnerVariants = (0, import_class_variance_authority3.cva)("animate-spin shrink-0", {
324
- variants: {
325
- size: {
326
- sm: "size-3",
327
- default: "size-4",
328
- lg: "size-6",
329
- xl: "size-8"
330
- }
331
- },
332
- defaultVariants: {
333
- size: "default"
334
- }
335
- });
336
- function Spinner(_a) {
337
- var _b = _a, { className, size } = _b, props = __objRest(_b, ["className", "size"]);
338
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
339
- import_lucide_react2.LoaderCircle,
340
- __spreadValues({
341
- "aria-hidden": "true",
342
- className: cn(spinnerVariants({ size }), className),
343
- "data-slot": "spinner"
344
- }, props)
345
- );
346
- }
347
-
348
- // src/components/ui/appointment-gmail-connect.tsx
349
- var import_lucide_react3 = require("lucide-react");
350
- var import_jsx_runtime6 = require("react/jsx-runtime");
351
322
  var PERMISSIONS = [
352
323
  "Read your calendar availability",
353
324
  "Send appointment confirmation emails",
@@ -355,69 +326,58 @@ var PERMISSIONS = [
355
326
  ];
356
327
  function AppointmentGmailConnect({
357
328
  connection,
358
- state = "disconnected",
359
- onConnect,
360
- onDisconnect,
361
329
  calendarLink,
362
- onCopyLink
330
+ onCopyLink,
331
+ onGoToIntegrations
363
332
  }) {
364
- if (state === "connecting") {
365
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col items-center gap-4 border border-border bg-card px-6 py-8 text-center", children: [
366
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Spinner, { className: "h-6 w-6 text-primary" }),
367
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col gap-1", children: [
368
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm font-medium", children: "Connecting to Gmail\u2026" }),
369
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-xs text-muted-foreground", children: "Complete the sign-in in the popup window." })
370
- ] })
371
- ] });
372
- }
373
333
  if (connection.connected) {
374
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col border border-border bg-card", children: [
375
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-3 px-5 py-4", children: [
376
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center bg-primary/10", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Mail, { className: "h-5 w-5 text-primary" }) }),
377
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex-1 min-w-0", children: [
378
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-base font-semibold", children: "Gmail Connected" }),
379
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "truncate text-sm text-muted-foreground", children: connection.email })
334
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col border border-border bg-card", children: [
335
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-3 px-5 py-4", children: [
336
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center bg-primary/10", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Mail, { className: "h-5 w-5 text-primary" }) }),
337
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex-1 min-w-0", children: [
338
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-base font-semibold", children: "Gmail Connected" }),
339
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "truncate text-sm text-muted-foreground", children: connection.email })
380
340
  ] }),
381
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Badge, { variant: "success", children: [
382
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Check, { size: 10 }),
341
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Badge, { variant: "success", children: [
342
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { size: 10 }),
383
343
  "Active"
384
344
  ] }),
385
- connection.connectedAt && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("p", { className: "shrink-0 text-sm text-muted-foreground", children: [
345
+ connection.connectedAt && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "shrink-0 text-xs text-muted-foreground", children: [
386
346
  "Connected since ",
387
347
  connection.connectedAt
388
348
  ] }),
389
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
349
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
390
350
  Button,
391
351
  {
392
352
  size: "sm",
393
353
  variant: "ghost",
394
- className: "shrink-0 gap-1.5 text-destructive hover:text-destructive",
395
- onClick: onDisconnect,
354
+ className: "shrink-0 gap-1.5 text-muted-foreground",
355
+ onClick: onGoToIntegrations,
396
356
  children: [
397
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Unlink, { className: "h-3.5 w-3.5" }),
398
- "Disconnect"
357
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Settings, { className: "h-3.5 w-3.5" }),
358
+ "Manage"
399
359
  ]
400
360
  }
401
361
  )
402
362
  ] }),
403
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Separator, {}),
404
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col gap-2 px-5 py-4", children: [
405
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Permissions granted" }),
406
- PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
407
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.ShieldCheck, { className: "h-4 w-4 shrink-0 text-success" }),
408
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
363
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
364
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2 px-5 py-4", children: [
365
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Permissions granted" }),
366
+ PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
367
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
368
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
409
369
  ] }, perm))
410
370
  ] }),
411
- calendarLink && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
412
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Separator, {}),
413
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col gap-2.5 px-5 py-4", children: [
414
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
415
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Link2, { className: "h-4 w-4 text-muted-foreground" }),
416
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm font-semibold", children: "Calendar Appointment Link" })
371
+ calendarLink && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
372
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
373
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2.5 px-5 py-4", children: [
374
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
375
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Link2, { className: "h-4 w-4 text-muted-foreground" }),
376
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-semibold", children: "Calendar Appointment Link" })
417
377
  ] }),
418
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm text-muted-foreground", children: "Share with clients so they can self-book." }),
419
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "relative", children: [
420
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
378
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: "Share with clients so they can self-book." }),
379
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
380
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
421
381
  Input,
422
382
  {
423
383
  id: "calendar-link",
@@ -426,7 +386,7 @@ function AppointmentGmailConnect({
426
386
  className: "cursor-default select-all pr-10 text-muted-foreground"
427
387
  }
428
388
  ),
429
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
389
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
430
390
  Button,
431
391
  {
432
392
  type: "button",
@@ -434,7 +394,7 @@ function AppointmentGmailConnect({
434
394
  size: "icon",
435
395
  onClick: onCopyLink,
436
396
  className: "absolute right-1 top-1/2 h-8 w-8 -translate-y-1/2",
437
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Copy, { className: "h-4 w-4" })
397
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Copy, { className: "h-4 w-4" })
438
398
  }
439
399
  )
440
400
  ] })
@@ -442,22 +402,22 @@ function AppointmentGmailConnect({
442
402
  ] })
443
403
  ] });
444
404
  }
445
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col items-center gap-4 border border-border bg-card px-6 py-8 text-center", children: [
446
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex h-12 w-12 items-center justify-center bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Mail, { className: "h-6 w-6 text-muted-foreground" }) }),
447
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
448
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-base font-semibold", children: "Connect your Gmail account" }),
449
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "max-w-xs text-sm text-muted-foreground", children: "Link your Gmail to let clients book appointments and receive confirmation emails automatically." })
405
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col items-center gap-4 border border-border bg-card px-6 py-8 text-center", children: [
406
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex h-12 w-12 items-center justify-center bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Mail, { className: "h-6 w-6 text-muted-foreground" }) }),
407
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
408
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-base font-semibold", children: "Gmail not connected" }),
409
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "max-w-xs text-sm text-muted-foreground", children: "Connect your Gmail account in Integrations to enable calendar booking and appointment confirmations." })
450
410
  ] }),
451
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex w-full max-w-xs flex-col gap-2 text-left", children: [
452
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "This will allow WealthX to:" }),
453
- PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
454
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Check, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
455
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
411
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex w-full max-w-xs flex-col gap-2 text-left", children: [
412
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Once connected, WealthX will be able to:" }),
413
+ PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
414
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
415
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
456
416
  ] }, perm))
457
417
  ] }),
458
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Button, { onClick: onConnect, className: "gap-2", children: [
459
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.Mail, { className: "h-4 w-4" }),
460
- "Connect Gmail"
418
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Button, { onClick: onGoToIntegrations, className: "gap-2", children: [
419
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.ExternalLink, { className: "h-4 w-4" }),
420
+ "Go to Integrations"
461
421
  ] })
462
422
  ] });
463
423
  }
@@ -1,14 +1,13 @@
1
1
  import {
2
2
  AppointmentGmailConnect
3
- } from "../../chunk-I3RZS7V2.mjs";
4
- import "../../chunk-BKNFWEH2.mjs";
5
- import "../../chunk-FH6QVUVZ.mjs";
6
- import "../../chunk-7YAU5CY6.mjs";
7
- import "../../chunk-GYMYRIZP.mjs";
8
- import "../../chunk-XREGSKX3.mjs";
9
- import "../../chunk-DBHJ5KC3.mjs";
10
- import "../../chunk-VLQZANBF.mjs";
11
- import "../../chunk-FWCSY2DS.mjs";
3
+ } from "../../chunk-FLL633WS.mjs";
4
+ import "../../chunk-WL6WVV47.mjs";
5
+ import "../../chunk-2GIYVERS.mjs";
6
+ import "../../chunk-LBTHZSBT.mjs";
7
+ import "../../chunk-NOOEKOWY.mjs";
8
+ import "../../chunk-R4HCRDU5.mjs";
9
+ import "../../chunk-AFML43VJ.mjs";
10
+ import "../../chunk-WNQUEZJF.mjs";
12
11
  export {
13
12
  AppointmentGmailConnect
14
13
  };
@@ -207,9 +207,9 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
207
207
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
208
208
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
209
209
  destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
210
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
210
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:border-border focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
211
211
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
212
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
212
+ "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:border-brand-secondary focus-visible:ring-brand-secondary/30",
213
213
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
214
214
  link: "text-primary underline-offset-4 hover:underline"
215
215
  },
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AppointmentMiniCard
3
- } from "../../chunk-QMY3AZJH.mjs";
4
- import "../../chunk-24FUO7TD.mjs";
5
- import "../../chunk-XREGSKX3.mjs";
6
- import "../../chunk-DBHJ5KC3.mjs";
7
- import "../../chunk-VLQZANBF.mjs";
8
- import "../../chunk-FWCSY2DS.mjs";
3
+ } from "../../chunk-4Z66LMIQ.mjs";
4
+ import "../../chunk-H6NQTIF4.mjs";
5
+ import "../../chunk-NOOEKOWY.mjs";
6
+ import "../../chunk-R4HCRDU5.mjs";
7
+ import "../../chunk-AFML43VJ.mjs";
8
+ import "../../chunk-WNQUEZJF.mjs";
9
9
  export {
10
10
  AppointmentMiniCard
11
11
  };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  AppointmentSlotSection,
3
3
  AppointmentTimeSlotPicker
4
- } from "../../chunk-3OYFOX3X.mjs";
5
- import "../../chunk-BDYZCBRT.mjs";
6
- import "../../chunk-BKNFWEH2.mjs";
7
- import "../../chunk-DBHJ5KC3.mjs";
8
- import "../../chunk-VLQZANBF.mjs";
9
- import "../../chunk-FWCSY2DS.mjs";
4
+ } from "../../chunk-5VOTTIXF.mjs";
5
+ import "../../chunk-6QAFGZC2.mjs";
6
+ import "../../chunk-WL6WVV47.mjs";
7
+ import "../../chunk-R4HCRDU5.mjs";
8
+ import "../../chunk-AFML43VJ.mjs";
9
+ import "../../chunk-WNQUEZJF.mjs";
10
10
  export {
11
11
  AppointmentSlotSection,
12
12
  AppointmentTimeSlotPicker
@@ -254,9 +254,9 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
254
254
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
255
255
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
256
256
  destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
257
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
257
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:border-border focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
258
258
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
259
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
259
+ "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:border-brand-secondary focus-visible:ring-brand-secondary/30",
260
260
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
261
261
  link: "text-primary underline-offset-4 hover:underline"
262
262
  },
@@ -322,6 +322,22 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
322
322
  var React2 = __toESM(require("react"));
323
323
  var import_lucide_react2 = require("lucide-react");
324
324
  var import_react_day_picker = require("react-day-picker");
325
+
326
+ // src/lib/format-date.ts
327
+ var import_date_fns = require("date-fns");
328
+ function safeParse(iso) {
329
+ return (0, import_date_fns.parseISO)(iso);
330
+ }
331
+ function formatDateShort(iso) {
332
+ if (!iso) return "\u2014";
333
+ try {
334
+ return (0, import_date_fns.format)(safeParse(iso), "dd MMM yyyy");
335
+ } catch (e) {
336
+ return iso;
337
+ }
338
+ }
339
+
340
+ // src/components/ui/calendar.tsx
325
341
  var import_jsx_runtime4 = require("react/jsx-runtime");
326
342
  function CalendarRoot(_a) {
327
343
  var _b = _a, {
@@ -506,7 +522,7 @@ function CalendarDayButton(_a) {
506
522
  defaultClassNames.day,
507
523
  className
508
524
  ),
509
- "data-day": day.date.toLocaleDateString(),
525
+ "data-day": formatDateShort(day.date.toISOString()),
510
526
  "data-range-end": modifiers.range_end,
511
527
  "data-range-middle": modifiers.range_middle,
512
528
  "data-range-start": modifiers.range_start,
@@ -1,21 +1,22 @@
1
1
  import {
2
2
  AppointmentUpcomingCard
3
- } from "../../chunk-EWRB4PAD.mjs";
4
- import "../../chunk-3OYFOX3X.mjs";
5
- import "../../chunk-BDYZCBRT.mjs";
6
- import "../../chunk-34NWQURD.mjs";
7
- import "../../chunk-OODBHKG7.mjs";
8
- import "../../chunk-24FUO7TD.mjs";
9
- import "../../chunk-BKNFWEH2.mjs";
10
- import "../../chunk-NSLMILBT.mjs";
11
- import "../../chunk-FH6QVUVZ.mjs";
12
- import "../../chunk-6DZEXFNB.mjs";
13
- import "../../chunk-XREGSKX3.mjs";
14
- import "../../chunk-DBHJ5KC3.mjs";
3
+ } from "../../chunk-RCAOCHWA.mjs";
4
+ import "../../chunk-H6NQTIF4.mjs";
5
+ import "../../chunk-5VOTTIXF.mjs";
6
+ import "../../chunk-6QAFGZC2.mjs";
7
+ import "../../chunk-BS75ICOO.mjs";
8
+ import "../../chunk-WL6WVV47.mjs";
9
+ import "../../chunk-6HIOM2HL.mjs";
10
+ import "../../chunk-M4VYX2PV.mjs";
11
+ import "../../chunk-P7CEBZM6.mjs";
12
+ import "../../chunk-2GIYVERS.mjs";
13
+ import "../../chunk-P2N2PEFY.mjs";
14
+ import "../../chunk-NOOEKOWY.mjs";
15
+ import "../../chunk-R4HCRDU5.mjs";
15
16
  import "../../chunk-FEZKMUCF.mjs";
16
17
  import "../../chunk-QOJ2DQD6.mjs";
17
- import "../../chunk-VLQZANBF.mjs";
18
- import "../../chunk-FWCSY2DS.mjs";
18
+ import "../../chunk-AFML43VJ.mjs";
19
+ import "../../chunk-WNQUEZJF.mjs";
19
20
  export {
20
21
  AppointmentUpcomingCard
21
22
  };
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/components/ui/auth-logo.tsx
21
+ var auth_logo_exports = {};
22
+ __export(auth_logo_exports, {
23
+ AuthLogo: () => AuthLogo
24
+ });
25
+ module.exports = __toCommonJS(auth_logo_exports);
26
+
27
+ // src/lib/utils.ts
28
+ var import_clsx = require("clsx");
29
+ var import_tailwind_merge = require("tailwind-merge");
30
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
31
+ extend: {
32
+ classGroups: {
33
+ "font-size": [
34
+ {
35
+ text: [
36
+ "display-large",
37
+ "display-medium",
38
+ "display-small",
39
+ "h1",
40
+ "h2",
41
+ "h3",
42
+ "h4",
43
+ "h5",
44
+ "h6",
45
+ "body-large",
46
+ "body-medium",
47
+ "body-small",
48
+ "label-large",
49
+ "label-medium",
50
+ "label-small",
51
+ "button",
52
+ "button-xs",
53
+ "caption",
54
+ "overline",
55
+ "code"
56
+ ]
57
+ }
58
+ ]
59
+ }
60
+ }
61
+ });
62
+ function cn(...inputs) {
63
+ return twMerge((0, import_clsx.clsx)(inputs));
64
+ }
65
+
66
+ // src/components/ui/auth-logo.tsx
67
+ var import_jsx_runtime = require("react/jsx-runtime");
68
+ function AuthLogo({
69
+ logoUrl,
70
+ wealthxLogoUrl,
71
+ className
72
+ }) {
73
+ const wealthxMark = wealthxLogoUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src: wealthxLogoUrl, alt: "WealthX", className: "h-5 w-auto" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-sm font-semibold tracking-tight text-foreground", children: "WealthX" });
74
+ if (!logoUrl) {
75
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("flex items-center justify-center", className), children: wealthxLogoUrl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src: wealthxLogoUrl, alt: "WealthX", className: "h-8 w-auto" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-lg font-semibold tracking-tight text-foreground", children: "WealthX" }) });
76
+ }
77
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cn("flex items-center gap-3", className), children: [
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
79
+ "img",
80
+ {
81
+ src: logoUrl,
82
+ alt: "Partner logo",
83
+ className: "h-8 w-auto object-contain"
84
+ }
85
+ ),
86
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-1.5", children: [
87
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-xs text-muted-foreground", children: "Powered by" }),
88
+ wealthxMark
89
+ ] })
90
+ ] });
91
+ }
92
+ // Annotate the CommonJS export names for ESM import in node:
93
+ 0 && (module.exports = {
94
+ AuthLogo
95
+ });
@@ -0,0 +1,8 @@
1
+ import {
2
+ AuthLogo
3
+ } from "../../chunk-Y2MTAVAK.mjs";
4
+ import "../../chunk-AFML43VJ.mjs";
5
+ import "../../chunk-WNQUEZJF.mjs";
6
+ export {
7
+ AuthLogo
8
+ };
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/components/ui/auth-page-layout.tsx
21
+ var auth_page_layout_exports = {};
22
+ __export(auth_page_layout_exports, {
23
+ AuthPageLayout: () => AuthPageLayout
24
+ });
25
+ module.exports = __toCommonJS(auth_page_layout_exports);
26
+
27
+ // src/lib/utils.ts
28
+ var import_clsx = require("clsx");
29
+ var import_tailwind_merge = require("tailwind-merge");
30
+ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
31
+ extend: {
32
+ classGroups: {
33
+ "font-size": [
34
+ {
35
+ text: [
36
+ "display-large",
37
+ "display-medium",
38
+ "display-small",
39
+ "h1",
40
+ "h2",
41
+ "h3",
42
+ "h4",
43
+ "h5",
44
+ "h6",
45
+ "body-large",
46
+ "body-medium",
47
+ "body-small",
48
+ "label-large",
49
+ "label-medium",
50
+ "label-small",
51
+ "button",
52
+ "button-xs",
53
+ "caption",
54
+ "overline",
55
+ "code"
56
+ ]
57
+ }
58
+ ]
59
+ }
60
+ }
61
+ });
62
+ function cn(...inputs) {
63
+ return twMerge((0, import_clsx.clsx)(inputs));
64
+ }
65
+
66
+ // src/components/ui/auth-page-layout.tsx
67
+ var import_jsx_runtime = require("react/jsx-runtime");
68
+ function AuthPageLayout({
69
+ logo,
70
+ title,
71
+ subtitle,
72
+ wide = false,
73
+ className,
74
+ children
75
+ }) {
76
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
77
+ "div",
78
+ {
79
+ className: cn(
80
+ "relative flex min-h-screen w-full flex-col items-center justify-center px-10 py-16 font-sans",
81
+ className
82
+ ),
83
+ children: [
84
+ logo && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute top-8 left-1/2 -translate-x-1/2", children: logo }),
85
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
86
+ "div",
87
+ {
88
+ className: cn(
89
+ "flex w-full flex-col items-center gap-10",
90
+ wide ? "max-w-full" : "max-w-[581px]"
91
+ ),
92
+ children: [
93
+ (title || subtitle) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex w-[320px] flex-col items-center gap-2 text-center", children: [
94
+ title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { className: "m-0 text-[30px] font-semibold leading-9 text-card-foreground", children: title }),
95
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "m-0 text-sm font-normal leading-5 text-muted-foreground", children: subtitle })
96
+ ] }),
97
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("w-full", wide ? "max-w-full" : "w-[320px]"), children })
98
+ ]
99
+ }
100
+ )
101
+ ]
102
+ }
103
+ );
104
+ }
105
+ // Annotate the CommonJS export names for ESM import in node:
106
+ 0 && (module.exports = {
107
+ AuthPageLayout
108
+ });
@@ -0,0 +1,8 @@
1
+ import {
2
+ AuthPageLayout
3
+ } from "../../chunk-SFH2NJEJ.mjs";
4
+ import "../../chunk-AFML43VJ.mjs";
5
+ import "../../chunk-WNQUEZJF.mjs";
6
+ export {
7
+ AuthPageLayout
8
+ };
@@ -5,9 +5,9 @@ import {
5
5
  AvatarGroup,
6
6
  AvatarGroupCount,
7
7
  AvatarImage
8
- } from "../../chunk-24FUO7TD.mjs";
9
- import "../../chunk-VLQZANBF.mjs";
10
- import "../../chunk-FWCSY2DS.mjs";
8
+ } from "../../chunk-H6NQTIF4.mjs";
9
+ import "../../chunk-AFML43VJ.mjs";
10
+ import "../../chunk-WNQUEZJF.mjs";
11
11
  export {
12
12
  Avatar,
13
13
  AvatarBadge,
@@ -298,9 +298,9 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
298
298
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
299
299
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
300
300
  destructive: "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
301
- outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
301
+ outline: "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground focus-visible:border-border focus-visible:ring-border/50 dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
302
302
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
303
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
303
+ "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:border-brand-secondary focus-visible:ring-brand-secondary/30",
304
304
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
305
305
  link: "text-primary underline-offset-4 hover:underline"
306
306
  },