@flamingo-stack/openframe-frontend-core 0.0.742 → 0.0.743
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/dist/build/export-map.json +1 -1
- package/dist/{chunk-WIHHA54J.cjs → chunk-4A6OF4HI.cjs} +44 -44
- package/dist/{chunk-OBODY7F3.cjs → chunk-4N7KGOBS.cjs} +3 -3
- package/dist/{chunk-L34TKFTS.cjs → chunk-6XCQXGQA.cjs} +16 -16
- package/dist/{chunk-32Q7K5OP.cjs → chunk-7YDF3QBN.cjs} +116 -115
- package/dist/{chunk-PS6T65KA.cjs → chunk-BM6JZRVD.cjs} +65 -65
- package/dist/{chunk-R6SCSV2I.cjs → chunk-BNTELSHZ.cjs} +81 -81
- package/dist/{chunk-YQGDXH3M.cjs → chunk-GAGNKWOC.cjs} +2 -2
- package/dist/{chunk-HIRVNBX5.cjs → chunk-IRWJKVVZ.cjs} +16 -16
- package/dist/{chunk-XAA5EZ5T.cjs → chunk-JGZEHBBD.cjs} +6 -6
- package/dist/{chunk-5MH6BRPY.cjs → chunk-LJ46XYYP.cjs} +24 -12
- package/dist/{chunk-HDBY2URA.cjs → chunk-MLZKPDPZ.cjs} +31 -31
- package/dist/{chunk-4LDU32OB.cjs → chunk-MT7ELGCV.cjs} +4 -4
- package/dist/{chunk-UWHCRIQQ.cjs → chunk-NGUJVM6O.cjs} +13 -13
- package/dist/{chunk-DNFSMVXJ.cjs → chunk-SQHTX5XP.cjs} +12 -12
- package/dist/{chunk-T433HSL6.cjs → chunk-TKASH5YC.cjs} +33 -33
- package/dist/{chunk-ZIFYSLIM.cjs → chunk-UL6ZZSL4.cjs} +4 -4
- package/dist/{chunk-4PKORVOX.cjs → chunk-WCY35GB5.cjs} +441 -406
- package/dist/{chunk-UZLRSFGG.cjs → chunk-XJO5ZHO6.cjs} +30 -30
- package/dist/{chunk-3LW43GIJ.cjs → chunk-Y2FN3E32.cjs} +4 -4
- package/dist/{chunk-54EA4RLX.cjs → chunk-YDFKFLDQ.cjs} +3 -3
- package/dist/{chunk-BI3XBCQX.cjs → chunk-YIOWV7LS.cjs} +2 -2
- package/dist/{chunk-H3UA7UY5.cjs → chunk-YJRMCFX3.cjs} +2 -2
- package/dist/{chunk-Z2DQYKZA.cjs → chunk-YWMUZLU2.cjs} +69 -69
- package/dist/{chunk-ISJXKKYW.cjs → chunk-ZP5DFF3Q.cjs} +11 -11
- package/dist/{cloud-tenants-6ICAL3HO.cjs → cloud-tenants-DZC3ACG6.cjs} +7 -7
- package/dist/components/case-studies/index.cjs +19 -19
- package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/onboarding-guide-card.js +22 -12
- package/dist/components/chat/index.cjs +5 -5
- package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
- package/dist/components/chat/tool-execution-display.js +5 -4
- package/dist/components/contact/index.cjs +8 -8
- package/dist/components/docs/index.cjs +11 -11
- package/dist/components/embeds/index.cjs +8 -8
- package/dist/components/faq/index.cjs +9 -9
- package/dist/components/features/index.cjs +7 -7
- package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts +1 -1
- package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts.map +1 -1
- package/dist/components/features/scripts/schedule-form/schedule-interval-input.js +15 -13
- package/dist/components/features/scripts/schedule-form/schedule-offline-fields.d.ts.map +1 -1
- package/dist/components/features/scripts/schedule-form/schedule-offline-fields.js +9 -7
- package/dist/components/help-center-pages/index.cjs +101 -101
- package/dist/components/index.cjs +59 -57
- package/dist/components/meeting-scheduler/booking-form.d.ts +11 -1
- package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/booking-form.js +15 -3
- package/dist/components/meeting-scheduler/index.cjs +408 -114
- package/dist/components/meeting-scheduler/index.d.ts +16 -1
- package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.js +157 -5
- package/dist/components/meeting-scheduler/modal-header.d.ts +27 -0
- package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -0
- package/dist/components/meeting-scheduler/modal-header.js +104 -0
- package/dist/components/meeting-scheduler/slot-picker.d.ts +13 -2
- package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/slot-picker.js +112 -73
- package/dist/components/navigation/index.cjs +10 -10
- package/dist/components/onboarding-guides/index.cjs +10 -10
- package/dist/components/product-demo/index.cjs +7 -7
- package/dist/components/related-content/index.cjs +5 -5
- package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card.js +2 -0
- package/dist/components/tickets/index.cjs +13 -13
- package/dist/components/ui/index.cjs +9 -7
- package/dist/components/ui/radio-group.d.ts +6 -0
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +65 -58
- package/dist/components/ui/tab-navigation.d.ts +19 -1
- package/dist/components/ui/tab-navigation.d.ts.map +1 -1
- package/dist/components/ui/tab-navigation.js +32 -8
- package/dist/{devices-OFP2IBKN.cjs → devices-MFGE2JQV.cjs} +8 -8
- package/dist/{embeddable-chat-4C22MGNC.cjs → embeddable-chat-7ZEGCDVF.cjs} +71 -71
- package/dist/index.cjs +13 -11
- package/dist/{knowledge-KKBCSNUA.cjs → knowledge-7VPS2ZBU.cjs} +8 -8
- package/dist/{logs-X2GRNO57.cjs → logs-M3QPAUH7.cjs} +15 -15
- package/dist/{policies-35BXKB6P.cjs → policies-UAVE6X62.cjs} +11 -11
- package/dist/{scripts-KQYVQOLU.cjs → scripts-EDQ3IQKW.cjs} +12 -12
- package/dist/{software-update-ED33WSKT.cjs → software-update-B2MZVNPK.cjs} +10 -10
- package/package.json +1 -1
- package/src/components/chat/entity-cards/onboarding-guide-card.tsx +8 -1
- package/src/components/chat/tool-execution-display.tsx +21 -10
- package/src/components/features/scripts/schedule-form/schedule-interval-input.tsx +20 -13
- package/src/components/features/scripts/schedule-form/schedule-offline-fields.tsx +9 -5
- package/src/components/meeting-scheduler/booking-form.tsx +29 -3
- package/src/components/meeting-scheduler/index.tsx +224 -3
- package/src/components/meeting-scheduler/modal-header.tsx +145 -0
- package/src/components/meeting-scheduler/slot-picker.tsx +72 -8
- package/src/components/shared/product-release/product-release-card.tsx +2 -0
- package/src/components/ui/radio-group.tsx +51 -36
- package/src/components/ui/tab-navigation.tsx +54 -5
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkYIOWV7LScjs = require('../../chunk-YIOWV7LS.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunk4N7KGOBScjs = require('../../chunk-4N7KGOBS.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -16,7 +16,7 @@ var _chunkOBODY7F3cjs = require('../../chunk-OBODY7F3.cjs');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkWCY35GB5cjs = require('../../chunk-WCY35GB5.cjs');
|
|
20
20
|
require('../../chunk-URVIPSAJ.cjs');
|
|
21
21
|
require('../../chunk-NTGIQP7O.cjs');
|
|
22
22
|
|
|
@@ -39,17 +39,17 @@ require('../../chunk-LU7TD6QS.cjs');
|
|
|
39
39
|
require('../../chunk-24I6RFVU.cjs');
|
|
40
40
|
require('../../chunk-A6P6DHEZ.cjs');
|
|
41
41
|
require('../../chunk-MZ4KBSH7.cjs');
|
|
42
|
-
require('../../chunk-
|
|
42
|
+
require('../../chunk-GAGNKWOC.cjs');
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
var _chunkYUMFVQINcjs = require('../../chunk-YUMFVQIN.cjs');
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
var
|
|
49
|
+
var _chunkBM6JZRVDcjs = require('../../chunk-BM6JZRVD.cjs');
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
var
|
|
52
|
+
var _chunk7YDF3QBNcjs = require('../../chunk-7YDF3QBN.cjs');
|
|
53
53
|
require('../../chunk-OWGLRE74.cjs');
|
|
54
54
|
require('../../chunk-3RFQPQ7Z.cjs');
|
|
55
55
|
require('../../chunk-5TCIRWHL.cjs');
|
|
@@ -1852,10 +1852,10 @@ require('../../chunk-7DNL734S.cjs');
|
|
|
1852
1852
|
require('../../chunk-WWUSFOJ7.cjs');
|
|
1853
1853
|
require('../../chunk-SKI6NKOE.cjs');
|
|
1854
1854
|
require('../../chunk-EWPR7662.cjs');
|
|
1855
|
-
require('../../chunk-
|
|
1855
|
+
require('../../chunk-JGZEHBBD.cjs');
|
|
1856
1856
|
|
|
1857
1857
|
|
|
1858
|
-
var
|
|
1858
|
+
var _chunkLJ46XYYPcjs = require('../../chunk-LJ46XYYP.cjs');
|
|
1859
1859
|
require('../../chunk-QYLIHZKZ.cjs');
|
|
1860
1860
|
require('../../chunk-63N4FN5V.cjs');
|
|
1861
1861
|
|
|
@@ -2190,7 +2190,7 @@ function useMeetingBooking(options) {
|
|
|
2190
2190
|
const seededOffset = _optionalChain([initialAvailability, 'optionalAccess', _12 => _12.meetingId]) === meetingId ? initialAvailability.monthOffset : void 0;
|
|
2191
2191
|
const [monthOffset, setMonthOffsetState] = _react.useState.call(void 0, _nullishCoalesce(seededOffset, () => ( 0)));
|
|
2192
2192
|
const setMonthOffset = _react.useCallback.call(void 0, (offset) => {
|
|
2193
|
-
setMonthOffsetState(Math.max(0, Math.min(
|
|
2193
|
+
setMonthOffsetState(Math.max(0, Math.min(_chunkBM6JZRVDcjs.MAX_MONTH_OFFSET, offset)));
|
|
2194
2194
|
}, []);
|
|
2195
2195
|
const prevMeetingIdRef = _react.useRef.call(void 0, meetingId);
|
|
2196
2196
|
_react.useLayoutEffect.call(void 0, () => {
|
|
@@ -2320,7 +2320,7 @@ var FIELD_CONTROLS = {
|
|
|
2320
2320
|
}
|
|
2321
2321
|
),
|
|
2322
2322
|
textarea: ({ field, id, registerName, error, register }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2323
|
-
|
|
2323
|
+
_chunkWCY35GB5cjs.Textarea,
|
|
2324
2324
|
{
|
|
2325
2325
|
id,
|
|
2326
2326
|
required: field.required,
|
|
@@ -2397,14 +2397,14 @@ var FIELD_CONTROLS = {
|
|
|
2397
2397
|
control,
|
|
2398
2398
|
name: registerName,
|
|
2399
2399
|
render: ({ field: rhf }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2400
|
-
|
|
2400
|
+
_chunkWCY35GB5cjs.RadioGroup,
|
|
2401
2401
|
{
|
|
2402
2402
|
value: _nullishCoalesce(rhf.value, () => ( "")),
|
|
2403
2403
|
onValueChange: rhf.onChange,
|
|
2404
2404
|
"aria-required": field.required || void 0,
|
|
2405
2405
|
"aria-invalid": Boolean(error),
|
|
2406
2406
|
children: (_nullishCoalesce(field.options, () => ( []))).map((opt) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
|
|
2407
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2407
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWCY35GB5cjs.RadioGroupItem, { id: `${id}-${opt}`, value: opt }),
|
|
2408
2408
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { htmlFor: `${id}-${opt}`, children: optionLabel(field, opt) })
|
|
2409
2409
|
] }, opt))
|
|
2410
2410
|
}
|
|
@@ -2476,6 +2476,9 @@ function BookingForm({
|
|
|
2476
2476
|
submitLabel,
|
|
2477
2477
|
footerNote,
|
|
2478
2478
|
fieldRows,
|
|
2479
|
+
formId,
|
|
2480
|
+
hideSubmit = false,
|
|
2481
|
+
onValidityChange,
|
|
2479
2482
|
fieldCopy,
|
|
2480
2483
|
deniedEmailDomains,
|
|
2481
2484
|
consent,
|
|
@@ -2528,6 +2531,15 @@ function BookingForm({
|
|
|
2528
2531
|
const [consented, setConsented] = _react.useState.call(void 0, _optionalChain([initialValues, 'optionalAccess', _21 => _21[HOST_CONSENT_KEY]]) === true);
|
|
2529
2532
|
const [consentError, setConsentError] = _react.useState.call(void 0, null);
|
|
2530
2533
|
const consentMissing = Boolean(consent) && !consented;
|
|
2534
|
+
const watchedValues = watch();
|
|
2535
|
+
const liveValid = onValidityChange ? schema.safeParse(watchedValues).success && !consentMissing : false;
|
|
2536
|
+
const lastValidRef = _react.useRef.call(void 0, null);
|
|
2537
|
+
_react.useEffect.call(void 0, () => {
|
|
2538
|
+
if (!onValidityChange) return;
|
|
2539
|
+
if (lastValidRef.current === liveValid) return;
|
|
2540
|
+
lastValidRef.current = liveValid;
|
|
2541
|
+
onValidityChange(liveValid);
|
|
2542
|
+
});
|
|
2531
2543
|
_react.useEffect.call(void 0, () => {
|
|
2532
2544
|
const current = _nullishCoalesce(_nullishCoalesce(getValues("legalConsentResponses"), () => ( priorConsents)), () => ( []));
|
|
2533
2545
|
setValue(
|
|
@@ -2640,8 +2652,8 @@ function BookingForm({
|
|
|
2640
2652
|
children: _nullishCoalesce(submitLabel, () => ( DEFAULT_SUBMIT_LABEL))
|
|
2641
2653
|
}
|
|
2642
2654
|
);
|
|
2643
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: submit, className: FORM_STACK, noValidate: true, ...
|
|
2644
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2655
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { id: formId, onSubmit: submit, className: FORM_STACK, noValidate: true, ..._chunkBM6JZRVDcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
|
|
2656
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWCY35GB5cjs.HoneypotField, { ...honeypotInputProps }),
|
|
2645
2657
|
fieldRows ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
2646
2658
|
placedRows.map((row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_GRID, children: row.map((slot, slotIndex) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: slotColumnClass(row, slot, slotIndex), children: slotNode(slot.name) }, slot.name)) }, row.map((s) => s.name).join("|"))),
|
|
2647
2659
|
[...unplacedBuiltIns, ...unplacedFields].map((field) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Fragment, { children: slotNode(field.name) }, field.name))
|
|
@@ -2654,7 +2666,7 @@ function BookingForm({
|
|
|
2654
2666
|
supportedFields.map((field) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Fragment, { children: renderDeclaredField(field) }, field.name))
|
|
2655
2667
|
] }),
|
|
2656
2668
|
consent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2657
|
-
|
|
2669
|
+
_chunkWCY35GB5cjs.CheckboxBlock,
|
|
2658
2670
|
{
|
|
2659
2671
|
id: "ms-host-consent",
|
|
2660
2672
|
checked: consented,
|
|
@@ -2689,7 +2701,7 @@ function BookingForm({
|
|
|
2689
2701
|
// same block the waitlist form uses): box + label in one
|
|
2690
2702
|
// bordered row.
|
|
2691
2703
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2692
|
-
|
|
2704
|
+
_chunkWCY35GB5cjs.CheckboxBlock,
|
|
2693
2705
|
{
|
|
2694
2706
|
id: `ms-consent-${box.communicationTypeId}`,
|
|
2695
2707
|
checked: _nullishCoalesce(_optionalChain([current, 'optionalAccess', _34 => _34.consented]), () => ( false)),
|
|
@@ -2709,7 +2721,7 @@ function BookingForm({
|
|
|
2709
2721
|
),
|
|
2710
2722
|
legalConsent.privacyPolicyText && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: legalConsent.privacyPolicyText })
|
|
2711
2723
|
] }) }),
|
|
2712
|
-
footerNote ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: FOOTER_ROW_CLASS, children: [
|
|
2724
|
+
hideSubmit ? null : footerNote ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: FOOTER_ROW_CLASS, children: [
|
|
2713
2725
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: footerNote }),
|
|
2714
2726
|
submitButton
|
|
2715
2727
|
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: FOOTER_BARE_CLASS, children: submitButton })
|
|
@@ -2884,7 +2896,7 @@ function SchedulerContextPanel({
|
|
|
2884
2896
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, STRIP_ASIDE, locked && "content-max-lg:hidden"), children: [
|
|
2885
2897
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: FIELD_LABEL_CLASS, children: "Timezone" }),
|
|
2886
2898
|
timezone ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2887
|
-
|
|
2899
|
+
_chunkWCY35GB5cjs.TimezoneSelect,
|
|
2888
2900
|
{
|
|
2889
2901
|
value: timezone,
|
|
2890
2902
|
disabled,
|
|
@@ -2898,6 +2910,103 @@ function SchedulerContextPanel({
|
|
|
2898
2910
|
] });
|
|
2899
2911
|
}
|
|
2900
2912
|
|
|
2913
|
+
// src/components/meeting-scheduler/modal-header.tsx
|
|
2914
|
+
|
|
2915
|
+
var ROW_CLASS = "border-b border-ods-border p-[var(--spacing-system-m)]";
|
|
2916
|
+
var STRIP_CLASS = _chunk3ATAYP36cjs.cn.call(void 0, ROW_CLASS, "flex items-center justify-between gap-[var(--spacing-system-m)]");
|
|
2917
|
+
var FIELD_LABEL_CLASS2 = "text-h4 text-ods-text-primary";
|
|
2918
|
+
function HostIdentity({ hosts }) {
|
|
2919
|
+
if (hosts.length === 0) return null;
|
|
2920
|
+
if (hosts.length > 3) {
|
|
2921
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
2922
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUY6A6TEYcjs.AvatarStack, { people: hosts, max: 4, size: "lg", label: "Hosts" }),
|
|
2923
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: [
|
|
2924
|
+
hosts.length,
|
|
2925
|
+
" hosts on this calendar"
|
|
2926
|
+
] })
|
|
2927
|
+
] });
|
|
2928
|
+
}
|
|
2929
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-s)]", children: hosts.map((host) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
|
|
2930
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2931
|
+
_chunkABLUMGCIcjs.SquareAvatar,
|
|
2932
|
+
{
|
|
2933
|
+
variant: "round",
|
|
2934
|
+
size: "sm",
|
|
2935
|
+
src: _nullishCoalesce(host.avatarUrl, () => ( void 0)),
|
|
2936
|
+
alt: host.name,
|
|
2937
|
+
fallback: host.name
|
|
2938
|
+
}
|
|
2939
|
+
),
|
|
2940
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col", children: [
|
|
2941
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-primary text-h4", children: host.name }),
|
|
2942
|
+
host.title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: host.title })
|
|
2943
|
+
] })
|
|
2944
|
+
] }, host.name)) });
|
|
2945
|
+
}
|
|
2946
|
+
function SchedulerModalHeader({
|
|
2947
|
+
hosts,
|
|
2948
|
+
durationsMs,
|
|
2949
|
+
selectedDurationMs,
|
|
2950
|
+
onSelectDuration,
|
|
2951
|
+
timezone,
|
|
2952
|
+
onTimezoneChange,
|
|
2953
|
+
locked = false,
|
|
2954
|
+
disabled = false,
|
|
2955
|
+
showTimezone = true
|
|
2956
|
+
}) {
|
|
2957
|
+
const chips = !locked && durationsMs.length > 1;
|
|
2958
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
2959
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: STRIP_CLASS, children: [
|
|
2960
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, HostIdentity, { hosts }),
|
|
2961
|
+
chips ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex shrink-0 flex-wrap justify-end gap-[var(--spacing-system-xs)]", children: durationsMs.map((ms) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2962
|
+
_chunk2QMBXGMQcjs.Button,
|
|
2963
|
+
{
|
|
2964
|
+
variant: selectedDurationMs === ms ? void 0 : "outline",
|
|
2965
|
+
size: "small-legacy",
|
|
2966
|
+
disabled,
|
|
2967
|
+
onClick: () => onSelectDuration(ms),
|
|
2968
|
+
children: _chunkABLUMGCIcjs.formatDurationCompact.call(void 0, ms / 1e3)
|
|
2969
|
+
},
|
|
2970
|
+
ms
|
|
2971
|
+
)) }) : selectedDurationMs != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "shrink-0 text-ods-text-secondary text-h6", children: [
|
|
2972
|
+
_chunkABLUMGCIcjs.formatDurationCompact.call(void 0, selectedDurationMs / 1e3),
|
|
2973
|
+
" call"
|
|
2974
|
+
] })
|
|
2975
|
+
] }),
|
|
2976
|
+
showTimezone && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, ROW_CLASS, "flex flex-col gap-[var(--spacing-system-xxs)]"), children: [
|
|
2977
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: FIELD_LABEL_CLASS2, children: "Timezone" }),
|
|
2978
|
+
timezone ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2979
|
+
_chunkWCY35GB5cjs.TimezoneSelect,
|
|
2980
|
+
{
|
|
2981
|
+
value: timezone,
|
|
2982
|
+
disabled,
|
|
2983
|
+
onChange: (tz) => {
|
|
2984
|
+
if (tz) _optionalChain([onTimezoneChange, 'optionalCall', _36 => _36(tz)]);
|
|
2985
|
+
}
|
|
2986
|
+
}
|
|
2987
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-12 w-full" })
|
|
2988
|
+
] })
|
|
2989
|
+
] });
|
|
2990
|
+
}
|
|
2991
|
+
function SchedulerModalHeaderSkeleton() {
|
|
2992
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
2993
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: STRIP_CLASS, children: [
|
|
2994
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
|
|
2995
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-8 w-8 shrink-0 rounded-full" }),
|
|
2996
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
2997
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-5 w-32" }),
|
|
2998
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-4 w-24" })
|
|
2999
|
+
] })
|
|
3000
|
+
] }),
|
|
3001
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-4 w-20 shrink-0" })
|
|
3002
|
+
] }),
|
|
3003
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, ROW_CLASS, "flex flex-col gap-[var(--spacing-system-xxs)]"), children: [
|
|
3004
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: FIELD_LABEL_CLASS2, children: "Timezone" }),
|
|
3005
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-12 w-full" })
|
|
3006
|
+
] })
|
|
3007
|
+
] });
|
|
3008
|
+
}
|
|
3009
|
+
|
|
2901
3010
|
// src/components/meeting-scheduler/slot-picker.tsx
|
|
2902
3011
|
var _lucidereact = require('lucide-react');
|
|
2903
3012
|
|
|
@@ -2957,6 +3066,15 @@ var SLOT_ROW_CLASS = _chunk3ATAYP36cjs.cn.call(void 0,
|
|
|
2957
3066
|
);
|
|
2958
3067
|
var COLUMN_BOX = "p-[var(--spacing-system-l)] content-lg:p-0";
|
|
2959
3068
|
var COLUMN_DIVIDER = "border-b border-ods-border content-md:border-b-0 content-md:border-r content-lg:border-0";
|
|
3069
|
+
var MODAL_ROW_CLASS = "flex min-w-0 flex-col content-md:flex-row content-md:items-start";
|
|
3070
|
+
var MODAL_CALENDAR_W = "content-md:w-[19rem] content-md:shrink-0";
|
|
3071
|
+
var MODAL_COLUMN_BOX = "p-[var(--spacing-system-m)]";
|
|
3072
|
+
var MODAL_COLUMN_DIVIDER = "border-b border-ods-border content-md:border-b-0 content-md:border-r";
|
|
3073
|
+
var MODAL_TIMES_H = "content-md:h-[21.5rem]";
|
|
3074
|
+
var MODAL_CHIP_GRID_CLASS = _chunk3ATAYP36cjs.cn.call(void 0,
|
|
3075
|
+
"grid grid-cols-4 content-start gap-[var(--spacing-system-xs)] overflow-y-auto content-md:grid-cols-1",
|
|
3076
|
+
"max-h-[9.75rem] min-h-0 flex-1 content-md:max-h-none"
|
|
3077
|
+
);
|
|
2960
3078
|
function monthLabelFor(offset) {
|
|
2961
3079
|
const now = /* @__PURE__ */ new Date();
|
|
2962
3080
|
const month = new Date(now.getFullYear(), now.getMonth() + offset, 1);
|
|
@@ -2967,18 +3085,18 @@ var NOOP = () => void 0;
|
|
|
2967
3085
|
function DayCalendar({ monthOffset, onMonthOffsetChange, selectedDay, onSelectDay, slotsByDay }) {
|
|
2968
3086
|
const now = /* @__PURE__ */ new Date();
|
|
2969
3087
|
const startMonth = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
2970
|
-
const endMonth = new Date(now.getFullYear(), now.getMonth() +
|
|
3088
|
+
const endMonth = new Date(now.getFullYear(), now.getMonth() + _chunkBM6JZRVDcjs.MAX_MONTH_OFFSET + 1, 0);
|
|
2971
3089
|
const visibleMonth = new Date(now.getFullYear(), now.getMonth() + monthOffset, 1);
|
|
2972
|
-
const dayHasNoSlots = _react.useCallback.call(void 0, (day) => !_optionalChain([slotsByDay, 'optionalAccess',
|
|
3090
|
+
const dayHasNoSlots = _react.useCallback.call(void 0, (day) => !_optionalChain([slotsByDay, 'optionalAccess', _37 => _37.has, 'call', _38 => _38(calendarDayKey(day))]), [slotsByDay]);
|
|
2973
3091
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-0 flex-1 flex-col", "aria-busy": slotsByDay === null, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2974
|
-
|
|
3092
|
+
_chunkWCY35GB5cjs.DatePickerCalendar,
|
|
2975
3093
|
{
|
|
2976
3094
|
mode: "single",
|
|
2977
3095
|
bare: true,
|
|
2978
3096
|
month: visibleMonth,
|
|
2979
3097
|
onMonthChange: (month) => {
|
|
2980
3098
|
const offset = (month.getFullYear() - now.getFullYear()) * 12 + (month.getMonth() - now.getMonth());
|
|
2981
|
-
onMonthOffsetChange(Math.max(0, Math.min(
|
|
3099
|
+
onMonthOffsetChange(Math.max(0, Math.min(_chunkBM6JZRVDcjs.MAX_MONTH_OFFSET, offset)));
|
|
2982
3100
|
},
|
|
2983
3101
|
fromDate: startMonth,
|
|
2984
3102
|
toDate: endMonth,
|
|
@@ -2987,28 +3105,44 @@ function DayCalendar({ monthOffset, onMonthOffsetChange, selectedDay, onSelectDa
|
|
|
2987
3105
|
const day = value;
|
|
2988
3106
|
if (!day) return;
|
|
2989
3107
|
const key = calendarDayKey(day);
|
|
2990
|
-
if (_optionalChain([slotsByDay, 'optionalAccess',
|
|
3108
|
+
if (_optionalChain([slotsByDay, 'optionalAccess', _39 => _39.has, 'call', _40 => _40(key)])) onSelectDay(key);
|
|
2991
3109
|
},
|
|
2992
3110
|
disabledDays: slotsByDay === null ? DISABLE_EVERY_DAY : dayHasNoSlots
|
|
2993
3111
|
}
|
|
2994
3112
|
) });
|
|
2995
3113
|
}
|
|
2996
|
-
function SlotPickerSkeleton({
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3114
|
+
function SlotPickerSkeleton({
|
|
3115
|
+
monthOffset = 0,
|
|
3116
|
+
layout = "card"
|
|
3117
|
+
}) {
|
|
3118
|
+
const modal = layout === "modal";
|
|
3119
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: modal ? MODAL_ROW_CLASS : SLOT_ROW_CLASS, children: [
|
|
3120
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
3121
|
+
"div",
|
|
3122
|
+
{
|
|
3123
|
+
className: modal ? _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, MODAL_COLUMN_BOX, MODAL_COLUMN_DIVIDER, MODAL_CALENDAR_W) : _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, COLUMN_BOX, COLUMN_DIVIDER, CALENDAR_W, "content-md:overflow-y-auto"),
|
|
3124
|
+
children: [
|
|
3125
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: COLUMN_HEADING_CLASS, children: SLOT_PICKER_HEADING }),
|
|
3126
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3127
|
+
DayCalendar,
|
|
3128
|
+
{
|
|
3129
|
+
monthOffset,
|
|
3130
|
+
onMonthOffsetChange: NOOP,
|
|
3131
|
+
selectedDay: null,
|
|
3132
|
+
onSelectDay: NOOP,
|
|
3133
|
+
slotsByDay: null
|
|
3134
|
+
}
|
|
3135
|
+
)
|
|
3136
|
+
]
|
|
3137
|
+
}
|
|
3138
|
+
),
|
|
3139
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3140
|
+
"div",
|
|
3141
|
+
{
|
|
3142
|
+
className: modal ? _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, MODAL_COLUMN_BOX, MODAL_TIMES_H, "min-w-0 content-md:flex-1") : _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, COLUMN_BOX, "min-w-0 content-md:flex-1"),
|
|
3143
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TimeChipsSkeleton, {})
|
|
3144
|
+
}
|
|
3145
|
+
)
|
|
3012
3146
|
] });
|
|
3013
3147
|
}
|
|
3014
3148
|
function TimeChipsSkeleton() {
|
|
@@ -3022,6 +3156,7 @@ function TimeChipsSkeleton() {
|
|
|
3022
3156
|
}
|
|
3023
3157
|
function SlotPicker({
|
|
3024
3158
|
slots,
|
|
3159
|
+
layout = "card",
|
|
3025
3160
|
timezone,
|
|
3026
3161
|
monthOffset,
|
|
3027
3162
|
onMonthOffsetChange,
|
|
@@ -3050,64 +3185,77 @@ function SlotPicker({
|
|
|
3050
3185
|
const daySlots = selectedDay ? _nullishCoalesce(slotsByDay.get(selectedDay), () => ( [])) : [];
|
|
3051
3186
|
const monthPrefix = `${visibleMonth.getFullYear()}-${String(visibleMonth.getMonth() + 1).padStart(2, "0")}`;
|
|
3052
3187
|
const monthHasSlots = [...slotsByDay.keys()].some((key) => key.startsWith(monthPrefix));
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
children: [
|
|
3104
|
-
"
|
|
3105
|
-
monthLabelFor(monthOffset
|
|
3106
|
-
|
|
3107
|
-
|
|
3188
|
+
const modal = layout === "modal";
|
|
3189
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: modal ? MODAL_ROW_CLASS : SLOT_ROW_CLASS, children: [
|
|
3190
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
3191
|
+
"div",
|
|
3192
|
+
{
|
|
3193
|
+
className: modal ? _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, MODAL_COLUMN_BOX, MODAL_COLUMN_DIVIDER, MODAL_CALENDAR_W) : _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, COLUMN_BOX, COLUMN_DIVIDER, CALENDAR_W, "content-md:overflow-y-auto"),
|
|
3194
|
+
children: [
|
|
3195
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: COLUMN_HEADING_CLASS, children: SLOT_PICKER_HEADING }),
|
|
3196
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3197
|
+
DayCalendar,
|
|
3198
|
+
{
|
|
3199
|
+
monthOffset,
|
|
3200
|
+
onMonthOffsetChange,
|
|
3201
|
+
selectedDay,
|
|
3202
|
+
onSelectDay,
|
|
3203
|
+
slotsByDay: isLoading ? null : slotsByDay
|
|
3204
|
+
}
|
|
3205
|
+
)
|
|
3206
|
+
]
|
|
3207
|
+
}
|
|
3208
|
+
),
|
|
3209
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3210
|
+
"div",
|
|
3211
|
+
{
|
|
3212
|
+
className: modal ? _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, MODAL_COLUMN_BOX, MODAL_TIMES_H, "min-w-0 content-md:flex-1") : _chunk3ATAYP36cjs.cn.call(void 0, COLUMN_STACK, COLUMN_BOX, "min-w-0 content-md:flex-1"),
|
|
3213
|
+
children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TimeChipsSkeleton, {}) : selectedDay ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
3214
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: COLUMN_HEADING_CLASS, children: _chunkABLUMGCIcjs.formatDateWithTimezone.call(void 0, dateFromDayKey(selectedDay), _chunkABLUMGCIcjs.VIEWER_TIMEZONE, "weekday", { viewerLocale: true }) }),
|
|
3215
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: modal ? MODAL_CHIP_GRID_CLASS : CHIP_GRID_CLASS, children: daySlots.map((ms) => {
|
|
3216
|
+
const isSelected = selectedSlot === ms;
|
|
3217
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3218
|
+
_chunk2QMBXGMQcjs.Button,
|
|
3219
|
+
{
|
|
3220
|
+
variant: isSelected ? void 0 : "outline",
|
|
3221
|
+
disabled: isSubmitting,
|
|
3222
|
+
loading: isSubmitting && isSelected,
|
|
3223
|
+
onClick: () => {
|
|
3224
|
+
if (isSubmitting) return;
|
|
3225
|
+
onSelectSlot(ms);
|
|
3226
|
+
},
|
|
3227
|
+
className: CHIP_CLASS,
|
|
3228
|
+
children: timeLabelInZone(ms, timezone)
|
|
3229
|
+
},
|
|
3230
|
+
ms
|
|
3231
|
+
);
|
|
3232
|
+
}) })
|
|
3233
|
+
] }) : monthHasSlots ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Pick a day to see available times." }) : (
|
|
3234
|
+
// A fully-booked month used to just SAY "try the next one" and leave
|
|
3235
|
+
// the visitor to find the chevron in the other column. The way out
|
|
3236
|
+
// of a dead end belongs in the dead end.
|
|
3237
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col items-start gap-[var(--spacing-system-s)]", children: [
|
|
3238
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: [
|
|
3239
|
+
"No available times in ",
|
|
3240
|
+
monthLabelFor(monthOffset),
|
|
3241
|
+
"."
|
|
3242
|
+
] }),
|
|
3243
|
+
monthOffset < _chunkBM6JZRVDcjs.MAX_MONTH_OFFSET && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
3244
|
+
_chunk2QMBXGMQcjs.Button,
|
|
3245
|
+
{
|
|
3246
|
+
variant: "outline",
|
|
3247
|
+
onClick: () => onMonthOffsetChange(monthOffset + 1),
|
|
3248
|
+
rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "size-5" }),
|
|
3249
|
+
children: [
|
|
3250
|
+
"Check ",
|
|
3251
|
+
monthLabelFor(monthOffset + 1)
|
|
3252
|
+
]
|
|
3253
|
+
}
|
|
3254
|
+
)
|
|
3255
|
+
] })
|
|
3108
3256
|
)
|
|
3109
|
-
|
|
3110
|
-
)
|
|
3257
|
+
}
|
|
3258
|
+
)
|
|
3111
3259
|
] });
|
|
3112
3260
|
}
|
|
3113
3261
|
|
|
@@ -3116,7 +3264,7 @@ function SlotPicker({
|
|
|
3116
3264
|
|
|
3117
3265
|
|
|
3118
3266
|
function useNextAvailableLabel(ms) {
|
|
3119
|
-
const hydrated =
|
|
3267
|
+
const hydrated = _chunk7YDF3QBNcjs.useIsHydrated.call(void 0, );
|
|
3120
3268
|
return _react.useMemo.call(void 0, () => {
|
|
3121
3269
|
if (!hydrated || ms == null) return null;
|
|
3122
3270
|
return _chunkABLUMGCIcjs.formatDateWithTimezone.call(void 0, ms, _chunkABLUMGCIcjs.VIEWER_TIMEZONE, "shortWeekdayDateTime", { viewerLocale: true }) || null;
|
|
@@ -3144,7 +3292,7 @@ function DirectoryRow({
|
|
|
3144
3292
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-primary text-h3", children: link.title }),
|
|
3145
3293
|
subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: subtitle })
|
|
3146
3294
|
] }),
|
|
3147
|
-
audienceLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3295
|
+
audienceLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLJ46XYYPcjs.StatusBadge, { text: `For ${audienceLabel}`, singleLine: true, className: "hidden shrink-0 content-sm:inline-flex" }),
|
|
3148
3296
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUY6A6TEYcjs.AvatarStack, { people: link.hosts, max: 3, size: "md", label: "Hosts", className: "flex shrink-0" }),
|
|
3149
3297
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "hidden w-44 shrink-0 flex-col items-end justify-center content-md:flex", children: [
|
|
3150
3298
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Next available" }),
|
|
@@ -3211,7 +3359,7 @@ function MeetingSchedulerDirectory({
|
|
|
3211
3359
|
};
|
|
3212
3360
|
}, [initialData, includeAll, apiBaseUrl]);
|
|
3213
3361
|
const rows = _react.useMemo.call(void 0, () => {
|
|
3214
|
-
const purposes = _nullishCoalesce(_optionalChain([data, 'optionalAccess',
|
|
3362
|
+
const purposes = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _41 => _41.purposes]), () => ( []));
|
|
3215
3363
|
return purposes.flatMap((p) => p.links.map((link) => ({ link, audienceLabel: p.label })));
|
|
3216
3364
|
}, [data]);
|
|
3217
3365
|
const totalPages = _chunkBLH2SFOOcjs.pageCount.call(void 0, rows.length, pageSize);
|
|
@@ -3225,7 +3373,7 @@ function MeetingSchedulerDirectory({
|
|
|
3225
3373
|
}
|
|
3226
3374
|
if (error) {
|
|
3227
3375
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col justify-center", className), style: { minHeight: rowsMinHeight + 104 }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3228
|
-
|
|
3376
|
+
_chunk4N7KGOBScjs.EmptyState,
|
|
3229
3377
|
{
|
|
3230
3378
|
type: "generic",
|
|
3231
3379
|
title: "We couldn't load available call times",
|
|
@@ -3236,7 +3384,7 @@ function MeetingSchedulerDirectory({
|
|
|
3236
3384
|
}
|
|
3237
3385
|
if (rows.length === 0) {
|
|
3238
3386
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col justify-center", className), style: { minHeight: rowsMinHeight + 104 }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3239
|
-
|
|
3387
|
+
_chunk4N7KGOBScjs.EmptyState,
|
|
3240
3388
|
{
|
|
3241
3389
|
type: "generic",
|
|
3242
3390
|
title: "No call times are published right now",
|
|
@@ -3248,7 +3396,7 @@ function MeetingSchedulerDirectory({
|
|
|
3248
3396
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col", className), children: [
|
|
3249
3397
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full flex-col gap-4", style: { minHeight: rowsMinHeight }, children: pageRows.map(({ link, audienceLabel }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DirectoryRow, { link, audienceLabel, bookingBasePath }, link.id)) }),
|
|
3250
3398
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "mt-8 flex w-full items-center justify-center", PAGINATION_SLOT_H), children: totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3251
|
-
|
|
3399
|
+
_chunkYIOWV7LScjs.PersistentPaginationWrapper,
|
|
3252
3400
|
{
|
|
3253
3401
|
isLoading,
|
|
3254
3402
|
currentPage: page,
|
|
@@ -3319,6 +3467,18 @@ function isNativelyBookable(availability) {
|
|
|
3319
3467
|
}
|
|
3320
3468
|
return true;
|
|
3321
3469
|
}
|
|
3470
|
+
var MODAL_STACK_CLASS = "flex flex-col gap-[var(--spacing-system-l)]";
|
|
3471
|
+
var MODAL_CARD_CLASS = "flex flex-col overflow-hidden rounded-md border border-ods-border bg-ods-card";
|
|
3472
|
+
var MODAL_STEP_CLASS = "flex flex-col p-[var(--spacing-system-m)]";
|
|
3473
|
+
var NOOP2 = () => void 0;
|
|
3474
|
+
var MODAL_FIELD_ROWS = [[{ name: "firstName" }, { name: "lastName" }], [{ name: "email" }]];
|
|
3475
|
+
var MODAL_PRIMARY_CLASS = "flex-1 content-md:min-w-[15.5rem] content-md:flex-none";
|
|
3476
|
+
function ModalFooter({ onCancel, primary }) {
|
|
3477
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-[var(--spacing-system-l)] content-md:justify-end", children: [
|
|
3478
|
+
onCancel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2QMBXGMQcjs.Button, { variant: "outline", onClick: onCancel, className: "flex-1 content-md:hidden", children: "Cancel" }),
|
|
3479
|
+
primary
|
|
3480
|
+
] });
|
|
3481
|
+
}
|
|
3322
3482
|
function HubSpotMeetingScheduler({
|
|
3323
3483
|
meetingId,
|
|
3324
3484
|
apiBaseUrl = "",
|
|
@@ -3335,7 +3495,8 @@ function HubSpotMeetingScheduler({
|
|
|
3335
3495
|
flow = DEFAULT_SCHEDULER_FLOW,
|
|
3336
3496
|
detailsForm: DetailsForm = BookingForm,
|
|
3337
3497
|
detailsFormProps,
|
|
3338
|
-
rescue = null
|
|
3498
|
+
rescue = null,
|
|
3499
|
+
layout = "card"
|
|
3339
3500
|
}) {
|
|
3340
3501
|
const {
|
|
3341
3502
|
availability,
|
|
@@ -3349,7 +3510,10 @@ function HubSpotMeetingScheduler({
|
|
|
3349
3510
|
isSubmitting
|
|
3350
3511
|
} = useMeetingBooking({ meetingId, apiBaseUrl, initialAvailability });
|
|
3351
3512
|
const detailsFirst = flow === "details-first";
|
|
3352
|
-
const
|
|
3513
|
+
const modal = layout === "modal" && !detailsFirst;
|
|
3514
|
+
const modalFormId = _react.useId.call(void 0, );
|
|
3515
|
+
const [modalFormValid, setModalFormValid] = _react.useState.call(void 0, false);
|
|
3516
|
+
const hydrated = _chunk7YDF3QBNcjs.useIsHydrated.call(void 0, );
|
|
3353
3517
|
const [pickedTimezone, setTimezone] = _react.useState.call(void 0, null);
|
|
3354
3518
|
const resolvedLocalTimezone = _react.useMemo.call(void 0, () => {
|
|
3355
3519
|
if (!hydrated) return null;
|
|
@@ -3368,7 +3532,7 @@ function HubSpotMeetingScheduler({
|
|
|
3368
3532
|
onStageChangeRef.current = onStageChange;
|
|
3369
3533
|
});
|
|
3370
3534
|
_react.useEffect.call(void 0, () => {
|
|
3371
|
-
_optionalChain([onStageChangeRef, 'access',
|
|
3535
|
+
_optionalChain([onStageChangeRef, 'access', _42 => _42.current, 'optionalCall', _43 => _43(stage)]);
|
|
3372
3536
|
}, [stage]);
|
|
3373
3537
|
const [stash, setStash] = _react.useState.call(void 0, null);
|
|
3374
3538
|
const inFlightRef = _react.useRef.call(void 0, false);
|
|
@@ -3399,8 +3563,8 @@ function HubSpotMeetingScheduler({
|
|
|
3399
3563
|
_react.useEffect.call(void 0, () => {
|
|
3400
3564
|
autoAdvanceCount.current = 0;
|
|
3401
3565
|
}, [meetingId]);
|
|
3402
|
-
const durations = _react.useMemo.call(void 0, () => _nullishCoalesce(_optionalChain([availability, 'optionalAccess',
|
|
3403
|
-
const shownHosts = _nullishCoalesce(_nullishCoalesce(hosts, () => ( _optionalChain([availability, 'optionalAccess',
|
|
3566
|
+
const durations = _react.useMemo.call(void 0, () => _nullishCoalesce(_optionalChain([availability, 'optionalAccess', _44 => _44.durationsMs]), () => ( [])), [_optionalChain([availability, 'optionalAccess', _45 => _45.durationsMs])]);
|
|
3567
|
+
const shownHosts = _nullishCoalesce(_nullishCoalesce(hosts, () => ( _optionalChain([availability, 'optionalAccess', _46 => _46.hosts]))), () => ( []));
|
|
3404
3568
|
const durationMs = _nullishCoalesce(_nullishCoalesce(pickedDurationMs, () => ( durations[0])), () => ( null));
|
|
3405
3569
|
const slots = _react.useMemo.call(void 0, () => {
|
|
3406
3570
|
if (!availability || durationMs == null) return [];
|
|
@@ -3460,7 +3624,7 @@ function HubSpotMeetingScheduler({
|
|
|
3460
3624
|
_chunk4FWURR3Wcjs.completeFormRescue.call(void 0, rescue, payload[_chunkW2RM764Dcjs.FORM_RESCUE_ATTEMPT_FIELD]);
|
|
3461
3625
|
setConfirmation(result.confirmation);
|
|
3462
3626
|
setStep("confirmed");
|
|
3463
|
-
_optionalChain([onBooked, 'optionalCall',
|
|
3627
|
+
_optionalChain([onBooked, 'optionalCall', _47 => _47(result.confirmation)]);
|
|
3464
3628
|
return;
|
|
3465
3629
|
}
|
|
3466
3630
|
const code = _nullishCoalesce(result.code, () => ( "TEMPORARILY_UNAVAILABLE"));
|
|
@@ -3499,6 +3663,21 @@ function HubSpotMeetingScheduler({
|
|
|
3499
3663
|
const stepPanelClass = _chunk3ATAYP36cjs.cn.call(void 0, STEP_PANEL_CLASS, detailsFirst && boxed && "min-h-0 overflow-y-auto");
|
|
3500
3664
|
const degraded = (message) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SchedulerDegradedCard, { flow, className, message, action: escapeHatch });
|
|
3501
3665
|
const degradedCard = degraded("We couldn't load available call times. Please try again shortly.");
|
|
3666
|
+
if (modal && isLoadingAvailability && !availability) {
|
|
3667
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, MODAL_STACK_CLASS, className), children: [
|
|
3668
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: MODAL_CARD_CLASS, children: [
|
|
3669
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SchedulerModalHeaderSkeleton, {}),
|
|
3670
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SlotPickerSkeleton, { monthOffset, layout: "modal" })
|
|
3671
|
+
] }),
|
|
3672
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3673
|
+
ModalFooter,
|
|
3674
|
+
{
|
|
3675
|
+
onCancel: onBack,
|
|
3676
|
+
primary: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2QMBXGMQcjs.Button, { disabled: true, onClick: NOOP2, className: MODAL_PRIMARY_CLASS, children: "Continue" })
|
|
3677
|
+
}
|
|
3678
|
+
)
|
|
3679
|
+
] });
|
|
3680
|
+
}
|
|
3502
3681
|
if (isLoadingAvailability && !availability) {
|
|
3503
3682
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: cardClass, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: innerClass, children: [
|
|
3504
3683
|
!formOnly && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ContextPanelSkeleton, { onBack: backEdge, className: CONTEXT_PANEL_CLASS }),
|
|
@@ -3508,8 +3687,8 @@ function HubSpotMeetingScheduler({
|
|
|
3508
3687
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: stepPanelClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3509
3688
|
BookingFormSkeleton,
|
|
3510
3689
|
{
|
|
3511
|
-
fieldRows: _optionalChain([detailsFormProps, 'optionalAccess',
|
|
3512
|
-
consent: Boolean(_optionalChain([detailsFormProps, 'optionalAccess',
|
|
3690
|
+
fieldRows: _optionalChain([detailsFormProps, 'optionalAccess', _48 => _48.fieldRows]),
|
|
3691
|
+
consent: Boolean(_optionalChain([detailsFormProps, 'optionalAccess', _49 => _49.consent])),
|
|
3513
3692
|
footerNote: preset.footerNote
|
|
3514
3693
|
}
|
|
3515
3694
|
) })
|
|
@@ -3520,6 +3699,121 @@ function HubSpotMeetingScheduler({
|
|
|
3520
3699
|
if (!isNativelyBookable(availability)) {
|
|
3521
3700
|
return degraded("This meeting type is booked directly on HubSpot.");
|
|
3522
3701
|
}
|
|
3702
|
+
if (modal) {
|
|
3703
|
+
const modalBack = step === "details" ? backToSlot : onBack;
|
|
3704
|
+
const onSelectDuration = (ms) => {
|
|
3705
|
+
setDurationMs(ms);
|
|
3706
|
+
setSelectedDay(null);
|
|
3707
|
+
setSelectedSlot(null);
|
|
3708
|
+
};
|
|
3709
|
+
const summary = selectedSlot != null && durationMs != null && timezone != null ? `${_chunkABLUMGCIcjs.formatDateWithTimezone.call(void 0, selectedSlot, timezone, "weekdayDateTimeZoned", { viewerLocale: true })} \xB7 ${_chunkABLUMGCIcjs.formatDurationCompact.call(void 0, durationMs / 1e3)}` : null;
|
|
3710
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, MODAL_STACK_CLASS, className), children: [
|
|
3711
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: MODAL_CARD_CLASS, children: [
|
|
3712
|
+
modalBack && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3713
|
+
_chunkU2O5YQRPcjs.BackButton,
|
|
3714
|
+
{
|
|
3715
|
+
onClick: modalBack,
|
|
3716
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
3717
|
+
"px-[var(--spacing-system-m)] pt-[var(--spacing-system-m)]",
|
|
3718
|
+
step === "slot" && "content-md:hidden"
|
|
3719
|
+
)
|
|
3720
|
+
}
|
|
3721
|
+
),
|
|
3722
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3723
|
+
SchedulerModalHeader,
|
|
3724
|
+
{
|
|
3725
|
+
hosts: shownHosts,
|
|
3726
|
+
durationsMs: durations,
|
|
3727
|
+
selectedDurationMs: durationMs,
|
|
3728
|
+
onSelectDuration,
|
|
3729
|
+
timezone,
|
|
3730
|
+
onTimezoneChange: setTimezone,
|
|
3731
|
+
locked: step !== "slot",
|
|
3732
|
+
showTimezone: step === "slot"
|
|
3733
|
+
}
|
|
3734
|
+
),
|
|
3735
|
+
step === "confirmed" && confirmation && timezone ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: MODAL_STEP_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Confirmation, { confirmation, timezone }) }) : step === "details" && durationMs != null && selectedSlot != null && timezone ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, MODAL_STEP_CLASS, "gap-[var(--spacing-system-m)]"), children: [
|
|
3736
|
+
summary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: summary }),
|
|
3737
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3738
|
+
DetailsForm,
|
|
3739
|
+
{
|
|
3740
|
+
fieldRows: MODAL_FIELD_ROWS,
|
|
3741
|
+
...detailsFormProps,
|
|
3742
|
+
availability,
|
|
3743
|
+
meetingId,
|
|
3744
|
+
startTimeMs: selectedSlot,
|
|
3745
|
+
durationMs,
|
|
3746
|
+
timezone,
|
|
3747
|
+
formId: modalFormId,
|
|
3748
|
+
hideSubmit: true,
|
|
3749
|
+
onValidityChange: setModalFormValid,
|
|
3750
|
+
isSubmitting,
|
|
3751
|
+
onSubmit: handleSubmit,
|
|
3752
|
+
honeypotInputProps,
|
|
3753
|
+
getSignals,
|
|
3754
|
+
rescue
|
|
3755
|
+
}
|
|
3756
|
+
)
|
|
3757
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
3758
|
+
bookingError === "SLOT_TAKEN" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWCY35GB5cjs.Alert, { variant: "warning", className: "mx-[var(--spacing-system-m)] mt-[var(--spacing-system-m)] w-auto", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWCY35GB5cjs.AlertDescription, { children: "That time was just taken \u2014 pick another slot below. (If you already submitted, check your email for a confirmation before rebooking.)" }) }),
|
|
3759
|
+
timezone && durationMs != null ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3760
|
+
SlotPicker,
|
|
3761
|
+
{
|
|
3762
|
+
layout: "modal",
|
|
3763
|
+
slots,
|
|
3764
|
+
timezone,
|
|
3765
|
+
monthOffset,
|
|
3766
|
+
onMonthOffsetChange: (o) => {
|
|
3767
|
+
setSelectedDay(null);
|
|
3768
|
+
setSelectedSlot(null);
|
|
3769
|
+
setMonthOffset(o);
|
|
3770
|
+
},
|
|
3771
|
+
selectedSlot,
|
|
3772
|
+
onSelectSlot: setSelectedSlot,
|
|
3773
|
+
selectedDay,
|
|
3774
|
+
onSelectDay: setSelectedDay,
|
|
3775
|
+
isLoading: isLoadingAvailability
|
|
3776
|
+
}
|
|
3777
|
+
) : durations.length === 0 && !isFetchingAvailability ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, MODAL_STEP_CLASS, "items-start gap-[var(--spacing-system-m)]"), children: [
|
|
3778
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "No call times are published right now." }),
|
|
3779
|
+
escapeHatch
|
|
3780
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SlotPickerSkeleton, { monthOffset, layout: "modal" })
|
|
3781
|
+
] })
|
|
3782
|
+
] }),
|
|
3783
|
+
step === "slot" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3784
|
+
ModalFooter,
|
|
3785
|
+
{
|
|
3786
|
+
onCancel: onBack,
|
|
3787
|
+
primary: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3788
|
+
_chunk2QMBXGMQcjs.Button,
|
|
3789
|
+
{
|
|
3790
|
+
disabled: selectedSlot == null || durationMs == null,
|
|
3791
|
+
onClick: () => setStep("details"),
|
|
3792
|
+
className: MODAL_PRIMARY_CLASS,
|
|
3793
|
+
children: "Continue"
|
|
3794
|
+
}
|
|
3795
|
+
)
|
|
3796
|
+
}
|
|
3797
|
+
),
|
|
3798
|
+
step === "details" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3799
|
+
ModalFooter,
|
|
3800
|
+
{
|
|
3801
|
+
onCancel: onBack,
|
|
3802
|
+
primary: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3803
|
+
_chunk2QMBXGMQcjs.Button,
|
|
3804
|
+
{
|
|
3805
|
+
type: "submit",
|
|
3806
|
+
form: modalFormId,
|
|
3807
|
+
loading: isSubmitting,
|
|
3808
|
+
disabled: isSubmitting || !modalFormValid,
|
|
3809
|
+
className: MODAL_PRIMARY_CLASS,
|
|
3810
|
+
children: preset.submitLabel
|
|
3811
|
+
}
|
|
3812
|
+
)
|
|
3813
|
+
}
|
|
3814
|
+
)
|
|
3815
|
+
] });
|
|
3816
|
+
}
|
|
3523
3817
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: cardClass, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: innerClass, children: [
|
|
3524
3818
|
!formOnly && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3525
3819
|
SchedulerContextPanel,
|
|
@@ -3570,7 +3864,7 @@ function HubSpotMeetingScheduler({
|
|
|
3570
3864
|
deferSlot: detailsFirst,
|
|
3571
3865
|
submitLabel: preset.submitLabel,
|
|
3572
3866
|
footerNote: preset.footerNote,
|
|
3573
|
-
initialValues: detailsFirst ? _optionalChain([stash, 'optionalAccess',
|
|
3867
|
+
initialValues: detailsFirst ? _optionalChain([stash, 'optionalAccess', _50 => _50.payload]) : void 0,
|
|
3574
3868
|
isSubmitting,
|
|
3575
3869
|
onSubmit: detailsFirst ? stashDetails : handleSubmit,
|
|
3576
3870
|
honeypotInputProps,
|
|
@@ -3580,11 +3874,11 @@ function HubSpotMeetingScheduler({
|
|
|
3580
3874
|
)
|
|
3581
3875
|
] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-m)] content-md:min-h-0 content-md:flex-1", children: [
|
|
3582
3876
|
bookingError === "SLOT_TAKEN" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3583
|
-
|
|
3877
|
+
_chunkWCY35GB5cjs.Alert,
|
|
3584
3878
|
{
|
|
3585
3879
|
variant: "warning",
|
|
3586
3880
|
className: "mx-[var(--spacing-system-l)] mt-[var(--spacing-system-l)] w-auto content-lg:m-0 content-lg:w-full",
|
|
3587
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3881
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWCY35GB5cjs.AlertDescription, { children: "That time was just taken \u2014 pick another slot below. (If you already submitted, check your email for a confirmation before rebooking.)" })
|
|
3588
3882
|
}
|
|
3589
3883
|
),
|
|
3590
3884
|
timezone && durationMs != null ? (
|
|
@@ -3607,7 +3901,7 @@ function HubSpotMeetingScheduler({
|
|
|
3607
3901
|
onSelectSlot: (ms) => {
|
|
3608
3902
|
if (!detailsFirst) {
|
|
3609
3903
|
setSelectedSlot(ms);
|
|
3610
|
-
setStep("details");
|
|
3904
|
+
if (!modal) setStep("details");
|
|
3611
3905
|
return;
|
|
3612
3906
|
}
|
|
3613
3907
|
if (postInFlight() || !stash) return;
|