@wealthx/shadcn 1.5.32 → 1.5.34
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 +114 -114
- package/CHANGELOG.md +12 -0
- package/dist/{chunk-SYJ6LVJ6.mjs → chunk-3ZU5BH6X.mjs} +1 -1
- package/dist/{chunk-FTQ2AKZ2.mjs → chunk-4QTHK7ML.mjs} +1 -1
- package/dist/{chunk-T5HU4S4X.mjs → chunk-C7ZTZTEW.mjs} +1 -1
- package/dist/{chunk-KI57CBJR.mjs → chunk-DQNNP6I4.mjs} +33 -24
- package/dist/{chunk-RSEVIQEO.mjs → chunk-E432NK23.mjs} +41 -36
- package/dist/{chunk-AE4JKISB.mjs → chunk-EEI4FLEE.mjs} +1 -1
- package/dist/{chunk-IEQX4UVP.mjs → chunk-EY36WDCF.mjs} +1 -1
- package/dist/{chunk-HB5BKRMH.mjs → chunk-F3CU6KEI.mjs} +11 -1
- package/dist/chunk-H65NB7KI.mjs +182 -0
- package/dist/{chunk-TRM3KIHT.mjs → chunk-ICCPK3J2.mjs} +1 -1
- package/dist/{chunk-KGVVK6OS.mjs → chunk-ORMC3TV3.mjs} +3 -1
- package/dist/{chunk-HSXMTFIM.mjs → chunk-UD5UF5OC.mjs} +1 -1
- package/dist/{chunk-IW33VLL5.mjs → chunk-X3VEDQPO.mjs} +7 -3
- package/dist/{chunk-AAZSLTER.mjs → chunk-XGRSPFFC.mjs} +16 -7
- package/dist/components/ui/about-you-form.js +9 -6
- package/dist/components/ui/about-you-form.mjs +2 -2
- package/dist/components/ui/ai-conversations/index.js +4 -1
- package/dist/components/ui/ai-conversations/index.mjs +2 -2
- package/dist/components/ui/appointment-availability-settings.js +24 -12
- package/dist/components/ui/appointment-availability-settings.mjs +3 -3
- package/dist/components/ui/appointment-book-dialog.js +33 -24
- package/dist/components/ui/appointment-book-dialog.mjs +1 -1
- package/dist/components/ui/appointment-detail-sheet.js +3 -1
- package/dist/components/ui/appointment-detail-sheet.mjs +1 -1
- package/dist/components/ui/appointment-gmail-connect.js +127 -70
- package/dist/components/ui/appointment-gmail-connect.mjs +1 -1
- package/dist/components/ui/backoffice-signup-steps.js +23 -16
- package/dist/components/ui/backoffice-signup-steps.mjs +3 -3
- package/dist/components/ui/bank-statement-generate-dialog.js +12 -9
- package/dist/components/ui/bank-statement-generate-dialog.mjs +3 -3
- package/dist/components/ui/color-picker.js +21 -14
- package/dist/components/ui/color-picker.mjs +2 -2
- package/dist/components/ui/date-picker.js +6 -3
- package/dist/components/ui/date-picker.mjs +2 -2
- package/dist/components/ui/opportunity-edit-modals.js +45 -42
- package/dist/components/ui/opportunity-edit-modals.mjs +3 -3
- package/dist/components/ui/opportunity-summary-tab.js +48 -45
- package/dist/components/ui/opportunity-summary-tab.mjs +4 -4
- package/dist/components/ui/pipeline-dialogs.js +12 -9
- package/dist/components/ui/pipeline-dialogs.mjs +3 -3
- package/dist/components/ui/popover.js +22 -1
- package/dist/components/ui/popover.mjs +3 -1
- package/dist/components/ui/savings-goal-modal.js +11 -8
- package/dist/components/ui/savings-goal-modal.mjs +2 -2
- package/dist/components/ui/sidebar-nav.js +39 -34
- package/dist/components/ui/sidebar-nav.mjs +1 -1
- package/dist/index.js +388 -291
- package/dist/index.mjs +16 -14
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/index.tsx +4 -0
- package/src/components/ui/appointment-availability-settings.tsx +32 -19
- package/src/components/ui/appointment-book-dialog.tsx +52 -73
- package/src/components/ui/appointment-detail-sheet.tsx +3 -1
- package/src/components/ui/appointment-gmail-connect.tsx +89 -29
- package/src/components/ui/color-picker.tsx +12 -4
- package/src/components/ui/popover.tsx +33 -2
- package/src/components/ui/sidebar-nav.tsx +96 -75
- package/src/styles/styles-css.ts +1 -1
- package/dist/chunk-7TMPOZDE.mjs +0 -122
|
@@ -155,7 +155,7 @@ function Label(_a) {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
// src/components/ui/date-picker.tsx
|
|
158
|
-
var
|
|
158
|
+
var React5 = __toESM(require("react"));
|
|
159
159
|
var import_date_fns2 = require("date-fns");
|
|
160
160
|
var import_lucide_react3 = require("lucide-react");
|
|
161
161
|
|
|
@@ -502,6 +502,7 @@ function CalendarDayButton(_a) {
|
|
|
502
502
|
}
|
|
503
503
|
|
|
504
504
|
// src/components/ui/popover.tsx
|
|
505
|
+
var React4 = __toESM(require("react"));
|
|
505
506
|
var import_popover = require("@base-ui/react/popover");
|
|
506
507
|
|
|
507
508
|
// src/lib/theme-provider.tsx
|
|
@@ -514,6 +515,7 @@ function useThemeVars() {
|
|
|
514
515
|
|
|
515
516
|
// src/components/ui/popover.tsx
|
|
516
517
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
518
|
+
var PopoverPortalContext = React4.createContext(void 0);
|
|
517
519
|
function Popover(_a) {
|
|
518
520
|
var props = __objRest(_a, []);
|
|
519
521
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
@@ -535,7 +537,8 @@ function PopoverContent(_a) {
|
|
|
535
537
|
"style"
|
|
536
538
|
]);
|
|
537
539
|
const themeVars = useThemeVars();
|
|
538
|
-
|
|
540
|
+
const portalContainer = React4.useContext(PopoverPortalContext);
|
|
541
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_popover.Popover.Portal, { container: portalContainer != null ? portalContainer : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
539
542
|
import_popover.Popover.Positioner,
|
|
540
543
|
{
|
|
541
544
|
className: "z-[200]",
|
|
@@ -567,7 +570,7 @@ function DatePicker({
|
|
|
567
570
|
className,
|
|
568
571
|
calendarProps
|
|
569
572
|
}) {
|
|
570
|
-
const [open, setOpen] =
|
|
573
|
+
const [open, setOpen] = React5.useState(false);
|
|
571
574
|
function handleDaySelect(day) {
|
|
572
575
|
if (!day) {
|
|
573
576
|
onChange == null ? void 0 : onChange(void 0);
|
|
@@ -656,7 +659,7 @@ function DatePicker({
|
|
|
656
659
|
}
|
|
657
660
|
|
|
658
661
|
// src/components/ui/toggle-group.tsx
|
|
659
|
-
var
|
|
662
|
+
var React6 = __toESM(require("react"));
|
|
660
663
|
var import_toggle_group = require("@base-ui/react/toggle-group");
|
|
661
664
|
var import_toggle2 = require("@base-ui/react/toggle");
|
|
662
665
|
|
|
@@ -687,7 +690,7 @@ var toggleVariants = (0, import_class_variance_authority2.cva)(
|
|
|
687
690
|
|
|
688
691
|
// src/components/ui/toggle-group.tsx
|
|
689
692
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
690
|
-
var ToggleGroupContext =
|
|
693
|
+
var ToggleGroupContext = React6.createContext({
|
|
691
694
|
size: "default",
|
|
692
695
|
variant: "default",
|
|
693
696
|
spacing: 0
|
|
@@ -739,7 +742,7 @@ function ToggleGroupItem(_a) {
|
|
|
739
742
|
"variant",
|
|
740
743
|
"size"
|
|
741
744
|
]);
|
|
742
|
-
const context =
|
|
745
|
+
const context = React6.useContext(ToggleGroupContext);
|
|
743
746
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
744
747
|
import_toggle2.Toggle,
|
|
745
748
|
__spreadProps(__spreadValues({
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
} from "../../chunk-FFXTQTB4.mjs";
|
|
4
4
|
import {
|
|
5
5
|
DatePicker
|
|
6
|
-
} from "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
} from "../../chunk-ICCPK3J2.mjs";
|
|
7
|
+
import "../../chunk-F3CU6KEI.mjs";
|
|
8
8
|
import "../../chunk-OWFQSXVD.mjs";
|
|
9
9
|
import "../../chunk-6QAFGZC2.mjs";
|
|
10
10
|
import "../../chunk-FBNEIYSE.mjs";
|
|
@@ -1126,8 +1126,10 @@ function DropdownMenuSeparator(_a) {
|
|
|
1126
1126
|
}
|
|
1127
1127
|
|
|
1128
1128
|
// src/components/ui/popover.tsx
|
|
1129
|
+
var React4 = __toESM(require("react"));
|
|
1129
1130
|
var import_popover = require("@base-ui/react/popover");
|
|
1130
1131
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1132
|
+
var PopoverPortalContext = React4.createContext(void 0);
|
|
1131
1133
|
function Popover(_a) {
|
|
1132
1134
|
var props = __objRest(_a, []);
|
|
1133
1135
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
@@ -1149,7 +1151,8 @@ function PopoverContent(_a) {
|
|
|
1149
1151
|
"style"
|
|
1150
1152
|
]);
|
|
1151
1153
|
const themeVars = useThemeVars();
|
|
1152
|
-
|
|
1154
|
+
const portalContainer = React4.useContext(PopoverPortalContext);
|
|
1155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_popover.Popover.Portal, { container: portalContainer != null ? portalContainer : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1153
1156
|
import_popover.Popover.Positioner,
|
|
1154
1157
|
{
|
|
1155
1158
|
className: "z-[200]",
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
ConversationStatusChip,
|
|
10
10
|
ConversationsPage,
|
|
11
11
|
LeadInfoPanel
|
|
12
|
-
} from "../../../chunk-
|
|
12
|
+
} from "../../../chunk-EEI4FLEE.mjs";
|
|
13
13
|
import "../../../chunk-3S6KVFF5.mjs";
|
|
14
14
|
import "../../../chunk-WE4YKBDE.mjs";
|
|
15
15
|
import "../../../chunk-T5FRVEJQ.mjs";
|
|
@@ -18,7 +18,7 @@ import "../../../chunk-H6NQTIF4.mjs";
|
|
|
18
18
|
import "../../../chunk-2GIYVERS.mjs";
|
|
19
19
|
import "../../../chunk-BS75ICOO.mjs";
|
|
20
20
|
import "../../../chunk-X6RC5UWB.mjs";
|
|
21
|
-
import "../../../chunk-
|
|
21
|
+
import "../../../chunk-F3CU6KEI.mjs";
|
|
22
22
|
import "../../../chunk-OWFQSXVD.mjs";
|
|
23
23
|
import "../../../chunk-6QAFGZC2.mjs";
|
|
24
24
|
import "../../../chunk-LBTHZSBT.mjs";
|
|
@@ -232,7 +232,7 @@ var Button = (0, import_react.forwardRef)(function Button2(_a, ref) {
|
|
|
232
232
|
});
|
|
233
233
|
|
|
234
234
|
// src/components/ui/date-picker.tsx
|
|
235
|
-
var
|
|
235
|
+
var React5 = __toESM(require("react"));
|
|
236
236
|
var import_date_fns2 = require("date-fns");
|
|
237
237
|
var import_lucide_react3 = require("lucide-react");
|
|
238
238
|
|
|
@@ -479,6 +479,7 @@ function CalendarDayButton(_a) {
|
|
|
479
479
|
}
|
|
480
480
|
|
|
481
481
|
// src/components/ui/popover.tsx
|
|
482
|
+
var React4 = __toESM(require("react"));
|
|
482
483
|
var import_popover = require("@base-ui/react/popover");
|
|
483
484
|
|
|
484
485
|
// src/lib/theme-provider.tsx
|
|
@@ -491,6 +492,7 @@ function useThemeVars() {
|
|
|
491
492
|
|
|
492
493
|
// src/components/ui/popover.tsx
|
|
493
494
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
495
|
+
var PopoverPortalContext = React4.createContext(void 0);
|
|
494
496
|
function Popover(_a) {
|
|
495
497
|
var props = __objRest(_a, []);
|
|
496
498
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_popover.Popover.Root, __spreadValues({ "data-slot": "popover" }, props));
|
|
@@ -512,7 +514,8 @@ function PopoverContent(_a) {
|
|
|
512
514
|
"style"
|
|
513
515
|
]);
|
|
514
516
|
const themeVars = useThemeVars();
|
|
515
|
-
|
|
517
|
+
const portalContainer = React4.useContext(PopoverPortalContext);
|
|
518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_popover.Popover.Portal, { container: portalContainer != null ? portalContainer : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
516
519
|
import_popover.Popover.Positioner,
|
|
517
520
|
{
|
|
518
521
|
className: "z-[200]",
|
|
@@ -544,7 +547,7 @@ function DatePicker({
|
|
|
544
547
|
className,
|
|
545
548
|
calendarProps
|
|
546
549
|
}) {
|
|
547
|
-
const [open, setOpen] =
|
|
550
|
+
const [open, setOpen] = React5.useState(false);
|
|
548
551
|
function handleDaySelect(day) {
|
|
549
552
|
if (!day) {
|
|
550
553
|
onChange == null ? void 0 : onChange(void 0);
|
|
@@ -841,11 +844,11 @@ function Label(_a) {
|
|
|
841
844
|
}
|
|
842
845
|
|
|
843
846
|
// src/components/ui/select.tsx
|
|
844
|
-
var
|
|
847
|
+
var React6 = __toESM(require("react"));
|
|
845
848
|
var import_lucide_react5 = require("lucide-react");
|
|
846
849
|
var import_select = require("@base-ui/react/select");
|
|
847
850
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
848
|
-
var SelectPortalContext =
|
|
851
|
+
var SelectPortalContext = React6.createContext(
|
|
849
852
|
void 0
|
|
850
853
|
);
|
|
851
854
|
function Select(_a) {
|
|
@@ -894,7 +897,7 @@ function SelectContent(_a) {
|
|
|
894
897
|
"style"
|
|
895
898
|
]);
|
|
896
899
|
const themeVars = useThemeVars();
|
|
897
|
-
const portalContainer =
|
|
900
|
+
const portalContainer = React6.useContext(SelectPortalContext);
|
|
898
901
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_select.Select.Portal, { container: portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
899
902
|
import_select.Select.Positioner,
|
|
900
903
|
{
|
|
@@ -1377,7 +1380,8 @@ function AppointmentAvailabilitySettings({
|
|
|
1377
1380
|
blockedDates: blockedDatesProp,
|
|
1378
1381
|
publicHolidays: publicHolidaysProp,
|
|
1379
1382
|
onSave,
|
|
1380
|
-
onBlockedDatesChange
|
|
1383
|
+
onBlockedDatesChange,
|
|
1384
|
+
onPrefsChange
|
|
1381
1385
|
}) {
|
|
1382
1386
|
var _a, _b, _c, _d, _e;
|
|
1383
1387
|
const [schedule, setSchedule] = import_react4.default.useState(initialSchedule);
|
|
@@ -1434,6 +1438,7 @@ function AppointmentAvailabilitySettings({
|
|
|
1434
1438
|
);
|
|
1435
1439
|
const saveGuard = import_react4.default.useRef(false);
|
|
1436
1440
|
const timeOffGuard = import_react4.default.useRef(false);
|
|
1441
|
+
const prefsChangeGuard = import_react4.default.useRef(false);
|
|
1437
1442
|
import_react4.default.useEffect(() => {
|
|
1438
1443
|
if (!saveGuard.current) {
|
|
1439
1444
|
saveGuard.current = true;
|
|
@@ -1441,6 +1446,13 @@ function AppointmentAvailabilitySettings({
|
|
|
1441
1446
|
}
|
|
1442
1447
|
onSave == null ? void 0 : onSave(schedule, currentPrefs);
|
|
1443
1448
|
}, [schedule, currentPrefs]);
|
|
1449
|
+
import_react4.default.useEffect(() => {
|
|
1450
|
+
if (!prefsChangeGuard.current) {
|
|
1451
|
+
prefsChangeGuard.current = true;
|
|
1452
|
+
return;
|
|
1453
|
+
}
|
|
1454
|
+
onPrefsChange == null ? void 0 : onPrefsChange(currentPrefs);
|
|
1455
|
+
}, [currentPrefs]);
|
|
1444
1456
|
import_react4.default.useEffect(() => {
|
|
1445
1457
|
if (!timeOffGuard.current) {
|
|
1446
1458
|
timeOffGuard.current = true;
|
|
@@ -1551,7 +1563,7 @@ function AppointmentAvailabilitySettings({
|
|
|
1551
1563
|
value: meetingDuration,
|
|
1552
1564
|
onValueChange: (v) => setMeetingDuration(v),
|
|
1553
1565
|
children: [
|
|
1554
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-
|
|
1566
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-64", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { children: (v) => selectLabel(MEETING_DURATION_OPTIONS, v) }) }),
|
|
1555
1567
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectContent, { children: MEETING_DURATION_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
1556
1568
|
]
|
|
1557
1569
|
}
|
|
@@ -1569,7 +1581,7 @@ function AppointmentAvailabilitySettings({
|
|
|
1569
1581
|
value: schedulingBuffer,
|
|
1570
1582
|
onValueChange: (v) => setSchedulingBuffer(v),
|
|
1571
1583
|
children: [
|
|
1572
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-
|
|
1584
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-64", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { children: (v) => selectLabel(SCHEDULING_BUFFER_OPTIONS, v) }) }),
|
|
1573
1585
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectContent, { children: SCHEDULING_BUFFER_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
1574
1586
|
]
|
|
1575
1587
|
}
|
|
@@ -1587,7 +1599,7 @@ function AppointmentAvailabilitySettings({
|
|
|
1587
1599
|
value: maxSlotsPerDay,
|
|
1588
1600
|
onValueChange: (v) => setMaxSlotsPerDay(v),
|
|
1589
1601
|
children: [
|
|
1590
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-
|
|
1602
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-64", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { children: (v) => selectLabel(MAX_SLOTS_OPTIONS, v) }) }),
|
|
1591
1603
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectContent, { children: MAX_SLOTS_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
1592
1604
|
]
|
|
1593
1605
|
}
|
|
@@ -1605,7 +1617,7 @@ function AppointmentAvailabilitySettings({
|
|
|
1605
1617
|
value: timezone,
|
|
1606
1618
|
onValueChange: (v) => setTimezone(v),
|
|
1607
1619
|
children: [
|
|
1608
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-
|
|
1620
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-64", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { children: (v) => selectLabel(TIMEZONE_OPTIONS, v) }) }),
|
|
1609
1621
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectContent, { children: TIMEZONE_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
1610
1622
|
]
|
|
1611
1623
|
}
|
|
@@ -1625,7 +1637,7 @@ function AppointmentAvailabilitySettings({
|
|
|
1625
1637
|
v
|
|
1626
1638
|
),
|
|
1627
1639
|
children: [
|
|
1628
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-
|
|
1640
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectTrigger, { className: "w-64", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectValue, { children: (v) => selectLabel(MEETING_PLATFORM_OPTIONS, v) }) }),
|
|
1629
1641
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectContent, { children: MEETING_PLATFORM_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
1630
1642
|
]
|
|
1631
1643
|
}
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
AppointmentAvailabilitySettings,
|
|
3
3
|
MEETING_PLATFORM_OPTIONS,
|
|
4
4
|
TIMEZONE_OPTIONS
|
|
5
|
-
} from "../../chunk-
|
|
5
|
+
} from "../../chunk-XGRSPFFC.mjs";
|
|
6
6
|
import "../../chunk-PNSYFE3K.mjs";
|
|
7
7
|
import "../../chunk-WE4YKBDE.mjs";
|
|
8
8
|
import "../../chunk-K6VCC2MK.mjs";
|
|
9
9
|
import "../../chunk-T5FRVEJQ.mjs";
|
|
10
10
|
import "../../chunk-2GIYVERS.mjs";
|
|
11
|
-
import "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
11
|
+
import "../../chunk-ICCPK3J2.mjs";
|
|
12
|
+
import "../../chunk-F3CU6KEI.mjs";
|
|
13
13
|
import "../../chunk-FBNEIYSE.mjs";
|
|
14
14
|
import "../../chunk-LHWJQNLG.mjs";
|
|
15
15
|
import "../../chunk-LSRGA5BI.mjs";
|
|
@@ -1472,31 +1472,40 @@ function ClientSearch({
|
|
|
1472
1472
|
] }) })
|
|
1473
1473
|
] });
|
|
1474
1474
|
}
|
|
1475
|
+
var FMT_CALL = {
|
|
1476
|
+
value: "call",
|
|
1477
|
+
label: "Call",
|
|
1478
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Phone, { className: "h-4 w-4" })
|
|
1479
|
+
};
|
|
1480
|
+
var FMT_ONLINE = {
|
|
1481
|
+
value: "online",
|
|
1482
|
+
label: "Online Meeting",
|
|
1483
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
|
|
1484
|
+
};
|
|
1485
|
+
var FMT_GOOGLE_MEET = {
|
|
1486
|
+
value: "google-meet",
|
|
1487
|
+
label: "Google Meet",
|
|
1488
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
|
|
1489
|
+
};
|
|
1490
|
+
var FMT_MS_TEAMS = {
|
|
1491
|
+
value: "microsoft-teams",
|
|
1492
|
+
label: "MS Teams",
|
|
1493
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Users, { className: "h-4 w-4" })
|
|
1494
|
+
};
|
|
1495
|
+
var FMT_OFFLINE = {
|
|
1496
|
+
value: "offline",
|
|
1497
|
+
label: "Offline Meeting",
|
|
1498
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MapPin, { className: "h-4 w-4" })
|
|
1499
|
+
};
|
|
1475
1500
|
function getFormatOptions(platform) {
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Video, { className: "h-4 w-4" })
|
|
1485
|
-
};
|
|
1486
|
-
const msTeams = {
|
|
1487
|
-
value: "microsoft-teams",
|
|
1488
|
-
label: "MS Teams",
|
|
1489
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.Users, { className: "h-4 w-4" })
|
|
1490
|
-
};
|
|
1491
|
-
const offline = {
|
|
1492
|
-
value: "offline",
|
|
1493
|
-
label: "Offline Meeting",
|
|
1494
|
-
icon: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react7.MapPin, { className: "h-4 w-4" })
|
|
1495
|
-
};
|
|
1496
|
-
if (platform === "google-meet") return [call, googleMeet, offline];
|
|
1497
|
-
if (platform === "microsoft-teams") return [call, msTeams, offline];
|
|
1498
|
-
if (platform === "any") return [call, googleMeet, msTeams, offline];
|
|
1499
|
-
return [call, offline];
|
|
1501
|
+
if (platform === "online") return [FMT_CALL, FMT_ONLINE, FMT_OFFLINE];
|
|
1502
|
+
if (platform === "google-meet")
|
|
1503
|
+
return [FMT_CALL, FMT_GOOGLE_MEET, FMT_OFFLINE];
|
|
1504
|
+
if (platform === "microsoft-teams")
|
|
1505
|
+
return [FMT_CALL, FMT_MS_TEAMS, FMT_OFFLINE];
|
|
1506
|
+
if (platform === "any")
|
|
1507
|
+
return [FMT_CALL, FMT_GOOGLE_MEET, FMT_MS_TEAMS, FMT_OFFLINE];
|
|
1508
|
+
return [FMT_CALL, FMT_OFFLINE];
|
|
1500
1509
|
}
|
|
1501
1510
|
function MeetingFormatSection({
|
|
1502
1511
|
format: format2,
|
|
@@ -1371,11 +1371,13 @@ var MEETING_FORMAT_META = {
|
|
|
1371
1371
|
icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Users, { className: ICON_CLASS }),
|
|
1372
1372
|
label: "Microsoft Teams"
|
|
1373
1373
|
},
|
|
1374
|
+
online: { icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.Video, { className: ICON_CLASS }), label: "Online Meeting" },
|
|
1374
1375
|
offline: { icon: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_lucide_react6.MapPin, { className: ICON_CLASS }), label: "In Person" }
|
|
1375
1376
|
};
|
|
1376
1377
|
var ONLINE_FORMATS = /* @__PURE__ */ new Set([
|
|
1377
1378
|
"google-meet",
|
|
1378
|
-
"microsoft-teams"
|
|
1379
|
+
"microsoft-teams",
|
|
1380
|
+
"online"
|
|
1379
1381
|
]);
|
|
1380
1382
|
function AppointmentDetailSheet({
|
|
1381
1383
|
appointment,
|
|
@@ -63,9 +63,6 @@ __export(appointment_gmail_connect_exports, {
|
|
|
63
63
|
});
|
|
64
64
|
module.exports = __toCommonJS(appointment_gmail_connect_exports);
|
|
65
65
|
|
|
66
|
-
// src/components/ui/badge.tsx
|
|
67
|
-
var import_class_variance_authority = require("class-variance-authority");
|
|
68
|
-
|
|
69
66
|
// src/lib/utils.ts
|
|
70
67
|
var import_clsx = require("clsx");
|
|
71
68
|
var import_tailwind_merge = require("tailwind-merge");
|
|
@@ -105,6 +102,9 @@ function cn(...inputs) {
|
|
|
105
102
|
return twMerge((0, import_clsx.clsx)(inputs));
|
|
106
103
|
}
|
|
107
104
|
|
|
105
|
+
// src/components/ui/badge.tsx
|
|
106
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
107
|
+
|
|
108
108
|
// src/lib/slot.tsx
|
|
109
109
|
var React = __toESM(require("react"));
|
|
110
110
|
function mergeRefs(...refs) {
|
|
@@ -319,94 +319,151 @@ function Separator(_a) {
|
|
|
319
319
|
// src/components/ui/appointment-gmail-connect.tsx
|
|
320
320
|
var import_lucide_react2 = require("lucide-react");
|
|
321
321
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
322
|
+
function GmailIcon({ className }) {
|
|
323
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { viewBox: "0 0 24 24", className, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
324
|
+
"path",
|
|
325
|
+
{
|
|
326
|
+
fill: "#EA4335",
|
|
327
|
+
d: "M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 0 1 0 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"
|
|
328
|
+
}
|
|
329
|
+
) });
|
|
330
|
+
}
|
|
331
|
+
function OutlookIcon({ className }) {
|
|
332
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { viewBox: "0 0 24 24", className, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
333
|
+
"path",
|
|
334
|
+
{
|
|
335
|
+
fill: "#0078D4",
|
|
336
|
+
d: "M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"
|
|
337
|
+
}
|
|
338
|
+
) });
|
|
339
|
+
}
|
|
340
|
+
var PROVIDER_META = {
|
|
341
|
+
gmail: { label: "Gmail", iconBg: "bg-[#EA4335]/10", Icon: GmailIcon },
|
|
342
|
+
outlook: { label: "Outlook", iconBg: "bg-[#0078D4]/10", Icon: OutlookIcon }
|
|
343
|
+
};
|
|
322
344
|
var PERMISSIONS = [
|
|
323
345
|
"Read your calendar availability",
|
|
324
346
|
"Send appointment confirmation emails",
|
|
325
347
|
"Create calendar events on your behalf"
|
|
326
348
|
];
|
|
327
349
|
function AppointmentGmailConnect({
|
|
350
|
+
provider = "gmail",
|
|
328
351
|
connection,
|
|
329
352
|
calendarLink,
|
|
353
|
+
highlighted = false,
|
|
330
354
|
onCopyLink,
|
|
331
355
|
onGoToIntegrations
|
|
332
356
|
}) {
|
|
357
|
+
const { label, iconBg, Icon } = PROVIDER_META[provider];
|
|
333
358
|
if (connection.connected) {
|
|
334
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
343
|
-
"Active"
|
|
344
|
-
] }),
|
|
345
|
-
connection.connectedAt && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "shrink-0 text-xs text-muted-foreground", children: [
|
|
346
|
-
"Connected since ",
|
|
347
|
-
connection.connectedAt
|
|
348
|
-
] }),
|
|
349
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
350
|
-
Button,
|
|
351
|
-
{
|
|
352
|
-
size: "sm",
|
|
353
|
-
variant: "ghost",
|
|
354
|
-
className: "shrink-0 gap-1.5 text-muted-foreground",
|
|
355
|
-
onClick: onGoToIntegrations,
|
|
356
|
-
children: [
|
|
357
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Settings, { className: "h-3.5 w-3.5" }),
|
|
358
|
-
"Manage"
|
|
359
|
-
]
|
|
360
|
-
}
|
|
361
|
-
)
|
|
362
|
-
] }),
|
|
363
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
364
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2 px-5 py-4", children: [
|
|
365
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Permissions granted" }),
|
|
366
|
-
PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
367
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
|
|
368
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
|
|
369
|
-
] }, perm))
|
|
370
|
-
] }),
|
|
371
|
-
calendarLink && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
372
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
373
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2.5 px-5 py-4", children: [
|
|
374
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
375
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Link2, { className: "h-4 w-4 text-muted-foreground" }),
|
|
376
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-semibold", children: "Calendar Appointment Link" })
|
|
377
|
-
] }),
|
|
378
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: "Share with clients so they can self-book." }),
|
|
379
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
|
|
359
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
360
|
+
"div",
|
|
361
|
+
{
|
|
362
|
+
className: cn(
|
|
363
|
+
"flex flex-col border bg-card",
|
|
364
|
+
highlighted ? "border-primary" : "border-border"
|
|
365
|
+
),
|
|
366
|
+
children: [
|
|
367
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-start gap-3 px-5 py-4", children: [
|
|
380
368
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
381
|
-
|
|
369
|
+
"div",
|
|
382
370
|
{
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
371
|
+
className: cn(
|
|
372
|
+
"flex h-10 w-10 shrink-0 items-center justify-center",
|
|
373
|
+
iconBg
|
|
374
|
+
),
|
|
375
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Icon, { className: "h-5 w-5" })
|
|
387
376
|
}
|
|
388
377
|
),
|
|
389
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
378
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
379
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "text-base font-semibold", children: [
|
|
380
|
+
label,
|
|
381
|
+
" Connected"
|
|
382
|
+
] }),
|
|
383
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "truncate text-sm text-muted-foreground", children: connection.email })
|
|
384
|
+
] }),
|
|
385
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex shrink-0 flex-col items-end gap-1.5", children: [
|
|
386
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
387
|
+
Button,
|
|
388
|
+
{
|
|
389
|
+
size: "sm",
|
|
390
|
+
variant: "ghost",
|
|
391
|
+
className: "gap-1.5 text-muted-foreground",
|
|
392
|
+
onClick: onGoToIntegrations,
|
|
393
|
+
children: [
|
|
394
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Settings, { className: "h-3.5 w-3.5" }),
|
|
395
|
+
"Manage"
|
|
396
|
+
]
|
|
397
|
+
}
|
|
398
|
+
),
|
|
399
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
400
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Badge, { variant: "success", children: [
|
|
401
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { size: 10 }),
|
|
402
|
+
"Active"
|
|
403
|
+
] }),
|
|
404
|
+
connection.connectedAt && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
405
|
+
"Connected since ",
|
|
406
|
+
connection.connectedAt
|
|
407
|
+
] })
|
|
408
|
+
] })
|
|
409
|
+
] })
|
|
410
|
+
] }),
|
|
411
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
412
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2 px-5 py-4", children: [
|
|
413
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Permissions granted" }),
|
|
414
|
+
PERMISSIONS.map((perm) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
415
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Check, { className: "h-3.5 w-3.5 shrink-0 text-success" }),
|
|
416
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-sm text-muted-foreground", children: perm })
|
|
417
|
+
] }, perm))
|
|
418
|
+
] }),
|
|
419
|
+
calendarLink && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
420
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Separator, {}),
|
|
421
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-2.5 px-5 py-4", children: [
|
|
422
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
423
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Link2, { className: "h-4 w-4 text-muted-foreground" }),
|
|
424
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-semibold", children: "Calendar Appointment Link" })
|
|
425
|
+
] }),
|
|
426
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm text-muted-foreground", children: "Share with clients so they can self-book." }),
|
|
427
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "relative", children: [
|
|
428
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
429
|
+
Input,
|
|
430
|
+
{
|
|
431
|
+
id: "calendar-link",
|
|
432
|
+
readOnly: true,
|
|
433
|
+
value: calendarLink,
|
|
434
|
+
className: "cursor-default select-all pr-10 text-muted-foreground"
|
|
435
|
+
}
|
|
436
|
+
),
|
|
437
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
438
|
+
Button,
|
|
439
|
+
{
|
|
440
|
+
type: "button",
|
|
441
|
+
variant: "ghost",
|
|
442
|
+
size: "icon",
|
|
443
|
+
onClick: onCopyLink,
|
|
444
|
+
className: "absolute right-1 top-1/2 h-8 w-8 -translate-y-1/2",
|
|
445
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Copy, { className: "h-4 w-4" })
|
|
446
|
+
}
|
|
447
|
+
)
|
|
448
|
+
] })
|
|
449
|
+
] })
|
|
400
450
|
] })
|
|
401
|
-
]
|
|
402
|
-
|
|
403
|
-
|
|
451
|
+
]
|
|
452
|
+
}
|
|
453
|
+
);
|
|
404
454
|
}
|
|
405
455
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col items-center gap-4 border border-border bg-card px-6 py-8 text-center", children: [
|
|
406
456
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex h-12 w-12 items-center justify-center bg-muted", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.Mail, { className: "h-6 w-6 text-muted-foreground" }) }),
|
|
407
457
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
408
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.
|
|
409
|
-
|
|
458
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "text-base font-semibold", children: [
|
|
459
|
+
label,
|
|
460
|
+
" not connected"
|
|
461
|
+
] }),
|
|
462
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: "max-w-xs text-sm text-muted-foreground", children: [
|
|
463
|
+
"Connect your ",
|
|
464
|
+
label,
|
|
465
|
+
" account in Integrations to enable calendar booking and appointment confirmations."
|
|
466
|
+
] })
|
|
410
467
|
] }),
|
|
411
468
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex w-full max-w-xs flex-col gap-2 text-left", children: [
|
|
412
469
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm font-medium text-muted-foreground", children: "Once connected, WealthX will be able to:" }),
|