@wealthx/shadcn 1.3.2 → 1.3.3

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 +262 -226
  2. package/CHANGELOG.md +6 -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-3OYFOX3X.mjs → chunk-5VOTTIXF.mjs} +2 -2
  14. package/dist/{chunk-LBMRIB3G.mjs → chunk-6AJUS7VX.mjs} +1 -1
  15. package/dist/{chunk-OODBHKG7.mjs → chunk-6HIOM2HL.mjs} +7 -4
  16. package/dist/{chunk-BDYZCBRT.mjs → chunk-6QAFGZC2.mjs} +2 -2
  17. package/dist/{chunk-U4NDAF2P.mjs → chunk-6TX73WG7.mjs} +1 -1
  18. package/dist/{chunk-GD4BJDJR.mjs → chunk-7BTFGCFC.mjs} +4 -4
  19. package/dist/{chunk-FAKPBKLT.mjs → chunk-7GWRPXHD.mjs} +4 -4
  20. package/dist/{chunk-NMOI6CQD.mjs → chunk-7YI3HEBH.mjs} +5 -5
  21. package/dist/{chunk-T4BJLT57.mjs → chunk-AE7MASLF.mjs} +5 -5
  22. package/dist/{chunk-VLQZANBF.mjs → chunk-AFML43VJ.mjs} +6 -1
  23. package/dist/chunk-BBXSNDS3.mjs +260 -0
  24. package/dist/chunk-BOW7U26Y.mjs +203 -0
  25. package/dist/{chunk-34NWQURD.mjs → chunk-BS75ICOO.mjs} +2 -2
  26. package/dist/chunk-D2NSIIXG.mjs +394 -0
  27. package/dist/{chunk-3GF7OVTP.mjs → chunk-DGNHGNYH.mjs} +2 -2
  28. package/dist/{chunk-VLARHE5V.mjs → chunk-DMXYRCHM.mjs} +6 -6
  29. package/dist/{chunk-OGOYQ7BG.mjs → chunk-DQB4EPIS.mjs} +1 -1
  30. package/dist/{chunk-MIZQHHUO.mjs → chunk-FL6DZFJK.mjs} +106 -38
  31. package/dist/{chunk-I3RZS7V2.mjs → chunk-FLL633WS.mjs} +19 -33
  32. package/dist/{chunk-PBL4OQV2.mjs → chunk-FTPBQVQ6.mjs} +4 -4
  33. package/dist/chunk-FYPSTTEJ.mjs +169 -0
  34. package/dist/{chunk-6O6KD7CE.mjs → chunk-G27TSQLQ.mjs} +6 -6
  35. package/dist/{chunk-66MI7Q4B.mjs → chunk-GT3RU6GA.mjs} +2 -2
  36. package/dist/{chunk-D6ID6M4V.mjs → chunk-GTAVSBDO.mjs} +2 -2
  37. package/dist/{chunk-24FUO7TD.mjs → chunk-H6NQTIF4.mjs} +2 -2
  38. package/dist/{chunk-7DHU4VGG.mjs → chunk-HK4HUQTV.mjs} +2 -2
  39. package/dist/chunk-I4KVSZCH.mjs +101 -0
  40. package/dist/{chunk-RGVKLTLH.mjs → chunk-IKXYTCSB.mjs} +2 -2
  41. package/dist/{chunk-Y6DWJSKZ.mjs → chunk-ISUA7DSB.mjs} +1 -1
  42. package/dist/{chunk-2A5RRQGG.mjs → chunk-JD3YWRNP.mjs} +10 -14
  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 +157 -152
  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 +12764 -9396
  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 +10 -14
  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
@@ -0,0 +1,394 @@
1
+ import {
2
+ Card,
3
+ CardContent
4
+ } from "./chunk-3VDET466.mjs";
5
+ import {
6
+ Avatar,
7
+ AvatarFallback,
8
+ AvatarImage
9
+ } from "./chunk-H6NQTIF4.mjs";
10
+ import {
11
+ Badge
12
+ } from "./chunk-WL6WVV47.mjs";
13
+ import {
14
+ Switch
15
+ } from "./chunk-PNSYFE3K.mjs";
16
+ import {
17
+ Dialog,
18
+ DialogContent,
19
+ DialogDescription,
20
+ DialogFooter,
21
+ DialogHeader,
22
+ DialogTitle
23
+ } from "./chunk-P2N2PEFY.mjs";
24
+ import {
25
+ Button
26
+ } from "./chunk-NOOEKOWY.mjs";
27
+ import {
28
+ cn
29
+ } from "./chunk-AFML43VJ.mjs";
30
+ import {
31
+ __async
32
+ } from "./chunk-WNQUEZJF.mjs";
33
+
34
+ // src/components/ui/ai-builder.tsx
35
+ import { useState } from "react";
36
+ import {
37
+ Check,
38
+ CheckCircle2,
39
+ Clock,
40
+ Copy,
41
+ Mail,
42
+ MoreHorizontal,
43
+ Settings,
44
+ Shield,
45
+ User
46
+ } from "lucide-react";
47
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
48
+ var AGENT_FEATURES = [
49
+ {
50
+ title: "Lead Capture",
51
+ description: "Automatically collect and qualify leads from website visitors."
52
+ },
53
+ {
54
+ title: "Initial Engagement",
55
+ description: "Instantly respond to inquiries with personalised mortgage guidance."
56
+ },
57
+ {
58
+ title: "Smart Follow-Up",
59
+ description: "Re-engage cold leads with timely, context-aware follow-up messages."
60
+ },
61
+ {
62
+ title: "Appointment Scheduling",
63
+ description: "Book qualified leads directly into advisor calendars without manual coordination."
64
+ },
65
+ {
66
+ title: "Performance Tracking",
67
+ description: "Monitor agent activity, response rates, and conversion metrics."
68
+ }
69
+ ];
70
+ function AgentCard({
71
+ agent,
72
+ onToggle,
73
+ onMenuClick,
74
+ className
75
+ }) {
76
+ const { id, title, description, tags, isEnabled, infoBadge, isComingSoon } = agent;
77
+ return /* @__PURE__ */ jsxs(
78
+ Card,
79
+ {
80
+ className: cn(
81
+ "flex flex-col gap-3 p-4 transition-opacity",
82
+ isComingSoon && "opacity-60",
83
+ className
84
+ ),
85
+ children: [
86
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
87
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center gap-2 min-w-0", children: [
88
+ /* @__PURE__ */ jsx(
89
+ "span",
90
+ {
91
+ className: cn(
92
+ "mt-0.5 size-2 shrink-0 rounded-full",
93
+ isEnabled && !isComingSoon ? "bg-success" : "bg-muted-foreground/40"
94
+ )
95
+ }
96
+ ),
97
+ /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-semibold leading-tight", children: title }),
98
+ isComingSoon && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: "shrink-0 text-xs", children: "Coming Soon" })
99
+ ] }),
100
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
101
+ /* @__PURE__ */ jsx(
102
+ Switch,
103
+ {
104
+ checked: isEnabled,
105
+ disabled: isComingSoon,
106
+ onCheckedChange: (checked) => onToggle(id, checked),
107
+ "aria-label": `Toggle ${title}`
108
+ }
109
+ ),
110
+ /* @__PURE__ */ jsx(
111
+ Button,
112
+ {
113
+ variant: "ghost",
114
+ size: "icon",
115
+ className: "h-7 w-7",
116
+ onClick: () => onMenuClick(id),
117
+ "aria-label": `View details for ${title}`,
118
+ children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "h-4 w-4" })
119
+ }
120
+ )
121
+ ] })
122
+ ] }),
123
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs leading-relaxed flex-1", children: description }),
124
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
125
+ infoBadge && /* @__PURE__ */ jsx("p", { className: "bg-info/10 text-info px-2 py-1 text-xs", children: infoBadge }),
126
+ tags.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: tags.map((tag) => /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs", children: tag }, tag)) })
127
+ ] })
128
+ ]
129
+ }
130
+ );
131
+ }
132
+ function AgentMenuModal({
133
+ open,
134
+ onOpenChange,
135
+ agentTitle,
136
+ description = "AI-powered lead management that works around the clock to grow your mortgage business.",
137
+ features = AGENT_FEATURES
138
+ }) {
139
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-lg", align: "top", children: [
140
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
141
+ /* @__PURE__ */ jsx(DialogTitle, { children: agentTitle }),
142
+ /* @__PURE__ */ jsx(DialogDescription, { children: description })
143
+ ] }),
144
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3 py-2", children: features.map((feature, index) => /* @__PURE__ */ jsxs("div", { className: "flex gap-3", children: [
145
+ /* @__PURE__ */ jsx(
146
+ Badge,
147
+ {
148
+ variant: "default",
149
+ className: "h-6 w-6 shrink-0 p-0 text-xs font-bold",
150
+ children: index + 1
151
+ }
152
+ ),
153
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
154
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold", children: feature.title }),
155
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs leading-relaxed", children: feature.description })
156
+ ] })
157
+ ] }, feature.title)) })
158
+ ] }) });
159
+ }
160
+ function IntegrationServiceCard({
161
+ title,
162
+ imageUrl,
163
+ iconNode,
164
+ description,
165
+ isConnected,
166
+ onCardClick,
167
+ onSettingsClick,
168
+ className
169
+ }) {
170
+ return /* @__PURE__ */ jsxs(
171
+ Card,
172
+ {
173
+ className: cn(
174
+ "flex flex-col gap-3 p-4",
175
+ !isConnected && "cursor-pointer transition-colors hover:bg-accent/50",
176
+ className
177
+ ),
178
+ onClick: !isConnected ? onCardClick : void 0,
179
+ children: [
180
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
181
+ /* @__PURE__ */ jsxs(Avatar, { className: "h-10 w-10 shrink-0", children: [
182
+ imageUrl && /* @__PURE__ */ jsx(AvatarImage, { src: imageUrl, alt: title }),
183
+ /* @__PURE__ */ jsx(AvatarFallback, { className: iconNode ? "bg-transparent p-0.5" : "", children: iconNode != null ? iconNode : /* @__PURE__ */ jsx(User, { className: "h-5 w-5" }) })
184
+ ] }),
185
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
186
+ /* @__PURE__ */ jsx("span", { className: "text-base font-semibold", children: title }),
187
+ isConnected && /* @__PURE__ */ jsxs(Badge, { variant: "success", className: "gap-1 text-xs", children: [
188
+ /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3 w-3" }),
189
+ "Connected"
190
+ ] })
191
+ ] }) }),
192
+ isConnected && /* @__PURE__ */ jsx(
193
+ Button,
194
+ {
195
+ variant: "ghost",
196
+ size: "icon",
197
+ className: "h-7 w-7 shrink-0",
198
+ onClick: (e) => {
199
+ e.stopPropagation();
200
+ onSettingsClick();
201
+ },
202
+ "aria-label": `Settings for ${title}`,
203
+ children: /* @__PURE__ */ jsx(Settings, { className: "h-4 w-4" })
204
+ }
205
+ )
206
+ ] }),
207
+ /* @__PURE__ */ jsx("p", { className: "text-sm leading-relaxed text-muted-foreground", children: description })
208
+ ]
209
+ }
210
+ );
211
+ }
212
+ function IntegrationInstructionCard({
213
+ title,
214
+ codeBlock,
215
+ onCopy,
216
+ className
217
+ }) {
218
+ const [copied, setCopied] = useState(false);
219
+ const handleCopy = () => __async(null, null, function* () {
220
+ try {
221
+ yield navigator.clipboard.writeText(codeBlock);
222
+ setCopied(true);
223
+ onCopy == null ? void 0 : onCopy();
224
+ setTimeout(() => setCopied(false), 2e3);
225
+ } catch (e) {
226
+ }
227
+ });
228
+ return /* @__PURE__ */ jsxs(Card, { className: cn("flex flex-col gap-3 p-4", className), children: [
229
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
230
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: title }),
231
+ /* @__PURE__ */ jsx(
232
+ Button,
233
+ {
234
+ variant: "outline",
235
+ size: "sm",
236
+ className: "h-7 gap-1.5 text-xs",
237
+ onClick: handleCopy,
238
+ children: copied ? /* @__PURE__ */ jsxs(Fragment, { children: [
239
+ /* @__PURE__ */ jsx(Check, { className: "h-3 w-3" }),
240
+ "Copied"
241
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
242
+ /* @__PURE__ */ jsx(Copy, { className: "h-3 w-3" }),
243
+ "Copy"
244
+ ] })
245
+ }
246
+ )
247
+ ] }),
248
+ /* @__PURE__ */ jsx("pre", { className: "bg-muted overflow-x-auto p-3 text-xs leading-relaxed", children: /* @__PURE__ */ jsx("code", { children: codeBlock }) })
249
+ ] });
250
+ }
251
+ function ServiceConfigurationModal({
252
+ open,
253
+ onOpenChange,
254
+ serviceTitle,
255
+ isConnected,
256
+ serviceData,
257
+ iconNode,
258
+ connectPermissions,
259
+ connectDescription = "Link your account to enable automated workflows with WealthX.",
260
+ onConnect,
261
+ onDisconnect,
262
+ onReconnect
263
+ }) {
264
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsx(DialogContent, { className: "max-w-md", align: "top", children: isConnected ? /* @__PURE__ */ jsxs(Fragment, { children: [
265
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
266
+ /* @__PURE__ */ jsx(DialogTitle, { children: serviceTitle }),
267
+ /* @__PURE__ */ jsx(DialogDescription, { children: "Manage your integration settings." })
268
+ ] }),
269
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 py-2", children: [
270
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2 text-xs font-medium bg-success/10 text-success", children: [
271
+ /* @__PURE__ */ jsx(CheckCircle2, { className: "h-3.5 w-3.5 shrink-0" }),
272
+ "Active \u2014 integration is running"
273
+ ] }),
274
+ serviceData && /* @__PURE__ */ jsxs(Fragment, { children: [
275
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
276
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs font-medium uppercase tracking-wide", children: "Account Information" }),
277
+ /* @__PURE__ */ jsx(Card, { className: "py-0", children: /* @__PURE__ */ jsxs(CardContent, { className: "flex flex-col gap-3 p-3", children: [
278
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
279
+ /* @__PURE__ */ jsx(User, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }),
280
+ /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
281
+ serviceData.accountIdentifierLabel,
282
+ ":"
283
+ ] }),
284
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: serviceData.accountIdentifier })
285
+ ] }),
286
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
287
+ /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }),
288
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Connected on:" }),
289
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: serviceData.connectedOn })
290
+ ] }),
291
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs", children: [
292
+ /* @__PURE__ */ jsx(Clock, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0" }),
293
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Last synced:" }),
294
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: serviceData.lastSynced })
295
+ ] })
296
+ ] }) })
297
+ ] }),
298
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
299
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs font-medium uppercase tracking-wide", children: "Granted Permissions" }),
300
+ /* @__PURE__ */ jsx(Card, { className: "py-0", children: /* @__PURE__ */ jsx(CardContent, { className: "flex flex-col gap-2 p-3", children: serviceData.permissions.map((permission) => /* @__PURE__ */ jsxs(
301
+ "div",
302
+ {
303
+ className: "flex items-center gap-2 text-xs",
304
+ children: [
305
+ /* @__PURE__ */ jsx(Shield, { className: "text-success h-3.5 w-3.5 shrink-0" }),
306
+ /* @__PURE__ */ jsx("span", { children: permission })
307
+ ]
308
+ },
309
+ permission
310
+ )) }) })
311
+ ] }),
312
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
313
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs font-medium uppercase tracking-wide", children: "Sync Settings" }),
314
+ /* @__PURE__ */ jsx(Card, { className: "py-0", children: /* @__PURE__ */ jsxs(CardContent, { className: "flex items-center justify-between gap-3 p-3", children: [
315
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
316
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: serviceData.syncLabel }),
317
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: serviceData.syncDescription })
318
+ ] }),
319
+ /* @__PURE__ */ jsx(
320
+ Switch,
321
+ {
322
+ checked: serviceData.syncEnabled,
323
+ onCheckedChange: serviceData.onSyncToggle,
324
+ "aria-label": serviceData.syncLabel
325
+ }
326
+ )
327
+ ] }) })
328
+ ] })
329
+ ] })
330
+ ] }),
331
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
332
+ /* @__PURE__ */ jsx(
333
+ Button,
334
+ {
335
+ variant: "destructive",
336
+ size: "sm",
337
+ onClick: onDisconnect,
338
+ className: "mr-auto",
339
+ children: "Disconnect"
340
+ }
341
+ ),
342
+ /* @__PURE__ */ jsx(
343
+ Button,
344
+ {
345
+ variant: "outline-secondary",
346
+ size: "sm",
347
+ onClick: () => onOpenChange(false),
348
+ children: "Cancel"
349
+ }
350
+ ),
351
+ /* @__PURE__ */ jsx(Button, { size: "sm", onClick: onReconnect, children: "Reconnect" })
352
+ ] })
353
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
354
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 py-2", children: [
355
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
356
+ /* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center bg-muted", children: iconNode != null ? iconNode : /* @__PURE__ */ jsx(Mail, { className: "h-5 w-5 text-muted-foreground" }) }),
357
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
358
+ /* @__PURE__ */ jsxs("p", { className: "text-sm font-semibold", children: [
359
+ "Connect ",
360
+ serviceTitle
361
+ ] }),
362
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: connectDescription })
363
+ ] })
364
+ ] }),
365
+ connectPermissions && connectPermissions.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 border border-border px-4 py-3", children: [
366
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wide", children: "Permissions requested" }),
367
+ connectPermissions.map((perm) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
368
+ /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
369
+ /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: perm })
370
+ ] }, perm))
371
+ ] })
372
+ ] }),
373
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
374
+ /* @__PURE__ */ jsx(
375
+ Button,
376
+ {
377
+ variant: "outline-secondary",
378
+ size: "sm",
379
+ onClick: () => onOpenChange(false),
380
+ children: "Cancel"
381
+ }
382
+ ),
383
+ /* @__PURE__ */ jsx(Button, { size: "sm", onClick: onConnect, children: "Connect" })
384
+ ] })
385
+ ] }) }) });
386
+ }
387
+
388
+ export {
389
+ AgentCard,
390
+ AgentMenuModal,
391
+ IntegrationServiceCard,
392
+ IntegrationInstructionCard,
393
+ ServiceConfigurationModal
394
+ };
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-FEZKMUCF.mjs";
4
4
  import {
5
5
  cn
6
- } from "./chunk-VLQZANBF.mjs";
6
+ } from "./chunk-AFML43VJ.mjs";
7
7
  import {
8
8
  __objRest,
9
9
  __spreadValues
10
- } from "./chunk-FWCSY2DS.mjs";
10
+ } from "./chunk-WNQUEZJF.mjs";
11
11
 
12
12
  // src/components/ui/popover.tsx
13
13
  import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Skeleton
3
- } from "./chunk-D6ID6M4V.mjs";
3
+ } from "./chunk-GTAVSBDO.mjs";
4
4
  import {
5
5
  ChartPeriodButton,
6
6
  FALLBACK_BG,
@@ -10,31 +10,31 @@ import {
10
10
  FALLBACK_TICK,
11
11
  formatMonthLabel,
12
12
  formatTooltipDate
13
- } from "./chunk-M3FV7LOK.mjs";
13
+ } from "./chunk-YEWNFK5S.mjs";
14
14
  import {
15
15
  formatCurrencyAbbrev
16
16
  } from "./chunk-MN5NYQCL.mjs";
17
17
  import {
18
18
  Empty,
19
19
  EmptyDescription
20
- } from "./chunk-NQPOYKAQ.mjs";
20
+ } from "./chunk-R2ON6CAN.mjs";
21
21
  import {
22
22
  Card,
23
23
  CardAction,
24
24
  CardContent,
25
25
  CardHeader,
26
26
  CardTitle
27
- } from "./chunk-C7CQJNMR.mjs";
27
+ } from "./chunk-3VDET466.mjs";
28
28
  import {
29
29
  useThemeVars
30
30
  } from "./chunk-FEZKMUCF.mjs";
31
31
  import {
32
32
  cn
33
- } from "./chunk-VLQZANBF.mjs";
33
+ } from "./chunk-AFML43VJ.mjs";
34
34
  import {
35
35
  __spreadProps,
36
36
  __spreadValues
37
- } from "./chunk-FWCSY2DS.mjs";
37
+ } from "./chunk-WNQUEZJF.mjs";
38
38
 
39
39
  // src/components/ui/property-mobile-estimate-line-chart.tsx
40
40
  import { useMemo, useState } from "react";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-VLQZANBF.mjs";
3
+ } from "./chunk-AFML43VJ.mjs";
4
4
 
5
5
  // src/components/ui/financial-primitives.tsx
6
6
  import { jsx, jsxs } from "react/jsx-runtime";