@povio/ui 5.0.0-rc.11 → 5.0.0-rc.12

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.
@@ -1,4 +1,4 @@
1
- import { ComponentArtboard } from "./ComponentGallery-DDSqnm9f.js";
1
+ import { ComponentArtboard } from "./ComponentGallery-D4U5hXZL.js";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/app-canvas/CanvasComponentsFrame.tsx
@@ -1,5 +1,5 @@
1
1
  import { t as createLucideIcon } from "./createLucideIcon-LcezOE4z.js";
2
- import { i as inspectTokens } from "./UIConfigurator-C_2kgJtm.js";
2
+ import { o as inspectTokens } from "./UIConfigurator-CBU0G6rb.js";
3
3
  import { n as ArrowLeft } from "./DropdownMenu-5jmtgLXd.js";
4
4
  import { i as ArrowRight } from "./DropdownMenuDesktop-Cl9gZVq0.js";
5
5
  import { n as Italic, r as Bold, t as Underline } from "./underline-66hmELxa.js";
@@ -609,7 +609,7 @@ const emptyConfiguration = () => ({
609
609
  });
610
610
  const ConfigurationContext = createContext(null);
611
611
  function UIConfigurationProvider(t0) {
612
- const $ = c(48);
612
+ const $ = c(50);
613
613
  const { defaults, initialValue, onApply, children } = t0;
614
614
  const inheritedOverrides = UIOverrides.useConfig();
615
615
  const [applied, setApplied] = useState(initialValue ?? emptyConfiguration);
@@ -629,89 +629,104 @@ function UIConfigurationProvider(t0) {
629
629
  $[0] = t1;
630
630
  } else t1 = $[0];
631
631
  const hostComponents = t1;
632
- const active = previewConfiguration ?? (isOpen ? draft : applied);
633
632
  let t2;
634
- if ($[1] !== applied) {
635
- t2 = () => {
636
- setFloating(false);
637
- setDraft(structuredClone(applied));
633
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
634
+ t2 = (value, t3) => {
635
+ if (t3 === void 0 ? false : t3) setOpen(false);
636
+ setApplied(structuredClone(value));
637
+ setDraft(structuredClone(value));
638
+ setPreviewConfiguration(null);
638
639
  setRevision(_temp3$4);
639
- setOpen(true);
640
640
  };
641
- $[1] = applied;
642
- $[2] = t2;
643
- } else t2 = $[2];
644
- const open = t2;
641
+ $[1] = t2;
642
+ } else t2 = $[1];
643
+ const replaceConfiguration = t2;
644
+ const active = previewConfiguration ?? (isOpen ? draft : applied);
645
645
  let t3;
646
- if ($[3] !== isOpen || $[4] !== open) {
646
+ if ($[2] !== applied) {
647
647
  t3 = () => {
648
- if (isOpen) setRevision(_temp4$4);
648
+ setFloating(false);
649
+ setDraft(structuredClone(applied));
650
+ setRevision(_temp4$4);
651
+ setOpen(true);
652
+ };
653
+ $[2] = applied;
654
+ $[3] = t3;
655
+ } else t3 = $[3];
656
+ const open = t3;
657
+ let t4;
658
+ if ($[4] !== isOpen || $[5] !== open) {
659
+ t4 = () => {
660
+ if (isOpen) setRevision(_temp5$2);
649
661
  else open();
650
662
  setFloating(true);
651
663
  };
652
- $[3] = isOpen;
653
- $[4] = open;
654
- $[5] = t3;
655
- } else t3 = $[5];
656
- const openFloating = t3;
657
- let t4;
658
- if ($[6] !== isOpen || $[7] !== openFloating) {
659
- t4 = (name) => {
660
- setTokenRequest((current) => ({
664
+ $[4] = isOpen;
665
+ $[5] = open;
666
+ $[6] = t4;
667
+ } else t4 = $[6];
668
+ const openFloating = t4;
669
+ let t5;
670
+ if ($[7] !== isOpen || $[8] !== openFloating) {
671
+ t5 = (name) => {
672
+ setTokenRequest((current_0) => ({
661
673
  name,
662
- id: (current?.id ?? 0) + 1
674
+ id: (current_0?.id ?? 0) + 1
663
675
  }));
664
676
  if (!isOpen) openFloating();
665
677
  };
666
- $[6] = isOpen;
667
- $[7] = openFloating;
668
- $[8] = t4;
669
- } else t4 = $[8];
670
- const revealToken = t4;
671
- let t5;
672
- if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
673
- t5 = () => setTokenRequest(null);
678
+ $[7] = isOpen;
679
+ $[8] = openFloating;
674
680
  $[9] = t5;
675
681
  } else t5 = $[9];
676
- const clearTokenRequest = t5;
682
+ const revealToken = t5;
677
683
  let t6;
678
- if ($[10] !== applied) {
679
- t6 = () => {
684
+ if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
685
+ t6 = () => setTokenRequest(null);
686
+ $[10] = t6;
687
+ } else t6 = $[10];
688
+ const clearTokenRequest = t6;
689
+ let t7;
690
+ if ($[11] !== applied) {
691
+ t7 = () => {
680
692
  setDraft(structuredClone(applied));
681
693
  setOpen(false);
682
694
  };
683
- $[10] = applied;
684
- $[11] = t6;
685
- } else t6 = $[11];
686
- const cancel = t6;
687
- let t7;
688
- if ($[12] !== draft || $[13] !== onApply) {
689
- t7 = () => {
695
+ $[11] = applied;
696
+ $[12] = t7;
697
+ } else t7 = $[12];
698
+ const cancel = t7;
699
+ let t8;
700
+ if ($[13] !== draft || $[14] !== onApply) {
701
+ t8 = () => {
690
702
  onApply?.(structuredClone(draft));
691
703
  setApplied(structuredClone(draft));
692
704
  setOpen(false);
693
705
  };
694
- $[12] = draft;
695
- $[13] = onApply;
696
- $[14] = t7;
697
- } else t7 = $[14];
698
- const apply = t7;
699
- let t8;
700
- if ($[15] !== active.overrides || $[16] !== inheritedOverrides) {
701
- t8 = applyCvaEdits(inheritedOverrides, active.overrides);
702
- $[15] = active.overrides;
703
- $[16] = inheritedOverrides;
704
- $[17] = t8;
705
- } else t8 = $[17];
706
- const overrides = t8;
707
- const t9 = componentHosts > 0;
708
- let t10;
709
- if ($[18] !== active || $[19] !== apply || $[20] !== cancel || $[21] !== defaults || $[22] !== draft || $[23] !== floating || $[24] !== inheritedOverrides || $[25] !== isOpen || $[26] !== open || $[27] !== openFloating || $[28] !== revealToken || $[29] !== revision || $[30] !== t9 || $[31] !== tokenRequest) {
710
- t10 = {
706
+ $[13] = draft;
707
+ $[14] = onApply;
708
+ $[15] = t8;
709
+ } else t8 = $[15];
710
+ const apply = t8;
711
+ let t9;
712
+ if ($[16] !== active.overrides || $[17] !== inheritedOverrides) {
713
+ t9 = applyCvaEdits(inheritedOverrides, active.overrides);
714
+ $[16] = active.overrides;
715
+ $[17] = inheritedOverrides;
716
+ $[18] = t9;
717
+ } else t9 = $[18];
718
+ const overrides = t9;
719
+ const t10 = isOpen ? draft : applied;
720
+ const t11 = componentHosts > 0;
721
+ let t12;
722
+ if ($[19] !== active || $[20] !== apply || $[21] !== cancel || $[22] !== defaults || $[23] !== draft || $[24] !== floating || $[25] !== inheritedOverrides || $[26] !== isOpen || $[27] !== open || $[28] !== openFloating || $[29] !== revealToken || $[30] !== revision || $[31] !== t10 || $[32] !== t11 || $[33] !== tokenRequest) {
723
+ t12 = {
711
724
  defaults,
712
725
  inheritedOverrides,
713
726
  draft,
714
727
  active,
728
+ currentConfiguration: t10,
729
+ replaceConfiguration,
715
730
  setPreviewConfiguration,
716
731
  setDraft,
717
732
  isOpen,
@@ -724,80 +739,84 @@ function UIConfigurationProvider(t0) {
724
739
  revealToken,
725
740
  tokenRequest,
726
741
  clearTokenRequest,
727
- componentsHosted: t9,
742
+ componentsHosted: t11,
728
743
  hostComponents
729
744
  };
730
- $[18] = active;
731
- $[19] = apply;
732
- $[20] = cancel;
733
- $[21] = defaults;
734
- $[22] = draft;
735
- $[23] = floating;
736
- $[24] = inheritedOverrides;
737
- $[25] = isOpen;
738
- $[26] = open;
739
- $[27] = openFloating;
740
- $[28] = revealToken;
741
- $[29] = revision;
742
- $[30] = t9;
743
- $[31] = tokenRequest;
744
- $[32] = t10;
745
- } else t10 = $[32];
746
- const contextValue = t10;
747
- let t11;
748
- if ($[33] !== active.theme || $[34] !== defaults) {
749
- t11 = runtimeCss(defaults, active.theme);
750
- $[33] = active.theme;
751
- $[34] = defaults;
752
- $[35] = t11;
753
- } else t11 = $[35];
754
- let t12;
755
- if ($[36] !== t11) {
756
- t12 = /* @__PURE__ */ jsx("style", {
745
+ $[19] = active;
746
+ $[20] = apply;
747
+ $[21] = cancel;
748
+ $[22] = defaults;
749
+ $[23] = draft;
750
+ $[24] = floating;
751
+ $[25] = inheritedOverrides;
752
+ $[26] = isOpen;
753
+ $[27] = open;
754
+ $[28] = openFloating;
755
+ $[29] = revealToken;
756
+ $[30] = revision;
757
+ $[31] = t10;
758
+ $[32] = t11;
759
+ $[33] = tokenRequest;
760
+ $[34] = t12;
761
+ } else t12 = $[34];
762
+ const contextValue = t12;
763
+ let t13;
764
+ if ($[35] !== active.theme || $[36] !== defaults) {
765
+ t13 = runtimeCss(defaults, active.theme);
766
+ $[35] = active.theme;
767
+ $[36] = defaults;
768
+ $[37] = t13;
769
+ } else t13 = $[37];
770
+ let t14;
771
+ if ($[38] !== t13) {
772
+ t14 = /* @__PURE__ */ jsx("style", {
757
773
  "data-povio-ui-configuration": true,
758
- children: t11
774
+ children: t13
759
775
  });
760
- $[36] = t11;
761
- $[37] = t12;
762
- } else t12 = $[37];
763
- let t13;
764
- if ($[38] !== active.config || $[39] !== children) {
765
- t13 = /* @__PURE__ */ jsx(UIConfig.Provider, {
776
+ $[38] = t13;
777
+ $[39] = t14;
778
+ } else t14 = $[39];
779
+ let t15;
780
+ if ($[40] !== active.config || $[41] !== children) {
781
+ t15 = /* @__PURE__ */ jsx(UIConfig.Provider, {
766
782
  config: active.config,
767
783
  children
768
784
  });
769
- $[38] = active.config;
770
- $[39] = children;
771
- $[40] = t13;
772
- } else t13 = $[40];
773
- let t14;
774
- if ($[41] !== overrides || $[42] !== t13) {
775
- t14 = /* @__PURE__ */ jsx(UIOverrides.Provider, {
785
+ $[40] = active.config;
786
+ $[41] = children;
787
+ $[42] = t15;
788
+ } else t15 = $[42];
789
+ let t16;
790
+ if ($[43] !== overrides || $[44] !== t15) {
791
+ t16 = /* @__PURE__ */ jsx(UIOverrides.Provider, {
776
792
  config: overrides,
777
- children: t13
793
+ children: t15
778
794
  });
779
- $[41] = overrides;
780
- $[42] = t13;
781
- $[43] = t14;
782
- } else t14 = $[43];
783
- let t15;
784
- if ($[44] !== contextValue || $[45] !== t12 || $[46] !== t14) {
785
- t15 = /* @__PURE__ */ jsxs(ConfigurationContext.Provider, {
795
+ $[43] = overrides;
796
+ $[44] = t15;
797
+ $[45] = t16;
798
+ } else t16 = $[45];
799
+ let t17;
800
+ if ($[46] !== contextValue || $[47] !== t14 || $[48] !== t16) {
801
+ t17 = /* @__PURE__ */ jsxs(ConfigurationContext.Provider, {
786
802
  value: contextValue,
787
- children: [t12, t14]
803
+ children: [t14, t16]
788
804
  });
789
- $[44] = contextValue;
790
- $[45] = t12;
791
- $[46] = t14;
792
- $[47] = t15;
793
- } else t15 = $[47];
794
- return t15;
805
+ $[46] = contextValue;
806
+ $[47] = t14;
807
+ $[48] = t16;
808
+ $[49] = t17;
809
+ } else t17 = $[49];
810
+ return t17;
811
+ }
812
+ function _temp5$2(value_1) {
813
+ return value_1 + 1;
795
814
  }
796
815
  function _temp4$4(value_0) {
797
816
  return value_0 + 1;
798
817
  }
799
- function _temp3$4(value) {
800
- return value + 1;
818
+ function _temp3$4(current) {
819
+ return current + 1;
801
820
  }
802
821
  function _temp2$5(count_0) {
803
822
  return count_0 - 1;
@@ -5424,7 +5443,7 @@ function _temp(t0) {
5424
5443
  }
5425
5444
  //#endregion
5426
5445
  //#region src/configurator/ComponentPreview.tsx
5427
- const ComponentGallery = lazy(() => import("./ComponentGallery-DDSqnm9f.js"));
5446
+ const ComponentGallery = lazy(() => import("./ComponentGallery-D4U5hXZL.js"));
5428
5447
  /** Every component, styled by a configuration; the configurator's preview and the App Canvas Components view. */
5429
5448
  function ComponentPreview(t0) {
5430
5449
  const $ = c(14);
@@ -5769,20 +5788,34 @@ function TokenField({ name, value, original, changed, onChange, onReset, onValid
5769
5788
  });
5770
5789
  }
5771
5790
  function PopoutOverlay(t0) {
5772
- const $ = c(3);
5773
- const { children, className } = t0;
5791
+ const $ = c(6);
5792
+ const { children, className, onOpenChange } = t0;
5774
5793
  const t1 = className ?? "studio-overlay";
5775
5794
  let t2;
5776
- if ($[0] !== children || $[1] !== t1) {
5777
- t2 = /* @__PURE__ */ jsx("div", {
5795
+ if ($[0] !== onOpenChange) {
5796
+ t2 = (event) => {
5797
+ if (event.key === "Escape" && !event.defaultPrevented) {
5798
+ event.preventDefault();
5799
+ event.stopPropagation();
5800
+ onOpenChange?.(false);
5801
+ }
5802
+ };
5803
+ $[0] = onOpenChange;
5804
+ $[1] = t2;
5805
+ } else t2 = $[1];
5806
+ let t3;
5807
+ if ($[2] !== children || $[3] !== t1 || $[4] !== t2) {
5808
+ t3 = /* @__PURE__ */ jsx("div", {
5778
5809
  className: t1,
5810
+ onKeyDown: t2,
5779
5811
  children
5780
5812
  });
5781
- $[0] = children;
5782
- $[1] = t1;
5783
- $[2] = t2;
5784
- } else t2 = $[2];
5785
- return t2;
5813
+ $[2] = children;
5814
+ $[3] = t1;
5815
+ $[4] = t2;
5816
+ $[5] = t3;
5817
+ } else t3 = $[5];
5818
+ return t3;
5786
5819
  }
5787
5820
  function ConfigurationModalContent({ memory, windowBounds, poppedOut, floating, onPopout, onDock, onMinimize, popupBlocked }) {
5788
5821
  const Overlay = poppedOut || floating ? PopoutOverlay : $8b8d26808cb8cb53$export$8948f78d83984c69;
@@ -5799,7 +5832,7 @@ function ConfigurationModalContent({ memory, windowBounds, poppedOut, floating,
5799
5832
  return () => observer.disconnect();
5800
5833
  }, [studioWindow.ref]);
5801
5834
  const inherited = UIConfig.useConfig();
5802
- const { defaults, draft, setDraft, isOpen, cancel, apply, revision, tokenRequest, clearTokenRequest, componentsHosted } = useUIConfiguration();
5835
+ const { defaults, draft, setDraft, isOpen, apply, revision, tokenRequest, clearTokenRequest, componentsHosted } = useUIConfiguration();
5803
5836
  const remembered = memory.current;
5804
5837
  const [mode, setMode] = useState(remembered.mode ?? "light");
5805
5838
  const [sizeUnit, setSizeUnit] = useState(remembered.sizeUnit ?? "px");
@@ -5991,7 +6024,7 @@ function ConfigurationModalContent({ memory, windowBounds, poppedOut, floating,
5991
6024
  }));
5992
6025
  setInvalidFields({});
5993
6026
  setResetRevision((value_5) => value_5 + 1);
5994
- setMessage(`${preset.label} preset applied. Apply settings to keep it.`);
6027
+ setMessage(`${preset.label} preset applied. Changes stay in this session.`);
5995
6028
  };
5996
6029
  const setComponent = (key_0, field, value_6) => {
5997
6030
  setDraft((current_9) => ({
@@ -6200,7 +6233,7 @@ function ConfigurationModalContent({ memory, windowBounds, poppedOut, floating,
6200
6233
  })] }, key_12);
6201
6234
  const showTabs = sectionTabList.length > 1 && isTokenSection(section);
6202
6235
  const overrideCount = `${changedCount} ${changedCount === 1 ? "override" : "overrides"}`;
6203
- const footerStatus = Object.keys(invalidFields).length ? "Fix invalid values or reset before applying or exporting." : nothingToReset && !changedCount ? "No active changes to reset." : (popupBlocked ? "Allow pop-ups for this site, then try again." : message) || overrideCount;
6236
+ const footerStatus = Object.keys(invalidFields).length ? "Fix invalid values or reset before exporting." : nothingToReset && !changedCount ? "No active changes to reset." : (popupBlocked ? "Allow pop-ups for this site, then try again." : message) || overrideCount;
6204
6237
  const toggleAllButton = isTokenSection(section) && !flatTab && collapsibleKeys.length > 1 && /* @__PURE__ */ jsxs("button", {
6205
6238
  type: "button",
6206
6239
  className: "studio-toggle-all",
@@ -6224,7 +6257,7 @@ function ConfigurationModalContent({ memory, windowBounds, poppedOut, floating,
6224
6257
  className: `studio-overlay${floating && !poppedOut ? " studio-overlay-floating" : ""}`,
6225
6258
  isOpen,
6226
6259
  onOpenChange: (next_2) => {
6227
- if (!next_2) cancel();
6260
+ if (!next_2) apply();
6228
6261
  },
6229
6262
  isDismissable: false,
6230
6263
  children: /* @__PURE__ */ jsx(Surface, {
@@ -6440,7 +6473,7 @@ function ConfigurationModalContent({ memory, windowBounds, poppedOut, floating,
6440
6473
  className: "studio-presets",
6441
6474
  children: [/* @__PURE__ */ jsx("p", {
6442
6475
  className: "studio-presets-intro",
6443
- children: "A preset replaces your theme edits with its own. Component defaults and overrides stay as they are; Apply or Save theme keeps it, Cancel discards it."
6476
+ children: "A preset replaces your theme edits with its own. Component defaults and overrides stay as they are; Changes stay in this session. Save theme writes CSS settings to the repository."
6444
6477
  }), [appThemePreset, ...themePresets].map((preset_0) => {
6445
6478
  const active = isPresetActive(preset_0, defaults, draft.theme);
6446
6479
  const colors = presetEdits(preset_0, defaults).light;
@@ -6724,17 +6757,10 @@ function ConfigurationModalContent({ memory, windowBounds, poppedOut, floating,
6724
6757
  children: footerStatus
6725
6758
  }),
6726
6759
  /* @__PURE__ */ jsx("button", {
6727
- onClick: () => cancel(),
6728
- children: "Cancel"
6729
- }),
6730
- /* @__PURE__ */ jsxs("button", {
6731
6760
  className: "studio-primary",
6732
- "aria-label": "Apply settings",
6733
- disabled: !!Object.keys(invalidFields).length,
6734
- onClick: () => {
6735
- apply();
6736
- },
6737
- children: [/* @__PURE__ */ jsx(Check, { size: 14 }), " Apply"]
6761
+ "aria-label": "Close UI configuration",
6762
+ onClick: apply,
6763
+ children: "Close"
6738
6764
  })
6739
6765
  ]
6740
6766
  }),
@@ -6835,7 +6861,7 @@ function UIConfigurationModal() {
6835
6861
  width: hostedFloatingWidth
6836
6862
  };
6837
6863
  const popout = useStudioPopout(isOpen && !minimized);
6838
- if ((!isOpen || minimized) && hasLauncher) return createPortal(/* @__PURE__ */ jsx(ConfigurationLauncher, {
6864
+ if ((!isOpen || minimized) && hasLauncher && !componentsHosted) return createPortal(/* @__PURE__ */ jsx(ConfigurationLauncher, {
6839
6865
  position: launcherPosition,
6840
6866
  onOpen: () => {
6841
6867
  setMinimized(false);
@@ -6846,7 +6872,7 @@ function UIConfigurationModal() {
6846
6872
  if (restorePopout.current) popout.open();
6847
6873
  }
6848
6874
  }), document.body);
6849
- if (!isOpen) return null;
6875
+ if (!isOpen || minimized) return null;
6850
6876
  const content = /* @__PURE__ */ jsx(ConfigurationModalContent, {
6851
6877
  memory,
6852
6878
  windowBounds: floating ? floatingBounds : windowBounds,
@@ -6877,4 +6903,4 @@ function UIConfigurationModal() {
6877
6903
  }), popout.popup.document.body) : floating ? createPortal(content, document.body) : content;
6878
6904
  }
6879
6905
  //#endregion
6880
- export { getBoxHighlights as a, UIConfigurationProvider as c, Pin as d, Moon as f, inspectTokens as i, useUIConfiguration as l, ColorModeSwitch as n, HighlightOverlay as o, inspectElement as r, InspectorDetails as s, UIConfigurationModal as t, Sun as u };
6906
+ export { inspectElement as a, HighlightOverlay as c, emptyConfiguration as d, useUIConfiguration as f, Moon as g, Pin as h, saveThemeCss as i, InspectorDetails as l, Plus as m, ColorModeSwitch as n, inspectTokens as o, Sun as p, getThemeWriter as r, getBoxHighlights as s, UIConfigurationModal as t, UIConfigurationProvider as u };
@@ -1,4 +1,4 @@
1
- import { n as AppCanvasPage, r as AppCanvasPageProps, t as APP_CANVAS_PATH } from "../AppCanvasPage-BTmt8poT.js";
1
+ import { n as AppCanvasPage, r as AppCanvasPageProps, t as APP_CANVAS_PATH } from "../AppCanvasPage-BZ2mrKY4.js";
2
2
  import { AnyRoute } from "@tanstack/react-router";
3
3
  //#region src/app-canvas/tanstack.d.ts
4
4
  interface AppCanvasRouteOptions {
@@ -1,4 +1,4 @@
1
- import { n as AppCanvasPage, r as AppCanvasFrameBridge, t as APP_CANVAS_PATH } from "../AppCanvasPage-BsQrZ8q7.js";
1
+ import { n as AppCanvasPage, r as AppCanvasFrameBridge, t as APP_CANVAS_PATH } from "../AppCanvasPage-DCjiFfQW.js";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { createRoute, notFound, useRouter, useRouterState } from "@tanstack/react-router";
@@ -1,5 +1,5 @@
1
- import { a as AppCanvasProps, c as CanvasPage, d as CanvasRouter, f as discoverCanvasPages, i as AppCanvas, l as CanvasPosition, n as AppCanvasPage, o as CanvasBreakpoint, p as layoutCanvasPages, r as AppCanvasPageProps, s as defaultCanvasBreakpoints, t as APP_CANVAS_PATH, u as CanvasRouteExample } from "../AppCanvasPage-BTmt8poT.js";
2
- import "../configuration.context-qdjDwQJj.js";
1
+ import { a as AppCanvasProps, c as CanvasPage, d as CanvasRouter, f as discoverCanvasPages, i as AppCanvas, l as CanvasPosition, n as AppCanvasPage, o as CanvasBreakpoint, p as layoutCanvasPages, r as AppCanvasPageProps, s as defaultCanvasBreakpoints, t as APP_CANVAS_PATH, u as CanvasRouteExample } from "../AppCanvasPage-BZ2mrKY4.js";
2
+ import "../configuration.context-iuZu-ie0.js";
3
3
  //#region src/app-canvas/AppCanvasFrameBridge.d.ts
4
4
  /** Mount once inside the application's existing UIConfigurationProvider. No separate app copy or theme fork. */
5
5
  declare function AppCanvasFrameBridge({ href }: {
@@ -1,2 +1,2 @@
1
- import { a as defaultCanvasBreakpoints, c as layoutCanvasPages, i as AppCanvas, n as AppCanvasPage, o as isAppCanvasFrame, r as AppCanvasFrameBridge, s as discoverCanvasPages, t as APP_CANVAS_PATH } from "../AppCanvasPage-BsQrZ8q7.js";
1
+ import { a as defaultCanvasBreakpoints, c as layoutCanvasPages, i as AppCanvas, n as AppCanvasPage, o as isAppCanvasFrame, r as AppCanvasFrameBridge, s as discoverCanvasPages, t as APP_CANVAS_PATH } from "../AppCanvasPage-DCjiFfQW.js";
2
2
  export { APP_CANVAS_PATH, AppCanvas, AppCanvasFrameBridge, AppCanvasPage, defaultCanvasBreakpoints, discoverCanvasPages, isAppCanvasFrame, layoutCanvasPages };
@@ -3,6 +3,8 @@ import { Plugin } from "vite";
3
3
  interface UIConfiguratorPluginOptions {
4
4
  /** CSS file relative to this app's Vite root. Must exist inside that root. */
5
5
  themeFile?: string;
6
+ /** Repository canvas JSON, relative to the Vite root. false disables storage. */
7
+ canvasFile?: string | false;
6
8
  }
7
9
  /** Adds the configurator's Save theme action to this app's development server. */
8
10
  declare function uiConfigurator(options?: UIConfiguratorPluginOptions): Plugin;