@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
@@ -4,23 +4,29 @@ import {
4
4
  FinancialSubsectionTitle,
5
5
  FinancialSubtotalBlock,
6
6
  FinancialSubtotalFrame
7
- } from "./chunk-OGOYQ7BG.mjs";
8
- import {
9
- formatDateShort
10
- } from "./chunk-7PV3IWCN.mjs";
7
+ } from "./chunk-DQB4EPIS.mjs";
11
8
  import {
12
9
  RadioGroup,
13
10
  RadioGroupItem
14
- } from "./chunk-7XJHLGUV.mjs";
11
+ } from "./chunk-JTK6VJXY.mjs";
15
12
  import {
16
13
  Badge
17
- } from "./chunk-BKNFWEH2.mjs";
14
+ } from "./chunk-WL6WVV47.mjs";
15
+ import {
16
+ formatDateShort
17
+ } from "./chunk-M4VYX2PV.mjs";
18
+ import {
19
+ Accordion,
20
+ AccordionContent,
21
+ AccordionItem,
22
+ AccordionTrigger
23
+ } from "./chunk-UNACI2YK.mjs";
18
24
  import {
19
25
  Button
20
- } from "./chunk-XREGSKX3.mjs";
26
+ } from "./chunk-NOOEKOWY.mjs";
21
27
  import {
22
28
  cn
23
- } from "./chunk-VLQZANBF.mjs";
29
+ } from "./chunk-AFML43VJ.mjs";
24
30
 
25
31
  // src/components/ui/financial-cards.tsx
26
32
  import * as React from "react";
@@ -82,11 +88,10 @@ function PropertyCard({
82
88
  variant: "ghost",
83
89
  "aria-expanded": expanded,
84
90
  onClick: () => setExpanded((prev) => !prev),
85
- className: "h-auto w-full justify-start gap-1.5 px-5 py-3 text-left",
91
+ className: "h-auto w-full justify-start gap-1.5 px-5 py-3 text-left has-[>svg]:px-5",
86
92
  children: [
87
- /* @__PURE__ */ jsx("span", { className: "text-label-medium text-foreground", children: address }),
88
- type && /* @__PURE__ */ jsx(Badge, { variant: "outline", children: type }),
89
- /* @__PURE__ */ jsx("span", { className: "flex-1" }),
93
+ /* @__PURE__ */ jsx("span", { className: "flex-1 min-w-0 truncate text-label-medium text-foreground", children: address }),
94
+ type && /* @__PURE__ */ jsx(Badge, { className: "shrink-0", variant: "outline", children: type }),
90
95
  /* @__PURE__ */ jsx(
91
96
  ChevronDown,
92
97
  {
@@ -108,13 +113,13 @@ function PropertyCard({
108
113
  {
109
114
  className: cn(
110
115
  "grid gap-5 px-5 py-[15px]",
111
- isLinkedToBank ? "grid-cols-3" : "grid-cols-1"
116
+ isLinkedToBank ? "grid-cols-2" : "grid-cols-1"
112
117
  ),
113
118
  children: [
114
119
  /* @__PURE__ */ jsx(FinancialDetailField, { label: "Estimated Value", value: estimated }),
115
120
  isLinkedToBank && /* @__PURE__ */ jsxs(Fragment, { children: [
116
121
  /* @__PURE__ */ jsx(FinancialDetailField, { label: "Loan Amount", value: loanAmount }),
117
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Equity", value: equity })
122
+ /* @__PURE__ */ jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsx(FinancialDetailField, { label: "Equity", value: equity }) })
118
123
  ] })
119
124
  ]
120
125
  }
@@ -518,6 +523,16 @@ function AlertCard({
518
523
  )
519
524
  ] });
520
525
  }
526
+ function ageFromDob(dobStr) {
527
+ if (!dobStr) return null;
528
+ const dob = new Date(dobStr);
529
+ if (isNaN(dob.getTime())) return null;
530
+ const today = /* @__PURE__ */ new Date();
531
+ let age = today.getFullYear() - dob.getFullYear();
532
+ const m = today.getMonth() - dob.getMonth();
533
+ if (m < 0 || m === 0 && today.getDate() < dob.getDate()) age--;
534
+ return age >= 0 ? age : null;
535
+ }
521
536
  function AboutCard({
522
537
  title,
523
538
  firstName,
@@ -528,6 +543,7 @@ function AboutCard({
528
543
  gender,
529
544
  maritalStatus,
530
545
  numDependants,
546
+ dependants,
531
547
  citizenStatus,
532
548
  residentialAddress,
533
549
  residentialStatus,
@@ -536,94 +552,140 @@ function AboutCard({
536
552
  driversLicence,
537
553
  passport,
538
554
  propertyInTrust,
539
- companyOwnership
555
+ companyOwnership,
556
+ borderless = false
540
557
  }) {
541
558
  const fullName = [title, firstName, lastName].filter(Boolean).join(" ") || "\u2014";
542
559
  const timeAtAddress = timeAtAddressYears || timeAtAddressMonths ? [
543
560
  timeAtAddressYears && `${timeAtAddressYears}yr`,
544
561
  timeAtAddressMonths && `${timeAtAddressMonths}mo`
545
562
  ].filter(Boolean).join(" ") : void 0;
546
- return /* @__PURE__ */ jsx("div", { className: "border border-border overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-x-8 gap-y-4 px-5 py-4", children: [
547
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Full Name", value: fullName }),
548
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Date of Birth", value: dob || "\u2014" }),
549
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Gender", value: gender || "\u2014" }),
550
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Phone", value: phone || "\u2014" }),
551
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Email", value: email || "\u2014" }),
552
- /* @__PURE__ */ jsx(
553
- FinancialDetailField,
554
- {
555
- label: "Marital Status",
556
- value: maritalStatus || "\u2014"
557
- }
558
- ),
559
- /* @__PURE__ */ jsx(
560
- FinancialDetailField,
561
- {
562
- label: "No. of Dependants",
563
- value: numDependants != null ? numDependants : "\u2014"
564
- }
565
- ),
566
- /* @__PURE__ */ jsx(
567
- FinancialDetailField,
568
- {
569
- label: "Citizenship",
570
- value: citizenStatus || "\u2014"
571
- }
572
- ),
573
- /* @__PURE__ */ jsx(
574
- FinancialDetailField,
575
- {
576
- label: "Residential Address",
577
- value: residentialAddress || "\u2014"
578
- }
579
- ),
580
- /* @__PURE__ */ jsx(
581
- FinancialDetailField,
582
- {
583
- label: "Residential Status",
584
- value: residentialStatus || "\u2014"
585
- }
586
- ),
587
- timeAtAddress && /* @__PURE__ */ jsx(FinancialDetailField, { label: "Time at Address", value: timeAtAddress }),
588
- /* @__PURE__ */ jsx(
589
- FinancialDetailField,
590
- {
591
- label: "Driver's Licence",
592
- value: driversLicence || "\u2014"
593
- }
594
- ),
595
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Passport", value: passport || "\u2014" }),
596
- /* @__PURE__ */ jsx(
597
- FinancialDetailField,
598
- {
599
- label: "Property in Trust",
600
- value: propertyInTrust || "\u2014"
601
- }
602
- ),
603
- /* @__PURE__ */ jsx(
604
- FinancialDetailField,
605
- {
606
- label: "Company Ownership",
607
- value: companyOwnership || "\u2014"
608
- }
609
- )
610
- ] }) });
563
+ return /* @__PURE__ */ jsxs(
564
+ "div",
565
+ {
566
+ className: cn(
567
+ "overflow-hidden divide-y divide-border",
568
+ !borderless && "border border-border"
569
+ ),
570
+ children: [
571
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
572
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Full Name", value: fullName }),
573
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Date of Birth", value: dob || "\u2014" }),
574
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Gender", value: gender || "\u2014" }),
575
+ /* @__PURE__ */ jsx(
576
+ FinancialDetailField,
577
+ {
578
+ label: "Citizenship",
579
+ value: citizenStatus || "\u2014"
580
+ }
581
+ ),
582
+ /* @__PURE__ */ jsx(
583
+ FinancialDetailField,
584
+ {
585
+ label: "Driver's Licence",
586
+ value: driversLicence || "\u2014"
587
+ }
588
+ ),
589
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Passport", value: passport || "\u2014" })
590
+ ] }),
591
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
592
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Phone", value: phone || "\u2014" }),
593
+ /* @__PURE__ */ jsx(FinancialDetailField, { label: "Email", value: email || "\u2014" })
594
+ ] }),
595
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
596
+ /* @__PURE__ */ jsx(
597
+ FinancialDetailField,
598
+ {
599
+ label: "Marital Status",
600
+ value: maritalStatus || "\u2014"
601
+ }
602
+ ),
603
+ /* @__PURE__ */ jsx(
604
+ FinancialDetailField,
605
+ {
606
+ label: "No. of Dependants",
607
+ value: numDependants != null ? numDependants : "\u2014"
608
+ }
609
+ ),
610
+ dependants && dependants.map((dep, i) => {
611
+ const age = ageFromDob(dep.dob);
612
+ const dobFormatted = formatDateShort(dep.dob) || "\u2014";
613
+ const value = age !== null ? `${dobFormatted} \xB7 age ${age}` : dobFormatted;
614
+ return /* @__PURE__ */ jsx(
615
+ FinancialDetailField,
616
+ {
617
+ label: `Dependant ${i + 1}`,
618
+ value
619
+ },
620
+ i
621
+ );
622
+ })
623
+ ] }),
624
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
625
+ /* @__PURE__ */ jsx("div", { className: "col-span-2", children: /* @__PURE__ */ jsx(
626
+ FinancialDetailField,
627
+ {
628
+ label: "Residential Address",
629
+ value: residentialAddress || "\u2014"
630
+ }
631
+ ) }),
632
+ /* @__PURE__ */ jsx(
633
+ FinancialDetailField,
634
+ {
635
+ label: "Residential Status",
636
+ value: residentialStatus || "\u2014"
637
+ }
638
+ ),
639
+ timeAtAddress && /* @__PURE__ */ jsx(FinancialDetailField, { label: "Time at Address", value: timeAtAddress })
640
+ ] }),
641
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-x-6 gap-y-4 px-5 py-4", children: [
642
+ /* @__PURE__ */ jsx(
643
+ FinancialDetailField,
644
+ {
645
+ label: "Property in Trust",
646
+ value: propertyInTrust || "\u2014"
647
+ }
648
+ ),
649
+ /* @__PURE__ */ jsx(
650
+ FinancialDetailField,
651
+ {
652
+ label: "Company Ownership",
653
+ value: companyOwnership || "\u2014"
654
+ }
655
+ )
656
+ ] })
657
+ ]
658
+ }
659
+ );
611
660
  }
612
- function IncomeCard({ items, totalMonthly }) {
661
+ function IncomeCard({
662
+ items,
663
+ totalMonthly,
664
+ borderless = false
665
+ }) {
613
666
  if (items.length === 0) {
614
- return /* @__PURE__ */ jsx("div", { className: "border border-border px-5 py-4", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No income recorded." }) });
667
+ return /* @__PURE__ */ jsx("div", { className: cn("px-5 py-4", !borderless && "border border-border"), children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No income recorded." }) });
615
668
  }
616
- return /* @__PURE__ */ jsxs("div", { className: "border border-border overflow-hidden flex flex-col", children: [
617
- items.map((item, i) => /* @__PURE__ */ jsxs(
618
- "div",
619
- {
620
- className: cn(
621
- "flex flex-col gap-3 px-5 py-[15px]",
622
- i < items.length - 1 && "border-b border-border"
623
- ),
624
- children: [
625
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-x-6", children: [
626
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Type", value: item.incomeType || "\u2014" }),
669
+ return /* @__PURE__ */ jsxs(
670
+ "div",
671
+ {
672
+ className: cn(
673
+ "overflow-hidden flex flex-col",
674
+ !borderless && "border border-border"
675
+ ),
676
+ children: [
677
+ /* @__PURE__ */ jsx(Accordion, { openMultiple: true, children: items.map((item, i) => /* @__PURE__ */ jsxs(AccordionItem, { value: String(i), children: [
678
+ /* @__PURE__ */ jsx(AccordionTrigger, { className: "px-5", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center justify-between pr-2", children: [
679
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
680
+ /* @__PURE__ */ jsx("span", { className: "text-label-medium text-foreground", children: item.incomeType }),
681
+ item.jobTitle && /* @__PURE__ */ jsxs("span", { className: "text-body-small text-muted-foreground", children: [
682
+ "\xB7 ",
683
+ item.jobTitle
684
+ ] })
685
+ ] }),
686
+ /* @__PURE__ */ jsx("span", { className: "text-label-medium text-foreground", children: item.amountLabel })
687
+ ] }) }),
688
+ /* @__PURE__ */ jsx(AccordionContent, { className: "px-5", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-x-6 gap-y-4 pb-2 pt-1", children: [
627
689
  /* @__PURE__ */ jsx(
628
690
  FinancialDetailField,
629
691
  {
@@ -631,9 +693,6 @@ function IncomeCard({ items, totalMonthly }) {
631
693
  value: item.jobTitle || "\u2014"
632
694
  }
633
695
  ),
634
- /* @__PURE__ */ jsx(FinancialDetailField, { label: "Amount", value: item.amountLabel })
635
- ] }),
636
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-x-6", children: [
637
696
  /* @__PURE__ */ jsx(
638
697
  FinancialDetailField,
639
698
  {
@@ -654,27 +713,26 @@ function IncomeCard({ items, totalMonthly }) {
654
713
  label: "Status",
655
714
  value: item.stillInPosition === void 0 ? "\u2014" : item.stillInPosition ? "Still in position" : item.endDate ? `Ended ${formatDateShort(item.endDate)}` : "No longer in position"
656
715
  }
716
+ ),
717
+ item.companyAddress && /* @__PURE__ */ jsx(
718
+ FinancialDetailField,
719
+ {
720
+ label: "Company Address",
721
+ value: item.companyAddress
722
+ }
657
723
  )
658
- ] }),
659
- item.companyAddress && /* @__PURE__ */ jsx(
660
- FinancialDetailField,
661
- {
662
- label: "Company Address",
663
- value: item.companyAddress
664
- }
665
- )
666
- ]
667
- },
668
- i
669
- )),
670
- totalMonthly && /* @__PURE__ */ jsx(FinancialSubtotalFrame, { children: /* @__PURE__ */ jsx(
671
- FinancialSubtotalBlock,
672
- {
673
- monthlyAverage: totalMonthly,
674
- label: "Total Monthly Income"
675
- }
676
- ) })
677
- ] });
724
+ ] }) })
725
+ ] }, i)) }),
726
+ totalMonthly && /* @__PURE__ */ jsx(FinancialSubtotalFrame, { children: /* @__PURE__ */ jsx(
727
+ FinancialSubtotalBlock,
728
+ {
729
+ monthlyAverage: totalMonthly,
730
+ label: "Total Monthly Income"
731
+ }
732
+ ) })
733
+ ]
734
+ }
735
+ );
678
736
  }
679
737
  var EXPENSE_ICON_MAP = {
680
738
  groceries: ShoppingCart,
@@ -707,39 +765,52 @@ function getExpenseIcon(expenseType) {
707
765
  var _a;
708
766
  return (_a = EXPENSE_ICON_MAP[expenseType.toLowerCase()]) != null ? _a : Receipt;
709
767
  }
710
- function ExpensesCard({ items, totalMonthly }) {
768
+ function ExpensesCard({
769
+ items,
770
+ totalMonthly,
771
+ borderless = false
772
+ }) {
711
773
  if (items.length === 0) {
712
- return /* @__PURE__ */ jsx("div", { className: "border border-border px-5 py-4", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No expenses recorded." }) });
774
+ return /* @__PURE__ */ jsx("div", { className: cn("px-5 py-4", !borderless && "border border-border"), children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No expenses recorded." }) });
713
775
  }
714
- return /* @__PURE__ */ jsxs("div", { className: "border border-border overflow-hidden flex flex-col", children: [
715
- /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: items.map((item, i) => {
716
- const Icon = getExpenseIcon(item.expenseType);
717
- return /* @__PURE__ */ jsxs(
718
- "div",
719
- {
720
- className: cn(
721
- "flex items-center justify-between gap-4 px-5 py-2.5",
722
- i < items.length - 1 && "border-b border-border"
723
- ),
724
- children: [
725
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
726
- /* @__PURE__ */ jsx(Icon, { className: "size-3.5 shrink-0 text-muted-foreground" }),
727
- /* @__PURE__ */ jsx("span", { className: "text-body-small text-foreground", children: item.expenseType })
728
- ] }),
729
- /* @__PURE__ */ jsx("span", { className: "text-label-medium whitespace-nowrap text-destructive", children: item.amountLabel })
730
- ]
731
- },
732
- item.expenseType
733
- );
734
- }) }),
735
- totalMonthly && /* @__PURE__ */ jsx(FinancialSubtotalFrame, { children: /* @__PURE__ */ jsx(
736
- FinancialSubtotalBlock,
737
- {
738
- monthlyAverage: totalMonthly,
739
- label: "Total Monthly Expenses"
740
- }
741
- ) })
742
- ] });
776
+ return /* @__PURE__ */ jsxs(
777
+ "div",
778
+ {
779
+ className: cn(
780
+ "overflow-hidden flex flex-col",
781
+ !borderless && "border border-border"
782
+ ),
783
+ children: [
784
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: items.map((item, i) => {
785
+ const Icon = getExpenseIcon(item.expenseType);
786
+ return /* @__PURE__ */ jsxs(
787
+ "div",
788
+ {
789
+ className: cn(
790
+ "flex items-center justify-between gap-4 px-5 py-2.5",
791
+ i < items.length - 1 && "border-b border-border"
792
+ ),
793
+ children: [
794
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5", children: [
795
+ /* @__PURE__ */ jsx(Icon, { className: "size-3.5 shrink-0 text-muted-foreground" }),
796
+ /* @__PURE__ */ jsx("span", { className: "text-body-small text-foreground", children: item.expenseType })
797
+ ] }),
798
+ /* @__PURE__ */ jsx("span", { className: "text-label-medium whitespace-nowrap text-destructive", children: item.amountLabel })
799
+ ]
800
+ },
801
+ item.expenseType
802
+ );
803
+ }) }),
804
+ totalMonthly && /* @__PURE__ */ jsx(FinancialSubtotalFrame, { children: /* @__PURE__ */ jsx(
805
+ FinancialSubtotalBlock,
806
+ {
807
+ monthlyAverage: totalMonthly,
808
+ label: "Total Monthly Expenses"
809
+ }
810
+ ) })
811
+ ]
812
+ }
813
+ );
743
814
  }
744
815
 
745
816
  export {
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-VLQZANBF.mjs";
3
+ } from "./chunk-AFML43VJ.mjs";
4
4
  import {
5
5
  __objRest,
6
6
  __spreadValues
7
- } from "./chunk-FWCSY2DS.mjs";
7
+ } from "./chunk-WNQUEZJF.mjs";
8
8
 
9
9
  // src/components/ui/input.tsx
10
10
  import { jsx } from "react/jsx-runtime";
@@ -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
  ChartLegendItem,
6
6
  ChartPeriodButton,
@@ -9,24 +9,24 @@ import {
9
9
  formatCount,
10
10
  formatMonthLabel,
11
11
  formatTooltipDate
12
- } from "./chunk-M3FV7LOK.mjs";
12
+ } from "./chunk-YEWNFK5S.mjs";
13
13
  import {
14
14
  Empty,
15
15
  EmptyDescription
16
- } from "./chunk-NQPOYKAQ.mjs";
16
+ } from "./chunk-R2ON6CAN.mjs";
17
17
  import {
18
18
  Card,
19
19
  CardAction,
20
20
  CardContent,
21
21
  CardHeader,
22
22
  CardTitle
23
- } from "./chunk-C7CQJNMR.mjs";
23
+ } from "./chunk-3VDET466.mjs";
24
24
  import {
25
25
  useThemeVars
26
26
  } from "./chunk-FEZKMUCF.mjs";
27
27
  import {
28
28
  cn
29
- } from "./chunk-VLQZANBF.mjs";
29
+ } from "./chunk-AFML43VJ.mjs";
30
30
 
31
31
  // src/components/ui/backoffice-alert-history-chart.tsx
32
32
  import { useMemo, useState } from "react";
@@ -2,29 +2,29 @@ import {
2
2
  FALLBACK_PRIMARY,
3
3
  FALLBACK_SECONDARY,
4
4
  FALLBACK_TICK
5
- } from "./chunk-M3FV7LOK.mjs";
5
+ } from "./chunk-YEWNFK5S.mjs";
6
6
  import {
7
7
  formatCurrency
8
8
  } from "./chunk-MN5NYQCL.mjs";
9
9
  import {
10
10
  Empty,
11
11
  EmptyDescription
12
- } from "./chunk-NQPOYKAQ.mjs";
12
+ } from "./chunk-R2ON6CAN.mjs";
13
13
  import {
14
14
  Card,
15
15
  CardContent,
16
16
  CardHeader,
17
17
  CardTitle
18
- } from "./chunk-C7CQJNMR.mjs";
18
+ } from "./chunk-3VDET466.mjs";
19
19
  import {
20
20
  Spinner
21
- } from "./chunk-7YAU5CY6.mjs";
21
+ } from "./chunk-JVMXMFBB.mjs";
22
22
  import {
23
23
  useThemeVars
24
24
  } from "./chunk-FEZKMUCF.mjs";
25
25
  import {
26
26
  cn
27
- } from "./chunk-VLQZANBF.mjs";
27
+ } from "./chunk-AFML43VJ.mjs";
28
28
 
29
29
  // src/components/ui/transactions-income-expense-bar-chart.tsx
30
30
  import { useMemo } from "react";
@@ -25,9 +25,27 @@ function formatDateWithWeekday(iso) {
25
25
  return iso;
26
26
  }
27
27
  }
28
+ function formatDateLong(date) {
29
+ try {
30
+ const d = typeof date === "string" ? safeParse(date) : date;
31
+ return format(d, "EEEE, d MMMM");
32
+ } catch (e) {
33
+ return String(date);
34
+ }
35
+ }
36
+ function formatWeekdayShort(date) {
37
+ try {
38
+ const d = typeof date === "string" ? safeParse(date) : date;
39
+ return format(d, "EEE").toUpperCase();
40
+ } catch (e) {
41
+ return String(date);
42
+ }
43
+ }
28
44
 
29
45
  export {
30
46
  formatDateShort,
31
47
  formatDateDayMonth,
32
- formatDateWithWeekday
48
+ formatDateWithWeekday,
49
+ formatDateLong,
50
+ formatWeekdayShort
33
51
  };
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-VLQZANBF.mjs";
3
+ } from "./chunk-AFML43VJ.mjs";
4
4
  import {
5
5
  __objRest,
6
6
  __spreadValues
7
- } from "./chunk-FWCSY2DS.mjs";
7
+ } from "./chunk-WNQUEZJF.mjs";
8
8
 
9
9
  // src/components/ui/alert.tsx
10
10
  import { cva } from "class-variance-authority";
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  Sheet,
3
3
  SheetContent
4
- } from "./chunk-462HMNO4.mjs";
5
- import {
6
- AppointmentConfirmDialog,
7
- AppointmentRescheduleDialog
8
- } from "./chunk-6AW4KJHE.mjs";
4
+ } from "./chunk-4MM7LHM5.mjs";
9
5
  import {
10
6
  Avatar,
11
7
  AvatarFallback
12
- } from "./chunk-24FUO7TD.mjs";
8
+ } from "./chunk-H6NQTIF4.mjs";
9
+ import {
10
+ AppointmentConfirmDialog,
11
+ AppointmentRescheduleDialog
12
+ } from "./chunk-SIVYAI3M.mjs";
13
13
  import {
14
14
  Badge
15
- } from "./chunk-BKNFWEH2.mjs";
15
+ } from "./chunk-WL6WVV47.mjs";
16
16
  import {
17
17
  Separator
18
- } from "./chunk-FH6QVUVZ.mjs";
18
+ } from "./chunk-2GIYVERS.mjs";
19
19
  import {
20
20
  Button
21
- } from "./chunk-XREGSKX3.mjs";
21
+ } from "./chunk-NOOEKOWY.mjs";
22
22
 
23
23
  // src/components/ui/appointment-detail-sheet.tsx
24
24
  import React 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/page-top-bar.tsx
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  Slot
3
- } from "./chunk-DBHJ5KC3.mjs";
3
+ } from "./chunk-R4HCRDU5.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
  __spreadProps,
10
10
  __spreadValues
11
- } from "./chunk-FWCSY2DS.mjs";
11
+ } from "./chunk-WNQUEZJF.mjs";
12
12
 
13
13
  // src/components/ui/button.tsx
14
14
  import { forwardRef } from "react";
@@ -23,9 +23,9 @@ var buttonVariants = cva(
23
23
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
24
24
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
25
25
  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",
26
- 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",
26
+ 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",
27
27
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
28
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
28
+ "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",
29
29
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
30
30
  link: "text-primary underline-offset-4 hover:underline"
31
31
  },