@prismicio/next 2.1.1-canary.97120ae → 2.1.1-pr.120.3fae0cb

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.
@@ -23,7 +23,7 @@ type PrismicNextLinkProps = Omit<ComponentProps<typeof Link>, "field" | "documen
23
23
  });
24
24
  declare const PrismicNextLink: react0.ForwardRefExoticComponent<(Omit<Omit<Omit<react0.AnchorHTMLAttributes<HTMLAnchorElement>, keyof next_link0.LinkProps<any>> & next_link0.LinkProps<any> & {
25
25
  children?: React.ReactNode | undefined;
26
- } & react0.RefAttributes<HTMLAnchorElement>, "href" | "rel" | "field" | "document"> & {
26
+ } & react0.RefAttributes<HTMLAnchorElement>, "rel" | "field" | "href" | "document"> & {
27
27
  linkResolver?: LinkResolverFunction;
28
28
  rel?: string | AsLinkAttrsConfig["rel"];
29
29
  } & {
@@ -32,7 +32,7 @@ declare const PrismicNextLink: react0.ForwardRefExoticComponent<(Omit<Omit<Omit<
32
32
  href?: never;
33
33
  }, "ref"> | Omit<Omit<Omit<react0.AnchorHTMLAttributes<HTMLAnchorElement>, keyof next_link0.LinkProps<any>> & next_link0.LinkProps<any> & {
34
34
  children?: React.ReactNode | undefined;
35
- } & react0.RefAttributes<HTMLAnchorElement>, "href" | "rel" | "field" | "document"> & {
35
+ } & react0.RefAttributes<HTMLAnchorElement>, "rel" | "field" | "href" | "document"> & {
36
36
  linkResolver?: LinkResolverFunction;
37
37
  rel?: string | AsLinkAttrsConfig["rel"];
38
38
  } & {
@@ -41,7 +41,7 @@ declare const PrismicNextLink: react0.ForwardRefExoticComponent<(Omit<Omit<Omit<
41
41
  href?: never;
42
42
  }, "ref"> | Omit<Omit<Omit<react0.AnchorHTMLAttributes<HTMLAnchorElement>, keyof next_link0.LinkProps<any>> & next_link0.LinkProps<any> & {
43
43
  children?: React.ReactNode | undefined;
44
- } & react0.RefAttributes<HTMLAnchorElement>, "href" | "rel" | "field" | "document"> & {
44
+ } & react0.RefAttributes<HTMLAnchorElement>, "rel" | "field" | "href" | "document"> & {
45
45
  linkResolver?: LinkResolverFunction;
46
46
  rel?: string | AsLinkAttrsConfig["rel"];
47
47
  } & {
package/dist/index.cjs CHANGED
@@ -5,13 +5,17 @@ const require_enableAutoPreviews = require('./enableAutoPreviews.cjs');
5
5
  const require_redirectToPreviewURL = require('./redirectToPreviewURL.cjs');
6
6
  const require_imgixLoader = require('./imgixLoader.cjs');
7
7
  const require_PrismicNextImage = require('./PrismicNextImage.cjs');
8
+ const require_SliceSimulator = require('./simulator/SliceSimulator.cjs');
9
+ const require_getSlices = require('./simulator/getSlices.cjs');
8
10
  const require_createLocaleRedirect = require('./createLocaleRedirect.cjs');
9
11
 
10
12
  exports.PrismicNextImage = require_PrismicNextImage.PrismicNextImage;
11
13
  exports.PrismicNextLink = require_PrismicNextLink.PrismicNextLink;
12
14
  exports.PrismicPreview = require_PrismicPreview.PrismicPreview;
15
+ exports.SliceSimulator = require_SliceSimulator.SliceSimulator;
13
16
  exports.createLocaleRedirect = require_createLocaleRedirect.createLocaleRedirect;
14
17
  exports.enableAutoPreviews = require_enableAutoPreviews.enableAutoPreviews;
15
18
  exports.exitPreview = require_exitPreview.exitPreview;
19
+ exports.getSlices = require_getSlices.getSlices;
16
20
  exports.imgixLoader = require_imgixLoader.imgixLoader;
17
21
  exports.redirectToPreviewURL = require_redirectToPreviewURL.redirectToPreviewURL;
package/dist/index.d.cts CHANGED
@@ -5,6 +5,9 @@ import { EnableAutoPreviewsConfig, enableAutoPreviews } from "./enableAutoPrevie
5
5
  import { CreateClientConfig } from "./types.cjs";
6
6
  import { RedirectToPreviewURLConfig, redirectToPreviewURL } from "./redirectToPreviewURL.cjs";
7
7
  import { PrismicNextImage, PrismicNextImageProps } from "./PrismicNextImage.cjs";
8
+ import { SliceSimulator, SliceSimulatorProps, SliceSimulatorSliceZoneProps } from "./simulator/SliceSimulator.cjs";
9
+ import { getSlices } from "./simulator/getSlices.cjs";
10
+ import { SliceSimulatorParams } from "./simulator/types.cjs";
8
11
  import { imgixLoader } from "./imgixLoader.cjs";
9
12
  import { CreateLocaleRedirectConfig, createLocaleRedirect } from "./createLocaleRedirect.cjs";
10
- export { type CreateClientConfig, type CreateLocaleRedirectConfig, type EnableAutoPreviewsConfig, PrismicNextImage, type PrismicNextImageProps, PrismicNextLink, type PrismicNextLinkProps, PrismicPreview, type PrismicPreviewProps, type RedirectToPreviewURLConfig, createLocaleRedirect, enableAutoPreviews, exitPreview, imgixLoader, redirectToPreviewURL };
13
+ export { type CreateClientConfig, type CreateLocaleRedirectConfig, type EnableAutoPreviewsConfig, PrismicNextImage, type PrismicNextImageProps, PrismicNextLink, type PrismicNextLinkProps, PrismicPreview, type PrismicPreviewProps, type RedirectToPreviewURLConfig, SliceSimulator, type SliceSimulatorParams, type SliceSimulatorProps, type SliceSimulatorSliceZoneProps, createLocaleRedirect, enableAutoPreviews, exitPreview, getSlices, imgixLoader, redirectToPreviewURL };
package/dist/package.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  //#region package.json
3
- var version = "2.1.1-canary.97120ae";
3
+ var version = "2.1.1-pr.120.3fae0cb";
4
4
 
5
5
  //#endregion
6
6
  Object.defineProperty(exports, 'version', {
@@ -0,0 +1,5 @@
1
+ const require_getSlices = require('./simulator/react-server/getSlices.cjs');
2
+ const require_SliceSimulator = require('./simulator/react-server/SliceSimulator.cjs');
3
+
4
+ exports.SliceSimulator = require_SliceSimulator.SliceSimulator;
5
+ exports.getSlices = require_getSlices.getSlices;
@@ -0,0 +1,3 @@
1
+ import { SliceSimulator } from "./simulator/react-server/SliceSimulator.cjs";
2
+ import { getSlices } from "./simulator/react-server/getSlices.cjs";
3
+ export { SliceSimulator, getSlices };
@@ -0,0 +1,45 @@
1
+ "use client";
2
+
3
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
4
+ const require_SliceSimulatorWrapper = require('./SliceSimulatorWrapper.cjs');
5
+ let react = require("react");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let _prismicio_simulator_kit = require("@prismicio/simulator/kit");
8
+
9
+ //#region src/simulator/SliceSimulator.tsx
10
+ const simulatorManager = new _prismicio_simulator_kit.SimulatorManager();
11
+ /**
12
+ * Simulate slices in isolation. The slice simulator enables live slice
13
+ * development in Slice Machine and live previews in the Page Builder.
14
+ */
15
+ const SliceSimulator = ({ background, zIndex, className, ...restProps }) => {
16
+ if (!("sliceZone" in restProps)) throw new Error("A sliceZone prop must be provided when <SliceZone> is rendered in a Client Component. Add a sliceZone prop or convert your simulator to a Server Component with the getSlices helper.");
17
+ const [slices, setSlices] = (0, react.useState)(() => (0, _prismicio_simulator_kit.getDefaultSlices)());
18
+ const [message, setMessage] = (0, react.useState)(() => (0, _prismicio_simulator_kit.getDefaultMessage)());
19
+ (0, react.useEffect)(() => {
20
+ simulatorManager.state.on(_prismicio_simulator_kit.StateEventType.Slices, (_slices) => {
21
+ setSlices(_slices);
22
+ }, "simulator-slices");
23
+ simulatorManager.state.on(_prismicio_simulator_kit.StateEventType.Message, (_message) => {
24
+ setMessage(_message);
25
+ }, "simulator-message");
26
+ simulatorManager.init();
27
+ return () => {
28
+ simulatorManager.state.off(_prismicio_simulator_kit.StateEventType.Slices, "simulator-slices");
29
+ simulatorManager.state.off(_prismicio_simulator_kit.StateEventType.Message, "simulator-message");
30
+ };
31
+ }, []);
32
+ const SliceZoneComp = restProps.sliceZone;
33
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_SliceSimulatorWrapper.SliceSimulatorWrapper, {
34
+ message,
35
+ hasSlices: slices.length > 0,
36
+ background,
37
+ zIndex,
38
+ className,
39
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SliceZoneComp, { slices })
40
+ });
41
+ };
42
+
43
+ //#endregion
44
+ exports.SliceSimulator = SliceSimulator;
45
+ //# sourceMappingURL=SliceSimulator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliceSimulator.cjs","names":["SimulatorManager","StateEventType","SliceSimulatorWrapper"],"sources":["../../src/simulator/SliceSimulator.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport type { ComponentType, FC } from \"react\";\n\nimport {\n\tSimulatorManager,\n\tStateEventType,\n\tgetDefaultMessage,\n\tgetDefaultSlices,\n} from \"@prismicio/simulator/kit\";\nimport type {\n\tSliceSimulatorProps as BaseSliceSimulatorProps,\n\tSliceSimulatorState,\n} from \"@prismicio/simulator/kit\";\n\nimport { SliceSimulatorWrapper } from \"./SliceSimulatorWrapper\";\n\nconst simulatorManager = new SimulatorManager();\n\nexport type SliceSimulatorSliceZoneProps = {\n\tslices: SliceSimulatorState[\"slices\"];\n};\n\nexport type SliceSimulatorProps = {\n\tclassName?: string;\n} & Omit<BaseSliceSimulatorProps, \"state\"> &\n\t(\n\t\t| {\n\t\t\t\t/**\n\t\t\t\t * React component to render simulated Slices.\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t *\n\t\t\t\t * ```tsx\n\t\t\t\t * import { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\t * import { SliceZone } from \"@prismicio/react\";\n\t\t\t\t *\n\t\t\t\t * import { components } from \"../slices\";\n\t\t\t\t *\n\t\t\t\t * <SliceSimulator\n\t\t\t\t * \tsliceZone={({ slices }) => (\n\t\t\t\t * \t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t * \t)}\n\t\t\t\t * />;\n\t\t\t\t * ```\n\t\t\t\t */\n\t\t\t\tsliceZone: ComponentType<SliceSimulatorSliceZoneProps>;\n\t\t }\n\t\t| {\n\t\t\t\tchildren: React.ReactNode;\n\t\t }\n\t);\n\n/**\n * Simulate slices in isolation. The slice simulator enables live slice\n * development in Slice Machine and live previews in the Page Builder.\n */\nexport const SliceSimulator: FC<SliceSimulatorProps> = ({\n\tbackground,\n\tzIndex,\n\tclassName,\n\t...restProps\n}) => {\n\tif (!(\"sliceZone\" in restProps)) {\n\t\tthrow new Error(\n\t\t\t\"A sliceZone prop must be provided when <SliceZone> is rendered in a Client Component. Add a sliceZone prop or convert your simulator to a Server Component with the getSlices helper.\",\n\t\t);\n\t}\n\n\tconst [slices, setSlices] = useState(() => getDefaultSlices());\n\tconst [message, setMessage] = useState(() => getDefaultMessage());\n\n\tuseEffect(() => {\n\t\tsimulatorManager.state.on(\n\t\t\tStateEventType.Slices,\n\t\t\t(_slices) => {\n\t\t\t\tsetSlices(_slices);\n\t\t\t},\n\t\t\t\"simulator-slices\",\n\t\t);\n\t\tsimulatorManager.state.on(\n\t\t\tStateEventType.Message,\n\t\t\t(_message) => {\n\t\t\t\tsetMessage(_message);\n\t\t\t},\n\t\t\t\"simulator-message\",\n\t\t);\n\n\t\tsimulatorManager.init();\n\n\t\treturn () => {\n\t\t\tsimulatorManager.state.off(StateEventType.Slices, \"simulator-slices\");\n\n\t\t\tsimulatorManager.state.off(StateEventType.Message, \"simulator-message\");\n\t\t};\n\t}, []);\n\n\tconst SliceZoneComp = restProps.sliceZone;\n\n\treturn (\n\t\t<SliceSimulatorWrapper\n\t\t\tmessage={message}\n\t\t\thasSlices={slices.length > 0}\n\t\t\tbackground={background}\n\t\t\tzIndex={zIndex}\n\t\t\tclassName={className}\n\t\t>\n\t\t\t<SliceZoneComp slices={slices} />\n\t\t</SliceSimulatorWrapper>\n\t);\n};\n"],"mappings":";;;;;;;;;AAkBA,MAAM,mBAAmB,IAAIA,2CAAkB;;;;;AAwC/C,MAAa,kBAA2C,EACvD,YACA,QACA,WACA,GAAG,gBACE;AACL,KAAI,EAAE,eAAe,WACpB,OAAM,IAAI,MACT,wLACA;CAGF,MAAM,CAAC,QAAQ,uFAA8C,CAAC;CAC9D,MAAM,CAAC,SAAS,yFAAgD,CAAC;AAEjE,4BAAgB;AACf,mBAAiB,MAAM,GACtBC,wCAAe,SACd,YAAY;AACZ,aAAU,QAAQ;KAEnB,mBACA;AACD,mBAAiB,MAAM,GACtBA,wCAAe,UACd,aAAa;AACb,cAAW,SAAS;KAErB,oBACA;AAED,mBAAiB,MAAM;AAEvB,eAAa;AACZ,oBAAiB,MAAM,IAAIA,wCAAe,QAAQ,mBAAmB;AAErE,oBAAiB,MAAM,IAAIA,wCAAe,SAAS,oBAAoB;;IAEtE,EAAE,CAAC;CAEN,MAAM,gBAAgB,UAAU;AAEhC,QACC,2CAACC;EACS;EACT,WAAW,OAAO,SAAS;EACf;EACJ;EACG;YAEX,2CAAC,iBAAsB,SAAU;GACV"}
@@ -0,0 +1,40 @@
1
+ import { ComponentType, FC } from "react";
2
+ import { SliceSimulatorProps, SliceSimulatorState } from "@prismicio/simulator/kit";
3
+
4
+ //#region src/simulator/SliceSimulator.d.ts
5
+ type SliceSimulatorSliceZoneProps = {
6
+ slices: SliceSimulatorState["slices"];
7
+ };
8
+ type SliceSimulatorProps$1 = {
9
+ className?: string;
10
+ } & Omit<SliceSimulatorProps, "state"> & ({
11
+ /**
12
+ * React component to render simulated Slices.
13
+ *
14
+ * @example
15
+ *
16
+ * ```tsx
17
+ * import { SliceSimulator } from "@slicemachine/adapter-next/simulator";
18
+ * import { SliceZone } from "@prismicio/react";
19
+ *
20
+ * import { components } from "../slices";
21
+ *
22
+ * <SliceSimulator
23
+ * sliceZone={({ slices }) => (
24
+ * <SliceZone slices={slices} components={components} />
25
+ * )}
26
+ * />;
27
+ * ```
28
+ */
29
+ sliceZone: ComponentType<SliceSimulatorSliceZoneProps>;
30
+ } | {
31
+ children: React.ReactNode;
32
+ });
33
+ /**
34
+ * Simulate slices in isolation. The slice simulator enables live slice
35
+ * development in Slice Machine and live previews in the Page Builder.
36
+ */
37
+ declare const SliceSimulator: FC<SliceSimulatorProps$1>;
38
+ //#endregion
39
+ export { SliceSimulator, SliceSimulatorProps$1 as SliceSimulatorProps, SliceSimulatorSliceZoneProps };
40
+ //# sourceMappingURL=SliceSimulator.d.cts.map
@@ -0,0 +1,36 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ let _prismicio_simulator_kit = require("@prismicio/simulator/kit");
4
+
5
+ //#region src/simulator/SliceSimulatorWrapper.tsx
6
+ /**
7
+ * A wrapper for the slice simulator that isolates the given children from the
8
+ * page's layout.
9
+ */
10
+ const SliceSimulatorWrapper = ({ className, children, zIndex, background, message, hasSlices }) => {
11
+ const defaultProps = (0, _prismicio_simulator_kit.getDefaultProps)();
12
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
13
+ className: [_prismicio_simulator_kit.simulatorClass, className].filter(Boolean).join(" "),
14
+ style: {
15
+ zIndex: typeof zIndex === "undefined" ? defaultProps.zIndex : zIndex ?? void 0,
16
+ position: "fixed",
17
+ top: 0,
18
+ left: 0,
19
+ width: "100%",
20
+ height: "100vh",
21
+ overflow: "auto",
22
+ background: typeof background === "undefined" ? defaultProps.background : background ?? void 0
23
+ },
24
+ children: message ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("article", { dangerouslySetInnerHTML: { __html: message } }) : hasSlices ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
25
+ id: "root",
26
+ className: _prismicio_simulator_kit.simulatorRootClass,
27
+ onClickCapture: _prismicio_simulator_kit.onClickHandler,
28
+ onSubmitCapture: _prismicio_simulator_kit.disableEventHandler,
29
+ children
30
+ }) : null
31
+ });
32
+ };
33
+
34
+ //#endregion
35
+ exports.SliceSimulatorWrapper = SliceSimulatorWrapper;
36
+ //# sourceMappingURL=SliceSimulatorWrapper.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliceSimulatorWrapper.cjs","names":["simulatorClass","simulatorRootClass","onClickHandler","disableEventHandler"],"sources":["../../src/simulator/SliceSimulatorWrapper.tsx"],"sourcesContent":["import type { FC, ReactNode } from \"react\";\nimport {\n\tdisableEventHandler,\n\tgetDefaultProps,\n\tonClickHandler,\n\tsimulatorClass,\n\tsimulatorRootClass,\n} from \"@prismicio/simulator/kit\";\nimport type { SliceSimulatorProps } from \"./SliceSimulator\";\n\ntype SliceSimulatorWrapperProps = {\n\tchildren: ReactNode;\n\tclassName?: string;\n\tmessage?: string;\n\thasSlices: boolean;\n} & Omit<SliceSimulatorProps, \"state\">;\n\n/**\n * A wrapper for the slice simulator that isolates the given children from the\n * page's layout.\n */\nexport const SliceSimulatorWrapper: FC<SliceSimulatorWrapperProps> = ({\n\tclassName,\n\tchildren,\n\tzIndex,\n\tbackground,\n\tmessage,\n\thasSlices,\n}) => {\n\tconst defaultProps = getDefaultProps();\n\n\treturn (\n\t\t<div\n\t\t\tclassName={[simulatorClass, className].filter(Boolean).join(\" \")}\n\t\t\tstyle={{\n\t\t\t\tzIndex:\n\t\t\t\t\ttypeof zIndex === \"undefined\"\n\t\t\t\t\t\t? defaultProps.zIndex\n\t\t\t\t\t\t: zIndex ?? undefined,\n\t\t\t\tposition: \"fixed\",\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\twidth: \"100%\",\n\t\t\t\theight: \"100vh\",\n\t\t\t\toverflow: \"auto\",\n\t\t\t\tbackground:\n\t\t\t\t\ttypeof background === \"undefined\"\n\t\t\t\t\t\t? defaultProps.background\n\t\t\t\t\t\t: background ?? undefined,\n\t\t\t}}\n\t\t>\n\t\t\t{message ? (\n\t\t\t\t<article dangerouslySetInnerHTML={{ __html: message }} />\n\t\t\t) : hasSlices ? (\n\t\t\t\t<div\n\t\t\t\t\tid=\"root\"\n\t\t\t\t\tclassName={simulatorRootClass}\n\t\t\t\t\tonClickCapture={onClickHandler as unknown as React.MouseEventHandler}\n\t\t\t\t\tonSubmitCapture={\n\t\t\t\t\t\tdisableEventHandler as unknown as React.FormEventHandler\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t</div>\n\t);\n};\n"],"mappings":";;;;;;;;;AAqBA,MAAa,yBAAyD,EACrE,WACA,UACA,QACA,YACA,SACA,gBACK;CACL,MAAM,8DAAgC;AAEtC,QACC,2CAAC;EACA,WAAW,CAACA,yCAAgB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAChE,OAAO;GACN,QACC,OAAO,WAAW,cACf,aAAa,SACb,UAAU;GACd,UAAU;GACV,KAAK;GACL,MAAM;GACN,OAAO;GACP,QAAQ;GACR,UAAU;GACV,YACC,OAAO,eAAe,cACnB,aAAa,aACb,cAAc;GAClB;YAEA,UACA,2CAAC,aAAQ,yBAAyB,EAAE,QAAQ,SAAS,GAAI,GACtD,YACH,2CAAC;GACA,IAAG;GACH,WAAWC;GACX,gBAAgBC;GAChB,iBACCC;GAGA;IACI,GACH;GACC"}
@@ -0,0 +1,16 @@
1
+
2
+ //#region src/simulator/getSlices.ts
3
+ /**
4
+ * Returns the simulator's slices from the page's `searchParams.state` value.
5
+ * The `state` value is set by `<SliceSimulator>`.
6
+ *
7
+ * **Note**: `getSlices` should only be used in the App Router with a Server
8
+ * Component.
9
+ */
10
+ const getSlices = (state) => {
11
+ throw new Error("getSlices is designed only for Server Components. Convert your simulator page to a Server Component or remove the function from your Client Component.");
12
+ };
13
+
14
+ //#endregion
15
+ exports.getSlices = getSlices;
16
+ //# sourceMappingURL=getSlices.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSlices.cjs","names":[],"sources":["../../src/simulator/getSlices.ts"],"sourcesContent":["import type { StateEvents, StateEventType } from \"@prismicio/simulator/kit\";\n\n/**\n * Returns the simulator's slices from the page's `searchParams.state` value.\n * The `state` value is set by `<SliceSimulator>`.\n *\n * **Note**: `getSlices` should only be used in the App Router with a Server\n * Component.\n */\nexport const getSlices = (\n\tstate: string | null | undefined,\n): StateEvents[StateEventType.Slices] => {\n\t// Prevent tsserver + eslint warnings about unused vars.\n\tstate;\n\n\tthrow new Error(\n\t\t\"getSlices is designed only for Server Components. Convert your simulator page to a Server Component or remove the function from your Client Component.\",\n\t);\n};\n"],"mappings":";;;;;;;;;AASA,MAAa,aACZ,UACwC;AAIxC,OAAM,IAAI,MACT,yJACA"}
@@ -0,0 +1,15 @@
1
+ import { StateEventType, StateEvents } from "@prismicio/simulator/kit";
2
+
3
+ //#region src/simulator/getSlices.d.ts
4
+
5
+ /**
6
+ * Returns the simulator's slices from the page's `searchParams.state` value.
7
+ * The `state` value is set by `<SliceSimulator>`.
8
+ *
9
+ * **Note**: `getSlices` should only be used in the App Router with a Server
10
+ * Component.
11
+ */
12
+ declare const getSlices: (state: string | null | undefined) => StateEvents[StateEventType.Slices];
13
+ //#endregion
14
+ export { getSlices };
15
+ //# sourceMappingURL=getSlices.d.cts.map
@@ -0,0 +1,45 @@
1
+ "use client";
2
+
3
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
4
+ const require_SliceSimulatorWrapper = require('../SliceSimulatorWrapper.cjs');
5
+ const require_getSlices = require('./getSlices.cjs');
6
+ let next_navigation = require("next/navigation");
7
+ let react = require("react");
8
+ let react_jsx_runtime = require("react/jsx-runtime");
9
+ let _prismicio_simulator_kit = require("@prismicio/simulator/kit");
10
+ let lz_string = require("lz-string");
11
+
12
+ //#region src/simulator/react-server/SliceSimulator.tsx
13
+ const STATE_PARAMS_KEY = "state";
14
+ const simulatorManager = new _prismicio_simulator_kit.SimulatorManager();
15
+ const SliceSimulator = ({ children, background, zIndex, className }) => {
16
+ const [message, setMessage] = (0, react.useState)(() => (0, _prismicio_simulator_kit.getDefaultMessage)());
17
+ const router = (0, next_navigation.useRouter)();
18
+ const hasSlices = require_getSlices.getSlices(typeof window !== "undefined" ? new URL(window.location.href).searchParams.get(STATE_PARAMS_KEY) : void 0).length > 0;
19
+ (0, react.useEffect)(() => {
20
+ simulatorManager.state.on(_prismicio_simulator_kit.StateEventType.Slices, (newSlices) => {
21
+ const url = new URL(window.location.href);
22
+ url.searchParams.set(STATE_PARAMS_KEY, (0, lz_string.compressToEncodedURIComponent)(JSON.stringify(newSlices)));
23
+ window.history.replaceState(null, "", url);
24
+ setTimeout(() => router.refresh(), 0);
25
+ }, "simulator-slices");
26
+ simulatorManager.state.on(_prismicio_simulator_kit.StateEventType.Message, (newMessage) => setMessage(newMessage), "simulator-message");
27
+ simulatorManager.init();
28
+ return () => {
29
+ simulatorManager.state.off(_prismicio_simulator_kit.StateEventType.Slices, "simulator-slices");
30
+ simulatorManager.state.off(_prismicio_simulator_kit.StateEventType.Message, "simulator-message");
31
+ };
32
+ }, []);
33
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_SliceSimulatorWrapper.SliceSimulatorWrapper, {
34
+ message,
35
+ hasSlices,
36
+ background,
37
+ zIndex,
38
+ className,
39
+ children
40
+ });
41
+ };
42
+
43
+ //#endregion
44
+ exports.SliceSimulator = SliceSimulator;
45
+ //# sourceMappingURL=SliceSimulator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliceSimulator.cjs","names":["SimulatorManager","getSlices","StateEventType","SliceSimulatorWrapper"],"sources":["../../../src/simulator/react-server/SliceSimulator.tsx"],"sourcesContent":["// This `<SliceSimulator>` is only accessible from Server Components.\n\n\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport type { FC } from \"react\";\n\nimport { useRouter } from \"next/navigation\";\nimport {\n\tSimulatorManager,\n\tStateEventType,\n\tgetDefaultMessage,\n} from \"@prismicio/simulator/kit\";\nimport type { SliceSimulatorProps as BaseSliceSimulatorProps } from \"@prismicio/simulator/kit\";\nimport { compressToEncodedURIComponent } from \"lz-string\";\n\nimport { SliceSimulatorWrapper } from \"../SliceSimulatorWrapper\";\nimport { getSlices } from \"./getSlices\";\n\nconst STATE_PARAMS_KEY = \"state\";\n\nconst simulatorManager = new SimulatorManager();\n\nexport type SliceSimulatorProps = Omit<BaseSliceSimulatorProps, \"state\"> & {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n};\n\nexport const SliceSimulator: FC<SliceSimulatorProps> = ({\n\tchildren,\n\tbackground,\n\tzIndex,\n\tclassName,\n}) => {\n\tconst [message, setMessage] = useState(() => getDefaultMessage());\n\tconst router = useRouter();\n\n\tconst state =\n\t\ttypeof window !== \"undefined\"\n\t\t\t? new URL(window.location.href).searchParams.get(STATE_PARAMS_KEY)\n\t\t\t: undefined;\n\tconst hasSlices = getSlices(state).length > 0;\n\n\tuseEffect(() => {\n\t\tsimulatorManager.state.on(\n\t\t\tStateEventType.Slices,\n\t\t\t(newSlices) => {\n\t\t\t\tconst url = new URL(window.location.href);\n\t\t\t\turl.searchParams.set(\n\t\t\t\t\tSTATE_PARAMS_KEY,\n\t\t\t\t\tcompressToEncodedURIComponent(JSON.stringify(newSlices)),\n\t\t\t\t);\n\n\t\t\t\twindow.history.replaceState(null, \"\", url);\n\t\t\t\t// Wait until the next tick to prevent URL state race conditions.\n\t\t\t\tsetTimeout(() => router.refresh(), 0);\n\t\t\t},\n\t\t\t\"simulator-slices\",\n\t\t);\n\t\tsimulatorManager.state.on(\n\t\t\tStateEventType.Message,\n\t\t\t(newMessage) => setMessage(newMessage),\n\t\t\t\"simulator-message\",\n\t\t);\n\n\t\tsimulatorManager.init();\n\n\t\treturn () => {\n\t\t\tsimulatorManager.state.off(StateEventType.Slices, \"simulator-slices\");\n\n\t\t\tsimulatorManager.state.off(StateEventType.Message, \"simulator-message\");\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<SliceSimulatorWrapper\n\t\t\tmessage={message}\n\t\t\thasSlices={hasSlices}\n\t\t\tbackground={background}\n\t\t\tzIndex={zIndex}\n\t\t\tclassName={className}\n\t\t>\n\t\t\t{children}\n\t\t</SliceSimulatorWrapper>\n\t);\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAM,mBAAmB;AAEzB,MAAM,mBAAmB,IAAIA,2CAAkB;AAO/C,MAAa,kBAA2C,EACvD,UACA,YACA,QACA,gBACK;CACL,MAAM,CAAC,SAAS,yFAAgD,CAAC;CACjE,MAAM,yCAAoB;CAM1B,MAAM,YAAYC,4BAHjB,OAAO,WAAW,cACf,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,iBAAiB,GAChE,OAC8B,CAAC,SAAS;AAE5C,4BAAgB;AACf,mBAAiB,MAAM,GACtBC,wCAAe,SACd,cAAc;GACd,MAAM,MAAM,IAAI,IAAI,OAAO,SAAS,KAAK;AACzC,OAAI,aAAa,IAChB,+DAC8B,KAAK,UAAU,UAAU,CAAC,CACxD;AAED,UAAO,QAAQ,aAAa,MAAM,IAAI,IAAI;AAE1C,oBAAiB,OAAO,SAAS,EAAE,EAAE;KAEtC,mBACA;AACD,mBAAiB,MAAM,GACtBA,wCAAe,UACd,eAAe,WAAW,WAAW,EACtC,oBACA;AAED,mBAAiB,MAAM;AAEvB,eAAa;AACZ,oBAAiB,MAAM,IAAIA,wCAAe,QAAQ,mBAAmB;AAErE,oBAAiB,MAAM,IAAIA,wCAAe,SAAS,oBAAoB;;IAEtE,EAAE,CAAC;AAEN,QACC,2CAACC;EACS;EACE;EACC;EACJ;EACG;EAEV;GACsB"}
@@ -0,0 +1,12 @@
1
+ import { FC } from "react";
2
+ import { SliceSimulatorProps } from "@prismicio/simulator/kit";
3
+
4
+ //#region src/simulator/react-server/SliceSimulator.d.ts
5
+ type SliceSimulatorProps$1 = Omit<SliceSimulatorProps, "state"> & {
6
+ children: React.ReactNode;
7
+ className?: string;
8
+ };
9
+ declare const SliceSimulator: FC<SliceSimulatorProps$1>;
10
+ //#endregion
11
+ export { SliceSimulator };
12
+ //# sourceMappingURL=SliceSimulator.d.cts.map
@@ -0,0 +1,12 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let _prismicio_simulator_kit = require("@prismicio/simulator/kit");
3
+ let lz_string = require("lz-string");
4
+
5
+ //#region src/simulator/react-server/getSlices.ts
6
+ const getSlices = (state) => {
7
+ return state ? JSON.parse((0, lz_string.decompressFromEncodedURIComponent)(state)) : (0, _prismicio_simulator_kit.getDefaultSlices)();
8
+ };
9
+
10
+ //#endregion
11
+ exports.getSlices = getSlices;
12
+ //# sourceMappingURL=getSlices.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSlices.cjs","names":[],"sources":["../../../src/simulator/react-server/getSlices.ts"],"sourcesContent":["// This `getSlices` is only accessible from Server Components.\n\nimport { getDefaultSlices } from \"@prismicio/simulator/kit\";\nimport type { StateEvents, StateEventType } from \"@prismicio/simulator/kit\";\nimport { decompressFromEncodedURIComponent } from \"lz-string\";\n\nexport const getSlices = (\n\tstate: string | null | undefined,\n): StateEvents[StateEventType.Slices] => {\n\treturn state\n\t\t? JSON.parse(decompressFromEncodedURIComponent(state))\n\t\t: getDefaultSlices();\n};\n"],"mappings":";;;;;AAMA,MAAa,aACZ,UACwC;AACxC,QAAO,QACJ,KAAK,uDAAwC,MAAM,CAAC,mDAClC"}
@@ -0,0 +1,7 @@
1
+ import { StateEventType, StateEvents } from "@prismicio/simulator/kit";
2
+
3
+ //#region src/simulator/react-server/getSlices.d.ts
4
+ declare const getSlices: (state: string | null | undefined) => StateEvents[StateEventType.Slices];
5
+ //#endregion
6
+ export { getSlices };
7
+ //# sourceMappingURL=getSlices.d.cts.map
@@ -0,0 +1,15 @@
1
+ //#region src/simulator/types.d.ts
2
+ /**
3
+ * Parameters provided to the Slice Simulator page.
4
+ *
5
+ * **Note**: `SliceSimulatorParams` should only be used in the App Router with a
6
+ * Server Component.
7
+ */
8
+ type SliceSimulatorParams = {
9
+ searchParams: Promise<{
10
+ state?: string;
11
+ }>;
12
+ };
13
+ //#endregion
14
+ export { SliceSimulatorParams };
15
+ //# sourceMappingURL=types.d.cts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismicio/next",
3
- "version": "2.1.1-canary.97120ae",
3
+ "version": "2.1.1-pr.120.3fae0cb",
4
4
  "description": "Helpers to integrate Prismic into Next.js apps",
5
5
  "keywords": [
6
6
  "typescript",
@@ -20,6 +20,7 @@
20
20
  "exports": {
21
21
  ".": "./dist/index.cjs",
22
22
  "./pages": "./dist/pages.cjs",
23
+ "./react-server": "./dist/react-server.cjs",
23
24
  "./package.json": "./package.json"
24
25
  },
25
26
  "main": "./dist/index.cjs",
@@ -32,6 +33,9 @@
32
33
  ],
33
34
  "pages": [
34
35
  "./dist/pages/index.d.ts"
36
+ ],
37
+ "react-server": [
38
+ "./dist/react-server/index.d.ts"
35
39
  ]
36
40
  }
37
41
  },
@@ -55,7 +59,9 @@
55
59
  "types": "tsc --noEmit"
56
60
  },
57
61
  "dependencies": {
58
- "imgix-url-builder": "^0.0.5"
62
+ "@prismicio/simulator": "^0.1.4",
63
+ "imgix-url-builder": "^0.0.5",
64
+ "lz-string": "^1.5.0"
59
65
  },
60
66
  "devDependencies": {
61
67
  "@playwright/test": "^1.49.1",
package/src/index.ts CHANGED
@@ -15,6 +15,13 @@ export type { RedirectToPreviewURLConfig } from "./redirectToPreviewURL";
15
15
  export { PrismicNextImage } from "./PrismicNextImage";
16
16
  export type { PrismicNextImageProps } from "./PrismicNextImage";
17
17
 
18
+ export { SliceSimulator, getSlices } from "./simulator";
19
+ export type {
20
+ SliceSimulatorProps,
21
+ SliceSimulatorSliceZoneProps,
22
+ SliceSimulatorParams,
23
+ } from "./simulator";
24
+
18
25
  export { imgixLoader } from "./imgixLoader";
19
26
 
20
27
  export type { CreateClientConfig } from "./types";
@@ -0,0 +1,112 @@
1
+ "use client";
2
+
3
+ import { useEffect, useState } from "react";
4
+ import type { ComponentType, FC } from "react";
5
+
6
+ import {
7
+ SimulatorManager,
8
+ StateEventType,
9
+ getDefaultMessage,
10
+ getDefaultSlices,
11
+ } from "@prismicio/simulator/kit";
12
+ import type {
13
+ SliceSimulatorProps as BaseSliceSimulatorProps,
14
+ SliceSimulatorState,
15
+ } from "@prismicio/simulator/kit";
16
+
17
+ import { SliceSimulatorWrapper } from "./SliceSimulatorWrapper";
18
+
19
+ const simulatorManager = new SimulatorManager();
20
+
21
+ export type SliceSimulatorSliceZoneProps = {
22
+ slices: SliceSimulatorState["slices"];
23
+ };
24
+
25
+ export type SliceSimulatorProps = {
26
+ className?: string;
27
+ } & Omit<BaseSliceSimulatorProps, "state"> &
28
+ (
29
+ | {
30
+ /**
31
+ * React component to render simulated Slices.
32
+ *
33
+ * @example
34
+ *
35
+ * ```tsx
36
+ * import { SliceSimulator } from "@slicemachine/adapter-next/simulator";
37
+ * import { SliceZone } from "@prismicio/react";
38
+ *
39
+ * import { components } from "../slices";
40
+ *
41
+ * <SliceSimulator
42
+ * sliceZone={({ slices }) => (
43
+ * <SliceZone slices={slices} components={components} />
44
+ * )}
45
+ * />;
46
+ * ```
47
+ */
48
+ sliceZone: ComponentType<SliceSimulatorSliceZoneProps>;
49
+ }
50
+ | {
51
+ children: React.ReactNode;
52
+ }
53
+ );
54
+
55
+ /**
56
+ * Simulate slices in isolation. The slice simulator enables live slice
57
+ * development in Slice Machine and live previews in the Page Builder.
58
+ */
59
+ export const SliceSimulator: FC<SliceSimulatorProps> = ({
60
+ background,
61
+ zIndex,
62
+ className,
63
+ ...restProps
64
+ }) => {
65
+ if (!("sliceZone" in restProps)) {
66
+ throw new Error(
67
+ "A sliceZone prop must be provided when <SliceZone> is rendered in a Client Component. Add a sliceZone prop or convert your simulator to a Server Component with the getSlices helper.",
68
+ );
69
+ }
70
+
71
+ const [slices, setSlices] = useState(() => getDefaultSlices());
72
+ const [message, setMessage] = useState(() => getDefaultMessage());
73
+
74
+ useEffect(() => {
75
+ simulatorManager.state.on(
76
+ StateEventType.Slices,
77
+ (_slices) => {
78
+ setSlices(_slices);
79
+ },
80
+ "simulator-slices",
81
+ );
82
+ simulatorManager.state.on(
83
+ StateEventType.Message,
84
+ (_message) => {
85
+ setMessage(_message);
86
+ },
87
+ "simulator-message",
88
+ );
89
+
90
+ simulatorManager.init();
91
+
92
+ return () => {
93
+ simulatorManager.state.off(StateEventType.Slices, "simulator-slices");
94
+
95
+ simulatorManager.state.off(StateEventType.Message, "simulator-message");
96
+ };
97
+ }, []);
98
+
99
+ const SliceZoneComp = restProps.sliceZone;
100
+
101
+ return (
102
+ <SliceSimulatorWrapper
103
+ message={message}
104
+ hasSlices={slices.length > 0}
105
+ background={background}
106
+ zIndex={zIndex}
107
+ className={className}
108
+ >
109
+ <SliceZoneComp slices={slices} />
110
+ </SliceSimulatorWrapper>
111
+ );
112
+ };
@@ -0,0 +1,68 @@
1
+ import type { FC, ReactNode } from "react";
2
+ import {
3
+ disableEventHandler,
4
+ getDefaultProps,
5
+ onClickHandler,
6
+ simulatorClass,
7
+ simulatorRootClass,
8
+ } from "@prismicio/simulator/kit";
9
+ import type { SliceSimulatorProps } from "./SliceSimulator";
10
+
11
+ type SliceSimulatorWrapperProps = {
12
+ children: ReactNode;
13
+ className?: string;
14
+ message?: string;
15
+ hasSlices: boolean;
16
+ } & Omit<SliceSimulatorProps, "state">;
17
+
18
+ /**
19
+ * A wrapper for the slice simulator that isolates the given children from the
20
+ * page's layout.
21
+ */
22
+ export const SliceSimulatorWrapper: FC<SliceSimulatorWrapperProps> = ({
23
+ className,
24
+ children,
25
+ zIndex,
26
+ background,
27
+ message,
28
+ hasSlices,
29
+ }) => {
30
+ const defaultProps = getDefaultProps();
31
+
32
+ return (
33
+ <div
34
+ className={[simulatorClass, className].filter(Boolean).join(" ")}
35
+ style={{
36
+ zIndex:
37
+ typeof zIndex === "undefined"
38
+ ? defaultProps.zIndex
39
+ : zIndex ?? undefined,
40
+ position: "fixed",
41
+ top: 0,
42
+ left: 0,
43
+ width: "100%",
44
+ height: "100vh",
45
+ overflow: "auto",
46
+ background:
47
+ typeof background === "undefined"
48
+ ? defaultProps.background
49
+ : background ?? undefined,
50
+ }}
51
+ >
52
+ {message ? (
53
+ <article dangerouslySetInnerHTML={{ __html: message }} />
54
+ ) : hasSlices ? (
55
+ <div
56
+ id="root"
57
+ className={simulatorRootClass}
58
+ onClickCapture={onClickHandler as unknown as React.MouseEventHandler}
59
+ onSubmitCapture={
60
+ disableEventHandler as unknown as React.FormEventHandler
61
+ }
62
+ >
63
+ {children}
64
+ </div>
65
+ ) : null}
66
+ </div>
67
+ );
68
+ };
@@ -0,0 +1,19 @@
1
+ import type { StateEvents, StateEventType } from "@prismicio/simulator/kit";
2
+
3
+ /**
4
+ * Returns the simulator's slices from the page's `searchParams.state` value.
5
+ * The `state` value is set by `<SliceSimulator>`.
6
+ *
7
+ * **Note**: `getSlices` should only be used in the App Router with a Server
8
+ * Component.
9
+ */
10
+ export const getSlices = (
11
+ state: string | null | undefined,
12
+ ): StateEvents[StateEventType.Slices] => {
13
+ // Prevent tsserver + eslint warnings about unused vars.
14
+ state;
15
+
16
+ throw new Error(
17
+ "getSlices is designed only for Server Components. Convert your simulator page to a Server Component or remove the function from your Client Component.",
18
+ );
19
+ };
@@ -0,0 +1,8 @@
1
+ export { SliceSimulator } from "./SliceSimulator";
2
+ export type {
3
+ SliceSimulatorProps,
4
+ SliceSimulatorSliceZoneProps,
5
+ } from "./SliceSimulator";
6
+
7
+ export { getSlices } from "./getSlices";
8
+ export type { SliceSimulatorParams } from "./types";
@@ -0,0 +1,86 @@
1
+ // This `<SliceSimulator>` is only accessible from Server Components.
2
+
3
+ "use client";
4
+
5
+ import { useEffect, useState } from "react";
6
+ import type { FC } from "react";
7
+
8
+ import { useRouter } from "next/navigation";
9
+ import {
10
+ SimulatorManager,
11
+ StateEventType,
12
+ getDefaultMessage,
13
+ } from "@prismicio/simulator/kit";
14
+ import type { SliceSimulatorProps as BaseSliceSimulatorProps } from "@prismicio/simulator/kit";
15
+ import { compressToEncodedURIComponent } from "lz-string";
16
+
17
+ import { SliceSimulatorWrapper } from "../SliceSimulatorWrapper";
18
+ import { getSlices } from "./getSlices";
19
+
20
+ const STATE_PARAMS_KEY = "state";
21
+
22
+ const simulatorManager = new SimulatorManager();
23
+
24
+ export type SliceSimulatorProps = Omit<BaseSliceSimulatorProps, "state"> & {
25
+ children: React.ReactNode;
26
+ className?: string;
27
+ };
28
+
29
+ export const SliceSimulator: FC<SliceSimulatorProps> = ({
30
+ children,
31
+ background,
32
+ zIndex,
33
+ className,
34
+ }) => {
35
+ const [message, setMessage] = useState(() => getDefaultMessage());
36
+ const router = useRouter();
37
+
38
+ const state =
39
+ typeof window !== "undefined"
40
+ ? new URL(window.location.href).searchParams.get(STATE_PARAMS_KEY)
41
+ : undefined;
42
+ const hasSlices = getSlices(state).length > 0;
43
+
44
+ useEffect(() => {
45
+ simulatorManager.state.on(
46
+ StateEventType.Slices,
47
+ (newSlices) => {
48
+ const url = new URL(window.location.href);
49
+ url.searchParams.set(
50
+ STATE_PARAMS_KEY,
51
+ compressToEncodedURIComponent(JSON.stringify(newSlices)),
52
+ );
53
+
54
+ window.history.replaceState(null, "", url);
55
+ // Wait until the next tick to prevent URL state race conditions.
56
+ setTimeout(() => router.refresh(), 0);
57
+ },
58
+ "simulator-slices",
59
+ );
60
+ simulatorManager.state.on(
61
+ StateEventType.Message,
62
+ (newMessage) => setMessage(newMessage),
63
+ "simulator-message",
64
+ );
65
+
66
+ simulatorManager.init();
67
+
68
+ return () => {
69
+ simulatorManager.state.off(StateEventType.Slices, "simulator-slices");
70
+
71
+ simulatorManager.state.off(StateEventType.Message, "simulator-message");
72
+ };
73
+ }, []);
74
+
75
+ return (
76
+ <SliceSimulatorWrapper
77
+ message={message}
78
+ hasSlices={hasSlices}
79
+ background={background}
80
+ zIndex={zIndex}
81
+ className={className}
82
+ >
83
+ {children}
84
+ </SliceSimulatorWrapper>
85
+ );
86
+ };
@@ -0,0 +1,13 @@
1
+ // This `getSlices` is only accessible from Server Components.
2
+
3
+ import { getDefaultSlices } from "@prismicio/simulator/kit";
4
+ import type { StateEvents, StateEventType } from "@prismicio/simulator/kit";
5
+ import { decompressFromEncodedURIComponent } from "lz-string";
6
+
7
+ export const getSlices = (
8
+ state: string | null | undefined,
9
+ ): StateEvents[StateEventType.Slices] => {
10
+ return state
11
+ ? JSON.parse(decompressFromEncodedURIComponent(state))
12
+ : getDefaultSlices();
13
+ };
@@ -0,0 +1,4 @@
1
+ // These exports are only accessible from Server Components.
2
+
3
+ export { SliceSimulator } from "./SliceSimulator";
4
+ export { getSlices } from "./getSlices";
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Parameters provided to the Slice Simulator page.
3
+ *
4
+ * **Note**: `SliceSimulatorParams` should only be used in the App Router with a
5
+ * Server Component.
6
+ */
7
+ export type SliceSimulatorParams = {
8
+ searchParams: Promise<{
9
+ state?: string;
10
+ }>;
11
+ };