@flamingo-stack/openframe-frontend-core 0.0.741 → 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-SFY4UYPY.cjs → chunk-4A6OF4HI.cjs} +44 -44
- package/dist/{chunk-VA7OMDZO.cjs → chunk-4FWURR3W.cjs} +50 -50
- package/dist/{chunk-WBANGORJ.cjs → chunk-4N7KGOBS.cjs} +3 -3
- package/dist/{chunk-PQ2M7P2U.cjs → chunk-5TCIRWHL.cjs} +9 -9
- package/dist/{chunk-FQN6STIM.cjs → chunk-6XCQXGQA.cjs} +20 -20
- package/dist/{chunk-BV5WZVOP.cjs → chunk-7YDF3QBN.cjs} +258 -257
- package/dist/{chunk-7ZFCR7UY.cjs → chunk-ABLUMGCI.cjs} +3 -3
- package/dist/{chunk-PX7FY655.cjs → chunk-ASMNNSUQ.cjs} +3 -3
- package/dist/{chunk-CWRVTQUO.cjs → chunk-BM6JZRVD.cjs} +101 -101
- package/dist/{chunk-LZ6NOVXX.cjs → chunk-BNTELSHZ.cjs} +103 -103
- package/dist/{chunk-SA7LDEVJ.cjs → chunk-CSJO7ZGN.cjs} +3 -3
- package/dist/{chunk-VOX4E6AX.cjs → chunk-DGFDBPO7.cjs} +7 -5
- package/dist/{chunk-KLI4OSRA.cjs → chunk-GAGNKWOC.cjs} +2 -2
- package/dist/{chunk-QEUGYHFB.cjs → chunk-IRWJKVVZ.cjs} +20 -20
- package/dist/{chunk-YRE3O65E.cjs → chunk-JGZEHBBD.cjs} +12 -12
- package/dist/{chunk-FICJS5OA.cjs → chunk-KTPR66EE.cjs} +4 -4
- package/dist/{chunk-YXKB5WRE.cjs → chunk-LJ46XYYP.cjs} +60 -48
- package/dist/{chunk-AAFW4STC.cjs → chunk-LU7TD6QS.cjs} +5 -5
- package/dist/{chunk-JFS6TZDX.cjs → chunk-MLZKPDPZ.cjs} +64 -64
- package/dist/{chunk-EKGL5K5K.cjs → chunk-MT7ELGCV.cjs} +17 -17
- package/dist/{chunk-HYBMADYO.cjs → chunk-NGUJVM6O.cjs} +22 -22
- package/dist/{chunk-3HPB4H4C.cjs → chunk-NTGIQP7O.cjs} +7 -7
- package/dist/{chunk-GABDE3FM.cjs → chunk-OWGLRE74.cjs} +19 -19
- package/dist/{chunk-IFS4AH77.cjs → chunk-QYLIHZKZ.cjs} +10 -10
- package/dist/{chunk-GVTDVS5U.cjs → chunk-R34JD6NP.cjs} +3 -3
- package/dist/{chunk-YQ37ZCD2.cjs → chunk-SQHTX5XP.cjs} +16 -16
- package/dist/{chunk-XJ36TEGE.cjs → chunk-TKASH5YC.cjs} +47 -47
- package/dist/{chunk-DSVNFRY5.cjs → chunk-U2O5YQRP.cjs} +38 -38
- package/dist/{chunk-5SVOGLNK.cjs → chunk-UL6ZZSL4.cjs} +6 -6
- package/dist/{chunk-O67V3HJR.cjs → chunk-URVIPSAJ.cjs} +24 -24
- package/dist/{chunk-GSWQZX23.cjs → chunk-UY6A6TEY.cjs} +2 -2
- package/dist/{chunk-DUVOQHQI.cjs → chunk-W2RM764D.cjs} +7 -7
- package/dist/{chunk-IK2RJUEA.cjs → chunk-WCY35GB5.cjs} +845 -810
- package/dist/{chunk-NTJE6SM6.cjs → chunk-WI2OTGKC.cjs} +2 -2
- package/dist/{chunk-ITPEFCQ2.cjs → chunk-XJO5ZHO6.cjs} +32 -32
- package/dist/{chunk-I6UE6YVM.cjs → chunk-Y2FN3E32.cjs} +6 -6
- package/dist/{chunk-4XL4YEZM.cjs → chunk-YDFKFLDQ.cjs} +8 -8
- package/dist/{chunk-HF7Z2E4W.cjs → chunk-YIOWV7LS.cjs} +2 -2
- package/dist/{chunk-B3XBJCOD.cjs → chunk-YJRMCFX3.cjs} +7 -7
- package/dist/{chunk-ZYOS7LVQ.cjs → chunk-YWMUZLU2.cjs} +89 -89
- package/dist/{chunk-ZJPDGVA6.cjs → chunk-ZP5DFF3Q.cjs} +28 -28
- package/dist/{cloud-tenants-MVJK52I2.cjs → cloud-tenants-DZC3ACG6.cjs} +24 -24
- package/dist/components/case-studies/index.cjs +37 -37
- 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 +17 -17
- 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 +25 -25
- package/dist/components/docs/index.cjs +28 -28
- package/dist/components/embeds/index.cjs +25 -25
- package/dist/components/faq/index.cjs +26 -26
- package/dist/components/features/index.cjs +24 -24
- 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 +144 -144
- package/dist/components/index.cjs +87 -85
- 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 +452 -158
- 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 +27 -27
- package/dist/components/onboarding-guides/index.cjs +27 -27
- package/dist/components/product-demo/index.cjs +9 -9
- package/dist/components/related-content/index.cjs +12 -12
- 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 +30 -30
- package/dist/components/ui/index.cjs +26 -24
- 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-W3S7Q2PG.cjs → devices-MFGE2JQV.cjs} +25 -25
- package/dist/{embeddable-chat-6JKKFQEB.cjs → embeddable-chat-7ZEGCDVF.cjs} +92 -92
- package/dist/hooks/index.cjs +10 -10
- package/dist/index.cjs +32 -30
- package/dist/{knowledge-AIYQ4FC3.cjs → knowledge-7VPS2ZBU.cjs} +25 -25
- package/dist/{logs-7SHJ2ARE.cjs → logs-M3QPAUH7.cjs} +32 -32
- package/dist/{policies-EIZJ5SUP.cjs → policies-UAVE6X62.cjs} +28 -28
- package/dist/{remote-session-BZMNE6D2.cjs → remote-session-N4PJB5FW.cjs} +10 -10
- package/dist/{scripts-J2FWC7E4.cjs → scripts-EDQ3IQKW.cjs} +31 -31
- package/dist/{software-update-QAMNASVF.cjs → software-update-B2MZVNPK.cjs} +28 -28
- package/dist/{tickets-board-CEDHD3KB.cjs → tickets-board-O753S4ZB.cjs} +14 -14
- package/dist/utils/embed-authed-fetch.d.ts +33 -0
- package/dist/utils/embed-authed-fetch.d.ts.map +1 -1
- package/dist/utils/embed-authed-fetch.js +3 -1
- package/dist/utils/index.cjs +3 -1
- package/dist/{video-file-player-ZH2ILAPO.cjs → video-file-player-QZ3YOLHO.cjs} +2 -2
- 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
- package/src/utils/embed-authed-fetch.ts +42 -1
|
@@ -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,9 +16,9 @@ var _chunkWBANGORJcjs = require('../../chunk-WBANGORJ.cjs');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
20
|
-
require('../../chunk-
|
|
21
|
-
require('../../chunk-
|
|
19
|
+
var _chunkWCY35GB5cjs = require('../../chunk-WCY35GB5.cjs');
|
|
20
|
+
require('../../chunk-URVIPSAJ.cjs');
|
|
21
|
+
require('../../chunk-NTGIQP7O.cjs');
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@ require('../../chunk-3HPB4H4C.cjs');
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
var
|
|
29
|
+
var _chunkU2O5YQRPcjs = require('../../chunk-U2O5YQRP.cjs');
|
|
30
30
|
require('../../chunk-HQQE74RO.cjs');
|
|
31
31
|
require('../../chunk-DEY6XXGO.cjs');
|
|
32
32
|
|
|
@@ -34,25 +34,25 @@ require('../../chunk-DEY6XXGO.cjs');
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
var
|
|
38
|
-
require('../../chunk-
|
|
37
|
+
var _chunk4FWURR3Wcjs = require('../../chunk-4FWURR3W.cjs');
|
|
38
|
+
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
|
|
53
|
-
require('../../chunk-
|
|
52
|
+
var _chunk7YDF3QBNcjs = require('../../chunk-7YDF3QBN.cjs');
|
|
53
|
+
require('../../chunk-OWGLRE74.cjs');
|
|
54
54
|
require('../../chunk-3RFQPQ7Z.cjs');
|
|
55
|
-
require('../../chunk-
|
|
55
|
+
require('../../chunk-5TCIRWHL.cjs');
|
|
56
56
|
require('../../chunk-B27QEHYR.cjs');
|
|
57
57
|
require('../../chunk-ZOZR3QI2.cjs');
|
|
58
58
|
require('../../chunk-OMV5S5PI.cjs');
|
|
@@ -1844,30 +1844,30 @@ require('../../chunk-IYHH5EIO.cjs');
|
|
|
1844
1844
|
require('../../chunk-XIBCMGBW.cjs');
|
|
1845
1845
|
|
|
1846
1846
|
|
|
1847
|
-
var
|
|
1848
|
-
require('../../chunk-
|
|
1849
|
-
require('../../chunk-
|
|
1847
|
+
var _chunkW2RM764Dcjs = require('../../chunk-W2RM764D.cjs');
|
|
1848
|
+
require('../../chunk-CSJO7ZGN.cjs');
|
|
1849
|
+
require('../../chunk-WI2OTGKC.cjs');
|
|
1850
1850
|
require('../../chunk-JKX2C3I2.cjs');
|
|
1851
1851
|
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
|
|
1859
|
-
require('../../chunk-
|
|
1858
|
+
var _chunkLJ46XYYPcjs = require('../../chunk-LJ46XYYP.cjs');
|
|
1859
|
+
require('../../chunk-QYLIHZKZ.cjs');
|
|
1860
1860
|
require('../../chunk-63N4FN5V.cjs');
|
|
1861
1861
|
|
|
1862
1862
|
|
|
1863
|
-
var
|
|
1863
|
+
var _chunkUY6A6TEYcjs = require('../../chunk-UY6A6TEY.cjs');
|
|
1864
1864
|
|
|
1865
1865
|
|
|
1866
1866
|
|
|
1867
1867
|
|
|
1868
1868
|
|
|
1869
1869
|
|
|
1870
|
-
var
|
|
1870
|
+
var _chunkABLUMGCIcjs = require('../../chunk-ABLUMGCI.cjs');
|
|
1871
1871
|
require('../../chunk-S5C3OZCO.cjs');
|
|
1872
1872
|
require('../../chunk-32ASZMTV.cjs');
|
|
1873
1873
|
require('../../chunk-OOYBIS7D.cjs');
|
|
@@ -1881,11 +1881,11 @@ var _chunkBLH2SFOOcjs = require('../../chunk-BLH2SFOO.cjs');
|
|
|
1881
1881
|
require('../../chunk-I5MSCD57.cjs');
|
|
1882
1882
|
|
|
1883
1883
|
|
|
1884
|
-
var
|
|
1884
|
+
var _chunkASMNNSUQcjs = require('../../chunk-ASMNNSUQ.cjs');
|
|
1885
1885
|
require('../../chunk-CW3ML76U.cjs');
|
|
1886
|
-
require('../../chunk-
|
|
1887
|
-
require('../../chunk-
|
|
1888
|
-
require('../../chunk-
|
|
1886
|
+
require('../../chunk-R34JD6NP.cjs');
|
|
1887
|
+
require('../../chunk-KTPR66EE.cjs');
|
|
1888
|
+
require('../../chunk-DGFDBPO7.cjs');
|
|
1889
1889
|
require('../../chunk-HOTM4UM6.cjs');
|
|
1890
1890
|
require('../../chunk-UJ7AXHRZ.cjs');
|
|
1891
1891
|
|
|
@@ -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, () => {
|
|
@@ -2203,7 +2203,7 @@ function useMeetingBooking(options) {
|
|
|
2203
2203
|
queryKey: meetingAvailabilityKey(apiBaseUrl, meetingId, monthOffset),
|
|
2204
2204
|
queryFn: async ({ signal }) => {
|
|
2205
2205
|
const params = new URLSearchParams({ meeting: meetingId, monthOffset: String(monthOffset) });
|
|
2206
|
-
const res = await
|
|
2206
|
+
const res = await _chunkASMNNSUQcjs.contentFetch.call(void 0, `${apiBaseUrl}/api/meetings/availability?${params}`, { signal });
|
|
2207
2207
|
if (!res.ok) throw new Error(`availability ${res.status}`);
|
|
2208
2208
|
return await res.json();
|
|
2209
2209
|
},
|
|
@@ -2220,7 +2220,7 @@ function useMeetingBooking(options) {
|
|
|
2220
2220
|
const bookMutation = _reactquery.useMutation.call(void 0, {
|
|
2221
2221
|
mutationFn: async (payload) => {
|
|
2222
2222
|
try {
|
|
2223
|
-
const res = await
|
|
2223
|
+
const res = await _chunkASMNNSUQcjs.contentFetch.call(void 0, `${apiBaseUrl}/api/meetings/book`, {
|
|
2224
2224
|
method: "POST",
|
|
2225
2225
|
headers: { "Content-Type": "application/json" },
|
|
2226
2226
|
body: JSON.stringify(payload)
|
|
@@ -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,
|
|
@@ -2376,18 +2376,18 @@ var FIELD_CONTROLS = {
|
|
|
2376
2376
|
{
|
|
2377
2377
|
control,
|
|
2378
2378
|
name: registerName,
|
|
2379
|
-
render: ({ field: rhf }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
2379
|
+
render: ({ field: rhf }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU2O5YQRPcjs.Select, { value: _nullishCoalesce(rhf.value, () => ( "")), onValueChange: rhf.onChange, children: [
|
|
2380
2380
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2381
|
-
|
|
2381
|
+
_chunkU2O5YQRPcjs.SelectTrigger,
|
|
2382
2382
|
{
|
|
2383
2383
|
id,
|
|
2384
2384
|
"aria-required": field.required || void 0,
|
|
2385
2385
|
"aria-invalid": Boolean(error),
|
|
2386
2386
|
invalid: Boolean(error),
|
|
2387
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2387
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectValue, { placeholder: "Select\u2026" })
|
|
2388
2388
|
}
|
|
2389
2389
|
),
|
|
2390
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2390
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectContent, { children: (_nullishCoalesce(field.options, () => ( []))).map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectItem, { value: opt, children: optionLabel(field, opt) }, opt)) })
|
|
2391
2391
|
] })
|
|
2392
2392
|
}
|
|
2393
2393
|
),
|
|
@@ -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(
|
|
@@ -2543,7 +2555,7 @@ function BookingForm({
|
|
|
2543
2555
|
() => [...BUILT_IN_BOOKING_FIELDS.map((field) => field.name), ...supportedFields.map((field) => field.name)],
|
|
2544
2556
|
[supportedFields]
|
|
2545
2557
|
);
|
|
2546
|
-
const formRescue =
|
|
2558
|
+
const formRescue = _chunk4FWURR3Wcjs.useRescuedForm.call(void 0,
|
|
2547
2559
|
{ watch, getValues, setValue },
|
|
2548
2560
|
{
|
|
2549
2561
|
rescue,
|
|
@@ -2552,7 +2564,7 @@ function BookingForm({
|
|
|
2552
2564
|
fieldPath: (name) => BUILT_IN_BOOKING_FIELDS.some((field) => field.name === name) ? name : `formFields.${name}`
|
|
2553
2565
|
}
|
|
2554
2566
|
);
|
|
2555
|
-
const { toast } =
|
|
2567
|
+
const { toast } = _chunk4FWURR3Wcjs.useToast.call(void 0, );
|
|
2556
2568
|
const onInvalid = () => {
|
|
2557
2569
|
if (deniedEmailDomains && emailDomainDenied(getValues("email"), deniedEmailDomains)) {
|
|
2558
2570
|
toast({
|
|
@@ -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 })
|
|
@@ -2755,7 +2767,7 @@ function skeletonRows(fieldRows) {
|
|
|
2755
2767
|
// src/components/meeting-scheduler/confirmation.tsx
|
|
2756
2768
|
|
|
2757
2769
|
function Confirmation({ confirmation, timezone }) {
|
|
2758
|
-
const when =
|
|
2770
|
+
const when = _chunkABLUMGCIcjs.formatDateWithTimezone.call(void 0, confirmation.startTimeMs, timezone, "weekdayDateTimeZoned", {
|
|
2759
2771
|
viewerLocale: true
|
|
2760
2772
|
});
|
|
2761
2773
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col items-center justify-center gap-[var(--spacing-system-m)] text-center", children: [
|
|
@@ -2765,7 +2777,7 @@ function Confirmation({ confirmation, timezone }) {
|
|
|
2765
2777
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: [
|
|
2766
2778
|
when,
|
|
2767
2779
|
" \xB7 ",
|
|
2768
|
-
|
|
2780
|
+
_chunkABLUMGCIcjs.formatDurationCompact.call(void 0, confirmation.durationMs / 1e3)
|
|
2769
2781
|
] }),
|
|
2770
2782
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "A calendar invite is on its way to your email." })
|
|
2771
2783
|
] });
|
|
@@ -2786,7 +2798,7 @@ function ContextPanelSkeleton({
|
|
|
2786
2798
|
backLabel = "Back"
|
|
2787
2799
|
}) {
|
|
2788
2800
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, PANEL_STACK, className), children: [
|
|
2789
|
-
onBack && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2801
|
+
onBack && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.BackButton, { label: backLabel, onClick: onBack, className: BACK_BUTTON_CLASS }),
|
|
2790
2802
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: STRIP_BODY, children: [
|
|
2791
2803
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: STRIP_MAIN, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: IDENTITY_ROW, children: [
|
|
2792
2804
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xs)] content-lg:flex-none", children: [
|
|
@@ -2822,13 +2834,13 @@ function SchedulerContextPanel({
|
|
|
2822
2834
|
className
|
|
2823
2835
|
}) {
|
|
2824
2836
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, PANEL_STACK, className), children: [
|
|
2825
|
-
onBack && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2837
|
+
onBack && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.BackButton, { label: backLabel, onClick: onBack, className: BACK_BUTTON_CLASS }),
|
|
2826
2838
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: STRIP_BODY, children: [
|
|
2827
2839
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: STRIP_MAIN, children: [
|
|
2828
2840
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: IDENTITY_ROW, children: [
|
|
2829
2841
|
hosts.length > 0 && hosts.length <= 3 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex 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: [
|
|
2830
2842
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2831
|
-
|
|
2843
|
+
_chunkABLUMGCIcjs.SquareAvatar,
|
|
2832
2844
|
{
|
|
2833
2845
|
variant: "round",
|
|
2834
2846
|
size: "sm",
|
|
@@ -2843,7 +2855,7 @@ function SchedulerContextPanel({
|
|
|
2843
2855
|
] })
|
|
2844
2856
|
] }, host.name)) }),
|
|
2845
2857
|
hosts.length > 3 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xs)]", children: [
|
|
2846
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2858
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUY6A6TEYcjs.AvatarStack, { people: hosts, max: 4, size: "lg", label: "Hosts" }),
|
|
2847
2859
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: [
|
|
2848
2860
|
hosts.length,
|
|
2849
2861
|
" hosts on this calendar"
|
|
@@ -2853,7 +2865,7 @@ function SchedulerContextPanel({
|
|
|
2853
2865
|
// Post-selection, or a link that offers one length: a static line,
|
|
2854
2866
|
// which is what sits beside the host on the header-strip layouts.
|
|
2855
2867
|
selectedDurationMs != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "shrink-0 text-ods-text-secondary text-h6", children: [
|
|
2856
|
-
|
|
2868
|
+
_chunkABLUMGCIcjs.formatDurationCompact.call(void 0, selectedDurationMs / 1e3),
|
|
2857
2869
|
" call"
|
|
2858
2870
|
] })
|
|
2859
2871
|
) : null
|
|
@@ -2869,7 +2881,7 @@ function SchedulerContextPanel({
|
|
|
2869
2881
|
size: "small-legacy",
|
|
2870
2882
|
disabled,
|
|
2871
2883
|
onClick: () => onSelectDuration(ms),
|
|
2872
|
-
children:
|
|
2884
|
+
children: _chunkABLUMGCIcjs.formatDurationCompact.call(void 0, ms / 1e3)
|
|
2873
2885
|
},
|
|
2874
2886
|
ms
|
|
2875
2887
|
)) })
|
|
@@ -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
|
|
|
@@ -2916,7 +3025,7 @@ function dateFromDayKey(key) {
|
|
|
2916
3025
|
return new Date(y, m - 1, d, 12);
|
|
2917
3026
|
}
|
|
2918
3027
|
function timeLabelInZone(ms, timeZone) {
|
|
2919
|
-
return
|
|
3028
|
+
return _chunkABLUMGCIcjs.formatTimeWithTimezone.call(void 0, ms, timeZone, { viewerLocale: true });
|
|
2920
3029
|
}
|
|
2921
3030
|
var CALENDAR_W = "content-md:w-[19rem] content-md:shrink-0 content-lg:w-[16rem]";
|
|
2922
3031
|
var COLUMN_HEADING_CLASS = "shrink-0 text-h4 text-ods-text-primary";
|
|
@@ -2957,28 +3066,37 @@ 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);
|
|
2963
|
-
return
|
|
3081
|
+
return _chunkABLUMGCIcjs.formatDateWithTimezone.call(void 0, month, _chunkABLUMGCIcjs.VIEWER_TIMEZONE, "monthYear");
|
|
2964
3082
|
}
|
|
2965
3083
|
var DISABLE_EVERY_DAY = () => true;
|
|
2966
3084
|
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,10 +3264,10 @@ 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
|
-
return
|
|
3270
|
+
return _chunkABLUMGCIcjs.formatDateWithTimezone.call(void 0, ms, _chunkABLUMGCIcjs.VIEWER_TIMEZONE, "shortWeekdayDateTime", { viewerLocale: true }) || null;
|
|
3123
3271
|
}, [hydrated, ms]);
|
|
3124
3272
|
}
|
|
3125
3273
|
function DirectoryRow({
|
|
@@ -3130,7 +3278,7 @@ function DirectoryRow({
|
|
|
3130
3278
|
const nextLabel = useNextAvailableLabel(link.nextAvailableMs);
|
|
3131
3279
|
const subtitle = [
|
|
3132
3280
|
link.description,
|
|
3133
|
-
link.durationsMinutes.length > 0 ? link.durationsMinutes.map((m) =>
|
|
3281
|
+
link.durationsMinutes.length > 0 ? link.durationsMinutes.map((m) => _chunkABLUMGCIcjs.formatDurationCompact.call(void 0, m * 60)).join(" / ") : null,
|
|
3134
3282
|
link.kind === "team" ? "Team" : null
|
|
3135
3283
|
].filter(Boolean).join(" \u2022 ");
|
|
3136
3284
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -3144,8 +3292,8 @@ 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,
|
|
3148
|
-
/* @__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" }),
|
|
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" }),
|
|
3151
3299
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "min-h-5 text-ods-text-primary text-h6", children: link.nextAvailableMs == null ? "No times published" : _nullishCoalesce(nextLabel, () => ( " ")) })
|
|
@@ -3193,7 +3341,7 @@ function MeetingSchedulerDirectory({
|
|
|
3193
3341
|
setError(null);
|
|
3194
3342
|
try {
|
|
3195
3343
|
const qs = includeAll ? "?scope=all" : "";
|
|
3196
|
-
const res = await
|
|
3344
|
+
const res = await _chunkASMNNSUQcjs.contentFetch.call(void 0, `${apiBaseUrl}/api/meetings${qs}`, { signal: controller.signal });
|
|
3197
3345
|
if (!res.ok) throw new Error(`meetings ${res.status}`);
|
|
3198
3346
|
const payload = await res.json();
|
|
3199
3347
|
if (active) setData(payload);
|
|
@@ -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);
|
|
@@ -3382,8 +3546,8 @@ function HubSpotMeetingScheduler({
|
|
|
3382
3546
|
const [selectedSlot, setSelectedSlot] = _react.useState.call(void 0, null);
|
|
3383
3547
|
const [confirmation, setConfirmation] = _react.useState.call(void 0, null);
|
|
3384
3548
|
const [bookingError, setBookingError] = _react.useState.call(void 0, null);
|
|
3385
|
-
const { honeypotInputProps, getSignals, resetSignals } =
|
|
3386
|
-
const { toast } =
|
|
3549
|
+
const { honeypotInputProps, getSignals, resetSignals } = _chunk4FWURR3Wcjs.useHumanitySignals.call(void 0, );
|
|
3550
|
+
const { toast } = _chunk4FWURR3Wcjs.useToast.call(void 0, );
|
|
3387
3551
|
const autoAdvanceCount = _react.useRef.call(void 0, 0);
|
|
3388
3552
|
const [machineFor, setMachineFor] = _react.useState.call(void 0, meetingId);
|
|
3389
3553
|
if (machineFor !== meetingId) {
|
|
@@ -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 [];
|
|
@@ -3457,10 +3621,10 @@ function HubSpotMeetingScheduler({
|
|
|
3457
3621
|
return;
|
|
3458
3622
|
}
|
|
3459
3623
|
if (result.ok && result.confirmation) {
|
|
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,
|
|
@@ -3553,10 +3847,10 @@ function HubSpotMeetingScheduler({
|
|
|
3553
3847
|
durations.length > 0
|
|
3554
3848
|
) : durationMs != null && selectedSlot != null && timezone) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, stepPanelClass, "gap-[var(--spacing-system-m)]"), children: [
|
|
3555
3849
|
selectedSlot != null && durationMs != null && timezone != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: [
|
|
3556
|
-
|
|
3850
|
+
_chunkABLUMGCIcjs.formatDateWithTimezone.call(void 0, selectedSlot, timezone, "weekdayDateTimeZoned", { viewerLocale: true }),
|
|
3557
3851
|
" \xB7",
|
|
3558
3852
|
" ",
|
|
3559
|
-
|
|
3853
|
+
_chunkABLUMGCIcjs.formatDurationCompact.call(void 0, durationMs / 1e3)
|
|
3560
3854
|
] }),
|
|
3561
3855
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3562
3856
|
DetailsForm,
|
|
@@ -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;
|