@wealthx/shadcn 1.3.1 → 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 +259 -223
  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-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-MLNEWRWV.mjs → chunk-UJZ4UHWI.mjs} +10 -15
  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 +7 -9
  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 +12765 -9400
  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 +2 -15
  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
@@ -165,9 +165,9 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
165
165
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
166
166
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
167
167
  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",
168
- 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",
168
+ 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",
169
169
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
170
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
170
+ "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",
171
171
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
172
172
  link: "text-primary underline-offset-4 hover:underline"
173
173
  },
@@ -233,6 +233,30 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
233
233
  var React2 = __toESM(require("react"));
234
234
  var import_lucide_react2 = require("lucide-react");
235
235
  var import_react_day_picker = require("react-day-picker");
236
+
237
+ // src/lib/format-date.ts
238
+ var import_date_fns = require("date-fns");
239
+ function safeParse(iso) {
240
+ return (0, import_date_fns.parseISO)(iso);
241
+ }
242
+ function formatDateShort(iso) {
243
+ if (!iso) return "\u2014";
244
+ try {
245
+ return (0, import_date_fns.format)(safeParse(iso), "dd MMM yyyy");
246
+ } catch (e) {
247
+ return iso;
248
+ }
249
+ }
250
+ function formatDateLong(date) {
251
+ try {
252
+ const d = typeof date === "string" ? safeParse(date) : date;
253
+ return (0, import_date_fns.format)(d, "EEEE, d MMMM");
254
+ } catch (e) {
255
+ return String(date);
256
+ }
257
+ }
258
+
259
+ // src/components/ui/calendar.tsx
236
260
  var import_jsx_runtime2 = require("react/jsx-runtime");
237
261
  function CalendarRoot(_a) {
238
262
  var _b = _a, {
@@ -417,7 +441,7 @@ function CalendarDayButton(_a) {
417
441
  defaultClassNames.day,
418
442
  className
419
443
  ),
420
- "data-day": day.date.toLocaleDateString(),
444
+ "data-day": formatDateShort(day.date.toISOString()),
421
445
  "data-range-end": modifiers.range_end,
422
446
  "data-range-middle": modifiers.range_middle,
423
447
  "data-range-start": modifiers.range_start,
@@ -1420,7 +1444,7 @@ var FORMAT_OPTIONS = [
1420
1444
  }
1421
1445
  ];
1422
1446
  function MeetingFormatSection({
1423
- format,
1447
+ format: format2,
1424
1448
  onFormatChange,
1425
1449
  offlineLocation,
1426
1450
  onOfflineLocationChange,
@@ -1435,7 +1459,7 @@ function MeetingFormatSection({
1435
1459
  Toggle,
1436
1460
  {
1437
1461
  variant: "outline",
1438
- pressed: format === opt.value,
1462
+ pressed: format2 === opt.value,
1439
1463
  onPressedChange: () => onFormatChange(opt.value),
1440
1464
  className: "flex-1 gap-1.5",
1441
1465
  children: [
@@ -1445,7 +1469,7 @@ function MeetingFormatSection({
1445
1469
  },
1446
1470
  opt.value
1447
1471
  )) }),
1448
- format === "offline" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-2 border border-border p-3", children: [
1472
+ format2 === "offline" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-2 border border-border p-3", children: [
1449
1473
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: "Location" }),
1450
1474
  /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1451
1475
  RadioGroup,
@@ -1492,6 +1516,15 @@ function MeetingFormatSection({
1492
1516
  ] })
1493
1517
  ] });
1494
1518
  }
1519
+ var DAY_MAP = {
1520
+ Sun: 0,
1521
+ Mon: 1,
1522
+ Tue: 2,
1523
+ Wed: 3,
1524
+ Thu: 4,
1525
+ Fri: 5,
1526
+ Sat: 6
1527
+ };
1495
1528
  function AppointmentBookDialog({
1496
1529
  open,
1497
1530
  onOpenChange,
@@ -1499,24 +1532,22 @@ function AppointmentBookDialog({
1499
1532
  meetingTypes = [],
1500
1533
  amSlots,
1501
1534
  pmSlots,
1535
+ onDateChange,
1502
1536
  schedule,
1503
1537
  advisorOfficeAddress,
1504
1538
  clientHomeAddress,
1505
1539
  advisorInfo,
1506
1540
  initialClientId,
1541
+ guestInfo,
1507
1542
  onBook
1508
1543
  }) {
1544
+ var _a, _b, _c;
1509
1545
  const isClientMode = clients.length === 0;
1510
- const DAY_MAP = {
1511
- Sun: 0,
1512
- Mon: 1,
1513
- Tue: 2,
1514
- Wed: 3,
1515
- Thu: 4,
1516
- Fri: 5,
1517
- Sat: 6
1518
- };
1519
- const disabledDayOfWeek = schedule == null ? void 0 : schedule.filter((d) => !d.enabled).map((d) => DAY_MAP[d.day]).filter((n) => n !== void 0);
1546
+ const showGuestForm = isClientMode && !((guestInfo == null ? void 0 : guestInfo.name) && (guestInfo == null ? void 0 : guestInfo.email));
1547
+ const disabledDayOfWeek = import_react3.default.useMemo(
1548
+ () => schedule == null ? void 0 : schedule.filter((d) => !d.enabled).map((d) => DAY_MAP[d.day]).filter((n) => n !== void 0),
1549
+ [schedule]
1550
+ );
1520
1551
  const [clientId, setClientId] = import_react3.default.useState(void 0);
1521
1552
  const [meetingType, setMeetingType] = import_react3.default.useState("");
1522
1553
  const [meetingFormat, setMeetingFormat] = import_react3.default.useState("call");
@@ -1530,7 +1561,13 @@ function AppointmentBookDialog({
1530
1561
  const [selectedPhone, setSelectedPhone] = import_react3.default.useState(
1531
1562
  void 0
1532
1563
  );
1533
- const selectedClient = clients.find((c) => c.id === clientId);
1564
+ const [guestName, setGuestName] = import_react3.default.useState((_a = guestInfo == null ? void 0 : guestInfo.name) != null ? _a : "");
1565
+ const [guestEmail, setGuestEmail] = import_react3.default.useState((_b = guestInfo == null ? void 0 : guestInfo.email) != null ? _b : "");
1566
+ const [guestPhone, setGuestPhone] = import_react3.default.useState((_c = guestInfo == null ? void 0 : guestInfo.phone) != null ? _c : "");
1567
+ const selectedClient = import_react3.default.useMemo(
1568
+ () => clients.find((c) => c.id === clientId),
1569
+ [clients, clientId]
1570
+ );
1534
1571
  import_react3.default.useEffect(() => {
1535
1572
  if (open && initialClientId) {
1536
1573
  setClientId(initialClientId);
@@ -1547,8 +1584,10 @@ function AppointmentBookDialog({
1547
1584
  const clientReady = isClientMode || !!clientId;
1548
1585
  const meetingTypeReady = meetingTypes.length === 0 || !!meetingType;
1549
1586
  const offlineReady = meetingFormat !== "offline" || offlineLocation !== "custom" || !!customAddress.trim();
1550
- const canSubmit = clientReady && meetingTypeReady && !!date && !!selectedSlot && offlineReady;
1587
+ const guestReady = !showGuestForm || !!guestName.trim() && !!guestEmail.trim();
1588
+ const canSubmit = clientReady && meetingTypeReady && !!date && !!selectedSlot && offlineReady && guestReady;
1551
1589
  const handleOpenChange = (next) => {
1590
+ var _a2, _b2, _c2;
1552
1591
  if (!next) {
1553
1592
  setClientId(void 0);
1554
1593
  setMeetingType("");
@@ -1559,6 +1598,9 @@ function AppointmentBookDialog({
1559
1598
  setSelectedSlot(void 0);
1560
1599
  setNotes("");
1561
1600
  setSelectedPhone(void 0);
1601
+ setGuestName((_a2 = guestInfo == null ? void 0 : guestInfo.name) != null ? _a2 : "");
1602
+ setGuestEmail((_b2 = guestInfo == null ? void 0 : guestInfo.email) != null ? _b2 : "");
1603
+ setGuestPhone((_c2 = guestInfo == null ? void 0 : guestInfo.phone) != null ? _c2 : "");
1562
1604
  }
1563
1605
  onOpenChange(next);
1564
1606
  };
@@ -1594,6 +1636,53 @@ function AppointmentBookDialog({
1594
1636
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SelectContent, { children: meetingTypes.map((t) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SelectItem, { value: t, children: t }, t)) })
1595
1637
  ] })
1596
1638
  ] }),
1639
+ showGuestForm && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
1640
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
1641
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Label, { htmlFor: "guest-name", children: "Full name" }),
1642
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1643
+ Input,
1644
+ {
1645
+ id: "guest-name",
1646
+ placeholder: "Your full name",
1647
+ value: guestName,
1648
+ onChange: (e) => setGuestName(e.target.value),
1649
+ autoComplete: "name"
1650
+ }
1651
+ )
1652
+ ] }),
1653
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
1654
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Label, { htmlFor: "guest-email", children: "Email" }),
1655
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1656
+ Input,
1657
+ {
1658
+ id: "guest-email",
1659
+ type: "email",
1660
+ placeholder: "your@email.com",
1661
+ value: guestEmail,
1662
+ onChange: (e) => setGuestEmail(e.target.value),
1663
+ autoComplete: "email"
1664
+ }
1665
+ )
1666
+ ] }),
1667
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
1668
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Label, { htmlFor: "guest-phone", children: [
1669
+ "Phone",
1670
+ " ",
1671
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "font-normal text-muted-foreground", children: "(optional)" })
1672
+ ] }),
1673
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1674
+ Input,
1675
+ {
1676
+ id: "guest-phone",
1677
+ type: "tel",
1678
+ placeholder: "+61 4XX XXX XXX",
1679
+ value: guestPhone,
1680
+ onChange: (e) => setGuestPhone(e.target.value),
1681
+ autoComplete: "tel"
1682
+ }
1683
+ )
1684
+ ] })
1685
+ ] }),
1597
1686
  /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
1598
1687
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Label, { children: "Meeting format" }),
1599
1688
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
@@ -1654,6 +1743,7 @@ function AppointmentBookDialog({
1654
1743
  onSelect: (d) => {
1655
1744
  setDate(d);
1656
1745
  setSelectedSlot(void 0);
1746
+ if (d) onDateChange == null ? void 0 : onDateChange(d);
1657
1747
  },
1658
1748
  captionLayout: "label",
1659
1749
  fromDate: /* @__PURE__ */ new Date(),
@@ -1665,11 +1755,7 @@ function AppointmentBookDialog({
1665
1755
  /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
1666
1756
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Label, { children: "Time slot" }),
1667
1757
  date ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-col gap-3", children: [
1668
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-xs text-muted-foreground", children: date.toLocaleDateString("en-AU", {
1669
- weekday: "long",
1670
- day: "numeric",
1671
- month: "long"
1672
- }) }),
1758
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-xs text-muted-foreground", children: formatDateLong(date) }),
1673
1759
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1674
1760
  AppointmentSlotSection,
1675
1761
  {
@@ -1727,7 +1813,10 @@ function AppointmentBookDialog({
1727
1813
  meetingFormat,
1728
1814
  offlineLocation: meetingFormat === "offline" ? offlineLocation : void 0,
1729
1815
  customAddress: meetingFormat === "offline" && offlineLocation === "custom" ? customAddress : void 0,
1730
- callPhone: meetingFormat === "call" ? selectedPhone : void 0
1816
+ callPhone: meetingFormat === "call" ? selectedPhone : void 0,
1817
+ guestName: isClientMode ? guestName.trim() || void 0 : void 0,
1818
+ guestEmail: isClientMode ? guestEmail.trim() || void 0 : void 0,
1819
+ guestPhone: isClientMode ? guestPhone.trim() || void 0 : void 0
1731
1820
  });
1732
1821
  handleOpenChange(false);
1733
1822
  }
@@ -1,27 +1,28 @@
1
1
  import {
2
2
  AppointmentBookDialog
3
- } from "../../chunk-MIZQHHUO.mjs";
4
- import "../../chunk-U5X52X37.mjs";
5
- import "../../chunk-Y6DWJSKZ.mjs";
6
- import "../../chunk-7XJHLGUV.mjs";
7
- import "../../chunk-EI5F6FMT.mjs";
8
- import "../../chunk-3OYFOX3X.mjs";
9
- import "../../chunk-BDYZCBRT.mjs";
10
- import "../../chunk-34NWQURD.mjs";
11
- import "../../chunk-OODBHKG7.mjs";
12
- import "../../chunk-24FUO7TD.mjs";
13
- import "../../chunk-BKNFWEH2.mjs";
14
- import "../../chunk-7PYJD5JI.mjs";
15
- import "../../chunk-NSLMILBT.mjs";
16
- import "../../chunk-FH6QVUVZ.mjs";
17
- import "../../chunk-GYMYRIZP.mjs";
18
- import "../../chunk-6DZEXFNB.mjs";
19
- import "../../chunk-XREGSKX3.mjs";
20
- import "../../chunk-DBHJ5KC3.mjs";
3
+ } from "../../chunk-FL6DZFJK.mjs";
4
+ import "../../chunk-57ZXILTS.mjs";
5
+ import "../../chunk-ISUA7DSB.mjs";
6
+ import "../../chunk-JTK6VJXY.mjs";
7
+ import "../../chunk-OWFQSXVD.mjs";
8
+ import "../../chunk-H6NQTIF4.mjs";
9
+ import "../../chunk-5VOTTIXF.mjs";
10
+ import "../../chunk-6QAFGZC2.mjs";
11
+ import "../../chunk-BS75ICOO.mjs";
12
+ import "../../chunk-WL6WVV47.mjs";
13
+ import "../../chunk-6HIOM2HL.mjs";
14
+ import "../../chunk-M4VYX2PV.mjs";
15
+ import "../../chunk-P7CEBZM6.mjs";
16
+ import "../../chunk-2GIYVERS.mjs";
17
+ import "../../chunk-ZEDMKQK2.mjs";
18
+ import "../../chunk-LBTHZSBT.mjs";
19
+ import "../../chunk-P2N2PEFY.mjs";
20
+ import "../../chunk-NOOEKOWY.mjs";
21
+ import "../../chunk-R4HCRDU5.mjs";
21
22
  import "../../chunk-FEZKMUCF.mjs";
22
23
  import "../../chunk-QOJ2DQD6.mjs";
23
- import "../../chunk-VLQZANBF.mjs";
24
- import "../../chunk-FWCSY2DS.mjs";
24
+ import "../../chunk-AFML43VJ.mjs";
25
+ import "../../chunk-WNQUEZJF.mjs";
25
26
  export {
26
27
  AppointmentBookDialog
27
28
  };
@@ -252,9 +252,9 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
252
252
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
253
253
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
254
254
  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",
255
- 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",
255
+ 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",
256
256
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
257
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
257
+ "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",
258
258
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
259
259
  link: "text-primary underline-offset-4 hover:underline"
260
260
  },
@@ -445,6 +445,22 @@ function TabsContent(_a) {
445
445
 
446
446
  // src/components/ui/appointment-calendar-view.tsx
447
447
  var import_lucide_react2 = require("lucide-react");
448
+
449
+ // src/lib/format-date.ts
450
+ var import_date_fns = require("date-fns");
451
+ function safeParse(iso) {
452
+ return (0, import_date_fns.parseISO)(iso);
453
+ }
454
+ function formatWeekdayShort(date) {
455
+ try {
456
+ const d = typeof date === "string" ? safeParse(date) : date;
457
+ return (0, import_date_fns.format)(d, "EEE").toUpperCase();
458
+ } catch (e) {
459
+ return String(date);
460
+ }
461
+ }
462
+
463
+ // src/components/ui/appointment-calendar-view.tsx
448
464
  var import_jsx_runtime6 = require("react/jsx-runtime");
449
465
  var STATUS_COLORS = {
450
466
  pending: "border-l-warning bg-warning/5",
@@ -493,7 +509,7 @@ function DayView({
493
509
  onSelectAppointment
494
510
  }) {
495
511
  const d = /* @__PURE__ */ new Date(date + "T00:00:00");
496
- const dayLabel = d.toLocaleDateString("en-AU", { weekday: "short" }).toUpperCase();
512
+ const dayLabel = formatWeekdayShort(d);
497
513
  const dayShort = d.getDate();
498
514
  const isToday = date === today;
499
515
  const dayApts = appointments.filter((a) => a.date === date);
@@ -1,14 +1,15 @@
1
1
  import {
2
2
  AppointmentCalendarView
3
- } from "../../chunk-UMTOX62O.mjs";
4
- import "../../chunk-JHJHG4GO.mjs";
5
- import "../../chunk-24FUO7TD.mjs";
6
- import "../../chunk-BKNFWEH2.mjs";
7
- import "../../chunk-FH6QVUVZ.mjs";
8
- import "../../chunk-XREGSKX3.mjs";
9
- import "../../chunk-DBHJ5KC3.mjs";
10
- import "../../chunk-VLQZANBF.mjs";
11
- import "../../chunk-FWCSY2DS.mjs";
3
+ } from "../../chunk-XYPW2XA5.mjs";
4
+ import "../../chunk-H6NQTIF4.mjs";
5
+ import "../../chunk-WL6WVV47.mjs";
6
+ import "../../chunk-WE4YKBDE.mjs";
7
+ import "../../chunk-M4VYX2PV.mjs";
8
+ import "../../chunk-2GIYVERS.mjs";
9
+ import "../../chunk-NOOEKOWY.mjs";
10
+ import "../../chunk-R4HCRDU5.mjs";
11
+ import "../../chunk-AFML43VJ.mjs";
12
+ import "../../chunk-WNQUEZJF.mjs";
12
13
  export {
13
14
  AppointmentCalendarView
14
15
  };
@@ -253,9 +253,9 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
253
253
  default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
254
254
  secondary: "bg-brand-secondary text-brand-secondary-foreground shadow-xs hover:bg-brand-secondary/80 focus-visible:ring-brand-secondary/30",
255
255
  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",
256
- 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",
256
+ 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",
257
257
  "outline-primary": "border border-primary text-foreground bg-transparent shadow-xs hover:bg-primary/5 focus-visible:ring-primary/50",
258
- "outline-secondary": "border border-brand-secondary text-brand-secondary bg-transparent shadow-xs hover:bg-brand-secondary/10 focus-visible:ring-brand-secondary/30",
258
+ "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",
259
259
  ghost: "hover:bg-accent hover:text-accent-foreground hover:shadow-xs focus-visible:ring-border/50 dark:hover:bg-accent/50",
260
260
  link: "text-primary underline-offset-4 hover:underline"
261
261
  },
@@ -603,6 +603,22 @@ function AlertDialogCancel(_a) {
603
603
  var React3 = __toESM(require("react"));
604
604
  var import_lucide_react3 = require("lucide-react");
605
605
  var import_react_day_picker = require("react-day-picker");
606
+
607
+ // src/lib/format-date.ts
608
+ var import_date_fns = require("date-fns");
609
+ function safeParse(iso) {
610
+ return (0, import_date_fns.parseISO)(iso);
611
+ }
612
+ function formatDateShort(iso) {
613
+ if (!iso) return "\u2014";
614
+ try {
615
+ return (0, import_date_fns.format)(safeParse(iso), "dd MMM yyyy");
616
+ } catch (e) {
617
+ return iso;
618
+ }
619
+ }
620
+
621
+ // src/components/ui/calendar.tsx
606
622
  var import_jsx_runtime8 = require("react/jsx-runtime");
607
623
  function CalendarRoot(_a) {
608
624
  var _b = _a, {
@@ -787,7 +803,7 @@ function CalendarDayButton(_a) {
787
803
  defaultClassNames.day,
788
804
  className
789
805
  ),
790
- "data-day": day.date.toLocaleDateString(),
806
+ "data-day": formatDateShort(day.date.toISOString()),
791
807
  "data-range-end": modifiers.range_end,
792
808
  "data-range-middle": modifiers.range_middle,
793
809
  "data-range-start": modifiers.range_start,
@@ -1,24 +1,25 @@
1
1
  import {
2
2
  AppointmentDetailSheet
3
- } from "../../chunk-LV35NGVG.mjs";
4
- import "../../chunk-462HMNO4.mjs";
5
- import "../../chunk-6AW4KJHE.mjs";
6
- import "../../chunk-JMHR3YGZ.mjs";
7
- import "../../chunk-3OYFOX3X.mjs";
8
- import "../../chunk-BDYZCBRT.mjs";
9
- import "../../chunk-34NWQURD.mjs";
10
- import "../../chunk-OODBHKG7.mjs";
11
- import "../../chunk-24FUO7TD.mjs";
12
- import "../../chunk-BKNFWEH2.mjs";
13
- import "../../chunk-NSLMILBT.mjs";
14
- import "../../chunk-FH6QVUVZ.mjs";
15
- import "../../chunk-6DZEXFNB.mjs";
16
- import "../../chunk-XREGSKX3.mjs";
17
- import "../../chunk-DBHJ5KC3.mjs";
3
+ } from "../../chunk-N6Q5IPKT.mjs";
4
+ import "../../chunk-4MM7LHM5.mjs";
5
+ import "../../chunk-H6NQTIF4.mjs";
6
+ import "../../chunk-SIVYAI3M.mjs";
7
+ import "../../chunk-5VOTTIXF.mjs";
8
+ import "../../chunk-6QAFGZC2.mjs";
9
+ import "../../chunk-BS75ICOO.mjs";
10
+ import "../../chunk-WL6WVV47.mjs";
11
+ import "../../chunk-TLAWKTSA.mjs";
12
+ import "../../chunk-6HIOM2HL.mjs";
13
+ import "../../chunk-M4VYX2PV.mjs";
14
+ import "../../chunk-P7CEBZM6.mjs";
15
+ import "../../chunk-2GIYVERS.mjs";
16
+ import "../../chunk-P2N2PEFY.mjs";
17
+ import "../../chunk-NOOEKOWY.mjs";
18
+ import "../../chunk-R4HCRDU5.mjs";
18
19
  import "../../chunk-FEZKMUCF.mjs";
19
20
  import "../../chunk-QOJ2DQD6.mjs";
20
- import "../../chunk-VLQZANBF.mjs";
21
- import "../../chunk-FWCSY2DS.mjs";
21
+ import "../../chunk-AFML43VJ.mjs";
22
+ import "../../chunk-WNQUEZJF.mjs";
22
23
  export {
23
24
  AppointmentDetailSheet
24
25
  };