@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
@@ -0,0 +1,68 @@
1
+ import {
2
+ Step,
3
+ StepItem,
4
+ Stepper
5
+ } from "./chunk-6TX73WG7.mjs";
6
+ import {
7
+ Button
8
+ } from "./chunk-NOOEKOWY.mjs";
9
+ import {
10
+ cn
11
+ } from "./chunk-AFML43VJ.mjs";
12
+
13
+ // src/components/ui/onboarding-layout.tsx
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ function OnboardingLayout({
16
+ steps,
17
+ currentStepIndex,
18
+ nextLabel,
19
+ canProceed = true,
20
+ onBack,
21
+ onNext,
22
+ onSkip,
23
+ onUpgrade,
24
+ className,
25
+ children
26
+ }) {
27
+ var _a;
28
+ const isFirstStep = currentStepIndex === 0;
29
+ const isLastStep = currentStepIndex === steps.length - 1;
30
+ const currentStep = steps[currentStepIndex];
31
+ const isLocked = (_a = currentStep == null ? void 0 : currentStep.isLocked) != null ? _a : false;
32
+ const primaryLabel = isLocked ? "Upgrade Plan" : isLastStep ? "Finish Setup" : nextLabel != null ? nextLabel : "Next";
33
+ return /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ className: cn("flex h-full flex-col bg-background font-sans", className),
37
+ children: [
38
+ /* @__PURE__ */ jsx("div", { className: "px-8 pt-5 pb-3", children: /* @__PURE__ */ jsx(Stepper, { activeStep: currentStepIndex, children: steps.map((step) => /* @__PURE__ */ jsx(Step, { children: /* @__PURE__ */ jsx(
39
+ StepItem,
40
+ {
41
+ label: step.title,
42
+ description: step.isLocked ? "Upgrade to unlock" : step.isOptional ? "Optional" : void 0
43
+ }
44
+ ) }, step.id)) }) }),
45
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-8 pt-4 pb-6", children }),
46
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-t border-border px-8 py-4", children: [
47
+ /* @__PURE__ */ jsx("div", { children: onSkip && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: onSkip, children: "Skip for now" }) }),
48
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
49
+ !isFirstStep && /* @__PURE__ */ jsx(Button, { variant: "outline-secondary", size: "sm", onClick: onBack, children: "Back" }),
50
+ /* @__PURE__ */ jsx(
51
+ Button,
52
+ {
53
+ size: "sm",
54
+ onClick: isLocked ? onUpgrade : onNext,
55
+ disabled: !isLocked && !canProceed,
56
+ children: primaryLabel
57
+ }
58
+ )
59
+ ] })
60
+ ] })
61
+ ]
62
+ }
63
+ );
64
+ }
65
+
66
+ export {
67
+ OnboardingLayout
68
+ };
@@ -1,31 +1,31 @@
1
1
  import {
2
2
  Skeleton
3
- } from "./chunk-D6ID6M4V.mjs";
3
+ } from "./chunk-GTAVSBDO.mjs";
4
4
  import {
5
5
  DATASET_ALPHAS,
6
6
  DoughnutLegendRow,
7
7
  FALLBACK_PRIMARY,
8
8
  hexToRgba
9
- } from "./chunk-M3FV7LOK.mjs";
9
+ } from "./chunk-YEWNFK5S.mjs";
10
10
  import {
11
11
  formatCurrencyAbbrev
12
12
  } from "./chunk-MN5NYQCL.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
  CardContent,
20
20
  CardHeader,
21
21
  CardTitle
22
- } from "./chunk-C7CQJNMR.mjs";
22
+ } from "./chunk-3VDET466.mjs";
23
23
  import {
24
24
  useThemeVars
25
25
  } from "./chunk-FEZKMUCF.mjs";
26
26
  import {
27
27
  cn
28
- } from "./chunk-VLQZANBF.mjs";
28
+ } from "./chunk-AFML43VJ.mjs";
29
29
 
30
30
  // src/components/ui/transactions-liabilities-breakdown-doughnut-chart.tsx
31
31
  import { useMemo } from "react";
@@ -1,34 +1,34 @@
1
- import {
2
- Switch
3
- } from "./chunk-ZU4NV6RG.mjs";
4
- import {
5
- formatDateWithWeekday
6
- } from "./chunk-7PV3IWCN.mjs";
7
1
  import {
8
2
  DatePicker
9
- } from "./chunk-DUJTAXMH.mjs";
3
+ } from "./chunk-OKTJFDPN.mjs";
4
+ import {
5
+ Switch
6
+ } from "./chunk-PNSYFE3K.mjs";
10
7
  import {
11
8
  Tabs,
12
9
  TabsContent,
13
10
  TabsList,
14
11
  TabsTrigger
15
- } from "./chunk-JHJHG4GO.mjs";
12
+ } from "./chunk-WE4YKBDE.mjs";
13
+ import {
14
+ formatDateWithWeekday
15
+ } from "./chunk-M4VYX2PV.mjs";
16
+ import {
17
+ Label
18
+ } from "./chunk-P7CEBZM6.mjs";
19
+ import {
20
+ Separator
21
+ } from "./chunk-2GIYVERS.mjs";
16
22
  import {
17
23
  Select,
18
24
  SelectContent,
19
25
  SelectItem,
20
26
  SelectTrigger,
21
27
  SelectValue
22
- } from "./chunk-7PYJD5JI.mjs";
23
- import {
24
- Label
25
- } from "./chunk-NSLMILBT.mjs";
26
- import {
27
- Separator
28
- } from "./chunk-FH6QVUVZ.mjs";
28
+ } from "./chunk-ZEDMKQK2.mjs";
29
29
  import {
30
30
  Input
31
- } from "./chunk-GYMYRIZP.mjs";
31
+ } from "./chunk-LBTHZSBT.mjs";
32
32
  import {
33
33
  Dialog,
34
34
  DialogContent,
@@ -36,17 +36,17 @@ import {
36
36
  DialogFooter,
37
37
  DialogHeader,
38
38
  DialogTitle
39
- } from "./chunk-6DZEXFNB.mjs";
39
+ } from "./chunk-P2N2PEFY.mjs";
40
40
  import {
41
41
  Button
42
- } from "./chunk-XREGSKX3.mjs";
42
+ } from "./chunk-NOOEKOWY.mjs";
43
43
  import {
44
44
  cn
45
- } from "./chunk-VLQZANBF.mjs";
45
+ } from "./chunk-AFML43VJ.mjs";
46
46
  import {
47
47
  __spreadProps,
48
48
  __spreadValues
49
- } from "./chunk-FWCSY2DS.mjs";
49
+ } from "./chunk-WNQUEZJF.mjs";
50
50
 
51
51
  // src/components/ui/appointment-availability-settings.tsx
52
52
  import React from "react";
@@ -63,6 +63,17 @@ var AU_PUBLIC_HOLIDAYS_2026 = [
63
63
  { date: "2026-12-25", label: "Christmas Day" },
64
64
  { date: "2026-12-26", label: "Boxing Day" }
65
65
  ];
66
+ var TIMEZONE_OPTIONS = [
67
+ { value: "Australia/Sydney", label: "Sydney / Melbourne (AEDT)" },
68
+ { value: "Australia/Brisbane", label: "Brisbane (AEST, no DST)" },
69
+ { value: "Australia/Adelaide", label: "Adelaide (ACDT)" },
70
+ { value: "Australia/Perth", label: "Perth (AWST)" },
71
+ { value: "Australia/Darwin", label: "Darwin (ACST, no DST)" },
72
+ { value: "Australia/Hobart", label: "Hobart (AEDT)" },
73
+ { value: "Asia/Ho_Chi_Minh", label: "Ho Chi Minh City (ICT)" },
74
+ { value: "Asia/Singapore", label: "Singapore (SGT)" },
75
+ { value: "UTC", label: "UTC" }
76
+ ];
66
77
  var TIME_OPTIONS = (() => {
67
78
  const opts = [];
68
79
  for (let h = 6; h <= 21; h++) {
@@ -98,6 +109,19 @@ function TimeSelect({
98
109
  }
99
110
  );
100
111
  }
112
+ function PrefRow({
113
+ label,
114
+ description,
115
+ children
116
+ }) {
117
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-h-[68px] items-center justify-between px-6 py-4", children: [
118
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
119
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: label }),
120
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: description })
121
+ ] }),
122
+ children
123
+ ] });
124
+ }
101
125
  function AddTimeOffDialog({
102
126
  open,
103
127
  onOpenChange,
@@ -203,22 +227,31 @@ function AddTimeOffDialog({
203
227
  }
204
228
  function AppointmentAvailabilitySettings({
205
229
  schedule: initialSchedule,
230
+ prefs: prefsProp,
206
231
  blockedDates: blockedDatesProp,
232
+ publicHolidays: publicHolidaysProp,
207
233
  onSave,
208
234
  onBlockedDatesChange
209
235
  }) {
210
- const hasMounted = React.useRef(false);
211
- React.useEffect(() => {
212
- hasMounted.current = true;
213
- }, []);
236
+ var _a, _b, _c, _d;
214
237
  const [schedule, setSchedule] = React.useState(initialSchedule);
215
- const [meetingDuration, setMeetingDuration] = React.useState("30");
216
- const [schedulingBuffer, setSchedulingBuffer] = React.useState("0");
217
- const [maxSlotsPerDay, setMaxSlotsPerDay] = React.useState("8");
238
+ const [meetingDuration, setMeetingDuration] = React.useState(
239
+ (_a = prefsProp == null ? void 0 : prefsProp.meetingDuration) != null ? _a : "30"
240
+ );
241
+ const [schedulingBuffer, setSchedulingBuffer] = React.useState(
242
+ (_b = prefsProp == null ? void 0 : prefsProp.schedulingBuffer) != null ? _b : "0"
243
+ );
244
+ const [maxSlotsPerDay, setMaxSlotsPerDay] = React.useState(
245
+ (_c = prefsProp == null ? void 0 : prefsProp.maxSlotsPerDay) != null ? _c : "8"
246
+ );
247
+ const [timezone, setTimezone] = React.useState(
248
+ (_d = prefsProp == null ? void 0 : prefsProp.timezone) != null ? _d : "Australia/Sydney"
249
+ );
218
250
  const [timeOffEntries, setTimeOffEntries] = React.useState(
219
251
  () => {
220
- const holidayDates = new Set(AU_PUBLIC_HOLIDAYS_2026.map((h) => h.date));
221
- const entries = AU_PUBLIC_HOLIDAYS_2026.map((h) => __spreadProps(__spreadValues({}, h), {
252
+ const holidays = publicHolidaysProp != null ? publicHolidaysProp : AU_PUBLIC_HOLIDAYS_2026;
253
+ const holidayDates = new Set(holidays.map((h) => h.date));
254
+ const entries = holidays.map((h) => __spreadProps(__spreadValues({}, h), {
222
255
  enabled: true,
223
256
  isHoliday: true
224
257
  }));
@@ -237,19 +270,23 @@ function AppointmentAvailabilitySettings({
237
270
  );
238
271
  const [addMoreOpen, setAddMoreOpen] = React.useState(false);
239
272
  const currentPrefs = React.useMemo(
240
- () => ({ meetingDuration, schedulingBuffer, maxSlotsPerDay }),
241
- [meetingDuration, schedulingBuffer, maxSlotsPerDay]
273
+ () => ({ meetingDuration, schedulingBuffer, maxSlotsPerDay, timezone }),
274
+ [meetingDuration, schedulingBuffer, maxSlotsPerDay, timezone]
242
275
  );
276
+ const saveGuard = React.useRef(false);
277
+ const timeOffGuard = React.useRef(false);
243
278
  React.useEffect(() => {
244
- if (!hasMounted.current) return;
245
- onSave == null ? void 0 : onSave(schedule, currentPrefs);
246
- }, [schedule]);
247
- React.useEffect(() => {
248
- if (!hasMounted.current) return;
279
+ if (!saveGuard.current) {
280
+ saveGuard.current = true;
281
+ return;
282
+ }
249
283
  onSave == null ? void 0 : onSave(schedule, currentPrefs);
250
- }, [meetingDuration, schedulingBuffer, maxSlotsPerDay]);
284
+ }, [schedule, currentPrefs]);
251
285
  React.useEffect(() => {
252
- if (!hasMounted.current) return;
286
+ if (!timeOffGuard.current) {
287
+ timeOffGuard.current = true;
288
+ return;
289
+ }
253
290
  const blocked = timeOffEntries.filter((e) => e.enabled).map(({ date, label, timeStart, timeEnd }) => ({
254
291
  date,
255
292
  label,
@@ -344,76 +381,97 @@ function AppointmentAvailabilitySettings({
344
381
  day.day
345
382
  )) }) }),
346
383
  /* @__PURE__ */ jsx(TabsContent, { value: "booking", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col divide-y divide-border", children: [
347
- /* @__PURE__ */ jsxs("div", { className: "flex min-h-[68px] items-center justify-between px-6 py-4", children: [
348
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
349
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: "Meeting Duration" }),
350
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Length of each appointment slot" })
351
- ] }),
352
- /* @__PURE__ */ jsxs(
353
- Select,
354
- {
355
- value: meetingDuration,
356
- onValueChange: (v) => setMeetingDuration(v),
357
- children: [
358
- /* @__PURE__ */ jsx(SelectTrigger, { className: "w-40", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
359
- /* @__PURE__ */ jsxs(SelectContent, { children: [
360
- /* @__PURE__ */ jsx(SelectItem, { value: "15", children: "15 minutes" }),
361
- /* @__PURE__ */ jsx(SelectItem, { value: "30", children: "30 minutes" }),
362
- /* @__PURE__ */ jsx(SelectItem, { value: "45", children: "45 minutes" }),
363
- /* @__PURE__ */ jsx(SelectItem, { value: "60", children: "60 minutes" }),
364
- /* @__PURE__ */ jsx(SelectItem, { value: "90", children: "90 minutes" })
365
- ] })
366
- ]
367
- }
368
- )
369
- ] }),
370
- /* @__PURE__ */ jsxs("div", { className: "flex min-h-[68px] items-center justify-between px-6 py-4", children: [
371
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
372
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: "Scheduling Buffer" }),
373
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Gap between consecutive bookings" })
374
- ] }),
375
- /* @__PURE__ */ jsxs(
376
- Select,
377
- {
378
- value: schedulingBuffer,
379
- onValueChange: (v) => setSchedulingBuffer(v),
380
- children: [
381
- /* @__PURE__ */ jsx(SelectTrigger, { className: "w-40", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
382
- /* @__PURE__ */ jsxs(SelectContent, { children: [
383
- /* @__PURE__ */ jsx(SelectItem, { value: "0", children: "No buffer" }),
384
- /* @__PURE__ */ jsx(SelectItem, { value: "5", children: "5 minutes" }),
385
- /* @__PURE__ */ jsx(SelectItem, { value: "10", children: "10 minutes" }),
386
- /* @__PURE__ */ jsx(SelectItem, { value: "15", children: "15 minutes" }),
387
- /* @__PURE__ */ jsx(SelectItem, { value: "30", children: "30 minutes" })
388
- ] })
389
- ]
390
- }
391
- )
392
- ] }),
393
- /* @__PURE__ */ jsxs("div", { className: "flex min-h-[68px] items-center justify-between px-6 py-4", children: [
394
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
395
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: "Daily Slot Limit" }),
396
- /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "Maximum bookings accepted per day" })
397
- ] }),
398
- /* @__PURE__ */ jsxs(
399
- Select,
400
- {
401
- value: maxSlotsPerDay,
402
- onValueChange: (v) => setMaxSlotsPerDay(v),
403
- children: [
404
- /* @__PURE__ */ jsx(SelectTrigger, { className: "w-40", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
405
- /* @__PURE__ */ jsxs(SelectContent, { children: [
406
- /* @__PURE__ */ jsx(SelectItem, { value: "2", children: "2 per day" }),
407
- /* @__PURE__ */ jsx(SelectItem, { value: "4", children: "4 per day" }),
408
- /* @__PURE__ */ jsx(SelectItem, { value: "6", children: "6 per day" }),
409
- /* @__PURE__ */ jsx(SelectItem, { value: "8", children: "8 per day" }),
410
- /* @__PURE__ */ jsx(SelectItem, { value: "10", children: "10 per day" }),
411
- /* @__PURE__ */ jsx(SelectItem, { value: "unlimited", children: "Unlimited" })
412
- ] })
413
- ]
414
- }
415
- )
416
- ] })
384
+ /* @__PURE__ */ jsx(
385
+ PrefRow,
386
+ {
387
+ label: "Meeting Duration",
388
+ description: "Length of each appointment slot",
389
+ children: /* @__PURE__ */ jsxs(
390
+ Select,
391
+ {
392
+ value: meetingDuration,
393
+ onValueChange: (v) => setMeetingDuration(v),
394
+ children: [
395
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "w-40", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
396
+ /* @__PURE__ */ jsxs(SelectContent, { children: [
397
+ /* @__PURE__ */ jsx(SelectItem, { value: "15", children: "15 minutes" }),
398
+ /* @__PURE__ */ jsx(SelectItem, { value: "30", children: "30 minutes" }),
399
+ /* @__PURE__ */ jsx(SelectItem, { value: "45", children: "45 minutes" }),
400
+ /* @__PURE__ */ jsx(SelectItem, { value: "60", children: "60 minutes" }),
401
+ /* @__PURE__ */ jsx(SelectItem, { value: "90", children: "90 minutes" })
402
+ ] })
403
+ ]
404
+ }
405
+ )
406
+ }
407
+ ),
408
+ /* @__PURE__ */ jsx(
409
+ PrefRow,
410
+ {
411
+ label: "Scheduling Buffer",
412
+ description: "Gap between consecutive bookings",
413
+ children: /* @__PURE__ */ jsxs(
414
+ Select,
415
+ {
416
+ value: schedulingBuffer,
417
+ onValueChange: (v) => setSchedulingBuffer(v),
418
+ children: [
419
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "w-40", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
420
+ /* @__PURE__ */ jsxs(SelectContent, { children: [
421
+ /* @__PURE__ */ jsx(SelectItem, { value: "0", children: "No buffer" }),
422
+ /* @__PURE__ */ jsx(SelectItem, { value: "5", children: "5 minutes" }),
423
+ /* @__PURE__ */ jsx(SelectItem, { value: "10", children: "10 minutes" }),
424
+ /* @__PURE__ */ jsx(SelectItem, { value: "15", children: "15 minutes" }),
425
+ /* @__PURE__ */ jsx(SelectItem, { value: "30", children: "30 minutes" })
426
+ ] })
427
+ ]
428
+ }
429
+ )
430
+ }
431
+ ),
432
+ /* @__PURE__ */ jsx(
433
+ PrefRow,
434
+ {
435
+ label: "Daily Slot Limit",
436
+ description: "Maximum bookings accepted per day",
437
+ children: /* @__PURE__ */ jsxs(
438
+ Select,
439
+ {
440
+ value: maxSlotsPerDay,
441
+ onValueChange: (v) => setMaxSlotsPerDay(v),
442
+ children: [
443
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "w-40", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
444
+ /* @__PURE__ */ jsxs(SelectContent, { children: [
445
+ /* @__PURE__ */ jsx(SelectItem, { value: "2", children: "2 per day" }),
446
+ /* @__PURE__ */ jsx(SelectItem, { value: "4", children: "4 per day" }),
447
+ /* @__PURE__ */ jsx(SelectItem, { value: "6", children: "6 per day" }),
448
+ /* @__PURE__ */ jsx(SelectItem, { value: "8", children: "8 per day" }),
449
+ /* @__PURE__ */ jsx(SelectItem, { value: "10", children: "10 per day" }),
450
+ /* @__PURE__ */ jsx(SelectItem, { value: "unlimited", children: "Unlimited" })
451
+ ] })
452
+ ]
453
+ }
454
+ )
455
+ }
456
+ ),
457
+ /* @__PURE__ */ jsx(
458
+ PrefRow,
459
+ {
460
+ label: "Meeting Timezone",
461
+ description: "Timezone used for booking display and notifications",
462
+ children: /* @__PURE__ */ jsxs(
463
+ Select,
464
+ {
465
+ value: timezone,
466
+ onValueChange: (v) => setTimezone(v),
467
+ children: [
468
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "w-56", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
469
+ /* @__PURE__ */ jsx(SelectContent, { children: TIMEZONE_OPTIONS.map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
470
+ ]
471
+ }
472
+ )
473
+ }
474
+ )
417
475
  ] }) }),
418
476
  /* @__PURE__ */ jsxs(TabsContent, { value: "time-off", children: [
419
477
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-4", children: [
@@ -434,7 +492,7 @@ function AppointmentAvailabilitySettings({
434
492
  ] }),
435
493
  /* @__PURE__ */ jsx(Separator, {}),
436
494
  /* @__PURE__ */ jsx("div", { className: "flex flex-col divide-y divide-border", children: timeOffEntries.map((entry) => {
437
- var _a;
495
+ var _a2;
438
496
  const formattedDate = formatDateWithWeekday(entry.date);
439
497
  const hasTimeRange = entry.timeStart && entry.timeEnd;
440
498
  return /* @__PURE__ */ jsxs(
@@ -459,7 +517,7 @@ function AppointmentAvailabilitySettings({
459
517
  "cursor-pointer text-sm font-medium",
460
518
  !entry.enabled && "text-muted-foreground"
461
519
  ),
462
- children: (_a = entry.label) != null ? _a : formattedDate
520
+ children: (_a2 = entry.label) != null ? _a2 : formattedDate
463
521
  }
464
522
  ),
465
523
  /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
@@ -503,5 +561,6 @@ function AppointmentAvailabilitySettings({
503
561
  }
504
562
 
505
563
  export {
564
+ TIMEZONE_OPTIONS,
506
565
  AppointmentAvailabilitySettings
507
566
  };
@@ -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/card.tsx
10
10
  import { jsx } from "react/jsx-runtime";
@@ -3,12 +3,12 @@ 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
  __spreadProps,
10
10
  __spreadValues
11
- } from "./chunk-FWCSY2DS.mjs";
11
+ } from "./chunk-WNQUEZJF.mjs";
12
12
 
13
13
  // src/components/ui/sheet.tsx
14
14
  import { XIcon } from "lucide-react";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  Avatar,
3
3
  AvatarFallback
4
- } from "./chunk-24FUO7TD.mjs";
4
+ } from "./chunk-H6NQTIF4.mjs";
5
5
  import {
6
6
  Button
7
- } from "./chunk-XREGSKX3.mjs";
7
+ } from "./chunk-NOOEKOWY.mjs";
8
8
 
9
9
  // src/components/ui/appointment-mini-card.tsx
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  Slider
3
- } from "./chunk-Y6DWJSKZ.mjs";
3
+ } from "./chunk-ISUA7DSB.mjs";
4
4
  import {
5
5
  ToggleGroup,
6
6
  ToggleGroupItem
7
- } from "./chunk-EI5F6FMT.mjs";
7
+ } from "./chunk-OWFQSXVD.mjs";
8
8
  import {
9
9
  Label
10
- } from "./chunk-NSLMILBT.mjs";
10
+ } from "./chunk-P7CEBZM6.mjs";
11
11
  import {
12
12
  Input
13
- } from "./chunk-GYMYRIZP.mjs";
13
+ } from "./chunk-LBTHZSBT.mjs";
14
14
  import {
15
15
  cn
16
- } from "./chunk-VLQZANBF.mjs";
16
+ } from "./chunk-AFML43VJ.mjs";
17
17
  import {
18
18
  __spreadProps,
19
19
  __spreadValues
20
- } from "./chunk-FWCSY2DS.mjs";
20
+ } from "./chunk-WNQUEZJF.mjs";
21
21
 
22
22
  // src/components/ui/form-primitives.tsx
23
23
  import * as React from "react";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Toggle
3
- } from "./chunk-BDYZCBRT.mjs";
3
+ } from "./chunk-6QAFGZC2.mjs";
4
4
  import {
5
5
  Badge
6
- } from "./chunk-BKNFWEH2.mjs";
6
+ } from "./chunk-WL6WVV47.mjs";
7
7
 
8
8
  // src/components/ui/appointment-time-slot-picker.tsx
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  __spreadValues
3
- } from "./chunk-FWCSY2DS.mjs";
3
+ } from "./chunk-WNQUEZJF.mjs";
4
4
 
5
5
  // src/lib/typography.ts
6
6
  var FONT_FAMILY_SANS = '"Figtree", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"';
@@ -1,15 +1,18 @@
1
+ import {
2
+ formatDateShort
3
+ } from "./chunk-M4VYX2PV.mjs";
1
4
  import {
2
5
  Button,
3
6
  buttonVariants
4
- } from "./chunk-XREGSKX3.mjs";
7
+ } from "./chunk-NOOEKOWY.mjs";
5
8
  import {
6
9
  cn
7
- } from "./chunk-VLQZANBF.mjs";
10
+ } from "./chunk-AFML43VJ.mjs";
8
11
  import {
9
12
  __objRest,
10
13
  __spreadProps,
11
14
  __spreadValues
12
- } from "./chunk-FWCSY2DS.mjs";
15
+ } from "./chunk-WNQUEZJF.mjs";
13
16
 
14
17
  // src/components/ui/calendar.tsx
15
18
  import * as React from "react";
@@ -206,7 +209,7 @@ function CalendarDayButton(_a) {
206
209
  defaultClassNames.day,
207
210
  className
208
211
  ),
209
- "data-day": day.date.toLocaleDateString(),
212
+ "data-day": formatDateShort(day.date.toISOString()),
210
213
  "data-range-end": modifiers.range_end,
211
214
  "data-range-middle": modifiers.range_middle,
212
215
  "data-range-start": modifiers.range_start,
@@ -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/toggle.tsx
10
10
  import { cva } from "class-variance-authority";
@@ -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/stepper.tsx
6
6
  import * as React from "react";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  Label
3
- } from "./chunk-NSLMILBT.mjs";
3
+ } from "./chunk-P7CEBZM6.mjs";
4
4
  import {
5
5
  Separator
6
- } from "./chunk-FH6QVUVZ.mjs";
6
+ } from "./chunk-2GIYVERS.mjs";
7
7
  import {
8
8
  cn
9
- } from "./chunk-VLQZANBF.mjs";
9
+ } from "./chunk-AFML43VJ.mjs";
10
10
  import {
11
11
  __objRest,
12
12
  __spreadProps,
13
13
  __spreadValues
14
- } from "./chunk-FWCSY2DS.mjs";
14
+ } from "./chunk-WNQUEZJF.mjs";
15
15
 
16
16
  // src/components/ui/field.tsx
17
17
  import { useMemo } from "react";