@sevenfold/setto-client 0.14.0 → 0.15.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
@@ -71,6 +71,8 @@ export interface SettoChromeHandshake {
71
71
  } | null;
72
72
  sitesLoaded: boolean;
73
73
  editMode: boolean;
74
+ /** A signed-out visitor trying the editor on setto.no. */
75
+ guestEdit: boolean;
74
76
  authLoading: boolean;
75
77
  };
76
78
  /** Told whenever that state changes. Returns an unsubscribe. */
@@ -1,16 +1,22 @@
1
- import { type ReactNode } from 'react';
2
- interface GuestEditContextValue {
3
- active: boolean;
4
- start: () => void;
5
- stop: () => void;
6
- }
1
+ import type { ReactNode } from 'react';
7
2
  /**
8
3
  * Lets visitors inline-edit a marketing site (e.g. setto.no) without auth —
9
4
  * text, section/block colours, icons and list items. Changes are session-only
10
5
  * and never published. Real Setto edit mode always takes precedence.
6
+ *
7
+ * A provider in name only since 2026-09-09: the state moved into the main
8
+ * context so the chrome could see it, and what is left here is the one thing
9
+ * guest mode adds — the section toolbar, over a page nobody is signed in to.
10
+ * The component comes from Setto like the rest of the editing chrome, so there
11
+ * is nothing to draw until it arrives, and nothing to draw at all if it does
12
+ * not. That is the right failure for a demo.
11
13
  */
12
14
  export declare function GuestEditProvider({ children }: {
13
15
  children: ReactNode;
14
16
  }): import("react/jsx-runtime").JSX.Element;
17
+ export interface GuestEditContextValue {
18
+ active: boolean;
19
+ start: () => void;
20
+ stop: () => void;
21
+ }
15
22
  export declare function useGuestEdit(): GuestEditContextValue;
16
- export {};
package/dist/index.d.ts CHANGED
@@ -36,6 +36,8 @@ export { BLOCK_REGISTRY, BLOCK_TYPES, nodeChildren } from './block-tree/registry
36
36
  export type { BlockTypeMeta } from './block-tree/registry';
37
37
  export { SETTO_BASE, siteHomeUrl, isAdminRoute, isAdminDeploymentView, adminViewUrl, currentAdminView, isAdminPanelView, adminRedirectUrl, CHECKOUT_INTENT, checkoutIntentUrl, wantsCheckout, withoutCheckoutIntent, } from './lib/urls';
38
38
  export { SettoMark } from './edit-mode/setto-mark';
39
+ export { isLinkContext } from './lib/link-context';
40
+ export { useCoarsePointer } from './lib/use-coarse-pointer';
39
41
  export { FAB_SIZE, FAB_INSET } from './edit-mode/constants';
40
42
  export { EMPTY_I18N_STORE_SNAPSHOT } from './lib/i18n-store';
41
43
  export type { I18nStoreSnapshot } from './lib/i18n-store';
@@ -25,6 +25,18 @@ export interface SettoContextValue {
25
25
  store: I18nStore | null;
26
26
  themeStore: ThemeStore | null;
27
27
  assetStore: AssetStore | null;
28
+ /** The section the editor has selected, or null. */
29
+ selectedSectionId: string | null;
30
+ selectSection: (id: string | null) => void;
31
+ /**
32
+ * True while a signed-out visitor is trying the editor (setto.no).
33
+ *
34
+ * Here beside `editMode` rather than in `GuestEditProvider`'s own context
35
+ * for the same reason the selected section is: the chrome that draws the
36
+ * section toolbar sits above that provider and can call only `useSetto`.
37
+ */
38
+ guestEdit: boolean;
39
+ setGuestEdit: (on: boolean) => void;
28
40
  }
29
41
  /**
30
42
  * Exported for one caller: the chrome bundle.
@@ -1,10 +1,15 @@
1
- import { type ReactNode } from 'react';
2
- interface SectionEditContextValue {
1
+ /**
2
+ * Which section the editor has selected.
3
+ *
4
+ * A context of its own until 2026-09-09, when the section toolbar moved out to
5
+ * the chrome served by setto-server. That bundle can call exactly one hook of
6
+ * the host's — `useSetto` — so the state moved into the main context and this
7
+ * became an adapter. Kept because `SettoSection` and `SettoBlock` read it on
8
+ * every render of every page, and renaming that in thirteen pinned sites buys
9
+ * nothing.
10
+ */
11
+ export interface SectionEditContextValue {
3
12
  selectedId: string | null;
4
13
  selectSection: (id: string | null) => void;
5
14
  }
6
- export declare function SectionEditProvider({ children }: {
7
- children: ReactNode;
8
- }): import("react/jsx-runtime").JSX.Element;
9
15
  export declare function useSectionEdit(): SectionEditContextValue;
10
- export {};