@flamingo-stack/openframe-frontend-core 0.0.742 → 0.0.744

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-54EA4RLX.cjs → chunk-2JRCJV3M.cjs} +3 -3
  3. package/dist/{chunk-ZIFYSLIM.cjs → chunk-2UBR53AN.cjs} +4 -4
  4. package/dist/{chunk-Z2DQYKZA.cjs → chunk-35IQLGV3.cjs} +69 -69
  5. package/dist/{chunk-WIHHA54J.cjs → chunk-4A6OF4HI.cjs} +44 -44
  6. package/dist/{chunk-OBODY7F3.cjs → chunk-4N7KGOBS.cjs} +3 -3
  7. package/dist/{chunk-HIRVNBX5.cjs → chunk-65LJNDR2.cjs} +16 -16
  8. package/dist/{chunk-32Q7K5OP.cjs → chunk-7YDF3QBN.cjs} +116 -115
  9. package/dist/{chunk-DNFSMVXJ.cjs → chunk-AT6ZI4CO.cjs} +12 -12
  10. package/dist/{chunk-UWHCRIQQ.cjs → chunk-FTYQS6VI.cjs} +13 -13
  11. package/dist/{chunk-YQGDXH3M.cjs → chunk-GAGNKWOC.cjs} +2 -2
  12. package/dist/{chunk-L34TKFTS.cjs → chunk-H62FNZGG.cjs} +16 -16
  13. package/dist/{chunk-T433HSL6.cjs → chunk-HHL23RFC.cjs} +33 -33
  14. package/dist/{chunk-4PKORVOX.cjs → chunk-HJ4KGA2M.cjs} +441 -406
  15. package/dist/{chunk-4LDU32OB.cjs → chunk-HMSUYWSB.cjs} +4 -4
  16. package/dist/{chunk-UZLRSFGG.cjs → chunk-HTQJYN47.cjs} +30 -30
  17. package/dist/{chunk-XAA5EZ5T.cjs → chunk-JGZEHBBD.cjs} +6 -6
  18. package/dist/{chunk-5MH6BRPY.cjs → chunk-LJ46XYYP.cjs} +24 -12
  19. package/dist/{chunk-ISJXKKYW.cjs → chunk-NURAL5HD.cjs} +11 -11
  20. package/dist/{chunk-PS6T65KA.cjs → chunk-OC2LBQQJ.cjs} +90 -66
  21. package/dist/{chunk-HDBY2URA.cjs → chunk-PYWHDPVC.cjs} +31 -31
  22. package/dist/{chunk-R6SCSV2I.cjs → chunk-QSO56JZ2.cjs} +81 -81
  23. package/dist/{chunk-3LW43GIJ.cjs → chunk-QZYF2YQ3.cjs} +4 -4
  24. package/dist/{chunk-BI3XBCQX.cjs → chunk-YIOWV7LS.cjs} +2 -2
  25. package/dist/{chunk-H3UA7UY5.cjs → chunk-YJRMCFX3.cjs} +2 -2
  26. package/dist/{cloud-tenants-6ICAL3HO.cjs → cloud-tenants-JPXAXSPE.cjs} +7 -7
  27. package/dist/components/case-studies/index.cjs +19 -19
  28. package/dist/components/chat/entity-cards/onboarding-guide-card.d.ts.map +1 -1
  29. package/dist/components/chat/entity-cards/onboarding-guide-card.js +22 -12
  30. package/dist/components/chat/index.cjs +5 -5
  31. package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
  32. package/dist/components/chat/tool-execution-display.js +5 -4
  33. package/dist/components/chat/utils/history-merge.d.ts.map +1 -1
  34. package/dist/components/chat/utils/history-merge.js +25 -1
  35. package/dist/components/contact/index.cjs +8 -8
  36. package/dist/components/docs/index.cjs +11 -11
  37. package/dist/components/embeds/index.cjs +8 -8
  38. package/dist/components/faq/index.cjs +9 -9
  39. package/dist/components/features/index.cjs +7 -7
  40. package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts +1 -1
  41. package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts.map +1 -1
  42. package/dist/components/features/scripts/schedule-form/schedule-interval-input.js +15 -13
  43. package/dist/components/features/scripts/schedule-form/schedule-offline-fields.d.ts.map +1 -1
  44. package/dist/components/features/scripts/schedule-form/schedule-offline-fields.js +9 -7
  45. package/dist/components/help-center-pages/index.cjs +101 -101
  46. package/dist/components/index.cjs +59 -57
  47. package/dist/components/meeting-scheduler/booking-form.d.ts +11 -1
  48. package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
  49. package/dist/components/meeting-scheduler/booking-form.js +15 -3
  50. package/dist/components/meeting-scheduler/index.cjs +408 -114
  51. package/dist/components/meeting-scheduler/index.d.ts +16 -1
  52. package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
  53. package/dist/components/meeting-scheduler/index.js +157 -5
  54. package/dist/components/meeting-scheduler/modal-header.d.ts +27 -0
  55. package/dist/components/meeting-scheduler/modal-header.d.ts.map +1 -0
  56. package/dist/components/meeting-scheduler/modal-header.js +104 -0
  57. package/dist/components/meeting-scheduler/slot-picker.d.ts +13 -2
  58. package/dist/components/meeting-scheduler/slot-picker.d.ts.map +1 -1
  59. package/dist/components/meeting-scheduler/slot-picker.js +112 -73
  60. package/dist/components/navigation/index.cjs +10 -10
  61. package/dist/components/onboarding-guides/index.cjs +10 -10
  62. package/dist/components/product-demo/index.cjs +7 -7
  63. package/dist/components/related-content/index.cjs +5 -5
  64. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  65. package/dist/components/shared/product-release/product-release-card.js +2 -0
  66. package/dist/components/tickets/index.cjs +13 -13
  67. package/dist/components/ui/index.cjs +9 -7
  68. package/dist/components/ui/radio-group.d.ts +6 -0
  69. package/dist/components/ui/radio-group.d.ts.map +1 -1
  70. package/dist/components/ui/radio-group.js +65 -58
  71. package/dist/components/ui/tab-navigation.d.ts +19 -1
  72. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  73. package/dist/components/ui/tab-navigation.js +32 -8
  74. package/dist/{devices-OFP2IBKN.cjs → devices-ONC4JOVH.cjs} +8 -8
  75. package/dist/{embeddable-chat-4C22MGNC.cjs → embeddable-chat-7ZEGCDVF.cjs} +71 -71
  76. package/dist/index.cjs +13 -11
  77. package/dist/{knowledge-KKBCSNUA.cjs → knowledge-G7XU5YST.cjs} +8 -8
  78. package/dist/{logs-X2GRNO57.cjs → logs-5B7NY4G6.cjs} +15 -15
  79. package/dist/{policies-35BXKB6P.cjs → policies-OYR3SLJN.cjs} +11 -11
  80. package/dist/{scripts-KQYVQOLU.cjs → scripts-6CWHTY6U.cjs} +12 -12
  81. package/dist/{software-update-ED33WSKT.cjs → software-update-AJPIY4SQ.cjs} +10 -10
  82. package/package.json +1 -1
  83. package/src/components/chat/entity-cards/onboarding-guide-card.tsx +8 -1
  84. package/src/components/chat/tool-execution-display.tsx +21 -10
  85. package/src/components/chat/utils/history-merge.ts +46 -1
  86. package/src/components/features/scripts/schedule-form/schedule-interval-input.tsx +20 -13
  87. package/src/components/features/scripts/schedule-form/schedule-offline-fields.tsx +9 -5
  88. package/src/components/meeting-scheduler/booking-form.tsx +29 -3
  89. package/src/components/meeting-scheduler/index.tsx +224 -3
  90. package/src/components/meeting-scheduler/modal-header.tsx +145 -0
  91. package/src/components/meeting-scheduler/slot-picker.tsx +72 -8
  92. package/src/components/shared/product-release/product-release-card.tsx +2 -0
  93. package/src/components/ui/radio-group.tsx +51 -36
  94. package/src/components/ui/tab-navigation.tsx +54 -5
@@ -77,7 +77,22 @@ export interface HubSpotMeetingSchedulerProps {
77
77
  /** Form rescue for the details form (`RESCUE_FORMS.meetingBooking`). OPT-IN:
78
78
  * omitted or `null` saves nothing. */
79
79
  rescue?: FormRescueDefinition | null;
80
+ /**
81
+ * How the card is drawn.
82
+ *
83
+ * `'card'` (default, unchanged): the scheduler card - context panel beside
84
+ * (or over) the calendar, as every page embed has it.
85
+ * `'modal'`: the onboarding "Book an Onboarding Call" window: the host strip
86
+ * with the length on its right, the timezone row, then the calendar beside
87
+ * a single column of times, and Continue in a footer under the card (with
88
+ * Cancel beside it on a phone, where the window has no X). A time is
89
+ * CHOSEN, not submitted: Continue moves to the details form. Opt-in, so
90
+ * every existing embed keeps the card byte for byte; `details-first` has
91
+ * no modal arrangement and ignores it.
92
+ */
93
+ layout?: SchedulerLayout;
80
94
  }
95
+ export type SchedulerLayout = 'card' | 'modal';
81
96
  type Step = 'slot' | 'details' | 'confirmed';
82
97
  /** `onStageChange`'s value: a step, or the degraded box that replaces the flow. */
83
98
  export type SchedulerStage = Step | 'unavailable';
@@ -174,7 +189,7 @@ export declare function SchedulerDegradedCard({ flow, className, message, action
174
189
  action?: ReactNode;
175
190
  children?: ReactNode;
176
191
  }): import("react").JSX.Element;
177
- export declare function HubSpotMeetingScheduler({ meetingId, apiBaseUrl, initialAvailability, title, description, hosts, displayTimezone, fallbackUrl, onBack, onBooked, onStageChange, className, flow, detailsForm: DetailsForm, detailsFormProps, rescue, }: HubSpotMeetingSchedulerProps): import("react").JSX.Element;
192
+ export declare function HubSpotMeetingScheduler({ meetingId, apiBaseUrl, initialAvailability, title, description, hosts, displayTimezone, fallbackUrl, onBack, onBooked, onStageChange, className, flow, detailsForm: DetailsForm, detailsFormProps, rescue, layout, }: HubSpotMeetingSchedulerProps): import("react").JSX.Element;
178
193
  export { BookingForm, BookingFormSkeleton, type BookingFormProps, type BookingFieldRow, type BookingFieldSlot, type BookingFieldCopy, type BookingFormConsent, } from './booking-form';
179
194
  export { MeetingSchedulerDirectory, MeetingSchedulerDirectoryRowSkeleton, type MeetingSchedulerDirectoryProps, } from './directory';
180
195
  export type { MeetingAvailability, BookingConfirmation, MeetingBookingErrorCode, MeetingHost };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/index.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
4
4
  import { useIsHydrated } from "../../hooks/ui/use-is-hydrated.js";
5
5
  import { completeFormRescue } from "../../hooks/use-form-rescue.js";
6
6
  import { useHumanitySignals } from "../../hooks/use-humanity-signals.js";
@@ -12,10 +12,16 @@ import {
12
12
  import { cn } from "../../utils/cn.js";
13
13
  import { FORM_RESCUE_ATTEMPT_FIELD } from "../../utils/form-rescue.js";
14
14
  import { formatDurationCompact, formatDateWithTimezone } from "../../utils/format.js";
15
+ import { BackButton } from "../layout/back-button.js";
15
16
  import { Alert, AlertDescription, Button } from "../ui/index.js";
16
- import { BookingForm, BookingFormSkeleton, DEFAULT_SUBMIT_LABEL } from "./booking-form.js";
17
+ import {
18
+ BookingForm,
19
+ BookingFormSkeleton,
20
+ DEFAULT_SUBMIT_LABEL
21
+ } from "./booking-form.js";
17
22
  import { Confirmation } from "./confirmation.js";
18
23
  import { SchedulerContextPanel, ContextPanelSkeleton } from "./context-panel.js";
24
+ import { SchedulerModalHeader, SchedulerModalHeaderSkeleton } from "./modal-header.js";
19
25
  import { SlotPicker, SlotPickerSkeleton, dayKeyInZone } from "./slot-picker.js";
20
26
  const BOOKING_ERROR_COPY = {
21
27
  INVALID_EMAIL: "That email address was rejected by our scheduling system \u2014 please use a real, reachable address (work email works best).",
@@ -74,6 +80,18 @@ function isNativelyBookable(availability) {
74
80
  }
75
81
  return true;
76
82
  }
83
+ const MODAL_STACK_CLASS = "flex flex-col gap-[var(--spacing-system-l)]";
84
+ const MODAL_CARD_CLASS = "flex flex-col overflow-hidden rounded-md border border-ods-border bg-ods-card";
85
+ const MODAL_STEP_CLASS = "flex flex-col p-[var(--spacing-system-m)]";
86
+ const NOOP = () => void 0;
87
+ const MODAL_FIELD_ROWS = [[{ name: "firstName" }, { name: "lastName" }], [{ name: "email" }]];
88
+ const MODAL_PRIMARY_CLASS = "flex-1 content-md:min-w-[15.5rem] content-md:flex-none";
89
+ function ModalFooter({ onCancel, primary }) {
90
+ return /* @__PURE__ */ jsxs("div", { className: "flex gap-[var(--spacing-system-l)] content-md:justify-end", children: [
91
+ onCancel && /* @__PURE__ */ jsx(Button, { variant: "outline", onClick: onCancel, className: "flex-1 content-md:hidden", children: "Cancel" }),
92
+ primary
93
+ ] });
94
+ }
77
95
  function HubSpotMeetingScheduler({
78
96
  meetingId,
79
97
  apiBaseUrl = "",
@@ -90,7 +108,8 @@ function HubSpotMeetingScheduler({
90
108
  flow = DEFAULT_SCHEDULER_FLOW,
91
109
  detailsForm: DetailsForm = BookingForm,
92
110
  detailsFormProps,
93
- rescue = null
111
+ rescue = null,
112
+ layout = "card"
94
113
  }) {
95
114
  const {
96
115
  availability,
@@ -104,6 +123,9 @@ function HubSpotMeetingScheduler({
104
123
  isSubmitting
105
124
  } = useMeetingBooking({ meetingId, apiBaseUrl, initialAvailability });
106
125
  const detailsFirst = flow === "details-first";
126
+ const modal = layout === "modal" && !detailsFirst;
127
+ const modalFormId = useId();
128
+ const [modalFormValid, setModalFormValid] = useState(false);
107
129
  const hydrated = useIsHydrated();
108
130
  const [pickedTimezone, setTimezone] = useState(null);
109
131
  const resolvedLocalTimezone = useMemo(() => {
@@ -254,6 +276,21 @@ function HubSpotMeetingScheduler({
254
276
  const stepPanelClass = cn(STEP_PANEL_CLASS, detailsFirst && boxed && "min-h-0 overflow-y-auto");
255
277
  const degraded = (message) => /* @__PURE__ */ jsx(SchedulerDegradedCard, { flow, className, message, action: escapeHatch });
256
278
  const degradedCard = degraded("We couldn't load available call times. Please try again shortly.");
279
+ if (modal && isLoadingAvailability && !availability) {
280
+ return /* @__PURE__ */ jsxs("div", { className: cn(MODAL_STACK_CLASS, className), children: [
281
+ /* @__PURE__ */ jsxs("div", { className: MODAL_CARD_CLASS, children: [
282
+ /* @__PURE__ */ jsx(SchedulerModalHeaderSkeleton, {}),
283
+ /* @__PURE__ */ jsx(SlotPickerSkeleton, { monthOffset, layout: "modal" })
284
+ ] }),
285
+ /* @__PURE__ */ jsx(
286
+ ModalFooter,
287
+ {
288
+ onCancel: onBack,
289
+ primary: /* @__PURE__ */ jsx(Button, { disabled: true, onClick: NOOP, className: MODAL_PRIMARY_CLASS, children: "Continue" })
290
+ }
291
+ )
292
+ ] });
293
+ }
257
294
  if (isLoadingAvailability && !availability) {
258
295
  return /* @__PURE__ */ jsx("div", { className: cardClass, children: /* @__PURE__ */ jsxs("div", { className: innerClass, children: [
259
296
  !formOnly && /* @__PURE__ */ jsx(ContextPanelSkeleton, { onBack: backEdge, className: CONTEXT_PANEL_CLASS }),
@@ -275,6 +312,121 @@ function HubSpotMeetingScheduler({
275
312
  if (!isNativelyBookable(availability)) {
276
313
  return degraded("This meeting type is booked directly on HubSpot.");
277
314
  }
315
+ if (modal) {
316
+ const modalBack = step === "details" ? backToSlot : onBack;
317
+ const onSelectDuration = (ms) => {
318
+ setDurationMs(ms);
319
+ setSelectedDay(null);
320
+ setSelectedSlot(null);
321
+ };
322
+ const summary = selectedSlot != null && durationMs != null && timezone != null ? `${formatDateWithTimezone(selectedSlot, timezone, "weekdayDateTimeZoned", { viewerLocale: true })} \xB7 ${formatDurationCompact(durationMs / 1e3)}` : null;
323
+ return /* @__PURE__ */ jsxs("div", { className: cn(MODAL_STACK_CLASS, className), children: [
324
+ /* @__PURE__ */ jsxs("div", { className: MODAL_CARD_CLASS, children: [
325
+ modalBack && /* @__PURE__ */ jsx(
326
+ BackButton,
327
+ {
328
+ onClick: modalBack,
329
+ className: cn(
330
+ "px-[var(--spacing-system-m)] pt-[var(--spacing-system-m)]",
331
+ step === "slot" && "content-md:hidden"
332
+ )
333
+ }
334
+ ),
335
+ /* @__PURE__ */ jsx(
336
+ SchedulerModalHeader,
337
+ {
338
+ hosts: shownHosts,
339
+ durationsMs: durations,
340
+ selectedDurationMs: durationMs,
341
+ onSelectDuration,
342
+ timezone,
343
+ onTimezoneChange: setTimezone,
344
+ locked: step !== "slot",
345
+ showTimezone: step === "slot"
346
+ }
347
+ ),
348
+ step === "confirmed" && confirmation && timezone ? /* @__PURE__ */ jsx("div", { className: MODAL_STEP_CLASS, children: /* @__PURE__ */ jsx(Confirmation, { confirmation, timezone }) }) : step === "details" && durationMs != null && selectedSlot != null && timezone ? /* @__PURE__ */ jsxs("div", { className: cn(MODAL_STEP_CLASS, "gap-[var(--spacing-system-m)]"), children: [
349
+ summary && /* @__PURE__ */ jsx("p", { className: "text-ods-text-primary text-h4", children: summary }),
350
+ /* @__PURE__ */ jsx(
351
+ DetailsForm,
352
+ {
353
+ fieldRows: MODAL_FIELD_ROWS,
354
+ ...detailsFormProps,
355
+ availability,
356
+ meetingId,
357
+ startTimeMs: selectedSlot,
358
+ durationMs,
359
+ timezone,
360
+ formId: modalFormId,
361
+ hideSubmit: true,
362
+ onValidityChange: setModalFormValid,
363
+ isSubmitting,
364
+ onSubmit: handleSubmit,
365
+ honeypotInputProps,
366
+ getSignals,
367
+ rescue
368
+ }
369
+ )
370
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
371
+ bookingError === "SLOT_TAKEN" && /* @__PURE__ */ jsx(Alert, { variant: "warning", className: "mx-[var(--spacing-system-m)] mt-[var(--spacing-system-m)] w-auto", children: /* @__PURE__ */ jsx(AlertDescription, { children: "That time was just taken \u2014 pick another slot below. (If you already submitted, check your email for a confirmation before rebooking.)" }) }),
372
+ timezone && durationMs != null ? /* @__PURE__ */ jsx(
373
+ SlotPicker,
374
+ {
375
+ layout: "modal",
376
+ slots,
377
+ timezone,
378
+ monthOffset,
379
+ onMonthOffsetChange: (o) => {
380
+ setSelectedDay(null);
381
+ setSelectedSlot(null);
382
+ setMonthOffset(o);
383
+ },
384
+ selectedSlot,
385
+ onSelectSlot: setSelectedSlot,
386
+ selectedDay,
387
+ onSelectDay: setSelectedDay,
388
+ isLoading: isLoadingAvailability
389
+ }
390
+ ) : durations.length === 0 && !isFetchingAvailability ? /* @__PURE__ */ jsxs("div", { className: cn(MODAL_STEP_CLASS, "items-start gap-[var(--spacing-system-m)]"), children: [
391
+ /* @__PURE__ */ jsx("p", { className: "text-ods-text-secondary text-h6", children: "No call times are published right now." }),
392
+ escapeHatch
393
+ ] }) : /* @__PURE__ */ jsx(SlotPickerSkeleton, { monthOffset, layout: "modal" })
394
+ ] })
395
+ ] }),
396
+ step === "slot" && /* @__PURE__ */ jsx(
397
+ ModalFooter,
398
+ {
399
+ onCancel: onBack,
400
+ primary: /* @__PURE__ */ jsx(
401
+ Button,
402
+ {
403
+ disabled: selectedSlot == null || durationMs == null,
404
+ onClick: () => setStep("details"),
405
+ className: MODAL_PRIMARY_CLASS,
406
+ children: "Continue"
407
+ }
408
+ )
409
+ }
410
+ ),
411
+ step === "details" && /* @__PURE__ */ jsx(
412
+ ModalFooter,
413
+ {
414
+ onCancel: onBack,
415
+ primary: /* @__PURE__ */ jsx(
416
+ Button,
417
+ {
418
+ type: "submit",
419
+ form: modalFormId,
420
+ loading: isSubmitting,
421
+ disabled: isSubmitting || !modalFormValid,
422
+ className: MODAL_PRIMARY_CLASS,
423
+ children: preset.submitLabel
424
+ }
425
+ )
426
+ }
427
+ )
428
+ ] });
429
+ }
278
430
  return /* @__PURE__ */ jsx("div", { className: cardClass, children: /* @__PURE__ */ jsxs("div", { className: innerClass, children: [
279
431
  !formOnly && /* @__PURE__ */ jsx(
280
432
  SchedulerContextPanel,
@@ -362,7 +514,7 @@ function HubSpotMeetingScheduler({
362
514
  onSelectSlot: (ms) => {
363
515
  if (!detailsFirst) {
364
516
  setSelectedSlot(ms);
365
- setStep("details");
517
+ if (!modal) setStep("details");
366
518
  return;
367
519
  }
368
520
  if (postInFlight() || !stash) return;
@@ -0,0 +1,27 @@
1
+ import type { MeetingHost } from '../../schemas/meeting-booking-schema';
2
+ /**
3
+ * The head of the scheduler's MODAL layout: the host strip (who, and how long
4
+ * on its right - chips when the link offers several lengths, the length alone
5
+ * otherwise) and the timezone row under it, each cut off by a rule. The
6
+ * context panel's facts in the window's own arrangement: there is no side
7
+ * column in a 600px box, so the strip sits over the calendar and the zone
8
+ * picker spans the width above it, at every size.
9
+ */
10
+ export interface SchedulerModalHeaderProps {
11
+ hosts: MeetingHost[];
12
+ durationsMs: number[];
13
+ selectedDurationMs: number | null;
14
+ onSelectDuration: (ms: number) => void;
15
+ /** Resolved IANA zone (null until the client resolves it). */
16
+ timezone: string | null;
17
+ onTimezoneChange?: (tz: string) => void;
18
+ /** A slot is chosen: the length is settled, the chips give way to the line. */
19
+ locked?: boolean;
20
+ disabled?: boolean;
21
+ /** Whether the timezone row renders (not on the confirmation). */
22
+ showTimezone?: boolean;
23
+ }
24
+ export declare function SchedulerModalHeader({ hosts, durationsMs, selectedDurationMs, onSelectDuration, timezone, onTimezoneChange, locked, disabled, showTimezone, }: SchedulerModalHeaderProps): import("react").JSX.Element;
25
+ /** Same footprint as the loaded header, for the cold load. */
26
+ export declare function SchedulerModalHeaderSkeleton(): import("react").JSX.Element;
27
+ //# sourceMappingURL=modal-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal-header.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/modal-header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAMxE;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAqCD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,MAAc,EACd,QAAgB,EAChB,YAAmB,GACpB,EAAE,yBAAyB,+BA8C3B;AAED,8DAA8D;AAC9D,wBAAgB,4BAA4B,gCAmB3C"}
@@ -0,0 +1,104 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../../utils/cn.js";
4
+ import { formatDurationCompact } from "../../utils/format.js";
5
+ import { SquareAvatar, AvatarStack, Button, Skeleton } from "../ui/index.js";
6
+ import { TimezoneSelect } from "../ui/timezone-select.js";
7
+ const ROW_CLASS = "border-b border-ods-border p-[var(--spacing-system-m)]";
8
+ const STRIP_CLASS = cn(ROW_CLASS, "flex items-center justify-between gap-[var(--spacing-system-m)]");
9
+ const FIELD_LABEL_CLASS = "text-h4 text-ods-text-primary";
10
+ function HostIdentity({ hosts }) {
11
+ if (hosts.length === 0) return null;
12
+ if (hosts.length > 3) {
13
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
14
+ /* @__PURE__ */ jsx(AvatarStack, { people: hosts, max: 4, size: "lg", label: "Hosts" }),
15
+ /* @__PURE__ */ jsxs("p", { className: "text-ods-text-secondary text-h6", children: [
16
+ hosts.length,
17
+ " hosts on this calendar"
18
+ ] })
19
+ ] });
20
+ }
21
+ return /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-s)]", children: hosts.map((host) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
22
+ /* @__PURE__ */ jsx(
23
+ SquareAvatar,
24
+ {
25
+ variant: "round",
26
+ size: "sm",
27
+ src: host.avatarUrl ?? void 0,
28
+ alt: host.name,
29
+ fallback: host.name
30
+ }
31
+ ),
32
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col", children: [
33
+ /* @__PURE__ */ jsx("p", { className: "truncate text-ods-text-primary text-h4", children: host.name }),
34
+ host.title && /* @__PURE__ */ jsx("p", { className: "truncate text-ods-text-secondary text-h6", children: host.title })
35
+ ] })
36
+ ] }, host.name)) });
37
+ }
38
+ function SchedulerModalHeader({
39
+ hosts,
40
+ durationsMs,
41
+ selectedDurationMs,
42
+ onSelectDuration,
43
+ timezone,
44
+ onTimezoneChange,
45
+ locked = false,
46
+ disabled = false,
47
+ showTimezone = true
48
+ }) {
49
+ const chips = !locked && durationsMs.length > 1;
50
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
51
+ /* @__PURE__ */ jsxs("div", { className: STRIP_CLASS, children: [
52
+ /* @__PURE__ */ jsx(HostIdentity, { hosts }),
53
+ chips ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 flex-wrap justify-end gap-[var(--spacing-system-xs)]", children: durationsMs.map((ms) => /* @__PURE__ */ jsx(
54
+ Button,
55
+ {
56
+ variant: selectedDurationMs === ms ? void 0 : "outline",
57
+ size: "small-legacy",
58
+ disabled,
59
+ onClick: () => onSelectDuration(ms),
60
+ children: formatDurationCompact(ms / 1e3)
61
+ },
62
+ ms
63
+ )) }) : selectedDurationMs != null && /* @__PURE__ */ jsxs("p", { className: "shrink-0 text-ods-text-secondary text-h6", children: [
64
+ formatDurationCompact(selectedDurationMs / 1e3),
65
+ " call"
66
+ ] })
67
+ ] }),
68
+ showTimezone && /* @__PURE__ */ jsxs("div", { className: cn(ROW_CLASS, "flex flex-col gap-[var(--spacing-system-xxs)]"), children: [
69
+ /* @__PURE__ */ jsx("p", { className: FIELD_LABEL_CLASS, children: "Timezone" }),
70
+ timezone ? /* @__PURE__ */ jsx(
71
+ TimezoneSelect,
72
+ {
73
+ value: timezone,
74
+ disabled,
75
+ onChange: (tz) => {
76
+ if (tz) onTimezoneChange?.(tz);
77
+ }
78
+ }
79
+ ) : /* @__PURE__ */ jsx(Skeleton, { className: "h-12 w-full" })
80
+ ] })
81
+ ] });
82
+ }
83
+ function SchedulerModalHeaderSkeleton() {
84
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
85
+ /* @__PURE__ */ jsxs("div", { className: STRIP_CLASS, children: [
86
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
87
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-8 shrink-0 rounded-full" }),
88
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
89
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-5 w-32" }),
90
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-24" })
91
+ ] })
92
+ ] }),
93
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-20 shrink-0" })
94
+ ] }),
95
+ /* @__PURE__ */ jsxs("div", { className: cn(ROW_CLASS, "flex flex-col gap-[var(--spacing-system-xxs)]"), children: [
96
+ /* @__PURE__ */ jsx("p", { className: FIELD_LABEL_CLASS, children: "Timezone" }),
97
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-12 w-full" })
98
+ ] })
99
+ ] });
100
+ }
101
+ export {
102
+ SchedulerModalHeader,
103
+ SchedulerModalHeaderSkeleton
104
+ };
@@ -34,9 +34,19 @@
34
34
  * (resolved by the parent AFTER mount — this component never reads Intl
35
35
  * itself, keeping SSR output deterministic).
36
36
  */
37
+ /**
38
+ * How the two columns sit. `card` is the scheduler card's own (the module
39
+ * docblock). `modal` is the onboarding "Book an Onboarding Call" window: a
40
+ * 600px box where the calendar keeps its width and the times run down ONE
41
+ * column beside it, scrolling inside the calendar's height - on a phone the
42
+ * times are four across, as that design draws them.
43
+ */
44
+ export type SlotPickerLayout = 'card' | 'modal';
37
45
  export interface SlotPickerProps {
38
46
  /** Bookable slot start times (epoch ms) for the selected duration. */
39
47
  slots: number[];
48
+ /** Column layout; `card` unless the host says otherwise. */
49
+ layout?: SlotPickerLayout;
40
50
  /** IANA zone every label renders in (parent resolves post-mount). */
41
51
  timezone: string;
42
52
  monthOffset: number;
@@ -72,10 +82,11 @@ export declare function monthLabelFor(offset: number): string;
72
82
  * the times column is a skeleton, and it is the same one the loaded picker
73
83
  * shows while a month loads, so there is no swap between the two.
74
84
  */
75
- export declare function SlotPickerSkeleton({ monthOffset }: {
85
+ export declare function SlotPickerSkeleton({ monthOffset, layout, }: {
76
86
  monthOffset?: number;
87
+ layout?: SlotPickerLayout;
77
88
  }): import("react").JSX.Element;
78
89
  /** Same-footprint skeleton for the time-chip column. */
79
90
  export declare function TimeChipsSkeleton(): import("react").JSX.Element;
80
- export declare function SlotPicker({ slots, timezone, monthOffset, onMonthOffsetChange, selectedSlot, onSelectSlot, selectedDay, onSelectDay, isLoading, isSubmitting, }: SlotPickerProps): import("react").JSX.Element;
91
+ export declare function SlotPicker({ slots, layout, timezone, monthOffset, onMonthOffsetChange, selectedSlot, onSelectSlot, selectedDay, onSelectDay, isLoading, isSubmitting, }: SlotPickerProps): import("react").JSX.Element;
81
92
  //# sourceMappingURL=slot-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slot-picker.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/slot-picker.tsx"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;8DAC8D;AAC9D,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIjE;AA6CD;yDACyD;AACzD,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AAwFxD;kEACkE;AAClE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpD;AAgED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,WAAe,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,+BAmB/E;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,gCAmBhC;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAiB,EACjB,YAAoB,GACrB,EAAE,eAAe,+BAgGjB"}
1
+ {"version":3,"file":"slot-picker.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/slot-picker.tsx"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;8DAC8D;AAC9D,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIjE;AA6CD;yDACyD;AACzD,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AA4GxD;kEACkE;AAClE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpD;AAgED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,WAAe,EACf,MAAe,GAChB,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,+BAgCA;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,gCAmBhC;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,MAAe,EACf,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,SAAiB,EACjB,YAAoB,GACrB,EAAE,eAAe,+BA6GjB"}