@flamingo-stack/openframe-frontend-core 0.0.676-snapshot.20260928181831 → 0.0.676

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.
@@ -68,12 +68,11 @@ export interface HubSpotMeetingSchedulerProps {
68
68
  */
69
69
  detailsForm?: ComponentType<BookingFormProps>;
70
70
  /**
71
- * The DATA form of the same override: `fieldRows`, a host consent row and
72
- * per-field display copy, spread onto whichever form renders. Serialisable,
73
- * so a Server Component can pass it across the RSC boundary where a component
74
- * cannot.
71
+ * The DATA form of the same override: `fieldRows` and a host consent row,
72
+ * spread onto whichever form renders. Serialisable, so a Server Component
73
+ * can pass it across the RSC boundary where a component cannot.
75
74
  */
76
- detailsFormProps?: Pick<BookingFormProps, 'fieldRows' | 'consent' | 'fieldCopy' | 'deniedEmailDomains'>;
75
+ detailsFormProps?: Pick<BookingFormProps, 'fieldRows' | 'consent'>;
77
76
  /** Form rescue for the details form (`RESCUE_FORMS.meetingBooking`). OPT-IN:
78
77
  * omitted or `null` saves nothing. */
79
78
  rescue?: FormRescueDefinition | null;
@@ -175,8 +174,8 @@ export declare function SchedulerDegradedCard({ flow, className, message, action
175
174
  children?: ReactNode;
176
175
  }): import("react").JSX.Element;
177
176
  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;
178
- export { BookingForm, BookingFormSkeleton, type BookingFormProps, type BookingFieldRow, type BookingFieldSlot, type BookingFieldCopy, type BookingFormConsent, } from './booking-form';
177
+ export { BookingForm, BookingFormSkeleton, type BookingFormProps, type BookingFieldRow, type BookingFieldSlot, type BookingFormConsent, } from './booking-form';
179
178
  export { MeetingSchedulerDirectory, MeetingSchedulerDirectoryRowSkeleton, type MeetingSchedulerDirectoryProps, } from './directory';
180
179
  export type { MeetingAvailability, BookingConfirmation, MeetingBookingErrorCode, MeetingHost };
181
- export type { SchedulingLink, SchedulingLinksPayload, DeniedEmailDomains } from '../../schemas/meeting-booking-schema';
180
+ export type { SchedulingLink, SchedulingLinksPayload } from '../../schemas/meeting-booking-schema';
182
181
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/index.tsx"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMtD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EACjB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAA6B,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/F,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAwB/G,MAAM,WAAW,4BAA4B;IAC3C,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mEAAmE;IACnE,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,sFAAsF;IACtF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,oBAAoB,CAAC,CAAC;IACxG;2CACuC;IACvC,MAAM,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACtC;AAED,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAC7C,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,aAAa,CAAC;AA4ClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,mBAAmB,qCAAqC,CAAC;AAEtE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iCAAiC,kCAAkC,CAAC;AAEjF,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,eAAe,CAAC;AAE3D,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,EAAE,aAA4B,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,aAAa,EACb;IAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAStG,CAAC;AAqDF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAA6B,EAC7B,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GACT,EAAE;IACD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gHAAgH;IAChH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,+BAQA;AAqBD,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,UAAe,EACf,mBAAmB,EACnB,KAAK,EACL,WAAW,EACX,KAAK,EACL,eAAe,EACf,WAAW,EACX,MAAM,EACN,QAAQ,EACR,aAAa,EACb,SAAS,EACT,IAA6B,EAC7B,WAAW,EAAE,WAAyB,EACtC,gBAAgB,EAChB,MAAa,GACd,EAAE,4BAA4B,+BAsjB9B;AAKD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,yBAAyB,EACzB,oCAAoC,EACpC,KAAK,8BAA8B,GACpC,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,WAAW,EAAE,CAAC;AAC/F,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/index.tsx"],"names":[],"mappings":"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"}
@@ -331,20 +331,6 @@ function makeDeferredBookingSchema(formFields, legalConsent) {
331
331
  timezone: TIMEZONE.nullish()
332
332
  });
333
333
  }
334
- function emailDomainDenied(email, rule) {
335
- if (typeof email !== "string") return false;
336
- const domain = email.split("@")[1]?.trim().toLowerCase();
337
- if (domain === void 0 || domain === "") return false;
338
- return rule.domains.includes(domain);
339
- }
340
- function withDeniedEmailDomains(schema, rule) {
341
- if (!rule) return schema;
342
- return schema.superRefine((values, ctx) => {
343
- if (emailDomainDenied(values.email, rule)) {
344
- ctx.addIssue({ code: "custom", path: ["email"], message: rule.message });
345
- }
346
- });
347
- }
348
334
 
349
335
  // src/hooks/use-meeting-booking.ts
350
336
  var AVAILABILITY_STALE_MS = 0;
@@ -481,7 +467,6 @@ var FIELD_CONTROLS = {
481
467
  type: field.inputType ?? "text",
482
468
  required: field.required,
483
469
  "aria-invalid": Boolean(error),
484
- invalid: Boolean(error),
485
470
  autoComplete: field.autoComplete,
486
471
  placeholder: placeholderFor(field),
487
472
  ...register(registerName)
@@ -493,7 +478,6 @@ var FIELD_CONTROLS = {
493
478
  id,
494
479
  required: field.required,
495
480
  "aria-invalid": Boolean(error),
496
- invalid: Boolean(error),
497
481
  placeholder: placeholderFor(field),
498
482
  ...register(registerName)
499
483
  }
@@ -507,7 +491,6 @@ var FIELD_CONTROLS = {
507
491
  step: "any",
508
492
  required: field.required,
509
493
  "aria-invalid": Boolean(error),
510
- invalid: Boolean(error),
511
494
  ...register(registerName, { setValueAs: canonicalNumber })
512
495
  }
513
496
  ),
@@ -520,7 +503,6 @@ var FIELD_CONTROLS = {
520
503
  autoComplete: "tel",
521
504
  required: field.required,
522
505
  "aria-invalid": Boolean(error),
523
- invalid: Boolean(error),
524
506
  placeholder: placeholderFor(field),
525
507
  ...register(registerName, { setValueAs: trimmed })
526
508
  }
@@ -534,7 +516,6 @@ var FIELD_CONTROLS = {
534
516
  type: "date",
535
517
  required: field.required,
536
518
  "aria-invalid": Boolean(error),
537
- invalid: Boolean(error),
538
519
  ...register(registerName)
539
520
  }
540
521
  )
@@ -545,16 +526,7 @@ var FIELD_CONTROLS = {
545
526
  control,
546
527
  name: registerName,
547
528
  render: ({ field: rhf }) => /* @__PURE__ */ jsxs(Select, { value: rhf.value ?? "", onValueChange: rhf.onChange, children: [
548
- /* @__PURE__ */ jsx(
549
- SelectTrigger,
550
- {
551
- id,
552
- "aria-required": field.required || void 0,
553
- "aria-invalid": Boolean(error),
554
- invalid: Boolean(error),
555
- children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select\u2026" })
556
- }
557
- ),
529
+ /* @__PURE__ */ jsx(SelectTrigger, { id, "aria-required": field.required || void 0, "aria-invalid": Boolean(error), children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select\u2026" }) }),
558
530
  /* @__PURE__ */ jsx(SelectContent, { children: (field.options ?? []).map((opt) => /* @__PURE__ */ jsx(SelectItem, { value: opt, children: optionLabel(field, opt) }, opt)) })
559
531
  ] })
560
532
  }
@@ -644,8 +616,6 @@ function BookingForm({
644
616
  submitLabel,
645
617
  footerNote,
646
618
  fieldRows,
647
- fieldCopy,
648
- deniedEmailDomains,
649
619
  consent,
650
620
  isSubmitting,
651
621
  onSubmit,
@@ -656,8 +626,8 @@ function BookingForm({
656
626
  const { formFields, legalConsent } = availability;
657
627
  const supportedFields = useMemo(() => normalizeFormFields(formFields), [formFields]);
658
628
  const schema = useMemo(
659
- () => withDeniedEmailDomains(makeDeferredBookingSchema(supportedFields, legalConsent), deniedEmailDomains),
660
- [supportedFields, legalConsent, deniedEmailDomains]
629
+ () => makeDeferredBookingSchema(supportedFields, legalConsent),
630
+ [supportedFields, legalConsent]
661
631
  );
662
632
  const consentDefaults = useMemo(
663
633
  () => (legalConsent?.communicationConsentCheckboxes ?? []).map((c) => ({
@@ -720,16 +690,6 @@ function BookingForm({
720
690
  fieldPath: (name) => BUILT_IN_BOOKING_FIELDS.some((field) => field.name === name) ? name : `formFields.${name}`
721
691
  }
722
692
  );
723
- const { toast } = useToast();
724
- const onInvalid = () => {
725
- if (deniedEmailDomains && emailDomainDenied(getValues("email"), deniedEmailDomains)) {
726
- toast({
727
- variant: "error",
728
- title: "Check your email address",
729
- description: deniedEmailDomains.message
730
- });
731
- }
732
- };
733
693
  const submitValid = handleSubmit(async (data) => {
734
694
  if (consentMissing) return;
735
695
  if (deferSlot) {
@@ -746,7 +706,7 @@ function BookingForm({
746
706
  ...getSignals(),
747
707
  ...formRescue.submitFields()
748
708
  });
749
- }, onInvalid);
709
+ });
750
710
  const submit = (event) => {
751
711
  if (consentMissing) setConsentError(consent?.errorMessage ?? "Please agree to continue.");
752
712
  return submitValid(event);
@@ -755,28 +715,14 @@ function BookingForm({
755
715
  const err = errors.formFields?.[name];
756
716
  return err?.message;
757
717
  };
758
- const renderField = (field, where) => {
759
- const copy = fieldCopy?.[field.name];
760
- const shown = copy ? { ...field, label: copy.label ?? field.label, placeholder: copy.placeholder ?? field.placeholder } : field;
761
- return /* @__PURE__ */ jsx(
762
- FieldWrapper,
763
- {
764
- label: shown.label,
765
- htmlFor: where.id,
766
- required: shown.required,
767
- error: where.error,
768
- children: FIELD_CONTROLS[shown.type]({
769
- field: shown,
770
- id: where.id,
771
- registerName: where.registerName,
772
- error: where.error,
773
- register,
774
- control
775
- })
776
- },
777
- shown.name
778
- );
779
- };
718
+ const renderField = (field, where) => /* @__PURE__ */ jsx(FieldWrapper, { label: field.label, htmlFor: where.id, required: field.required, error: where.error, children: FIELD_CONTROLS[field.type]({
719
+ field,
720
+ id: where.id,
721
+ registerName: where.registerName,
722
+ error: where.error,
723
+ register,
724
+ control
725
+ }) }, field.name);
780
726
  const builtInFields = Object.fromEntries(
781
727
  BUILT_IN_BOOKING_FIELDS.map((field) => [
782
728
  field.name,