@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.
- package/.turbo/turbo-build.log +262 -226
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-2UM72RJ7.mjs → chunk-2D3HQPFN.mjs} +12 -10
- package/dist/chunk-2EM2FRU6.mjs +613 -0
- package/dist/{chunk-FH6QVUVZ.mjs → chunk-2GIYVERS.mjs} +2 -2
- package/dist/chunk-2P7HP7LR.mjs +68 -0
- package/dist/{chunk-HISNT2MG.mjs → chunk-37AE3OM5.mjs} +5 -5
- package/dist/{chunk-HBZLGDIN.mjs → chunk-3ERBUVHC.mjs} +169 -110
- package/dist/{chunk-C7CQJNMR.mjs → chunk-3VDET466.mjs} +2 -2
- package/dist/{chunk-462HMNO4.mjs → chunk-4MM7LHM5.mjs} +2 -2
- package/dist/{chunk-QMY3AZJH.mjs → chunk-4Z66LMIQ.mjs} +2 -2
- package/dist/{chunk-U5X52X37.mjs → chunk-57ZXILTS.mjs} +6 -6
- package/dist/{chunk-3OYFOX3X.mjs → chunk-5VOTTIXF.mjs} +2 -2
- package/dist/{chunk-LBMRIB3G.mjs → chunk-6AJUS7VX.mjs} +1 -1
- package/dist/{chunk-OODBHKG7.mjs → chunk-6HIOM2HL.mjs} +7 -4
- package/dist/{chunk-BDYZCBRT.mjs → chunk-6QAFGZC2.mjs} +2 -2
- package/dist/{chunk-U4NDAF2P.mjs → chunk-6TX73WG7.mjs} +1 -1
- package/dist/{chunk-GD4BJDJR.mjs → chunk-7BTFGCFC.mjs} +4 -4
- package/dist/{chunk-FAKPBKLT.mjs → chunk-7GWRPXHD.mjs} +4 -4
- package/dist/{chunk-NMOI6CQD.mjs → chunk-7YI3HEBH.mjs} +5 -5
- package/dist/{chunk-T4BJLT57.mjs → chunk-AE7MASLF.mjs} +5 -5
- package/dist/{chunk-VLQZANBF.mjs → chunk-AFML43VJ.mjs} +6 -1
- package/dist/chunk-BBXSNDS3.mjs +260 -0
- package/dist/chunk-BOW7U26Y.mjs +203 -0
- package/dist/{chunk-34NWQURD.mjs → chunk-BS75ICOO.mjs} +2 -2
- package/dist/chunk-D2NSIIXG.mjs +394 -0
- package/dist/{chunk-3GF7OVTP.mjs → chunk-DGNHGNYH.mjs} +2 -2
- package/dist/{chunk-VLARHE5V.mjs → chunk-DMXYRCHM.mjs} +6 -6
- package/dist/{chunk-OGOYQ7BG.mjs → chunk-DQB4EPIS.mjs} +1 -1
- package/dist/{chunk-MIZQHHUO.mjs → chunk-FL6DZFJK.mjs} +106 -38
- package/dist/{chunk-I3RZS7V2.mjs → chunk-FLL633WS.mjs} +19 -33
- package/dist/{chunk-PBL4OQV2.mjs → chunk-FTPBQVQ6.mjs} +4 -4
- package/dist/chunk-FYPSTTEJ.mjs +169 -0
- package/dist/{chunk-6O6KD7CE.mjs → chunk-G27TSQLQ.mjs} +6 -6
- package/dist/{chunk-66MI7Q4B.mjs → chunk-GT3RU6GA.mjs} +2 -2
- package/dist/{chunk-D6ID6M4V.mjs → chunk-GTAVSBDO.mjs} +2 -2
- package/dist/{chunk-24FUO7TD.mjs → chunk-H6NQTIF4.mjs} +2 -2
- package/dist/{chunk-7DHU4VGG.mjs → chunk-HK4HUQTV.mjs} +2 -2
- package/dist/chunk-I4KVSZCH.mjs +101 -0
- package/dist/{chunk-RGVKLTLH.mjs → chunk-IKXYTCSB.mjs} +2 -2
- package/dist/{chunk-Y6DWJSKZ.mjs → chunk-ISUA7DSB.mjs} +1 -1
- package/dist/{chunk-2A5RRQGG.mjs → chunk-JD3YWRNP.mjs} +10 -14
- package/dist/{chunk-J5UICVJS.mjs → chunk-JPGL36WQ.mjs} +2 -2
- package/dist/{chunk-7XJHLGUV.mjs → chunk-JTK6VJXY.mjs} +2 -2
- package/dist/{chunk-7YAU5CY6.mjs → chunk-JVMXMFBB.mjs} +2 -2
- package/dist/{chunk-IAE3F7DR.mjs → chunk-JZY6TNIS.mjs} +21 -21
- package/dist/{chunk-K5A5L6T2.mjs → chunk-K4KOD3KR.mjs} +12 -12
- package/dist/{chunk-MBON7YRJ.mjs → chunk-K5QV4TT6.mjs} +3 -3
- package/dist/{chunk-IHMFS7NZ.mjs → chunk-K5VHK7CM.mjs} +21 -21
- package/dist/{chunk-RJI6GKVF.mjs → chunk-KCWNDYPZ.mjs} +5 -5
- package/dist/{chunk-UFYSFDER.mjs → chunk-KFH36NKF.mjs} +1 -1
- package/dist/{chunk-EBXQWIYG.mjs → chunk-KLTACJ2G.mjs} +5 -5
- package/dist/{chunk-3TTACBDP.mjs → chunk-KWD6GANL.mjs} +4 -4
- package/dist/{chunk-IOJRDS6V.mjs → chunk-L4NSRQ3T.mjs} +218 -147
- package/dist/{chunk-GYMYRIZP.mjs → chunk-LBTHZSBT.mjs} +2 -2
- package/dist/{chunk-AMQZRHEZ.mjs → chunk-LQULK2E3.mjs} +5 -5
- package/dist/{chunk-YJG55G2H.mjs → chunk-LR6LHDP3.mjs} +5 -5
- package/dist/{chunk-7PV3IWCN.mjs → chunk-M4VYX2PV.mjs} +19 -1
- package/dist/{chunk-P76HMUI6.mjs → chunk-MDUKXXIL.mjs} +2 -2
- package/dist/{chunk-LV35NGVG.mjs → chunk-N6Q5IPKT.mjs} +9 -9
- package/dist/{chunk-DOEO3CDL.mjs → chunk-NB3ZL36B.mjs} +1 -1
- package/dist/{chunk-XREGSKX3.mjs → chunk-NOOEKOWY.mjs} +5 -5
- package/dist/{chunk-NL3ZO62D.mjs → chunk-NT4FX27K.mjs} +1 -1
- package/dist/{chunk-QZ4RE6NA.mjs → chunk-NTYQWVLI.mjs} +6 -6
- package/dist/{chunk-ERGGHC2V.mjs → chunk-OEOOYMC2.mjs} +2 -2
- package/dist/{chunk-4GAWMKMI.mjs → chunk-OIKBW2QD.mjs} +291 -54
- package/dist/{chunk-DUJTAXMH.mjs → chunk-OKTJFDPN.mjs} +6 -6
- package/dist/chunk-OLKMCXAR.mjs +1219 -0
- package/dist/{chunk-EI5F6FMT.mjs → chunk-OWFQSXVD.mjs} +3 -3
- package/dist/{chunk-6DZEXFNB.mjs → chunk-P2N2PEFY.mjs} +3 -3
- package/dist/{chunk-NSLMILBT.mjs → chunk-P7CEBZM6.mjs} +2 -2
- package/dist/{chunk-7S5AESZO.mjs → chunk-PNRUH7JY.mjs} +6 -6
- package/dist/{chunk-ZU4NV6RG.mjs → chunk-PNSYFE3K.mjs} +2 -2
- package/dist/{chunk-JKGDCQTZ.mjs → chunk-QTRSCVQ3.mjs} +5 -5
- package/dist/{chunk-ABFDMHOR.mjs → chunk-QX7IFQSF.mjs} +5 -5
- package/dist/{chunk-CFMQP5QS.mjs → chunk-QXKGOMUX.mjs} +6 -6
- package/dist/{chunk-NQPOYKAQ.mjs → chunk-R2ON6CAN.mjs} +2 -2
- package/dist/{chunk-DBHJ5KC3.mjs → chunk-R4HCRDU5.mjs} +1 -1
- package/dist/{chunk-EWRB4PAD.mjs → chunk-RCAOCHWA.mjs} +14 -14
- package/dist/{chunk-EFRENWEJ.mjs → chunk-RSUIPKGX.mjs} +2 -2
- package/dist/{chunk-DGHAXJBN.mjs → chunk-S2FKV4M5.mjs} +5 -5
- package/dist/{chunk-RGU7HOEC.mjs → chunk-SET2ANTY.mjs} +5 -7
- package/dist/chunk-SFH2NJEJ.mjs +47 -0
- package/dist/{chunk-6AW4KJHE.mjs → chunk-SIVYAI3M.mjs} +12 -12
- package/dist/{chunk-5FQIKDKP.mjs → chunk-THVO2N47.mjs} +8 -8
- package/dist/{chunk-JMHR3YGZ.mjs → chunk-TLAWKTSA.mjs} +3 -3
- package/dist/{chunk-HVY6KCCF.mjs → chunk-TOWTPLRC.mjs} +68 -72
- package/dist/{chunk-6JQFUE5I.mjs → chunk-UALR6JGV.mjs} +2 -2
- package/dist/{chunk-N6TNTQL6.mjs → chunk-UJZ4UHWI.mjs} +9 -11
- package/dist/{chunk-MARPPFOJ.mjs → chunk-UNACI2YK.mjs} +2 -2
- package/dist/{chunk-3NCUZIFP.mjs → chunk-V6XGXYCJ.mjs} +7 -7
- package/dist/chunk-VB5M6OZQ.mjs +57 -0
- package/dist/{chunk-5IS7G74I.mjs → chunk-VY5NEUP7.mjs} +6 -6
- package/dist/{chunk-JHJHG4GO.mjs → chunk-WE4YKBDE.mjs} +2 -2
- package/dist/{chunk-BKNFWEH2.mjs → chunk-WL6WVV47.mjs} +3 -3
- package/dist/{chunk-FWCSY2DS.mjs → chunk-WNQUEZJF.mjs} +22 -1
- package/dist/{chunk-2Y7YJKPE.mjs → chunk-WZ6UJCBL.mjs} +1 -1
- package/dist/{chunk-UMTOX62O.mjs → chunk-XYPW2XA5.mjs} +13 -10
- package/dist/chunk-Y2MTAVAK.mjs +34 -0
- package/dist/{chunk-6CR5N2JW.mjs → chunk-YCWLFG27.mjs} +6 -6
- package/dist/{chunk-PU4YZQXV.mjs → chunk-YE67AALL.mjs} +12 -12
- package/dist/{chunk-M3FV7LOK.mjs → chunk-YEWNFK5S.mjs} +6 -1
- package/dist/{chunk-R3VSPKNP.mjs → chunk-YIZHS72Z.mjs} +11 -12
- package/dist/{chunk-7PYJD5JI.mjs → chunk-ZEDMKQK2.mjs} +2 -2
- package/dist/{chunk-N2PT566P.mjs → chunk-ZFCDYW6N.mjs} +4 -4
- package/dist/chunk-ZGQIVGIN.mjs +57 -0
- package/dist/{chunk-Q2BGOAMG.mjs → chunk-ZKWXDQDG.mjs} +4 -4
- package/dist/{chunk-GHC7LLUX.mjs → chunk-ZOWL2L5J.mjs} +5 -5
- package/dist/components/ui/accordion.mjs +3 -3
- package/dist/components/ui/add-column-modal.js +2 -2
- package/dist/components/ui/add-column-modal.mjs +10 -10
- package/dist/components/ui/add-lead-modal.js +424 -82
- package/dist/components/ui/add-lead-modal.mjs +12 -9
- package/dist/components/ui/advisor-card.js +2 -2
- package/dist/components/ui/advisor-card.mjs +8 -8
- package/dist/components/ui/ai-assistant-drawer.js +2 -2
- package/dist/components/ui/ai-assistant-drawer.mjs +9 -9
- package/dist/components/ui/ai-builder.js +958 -0
- package/dist/components/ui/ai-builder.mjs +25 -0
- package/dist/components/ui/ai-conversations.js +2045 -0
- package/dist/components/ui/ai-conversations.mjs +41 -0
- package/dist/components/ui/alert-dialog.js +2 -2
- package/dist/components/ui/alert-dialog.mjs +5 -5
- package/dist/components/ui/alert.mjs +3 -3
- package/dist/components/ui/appointment-action-dialogs.js +19 -3
- package/dist/components/ui/appointment-action-dialogs.mjs +15 -14
- package/dist/components/ui/appointment-availability-settings.js +181 -111
- package/dist/components/ui/appointment-availability-settings.mjs +20 -18
- package/dist/components/ui/appointment-book-dialog.js +113 -24
- package/dist/components/ui/appointment-book-dialog.mjs +21 -20
- package/dist/components/ui/appointment-calendar-view.js +19 -3
- package/dist/components/ui/appointment-calendar-view.mjs +10 -9
- package/dist/components/ui/appointment-detail-sheet.js +19 -3
- package/dist/components/ui/appointment-detail-sheet.mjs +18 -17
- package/dist/components/ui/appointment-gmail-connect.js +49 -89
- package/dist/components/ui/appointment-gmail-connect.mjs +8 -9
- package/dist/components/ui/appointment-mini-card.js +2 -2
- package/dist/components/ui/appointment-mini-card.mjs +6 -6
- package/dist/components/ui/appointment-time-slot-picker.mjs +6 -6
- package/dist/components/ui/appointment-upcoming-card.js +19 -3
- package/dist/components/ui/appointment-upcoming-card.mjs +15 -14
- package/dist/components/ui/auth-logo.js +95 -0
- package/dist/components/ui/auth-logo.mjs +8 -0
- package/dist/components/ui/auth-page-layout.js +108 -0
- package/dist/components/ui/auth-page-layout.mjs +8 -0
- package/dist/components/ui/avatar.mjs +3 -3
- package/dist/components/ui/backoffice-alert-history-chart.js +2 -2
- package/dist/components/ui/backoffice-alert-history-chart.mjs +9 -9
- package/dist/components/ui/backoffice-alerts-chart.js +2 -2
- package/dist/components/ui/backoffice-alerts-chart.mjs +11 -11
- package/dist/components/ui/backoffice-connections-chart.js +2 -2
- package/dist/components/ui/backoffice-connections-chart.mjs +11 -11
- package/dist/components/ui/backoffice-contact-history-chart.js +2 -2
- package/dist/components/ui/backoffice-contact-history-chart.mjs +9 -9
- package/dist/components/ui/badge.mjs +4 -4
- package/dist/components/ui/borrowing-capacity-line-chart.js +145 -132
- package/dist/components/ui/borrowing-capacity-line-chart.mjs +9 -9
- package/dist/components/ui/button.js +2 -2
- package/dist/components/ui/button.mjs +4 -4
- package/dist/components/ui/calendar.js +17 -3
- package/dist/components/ui/calendar.mjs +6 -5
- package/dist/components/ui/card.mjs +3 -3
- package/dist/components/ui/cash-balance-line-chart.js +157 -152
- package/dist/components/ui/cash-balance-line-chart.mjs +9 -9
- package/dist/components/ui/cashflow-bar-chart.js +2 -2
- package/dist/components/ui/cashflow-bar-chart.mjs +9 -9
- package/dist/components/ui/chat-widget-primitives.js +573 -0
- package/dist/components/ui/chat-widget-primitives.mjs +21 -0
- package/dist/components/ui/chat-widget.js +1268 -0
- package/dist/components/ui/chat-widget.mjs +29 -0
- package/dist/components/ui/checkbox.mjs +3 -3
- package/dist/components/ui/chip.js +2 -2
- package/dist/components/ui/chip.mjs +6 -6
- package/dist/components/ui/color-picker.js +2 -2
- package/dist/components/ui/color-picker.mjs +7 -7
- package/dist/components/ui/combobox.mjs +3 -3
- package/dist/components/ui/data-table.js +2 -2
- package/dist/components/ui/data-table.mjs +12 -12
- package/dist/components/ui/date-picker.js +22 -6
- package/dist/components/ui/date-picker.mjs +9 -8
- package/dist/components/ui/dialog.js +2 -2
- package/dist/components/ui/dialog.mjs +5 -5
- package/dist/components/ui/document-checklist-template.js +630 -0
- package/dist/components/ui/document-checklist-template.mjs +15 -0
- package/dist/components/ui/drawer.js +2 -2
- package/dist/components/ui/drawer.mjs +3 -3
- package/dist/components/ui/dropdown-menu.mjs +3 -3
- package/dist/components/ui/empty.mjs +3 -3
- package/dist/components/ui/expense-bar-chart.js +2 -2
- package/dist/components/ui/expense-bar-chart.mjs +9 -9
- package/dist/components/ui/field.mjs +5 -5
- package/dist/components/ui/financial-cards.js +431 -291
- package/dist/components/ui/financial-cards.mjs +10 -9
- package/dist/components/ui/financial-drawers.js +4 -4
- package/dist/components/ui/financial-drawers.mjs +8 -8
- package/dist/components/ui/financial-primitives.mjs +3 -3
- package/dist/components/ui/financial-sections.js +8 -9
- package/dist/components/ui/financial-sections.mjs +12 -12
- package/dist/components/ui/form-primitives.mjs +8 -8
- package/dist/components/ui/income-bar-chart.js +2 -2
- package/dist/components/ui/income-bar-chart.mjs +9 -9
- package/dist/components/ui/input-group.js +2 -2
- package/dist/components/ui/input-group.mjs +7 -7
- package/dist/components/ui/input-otp.mjs +3 -3
- package/dist/components/ui/input.mjs +3 -3
- package/dist/components/ui/kanban-column.js +19 -23
- package/dist/components/ui/kanban-column.mjs +14 -14
- package/dist/components/ui/label.mjs +3 -3
- package/dist/components/ui/onboarding-layout.js +476 -0
- package/dist/components/ui/onboarding-layout.mjs +11 -0
- package/dist/components/ui/opportunity-card.js +2 -2
- package/dist/components/ui/opportunity-card.mjs +12 -12
- package/dist/components/ui/opportunity-edit-modals.js +22 -6
- package/dist/components/ui/opportunity-edit-modals.mjs +21 -20
- package/dist/components/ui/opportunity-summary-tab.js +991 -674
- package/dist/components/ui/opportunity-summary-tab.mjs +26 -26
- package/dist/components/ui/page-header.mjs +3 -3
- package/dist/components/ui/page-top-bar.mjs +3 -3
- package/dist/components/ui/pagination.js +2 -2
- package/dist/components/ui/pagination.mjs +6 -6
- package/dist/components/ui/password-strength-tooltip.js +197 -0
- package/dist/components/ui/password-strength-tooltip.mjs +11 -0
- package/dist/components/ui/pipeline-alerts.mjs +3 -3
- package/dist/components/ui/pipeline-board.js +19 -23
- package/dist/components/ui/pipeline-board.mjs +18 -18
- package/dist/components/ui/pipeline-chart.js +12 -6
- package/dist/components/ui/pipeline-chart.mjs +4 -3
- package/dist/components/ui/pipeline-dialogs.js +28 -12
- package/dist/components/ui/pipeline-dialogs.mjs +14 -13
- package/dist/components/ui/pipeline-primitives.mjs +6 -6
- package/dist/components/ui/popover.mjs +3 -3
- package/dist/components/ui/progress.mjs +3 -3
- package/dist/components/ui/property-cashflow-doughnut-chart.js +2 -2
- package/dist/components/ui/property-cashflow-doughnut-chart.mjs +9 -9
- package/dist/components/ui/property-debt-equity-doughnut-chart.js +2 -2
- package/dist/components/ui/property-debt-equity-doughnut-chart.mjs +9 -9
- package/dist/components/ui/property-mobile-estimate-line-chart.js +2 -2
- package/dist/components/ui/property-mobile-estimate-line-chart.mjs +9 -9
- package/dist/components/ui/radio-group.mjs +3 -3
- package/dist/components/ui/select.mjs +3 -3
- package/dist/components/ui/separator.mjs +3 -3
- package/dist/components/ui/sheet.mjs +3 -3
- package/dist/components/ui/sidebar-nav.js +6 -5
- package/dist/components/ui/sidebar-nav.mjs +7 -7
- package/dist/components/ui/skeleton.mjs +3 -3
- package/dist/components/ui/slider.mjs +3 -3
- package/dist/components/ui/sonner.mjs +2 -2
- package/dist/components/ui/spinner.mjs +3 -3
- package/dist/components/ui/stage-timeline.mjs +10 -10
- package/dist/components/ui/stepper.mjs +3 -3
- package/dist/components/ui/switch.mjs +3 -3
- package/dist/components/ui/table.mjs +3 -3
- package/dist/components/ui/tabs.mjs +3 -3
- package/dist/components/ui/textarea.mjs +3 -3
- package/dist/components/ui/toggle-group.mjs +4 -4
- package/dist/components/ui/toggle.mjs +3 -3
- package/dist/components/ui/tooltip.mjs +3 -3
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.js +2 -2
- package/dist/components/ui/transactions-expense-categories-doughnut-chart.mjs +9 -9
- package/dist/components/ui/transactions-income-expense-bar-chart.js +2 -2
- package/dist/components/ui/transactions-income-expense-bar-chart.mjs +9 -9
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.js +2 -2
- package/dist/components/ui/transactions-liabilities-breakdown-doughnut-chart.mjs +9 -9
- package/dist/components/ui/two-fa-setup-form.js +612 -0
- package/dist/components/ui/two-fa-setup-form.mjs +16 -0
- package/dist/components/ui/upload-card.js +187 -0
- package/dist/components/ui/upload-card.mjs +10 -0
- package/dist/components/ui/video-background.js +118 -0
- package/dist/components/ui/video-background.mjs +8 -0
- package/dist/index.js +12764 -9396
- package/dist/index.mjs +341 -245
- package/dist/lib/colors.mjs +1 -1
- package/dist/lib/theme-provider.mjs +1 -1
- package/dist/lib/typography.mjs +2 -2
- package/dist/lib/utils.js +8 -2
- package/dist/lib/utils.mjs +6 -4
- package/dist/styles.css +1 -1
- package/package.json +61 -1
- package/src/components/index.tsx +126 -1
- package/src/components/ui/add-lead-modal.tsx +101 -142
- package/src/components/ui/ai-builder.tsx +560 -0
- package/src/components/ui/ai-conversations.tsx +1690 -0
- package/src/components/ui/appointment-availability-settings.tsx +152 -101
- package/src/components/ui/appointment-book-dialog.tsx +138 -24
- package/src/components/ui/appointment-calendar-view.tsx +2 -3
- package/src/components/ui/appointment-gmail-connect.tsx +23 -42
- package/src/components/ui/auth-logo.tsx +50 -0
- package/src/components/ui/auth-page-layout.tsx +59 -0
- package/src/components/ui/borrowing-capacity-line-chart.tsx +10 -8
- package/src/components/ui/button.tsx +2 -2
- package/src/components/ui/calendar.tsx +2 -1
- package/src/components/ui/cash-balance-line-chart.tsx +10 -14
- package/src/components/ui/chart-shared.tsx +10 -0
- package/src/components/ui/chat-widget-primitives.tsx +336 -0
- package/src/components/ui/chat-widget.tsx +822 -0
- package/src/components/ui/document-checklist-template.tsx +264 -0
- package/src/components/ui/drawer.tsx +2 -2
- package/src/components/ui/financial-cards.tsx +176 -78
- package/src/components/ui/financial-drawers.tsx +2 -2
- package/src/components/ui/financial-sections.tsx +1 -1
- package/src/components/ui/kanban-column.tsx +2 -5
- package/src/components/ui/onboarding-layout.tsx +109 -0
- package/src/components/ui/opportunity-summary-tab.tsx +469 -142
- package/src/components/ui/password-strength-tooltip.tsx +70 -0
- package/src/components/ui/pipeline-chart.tsx +2 -6
- package/src/components/ui/sidebar-nav.tsx +1 -11
- package/src/components/ui/two-fa-setup-form.tsx +229 -0
- package/src/components/ui/upload-card.tsx +98 -0
- package/src/components/ui/video-background.tsx +55 -0
- package/src/lib/format-date.ts +26 -0
- package/src/lib/utils.ts +11 -0
- package/src/styles/styles-css.ts +1 -1
- 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.
|
|
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:
|
|
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
|
-
|
|
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
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
14
|
-
import "../../chunk-
|
|
15
|
-
import "../../chunk-
|
|
16
|
-
import "../../chunk-
|
|
17
|
-
import "../../chunk-
|
|
18
|
-
import "../../chunk-
|
|
19
|
-
import "../../chunk-
|
|
20
|
-
import "../../chunk-
|
|
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-
|
|
24
|
-
import "../../chunk-
|
|
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
|
|
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-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
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.
|
|
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-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
14
|
-
import "../../chunk-
|
|
15
|
-
import "../../chunk-
|
|
16
|
-
import "../../chunk-
|
|
17
|
-
import "../../chunk-
|
|
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-
|
|
21
|
-
import "../../chunk-
|
|
21
|
+
import "../../chunk-AFML43VJ.mjs";
|
|
22
|
+
import "../../chunk-WNQUEZJF.mjs";
|
|
22
23
|
export {
|
|
23
24
|
AppointmentDetailSheet
|
|
24
25
|
};
|