@sevenfold/setto-client 0.15.0 → 0.16.0

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/chrome.d.ts CHANGED
@@ -42,7 +42,7 @@ export interface SettoChromeHandshake {
42
42
  * keeps a chrome bundle that fails to load, or throws while rendering, from
43
43
  * taking the editor down with it.
44
44
  */
45
- mountSlot: (name: string, Component: React.ComponentType) => void;
45
+ mountSlot: (name: string, Component: React.ComponentType<any>) => void;
46
46
  /**
47
47
  * The host's own `useSetto`, callable from the chrome.
48
48
  *
@@ -89,7 +89,7 @@ declare global {
89
89
  * offered nothing — including after it offered something that threw. Callers
90
90
  * render their own version when this is null; every one of them must have one.
91
91
  */
92
- export declare function useSettoChromeSlot(name: string): React.ComponentType | null;
92
+ export declare function useSettoChromeSlot<P extends object = Record<string, never>>(name: string): React.ComponentType<P> | null;
93
93
  /** @deprecated Use `useSettoChromeSlot('admin')`. */
94
- export declare function useSettoAdminChrome(): React.ComponentType | null;
94
+ export declare function useSettoAdminChrome(): React.ComponentType<Record<string, never>> | null;
95
95
  export declare function SettoChrome(): import("react/jsx-runtime").JSX.Element | null;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export { SettoProvider, useSetto } from './provider';
2
2
  export { GuestEditProvider, useGuestEdit } from './guest-edit';
3
- export { SettoPreviewBar, isPreviewHost, previewBarState } from './preview-bar';
4
3
  export { SettoChrome, useSettoChromeSlot } from './chrome';
5
4
  export type { SettoChromeHandshake } from './chrome';
6
5
  export { T } from './T';
@@ -12,7 +11,7 @@ export { SettoImage } from './SettoImage';
12
11
  export type { SettoImageProps } from './SettoImage';
13
12
  export { SettoRepeater } from './SettoRepeater';
14
13
  export type { SettoRepeaterProps } from './SettoRepeater';
15
- export { SettoForm, FORM_FIELD_TYPES, FORM_FIELD_TYPE_LABELS, formFieldsPrefix, isFormFieldType, readLocaleFields, settoSubmissionUrl, } from './modules/forms';
14
+ export { SettoForm, FORM_FIELD_TYPES, FORM_FIELD_TYPE_LABELS, fieldTypeHasOptions, fieldTypeHasPlaceholder, formFieldsPrefix, isFormFieldType, readLocaleFields, settoSubmissionUrl, } from './modules/forms';
16
15
  export type { SettoFormProps, SettoFormClassNames, FormFieldProp, FormSettings, FormSubmissionRow, FormValue, FormValues, ResolvedFormField, SubmissionEnvelope, } from './modules/forms';
17
16
  export { SETTO_MODULES } from './modules';
18
17
  export type { SettoModule } from './modules';
@@ -36,9 +35,10 @@ export { BLOCK_REGISTRY, BLOCK_TYPES, nodeChildren } from './block-tree/registry
36
35
  export type { BlockTypeMeta } from './block-tree/registry';
37
36
  export { SETTO_BASE, siteHomeUrl, isAdminRoute, isAdminDeploymentView, adminViewUrl, currentAdminView, isAdminPanelView, adminRedirectUrl, CHECKOUT_INTENT, checkoutIntentUrl, wantsCheckout, withoutCheckoutIntent, } from './lib/urls';
38
37
  export { SettoMark } from './edit-mode/setto-mark';
38
+ export { FloatingPopover } from './edit-mode/floating-popover';
39
+ export type { FieldPatch, FormFieldToolsProps, FormFieldToolsComponent, } from './modules/forms/field-tools';
39
40
  export { isLinkContext } from './lib/link-context';
40
41
  export { useCoarsePointer } from './lib/use-coarse-pointer';
41
42
  export { FAB_SIZE, FAB_INSET } from './edit-mode/constants';
42
43
  export { EMPTY_I18N_STORE_SNAPSHOT } from './lib/i18n-store';
43
44
  export type { I18nStoreSnapshot } from './lib/i18n-store';
44
- export { IN_PROGRESS_STATUSES, isDeploymentInProgress, isDeploymentStale, STALE_PENDING_MS, STALE_BUILDING_MS, fetchInProgressDeploymentId, waitForDeploymentByCommit, useDeploymentStatus, PublishProgressBar, PublishProgressSteps, } from './edit-mode/deployment-status';
@@ -0,0 +1,35 @@
1
+ import type { ComponentType } from 'react';
2
+ import type { FormFieldType, ResolvedFormField } from './fields';
3
+ /**
4
+ * The contract between a form on the customer's page and the editing tools
5
+ * Setto serves for it.
6
+ *
7
+ * The tools themselves — the popover, the type picker, the reordering — live
8
+ * in setto-server and arrive at runtime, so changing them is a deploy. What
9
+ * has to stay here is the shape of the conversation between the two, because
10
+ * `SettoForm` applies the patch and it is compiled into the customer's bundle.
11
+ *
12
+ * That makes this the pinned part, and it is deliberately data: adding a field
13
+ * kind means widening `FormFieldType`, but rearranging the panel that sets one
14
+ * costs nothing on this side.
15
+ */
16
+ export interface FieldPatch {
17
+ name?: string;
18
+ type?: FormFieldType;
19
+ required?: boolean;
20
+ label?: string;
21
+ placeholder?: string;
22
+ options?: string;
23
+ }
24
+ export interface FormFieldToolsProps {
25
+ field: ResolvedFormField;
26
+ index: number;
27
+ count: number;
28
+ /** Open the settings popover as soon as the tools mount (a field just added). */
29
+ autoOpen?: boolean;
30
+ onMove: (direction: -1 | 1) => void;
31
+ onRemove: () => void;
32
+ onChange: (patch: FieldPatch) => void;
33
+ }
34
+ /** What the chrome registers under `mountSlot('form-field-tools', …)`. */
35
+ export type FormFieldToolsComponent = ComponentType<FormFieldToolsProps>;
@@ -8,5 +8,5 @@ export declare const formsModule: SettoModule;
8
8
  export { SettoForm } from './SettoForm';
9
9
  export type { SettoFormProps, SettoFormClassNames } from './SettoForm';
10
10
  export type { FormSettings, FormSubmissionRow, FormsApi } from './api';
11
- export { FORM_FIELD_TYPES, FORM_FIELD_TYPE_LABELS, formFieldsPrefix, isFormFieldType, readLocaleFields, settoSubmissionUrl, } from './fields';
11
+ export { FORM_FIELD_TYPES, FORM_FIELD_TYPE_LABELS, fieldTypeHasOptions, fieldTypeHasPlaceholder, formFieldsPrefix, isFormFieldType, readLocaleFields, settoSubmissionUrl, } from './fields';
12
12
  export type { FormFieldProp, FormFieldType, FormValue, FormValues, ResolvedFormField, SubmissionEnvelope, } from './fields';