@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
|
@@ -90,6 +90,16 @@ export interface BookingFormProps {
|
|
|
90
90
|
* appended full width. Both are deliberate — see `slotNode`/`unplacedFields`.
|
|
91
91
|
*/
|
|
92
92
|
fieldRows?: BookingFieldRow[];
|
|
93
|
+
/** The form element's id, so a host can submit it from a button outside it
|
|
94
|
+
* (`<button form={id}>`): the modal layout keeps its actions in a footer
|
|
95
|
+
* under the card. */
|
|
96
|
+
formId?: string;
|
|
97
|
+
/** Leave the submit button out: the host draws one of its own (see `formId`). */
|
|
98
|
+
hideSubmit?: boolean;
|
|
99
|
+
/** Whether the answers would pass validation as they stand, reported on every
|
|
100
|
+
* change: a host drawing its own submit keeps it disabled until this says
|
|
101
|
+
* true. The form's own button never needs it - its click validates. */
|
|
102
|
+
onValidityChange?: (valid: boolean) => void;
|
|
93
103
|
/** Per-field display overrides, keyed by field name — see `BookingFieldCopy`. */
|
|
94
104
|
fieldCopy?: Record<string, BookingFieldCopy>;
|
|
95
105
|
/** Email domains this form refuses, with the message it shows — see `DeniedEmailDomains`.
|
|
@@ -125,7 +135,7 @@ export interface BookingFormProps {
|
|
|
125
135
|
* submit; the parent calls `resetSignals()` after a SLOT_TAKEN refetch so a
|
|
126
136
|
* legitimate retry isn't flagged too-fast.
|
|
127
137
|
*/
|
|
128
|
-
export declare function BookingForm({ availability, meetingId, startTimeMs, durationMs, timezone, deferSlot, initialValues, submitLabel, footerNote, fieldRows, fieldCopy, deniedEmailDomains, consent, isSubmitting, onSubmit, honeypotInputProps, getSignals, rescue, }: BookingFormProps): import("react").JSX.Element;
|
|
138
|
+
export declare function BookingForm({ availability, meetingId, startTimeMs, durationMs, timezone, deferSlot, initialValues, submitLabel, footerNote, fieldRows, formId, hideSubmit, onValidityChange, fieldCopy, deniedEmailDomains, consent, isSubmitting, onSubmit, honeypotInputProps, getSignals, rescue, }: BookingFormProps): import("react").JSX.Element;
|
|
129
139
|
/**
|
|
130
140
|
* Cold-start placeholder for `flow="details-first"`, where the FORM is the
|
|
131
141
|
* first thing in the action panel.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking-form.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/booking-form.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"booking-form.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/booking-form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
4
|
-
import { Fragment as Fragment2, useEffect, useMemo, useState } from "react";
|
|
4
|
+
import { Fragment as Fragment2, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import { useForm, Controller } from "react-hook-form";
|
|
6
6
|
import { useRescuedForm } from "../../hooks/use-rescued-form.js";
|
|
7
7
|
import { useToast } from "../../hooks/use-toast.js";
|
|
@@ -240,6 +240,9 @@ function BookingForm({
|
|
|
240
240
|
submitLabel,
|
|
241
241
|
footerNote,
|
|
242
242
|
fieldRows,
|
|
243
|
+
formId,
|
|
244
|
+
hideSubmit = false,
|
|
245
|
+
onValidityChange,
|
|
243
246
|
fieldCopy,
|
|
244
247
|
deniedEmailDomains,
|
|
245
248
|
consent,
|
|
@@ -292,6 +295,15 @@ function BookingForm({
|
|
|
292
295
|
const [consented, setConsented] = useState(initialValues?.[HOST_CONSENT_KEY] === true);
|
|
293
296
|
const [consentError, setConsentError] = useState(null);
|
|
294
297
|
const consentMissing = Boolean(consent) && !consented;
|
|
298
|
+
const watchedValues = watch();
|
|
299
|
+
const liveValid = onValidityChange ? schema.safeParse(watchedValues).success && !consentMissing : false;
|
|
300
|
+
const lastValidRef = useRef(null);
|
|
301
|
+
useEffect(() => {
|
|
302
|
+
if (!onValidityChange) return;
|
|
303
|
+
if (lastValidRef.current === liveValid) return;
|
|
304
|
+
lastValidRef.current = liveValid;
|
|
305
|
+
onValidityChange(liveValid);
|
|
306
|
+
});
|
|
295
307
|
useEffect(() => {
|
|
296
308
|
const current = getValues("legalConsentResponses") ?? priorConsents ?? [];
|
|
297
309
|
setValue(
|
|
@@ -404,7 +416,7 @@ function BookingForm({
|
|
|
404
416
|
children: submitLabel ?? DEFAULT_SUBMIT_LABEL
|
|
405
417
|
}
|
|
406
418
|
);
|
|
407
|
-
return /* @__PURE__ */ jsxs("form", { onSubmit: submit, className: FORM_STACK, noValidate: true, ...HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
|
|
419
|
+
return /* @__PURE__ */ jsxs("form", { id: formId, onSubmit: submit, className: FORM_STACK, noValidate: true, ...HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
|
|
408
420
|
/* @__PURE__ */ jsx(HoneypotField, { ...honeypotInputProps }),
|
|
409
421
|
fieldRows ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
410
422
|
placedRows.map((row) => /* @__PURE__ */ jsx("div", { className: ROW_GRID, children: row.map((slot, slotIndex) => /* @__PURE__ */ jsx("div", { className: slotColumnClass(row, slot, slotIndex), children: slotNode(slot.name) }, slot.name)) }, row.map((s) => s.name).join("|"))),
|
|
@@ -473,7 +485,7 @@ function BookingForm({
|
|
|
473
485
|
),
|
|
474
486
|
legalConsent.privacyPolicyText && /* @__PURE__ */ jsx("p", { className: "text-ods-text-secondary text-h6", children: legalConsent.privacyPolicyText })
|
|
475
487
|
] }) }),
|
|
476
|
-
footerNote ? /* @__PURE__ */ jsxs("div", { className: FOOTER_ROW_CLASS, children: [
|
|
488
|
+
hideSubmit ? null : footerNote ? /* @__PURE__ */ jsxs("div", { className: FOOTER_ROW_CLASS, children: [
|
|
477
489
|
/* @__PURE__ */ jsx("p", { className: "text-ods-text-secondary text-h6", children: footerNote }),
|
|
478
490
|
submitButton
|
|
479
491
|
] }) : /* @__PURE__ */ jsx("div", { className: FOOTER_BARE_CLASS, children: submitButton })
|