@poveste/app 0.14.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.
Files changed (126) hide show
  1. package/dist/app/style/main.pcss +18 -44
  2. package/dist/bundled/App.vue_vue_type_script_setup_true_lang.js +9 -7
  3. package/dist/bundled/app.css +91 -28
  4. package/dist/bundled/components/app/AppActions.vue_vue_type_script_setup_true_lang.js +44 -27
  5. package/dist/bundled/components/app/ShortcutTooltip.js +5 -0
  6. package/dist/bundled/components/app/ShortcutTooltip.vue_vue_type_script_setup_true_lang.js +27 -0
  7. package/dist/bundled/components/app/TopBarChipItem.js +1 -1
  8. package/dist/bundled/components/base/BaseDropdown.js +6 -0
  9. package/dist/bundled/components/base/BaseDropdown.vue_vue_type_script_setup_true_lang.js +68 -0
  10. package/dist/bundled/components/base/BaseEmpty.js +2 -2
  11. package/dist/bundled/components/base/BaseOverflowMenu.vue_vue_type_script_setup_true_lang.js +19 -19
  12. package/dist/bundled/components/base/BaseSelect.js +1 -0
  13. package/dist/bundled/components/base/BaseSelect.vue_vue_type_script_setup_true_lang.js +194 -33
  14. package/dist/bundled/components/base/BaseSplitPane.js +1 -1
  15. package/dist/bundled/components/base/BaseSplitPane.vue_vue_type_script_setup_true_lang.js +65 -4
  16. package/dist/bundled/components/command/PromptSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/bundled/components/panel/ControlsComponentPropItem.vue_vue_type_script_setup_true_lang.js +24 -16
  18. package/dist/bundled/components/panel/ControlsComponentProps.vue_vue_type_script_setup_true_lang.js +9 -6
  19. package/dist/bundled/components/panel/ControlsComponentState.vue_vue_type_script_setup_true_lang.js +9 -6
  20. package/dist/bundled/components/panel/PaneTabs.vue_vue_type_script_setup_true_lang.js +6 -6
  21. package/dist/bundled/components/panel/StatePresets.vue_vue_type_script_setup_true_lang.js +96 -52
  22. package/dist/bundled/components/panel/StoryEvent.vue_vue_type_script_setup_true_lang.js +5 -5
  23. package/dist/bundled/components/panel/StorySidePanel.vue_vue_type_script_setup_true_lang.js +2 -1
  24. package/dist/bundled/components/panel/StorySourceCode.js +1 -1
  25. package/dist/bundled/components/panel/StorySourceCode.vue_vue_type_script_setup_true_lang.js +24 -18
  26. package/dist/bundled/components/search/SearchItemContent.vue_vue_type_script_setup_true_lang.js +2 -1
  27. package/dist/bundled/components/search/SearchPane.vue_vue_type_script_setup_true_lang.js +1 -2
  28. package/dist/bundled/components/story/StoryResponsivePreview.js +1 -1
  29. package/dist/bundled/components/story/StoryResponsivePreview.vue_vue_type_script_setup_true_lang.js +52 -45
  30. package/dist/bundled/components/story/StoryVariantGridItem.js +1 -1
  31. package/dist/bundled/components/story/StoryVariantGridItem.vue_vue_type_script_setup_true_lang.js +22 -20
  32. package/dist/bundled/components/story/StoryVariantSingle.js +1 -1
  33. package/dist/bundled/components/story/StoryVariantSingle.vue_vue_type_script_setup_true_lang.js +2 -1
  34. package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.vue_vue_type_script_setup_true_lang.js +9 -6
  35. package/dist/bundled/components/story/StoryView.vue_vue_type_script_setup_true_lang.js +5 -1
  36. package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.vue_vue_type_script_setup_true_lang.js +15 -12
  37. package/dist/bundled/components/toolbar/ToolbarBackground.vue_vue_type_script_setup_true_lang.js +20 -16
  38. package/dist/bundled/components/toolbar/ToolbarNewTab.vue_vue_type_script_setup_true_lang.js +16 -13
  39. package/dist/bundled/components/toolbar/ToolbarResponsiveSize.vue_vue_type_script_setup_true_lang.js +35 -24
  40. package/dist/bundled/components/toolbar/ToolbarTextDirection.vue_vue_type_script_setup_true_lang.js +15 -12
  41. package/dist/bundled/components/toolbar/ToolbarTitle.js +1 -1
  42. package/dist/bundled/components/toolbar/ToolbarTitle.vue_vue_type_script_setup_true_lang.js +1 -1
  43. package/dist/bundled/components/tree/StoryGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  44. package/dist/bundled/components/tree/StoryList.vue_vue_type_script_setup_true_lang.js +3 -3
  45. package/dist/bundled/components/tree/StoryListFolder.js +1 -1
  46. package/dist/bundled/components/tree/StoryListFolder.vue_vue_type_script_setup_true_lang.js +3 -3
  47. package/dist/bundled/components/tree/StoryListItem.js +1 -1
  48. package/dist/bundled/components/tree/StoryListItem.vue_vue_type_script_setup_true_lang.js +3 -3
  49. package/dist/bundled/index.js +0 -13
  50. package/dist/bundled/sandbox.js +5 -3
  51. package/dist/bundled/stores/story.js +2 -2
  52. package/dist/bundled/util/commands.js +1 -1
  53. package/dist/bundled/util/dark.js +1 -1
  54. package/dist/bundled/util/events.js +1 -1
  55. package/dist/bundled/util/grid-slots.js +1 -1
  56. package/dist/bundled/util/icons.generated.js +4 -2
  57. package/dist/bundled/util/keyboard.js +8 -14
  58. package/dist/bundled/util/mapping.js +2 -2
  59. package/dist/bundled/util/render-tracker.js +33 -0
  60. package/dist/bundled/util/scroll.js +26 -5
  61. package/dist/bundled/util/state.js +105 -5
  62. package/dist/bundled/util/variant.js +12 -2
  63. package/dist/style.css +753 -357
  64. package/package.json +28 -28
  65. package/src/__tests__/base-select.spec.ts +25 -0
  66. package/src/__tests__/render-tracker.spec.ts +38 -0
  67. package/src/__tests__/reset.spec.ts +53 -0
  68. package/src/__tests__/state-clone.spec.ts +55 -1
  69. package/src/__tests__/state-types.spec.ts +175 -0
  70. package/src/app/App.vue +44 -35
  71. package/src/app/components/app/AppActions.vue +42 -30
  72. package/src/app/components/app/ShortcutTooltip.vue +29 -0
  73. package/src/app/components/app/TopBarChipItem.vue +1 -1
  74. package/src/app/components/base/BaseDropdown.vue +142 -0
  75. package/src/app/components/base/BaseEmpty.vue +1 -1
  76. package/src/app/components/base/BaseListItemLink.vue +4 -2
  77. package/src/app/components/base/BaseOverflowMenu.vue +27 -21
  78. package/src/app/components/base/BaseSelect.vue +270 -41
  79. package/src/app/components/base/BaseSplitPane.vue +75 -4
  80. package/src/app/components/command/PromptSelect.vue +1 -1
  81. package/src/app/components/panel/ControlsComponentPropItem.vue +29 -17
  82. package/src/app/components/panel/ControlsComponentProps.vue +7 -5
  83. package/src/app/components/panel/ControlsComponentState.vue +7 -5
  84. package/src/app/components/panel/PaneTabs.vue +6 -6
  85. package/src/app/components/panel/StatePresets.vue +116 -74
  86. package/src/app/components/panel/StoryEvent.vue +10 -9
  87. package/src/app/components/panel/StorySidePanel.vue +2 -1
  88. package/src/app/components/panel/StorySourceCode.vue +51 -44
  89. package/src/app/components/search/SearchItemContent.vue +2 -1
  90. package/src/app/components/search/SearchPane.vue +2 -3
  91. package/src/app/components/story/StoryResponsivePreview.vue +61 -29
  92. package/src/app/components/story/StoryVariantGridItem.vue +20 -19
  93. package/src/app/components/story/StoryVariantSingle.vue +1 -0
  94. package/src/app/components/story/StoryVariantSinglePreviewRemote.vue +14 -8
  95. package/src/app/components/story/StoryView.vue +4 -1
  96. package/src/app/components/toolbar/DevOnlyToolbarOpenInEditor.vue +14 -12
  97. package/src/app/components/toolbar/ToolbarBackground.vue +22 -23
  98. package/src/app/components/toolbar/ToolbarNewTab.vue +14 -12
  99. package/src/app/components/toolbar/ToolbarResponsiveSize.vue +31 -25
  100. package/src/app/components/toolbar/ToolbarTextDirection.vue +14 -10
  101. package/src/app/components/toolbar/ToolbarTitle.vue +2 -2
  102. package/src/app/components/tree/StoryGroup.vue +2 -2
  103. package/src/app/components/tree/StoryList.vue +2 -2
  104. package/src/app/components/tree/StoryListFolder.vue +2 -2
  105. package/src/app/components/tree/StoryListItem.vue +1 -1
  106. package/src/app/index.ts +0 -17
  107. package/src/app/sandbox.ts +16 -3
  108. package/src/app/stores/story.ts +2 -2
  109. package/src/app/style/main.pcss +18 -44
  110. package/src/app/types.ts +4 -4
  111. package/src/app/util/commands.ts +1 -1
  112. package/src/app/util/dark.ts +1 -1
  113. package/src/app/util/env.ts +0 -1
  114. package/src/app/util/events.ts +6 -5
  115. package/src/app/util/grid-slots.ts +1 -1
  116. package/src/app/util/icons.generated.ts +2 -2
  117. package/src/app/util/keyboard.ts +7 -11
  118. package/src/app/util/mapping.ts +2 -2
  119. package/src/app/util/render-tracker.ts +31 -0
  120. package/src/app/util/scroll.ts +47 -9
  121. package/src/app/util/state.ts +141 -8
  122. package/src/app/util/variant.ts +12 -2
  123. package/dist/app/style/floating.pcss +0 -40
  124. package/dist/bundled/util/tooltip.js +0 -14
  125. package/src/app/style/floating.pcss +0 -40
  126. package/src/app/util/tooltip.ts +0 -13
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
2
2
  import StoryVariantSingle_vue_vue_type_script_setup_true_lang_default from "./StoryVariantSingle.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/app/components/story/StoryVariantSingle.vue
5
- var StoryVariantSingle_default = /*#__PURE__*/ _plugin_vue_export_helper_default(StoryVariantSingle_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6b31fb1b"]]);
5
+ var StoryVariantSingle_default = /*#__PURE__*/ _plugin_vue_export_helper_default(StoryVariantSingle_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6ba33e62"]]);
6
6
  //#endregion
7
7
  export { StoryVariantSingle_default as default };
@@ -16,7 +16,7 @@ var StoryVariantSingle_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
16
16
  __name: "StoryVariantSingle",
17
17
  emits: { openVariantMenu: () => true },
18
18
  setup(__props) {
19
- useCssVars((_ctx) => ({ "v0fc28fe3": variant.value?.iconColor }));
19
+ useCssVars((_ctx) => ({ "v3bcafcf8": variant.value?.iconColor }));
20
20
  const storyStore = useStoryStore();
21
21
  const hasSingleVariant = computed(() => storyStore.currentStory?.variants.length === 1);
22
22
  const variant = computed(() => storyStore.currentVariant ?? null);
@@ -24,6 +24,7 @@ var StoryVariantSingle_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
24
24
  return (_ctx, _cache) => {
25
25
  return openBlock(), createBlock(BaseSplitPane_default, {
26
26
  "save-id": "story-single-main-split",
27
+ label: "Resize the variant list",
27
28
  min: 5,
28
29
  max: 40,
29
30
  "default-split": 17,
@@ -8,6 +8,7 @@ import { createStateBridge } from "../../util/state-bridge.js";
8
8
  import { toRawDeep } from "../../util/state.js";
9
9
  import { useEventsStore } from "../../stores/events.js";
10
10
  import { firstReportedHeight } from "../../util/grid-cell-height.js";
11
+ import { createRenderTracker } from "../../util/render-tracker.js";
11
12
  import StoryResponsivePreview_default from "./StoryResponsivePreview.js";
12
13
  import { useEventListener } from "@poveste/vendors/vue-use";
13
14
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, onBeforeUnmount, openBlock, ref, toDisplayString, toRaw, unref, watch, withCtx } from "@poveste/vendors/vue";
@@ -49,9 +50,7 @@ var StoryVariantSinglePreviewRemote_vue_vue_type_script_setup_true_lang_default
49
50
  const settings = usePreviewSettingsStore().currentSettings;
50
51
  const errorStore = useStoryErrorStore();
51
52
  const storyError = computed(() => errorStore.forVariant(props.story.id, props.variant.id));
52
- watch(() => [props.story.id, props.variant.id], () => {
53
- errorStore.clear(props.story.id, props.variant.id);
54
- });
53
+ const render = createRenderTracker();
55
54
  const iframe = ref();
56
55
  function postState(changes) {
57
56
  iframe.value?.contentWindow?.postMessage({
@@ -88,10 +87,12 @@ var StoryVariantSinglePreviewRemote_vue_vue_type_script_setup_true_lang_default
88
87
  break;
89
88
  case SANDBOX_READY:
90
89
  if (!fromCurrentOccupant(event.data)) break;
90
+ if (render.wasClean()) errorStore.clear(props.story.id, props.variant.id);
91
91
  setPreviewReady();
92
92
  break;
93
93
  case SANDBOX_ERROR:
94
94
  if (!fromCurrentOccupant(event.data)) break;
95
+ render.threw();
95
96
  errorStore.report({
96
97
  message: event.data.message,
97
98
  stack: event.data.stack,
@@ -139,6 +140,7 @@ var StoryVariantSinglePreviewRemote_vue_vue_type_script_setup_true_lang_default
139
140
  let stopTrackKeyboard;
140
141
  let unmounted = false;
141
142
  function reload(url) {
143
+ render.begin();
142
144
  retargets = 0;
143
145
  retargeting.value = false;
144
146
  clearTimeout(retargetTimer);
@@ -151,6 +153,7 @@ var StoryVariantSinglePreviewRemote_vue_vue_type_script_setup_true_lang_default
151
153
  iframeSrc.value = url;
152
154
  }
153
155
  watch(sandboxUrl, (url) => {
156
+ render.begin();
154
157
  bridge = createStateBridge(postState);
155
158
  if (servedVariant && servedVariant !== props.variant) storyStore.setPreviewReady(servedVariant, false);
156
159
  servedVariant = props.variant;
@@ -195,10 +198,10 @@ var StoryVariantSinglePreviewRemote_vue_vue_type_script_setup_true_lang_default
195
198
  function previewStyle(isResponsiveEnabled, finalWidth, finalHeight) {
196
199
  const style = {};
197
200
  if (isResponsiveEnabled) {
198
- if (finalWidth) style.width = `${finalWidth}px`;
199
- if (finalHeight) style.height = `${finalHeight}px`;
201
+ if (finalWidth) style["width"] = `${finalWidth}px`;
202
+ if (finalHeight) style["height"] = `${finalHeight}px`;
200
203
  }
201
- if (props.autoHeight) style.height = `${Math.min(reportedHeight.value ?? placeholderHeight.value, MAX_AUTO_HEIGHT)}px`;
204
+ if (props.autoHeight) style["height"] = `${Math.min(reportedHeight.value ?? placeholderHeight.value, MAX_AUTO_HEIGHT)}px`;
202
205
  return style;
203
206
  }
204
207
  function onIframeLoad() {
@@ -31,7 +31,10 @@ var StoryView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
31
31
  if (value && story) story.lastSelectedVariant = value;
32
32
  }, { immediate: true });
33
33
  watch(() => [storyStore.currentStory, storyStore.currentVariant], () => {
34
- if (!storyStore.currentVariant && autoSelectsVariant(storyStore.currentStory)) setVariant((storyStore.currentStory.lastSelectedVariant ?? storyStore.currentStory.variants[0]).id);
34
+ if (!storyStore.currentVariant && autoSelectsVariant(storyStore.currentStory)) {
35
+ const variant = storyStore.currentStory.lastSelectedVariant ?? storyStore.currentStory.variants[0];
36
+ if (variant) setVariant(variant.id);
37
+ }
35
38
  }, { immediate: true });
36
39
  function setVariant(variantId) {
37
40
  router.replace({
@@ -69,6 +72,7 @@ var StoryView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
69
72
  }, null, 8, ["story"])], 512)) : (openBlock(), createBlock(BaseSplitPane_default, {
70
73
  key: 1,
71
74
  "save-id": `story-main-${placement.value}`,
75
+ label: "Resize the preview",
72
76
  orientation: splitOrientation.value,
73
77
  min: 30,
74
78
  max: 95,
@@ -1,7 +1,8 @@
1
1
  import TopBarChipItem_default from "../app/TopBarChipItem.js";
2
2
  import { openInEditor } from "../../util/open-in-editor.js";
3
- import { createBlock, createVNode, defineComponent, openBlock, resolveDirective, unref, withCtx, withDirectives } from "@poveste/vendors/vue";
3
+ import { createBlock, createVNode, defineComponent, openBlock, unref, withCtx } from "@poveste/vendors/vue";
4
4
  import { Icon } from "@poveste/vendors/iconify";
5
+ import { HstTooltip } from "@poveste/controls";
5
6
  //#region src/app/components/toolbar/DevOnlyToolbarOpenInEditor.vue?vue&type=script&setup=true&lang.ts
6
7
  var DevOnlyToolbarOpenInEditor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
8
  __name: "DevOnlyToolbarOpenInEditor",
@@ -11,19 +12,21 @@ var DevOnlyToolbarOpenInEditor_vue_vue_type_script_setup_true_lang_default = /*@
11
12
  },
12
13
  setup(__props) {
13
14
  return (_ctx, _cache) => {
14
- const _directive_tooltip = resolveDirective("tooltip");
15
- return withDirectives((openBlock(), createBlock(TopBarChipItem_default, {
16
- "aria-label": "Open story in editor",
17
- target: "_blank",
18
- class: "poveste-toolbar-open-in-editor",
19
- onClick: _cache[0] || (_cache[0] = ($event) => unref(openInEditor)(__props.file))
20
- }, {
21
- default: withCtx(() => [createVNode(unref(Icon), {
22
- icon: "carbon:script-reference",
23
- class: "w-4 h-4"
15
+ return openBlock(), createBlock(unref(HstTooltip), { content: __props.tooltip }, {
16
+ default: withCtx(() => [createVNode(TopBarChipItem_default, {
17
+ "aria-label": "Open story in editor",
18
+ target: "_blank",
19
+ class: "poveste-toolbar-open-in-editor",
20
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(openInEditor)(__props.file))
21
+ }, {
22
+ default: withCtx(() => [createVNode(unref(Icon), {
23
+ icon: "carbon:script-reference",
24
+ class: "w-4 h-4"
25
+ })]),
26
+ _: 1
24
27
  })]),
25
28
  _: 1
26
- })), [[_directive_tooltip, __props.tooltip]]);
29
+ }, 8, ["content"]);
27
30
  };
28
31
  }
29
32
  });
@@ -1,10 +1,14 @@
1
1
  import { povesteConfig } from "../../util/config.js";
2
2
  import { usePreviewSettingsStore } from "../../stores/preview-settings.js";
3
3
  import BaseCheckbox_default from "../base/BaseCheckbox.js";
4
- import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, renderList, resolveComponent, resolveDirective, toDisplayString, unref, withCtx, withDirectives } from "@poveste/vendors/vue";
4
+ import BaseDropdown_default from "../base/BaseDropdown.js";
5
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, renderList, toDisplayString, unref, withCtx } from "@poveste/vendors/vue";
5
6
  import { Icon } from "@poveste/vendors/iconify";
6
7
  //#region src/app/components/toolbar/ToolbarBackground.vue?vue&type=script&setup=true&lang.ts
7
- var _hoisted_1 = { class: "flex items-center gap-1 px-2.5 py-1.5 hover:bg-white/50 dark:hover:bg-white/10 hover:text-primary-500 dark:hover:text-primary-400 cursor-pointer text-gray-900 dark:text-gray-100 transition-colors group" };
8
+ var _hoisted_1 = {
9
+ class: "flex items-center gap-1 px-2.5 py-1.5 hover:bg-white/50 dark:hover:bg-white/10 hover:text-primary-500 dark:hover:text-primary-400 cursor-pointer text-gray-900 dark:text-gray-100 transition-colors group",
10
+ "aria-label": "Preview appearance"
11
+ };
8
12
  var _hoisted_2 = {
9
13
  class: "flex flex-col items-stretch",
10
14
  "data-testid": "background-popper"
@@ -44,23 +48,16 @@ var ToolbarBackground_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
44
48
  const showColorScheme = !povesteConfig.theme.hideColorSchemeSwitch;
45
49
  const showDropdown = showColorScheme || !!povesteConfig.backgroundPresets?.length;
46
50
  return (_ctx, _cache) => {
47
- const _component_VDropdown = resolveComponent("VDropdown");
48
- const _directive_tooltip = resolveDirective("tooltip");
49
- return unref(showDropdown) ? (openBlock(), createBlock(_component_VDropdown, {
51
+ return unref(showDropdown) ? (openBlock(), createBlock(BaseDropdown_default, {
50
52
  key: 0,
51
- placement: "bottom-end",
52
- skidding: 6,
53
+ side: "bottom",
54
+ align: "end",
55
+ "align-offset": 6,
56
+ tooltip: "Preview appearance",
53
57
  class: "poveste-toolbar-background flex-none",
54
58
  "data-testid": "toolbar-background"
55
59
  }, {
56
- default: withCtx(({ shown }) => [withDirectives((openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(Icon), {
57
- icon: "carbon:color-palette",
58
- class: "w-4 h-4"
59
- }), createVNode(unref(Icon), {
60
- icon: "carbon:chevron-down",
61
- class: "w-3 h-3 opacity-40 group-hover:opacity-70"
62
- })])), [[_directive_tooltip, shown ? "" : "Preview appearance"]])]),
63
- popper: withCtx(({ hide }) => [createElementVNode("div", _hoisted_2, [
60
+ popper: withCtx(({ close }) => [createElementVNode("div", _hoisted_2, [
64
61
  showColorScheme ? (openBlock(), createElementBlock("div", _hoisted_3, [(openBlock(), createElementBlock(Fragment, null, renderList(colorSchemeOptions, (option) => {
65
62
  return createElementVNode("button", {
66
63
  key: option.value,
@@ -85,7 +82,7 @@ var ToolbarBackground_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
85
82
  class: normalizeClass(["px-4 py-3 cursor-pointer text-left flex items-baseline gap-4", [unref(settings).backgroundColor === option.color ? "bg-primary-500 hover:bg-primary-600 text-white dark:text-black" : "bg-transparent hover:bg-primary-100 dark:hover:bg-primary-700"]]),
86
83
  onClick: ($event) => {
87
84
  unref(previewSettings).setBackgroundColor(option.color);
88
- hide();
85
+ close();
89
86
  }
90
87
  }, [createElementVNode("span", _hoisted_6, toDisplayString(option.label), 1), option.color !== "$checkerboard" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createElementVNode("span", _hoisted_7, toDisplayString(option.color), 1), createElementVNode("div", {
91
88
  class: "w-4 h-4 rounded-full border border-black/20 dark:border-white/20 flex items-center justify-center text-xs",
@@ -96,6 +93,13 @@ var ToolbarBackground_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
96
93
  }, [option.contrastColor ? (openBlock(), createElementBlock("span", _hoisted_8, "a")) : createCommentVNode("", true)], 4)], 64)) : createCommentVNode("", true)], 10, _hoisted_5);
97
94
  }), 128))
98
95
  ])]),
96
+ default: withCtx(() => [createElementVNode("button", _hoisted_1, [createVNode(unref(Icon), {
97
+ icon: "carbon:color-palette",
98
+ class: "w-4 h-4"
99
+ }), createVNode(unref(Icon), {
100
+ icon: "carbon:chevron-down",
101
+ class: "w-3 h-3 opacity-40 group-hover:opacity-70"
102
+ })])]),
99
103
  _: 1
100
104
  })) : createCommentVNode("", true);
101
105
  };
@@ -1,7 +1,8 @@
1
1
  import TopBarChipItem_default from "../app/TopBarChipItem.js";
2
2
  import { getSandboxUrl } from "../../util/sandbox.js";
3
- import { computed, createBlock, createVNode, defineComponent, openBlock, resolveDirective, unref, withCtx, withDirectives } from "@poveste/vendors/vue";
3
+ import { computed, createBlock, createVNode, defineComponent, openBlock, unref, withCtx } from "@poveste/vendors/vue";
4
4
  import { Icon } from "@poveste/vendors/iconify";
5
+ import { HstTooltip } from "@poveste/controls";
5
6
  //#region src/app/components/toolbar/ToolbarNewTab.vue?vue&type=script&setup=true&lang.ts
6
7
  var ToolbarNewTab_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
8
  __name: "ToolbarNewTab",
@@ -15,19 +16,21 @@ var ToolbarNewTab_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15
16
  return getSandboxUrl(props.story, props.variant);
16
17
  });
17
18
  return (_ctx, _cache) => {
18
- const _directive_tooltip = resolveDirective("tooltip");
19
- return withDirectives((openBlock(), createBlock(TopBarChipItem_default, {
20
- href: sandboxUrl.value,
21
- target: "_blank",
22
- "aria-label": "Open variant in new tab",
23
- class: "poveste-toolbar-new-tab"
24
- }, {
25
- default: withCtx(() => [createVNode(unref(Icon), {
26
- icon: "carbon:launch",
27
- class: "w-4 h-4"
28
- })]),
19
+ return openBlock(), createBlock(unref(HstTooltip), { content: "Open variant in new tab" }, {
20
+ default: withCtx(() => [createVNode(TopBarChipItem_default, {
21
+ href: sandboxUrl.value,
22
+ target: "_blank",
23
+ "aria-label": "Open variant in new tab",
24
+ class: "poveste-toolbar-new-tab"
25
+ }, {
26
+ default: withCtx(() => [createVNode(unref(Icon), {
27
+ icon: "carbon:launch",
28
+ class: "w-4 h-4"
29
+ })]),
30
+ _: 1
31
+ }, 8, ["href"])]),
29
32
  _: 1
30
- }, 8, ["href"])), [[_directive_tooltip, "Open variant in new tab"]]);
33
+ });
31
34
  };
32
35
  }
33
36
  });
@@ -1,8 +1,10 @@
1
1
  import { povesteConfig } from "../../util/config.js";
2
2
  import { usePreviewSettingsStore } from "../../stores/preview-settings.js";
3
3
  import BaseCheckbox_default from "../base/BaseCheckbox.js";
4
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isRef, normalizeClass, openBlock, renderList, resolveComponent, resolveDirective, toDisplayString, unref, vModelText, withCtx, withDirectives } from "@poveste/vendors/vue";
4
+ import BaseDropdown_default from "../base/BaseDropdown.js";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isRef, normalizeClass, openBlock, renderList, toDisplayString, unref, vModelText, withCtx, withDirectives } from "@poveste/vendors/vue";
5
6
  import { Icon } from "@poveste/vendors/iconify";
7
+ import { HstTooltip } from "@poveste/controls";
6
8
  //#region src/app/components/toolbar/ToolbarResponsiveSize.vue?vue&type=script&setup=true&lang.ts
7
9
  var _hoisted_1 = { class: "flex flex-col items-stretch" };
8
10
  var _hoisted_2 = { class: "flex items-center gap-2 px-4 py-3" };
@@ -29,15 +31,15 @@ var ToolbarResponsiveSize_vue_vue_type_script_setup_true_lang_default = /*@__PUR
29
31
  const responsiveWidth = autoWhenEmpty("responsiveWidth");
30
32
  const responsiveHeight = autoWhenEmpty("responsiveHeight");
31
33
  return (_ctx, _cache) => {
32
- const _component_VDropdown = resolveComponent("VDropdown");
33
- const _directive_tooltip = resolveDirective("tooltip");
34
- return openBlock(), createBlock(_component_VDropdown, {
35
- placement: "bottom-end",
36
- skidding: 6,
34
+ return openBlock(), createBlock(BaseDropdown_default, {
35
+ side: "bottom",
36
+ align: "end",
37
+ "align-offset": 6,
37
38
  disabled: !unref(povesteConfig).responsivePresets?.length,
39
+ tooltip: "Responsive sizes",
38
40
  class: "poveste-toolbar-responsive-size flex-none"
39
41
  }, {
40
- popper: withCtx(({ hide }) => [createElementVNode("div", _hoisted_1, [
42
+ popper: withCtx(({ close }) => [createElementVNode("div", _hoisted_1, [
41
43
  createVNode(BaseCheckbox_default, {
42
44
  modelValue: unref(settings).rotate,
43
45
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unref(settings).rotate = $event)
@@ -46,21 +48,27 @@ var ToolbarResponsiveSize_vue_vue_type_script_setup_true_lang_default = /*@__PUR
46
48
  _: 1
47
49
  }, 8, ["modelValue"]),
48
50
  createElementVNode("div", _hoisted_2, [
49
- withDirectives(createElementVNode("input", {
50
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(responsiveWidth) ? responsiveWidth.value = $event : null),
51
- type: "number",
52
- class: "bg-transparent border border-gray-200 dark:border-gray-850 rounded w-20 opacity-50 focus:opacity-100 flex-1 min-w-0",
53
- step: "16",
54
- placeholder: "Auto"
55
- }, null, 512), [[vModelText, unref(responsiveWidth)], [_directive_tooltip, "Responsive width (px)"]]),
51
+ createVNode(unref(HstTooltip), { content: "Responsive width (px)" }, {
52
+ default: withCtx(() => [withDirectives(createElementVNode("input", {
53
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(responsiveWidth) ? responsiveWidth.value = $event : null),
54
+ type: "number",
55
+ class: "bg-transparent border border-gray-200 dark:border-gray-850 rounded w-20 opacity-50 focus:opacity-100 flex-1 min-w-0",
56
+ step: "16",
57
+ placeholder: "Auto"
58
+ }, null, 512), [[vModelText, unref(responsiveWidth)]])]),
59
+ _: 1
60
+ }),
56
61
  _cache[4] || (_cache[4] = createElementVNode("span", { class: "opacity-50" }, "×", -1)),
57
- withDirectives(createElementVNode("input", {
58
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isRef(responsiveHeight) ? responsiveHeight.value = $event : null),
59
- type: "number",
60
- class: "bg-transparent border border-gray-200 dark:border-gray-850 rounded w-20 opacity-50 focus:opacity-100 flex-1 min-w-0",
61
- step: "16",
62
- placeholder: "Auto"
63
- }, null, 512), [[vModelText, unref(responsiveHeight)], [_directive_tooltip, "Responsive height (px)"]])
62
+ createVNode(unref(HstTooltip), { content: "Responsive height (px)" }, {
63
+ default: withCtx(() => [withDirectives(createElementVNode("input", {
64
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isRef(responsiveHeight) ? responsiveHeight.value = $event : null),
65
+ type: "number",
66
+ class: "bg-transparent border border-gray-200 dark:border-gray-850 rounded w-20 opacity-50 focus:opacity-100 flex-1 min-w-0",
67
+ step: "16",
68
+ placeholder: "Auto"
69
+ }, null, 512), [[vModelText, unref(responsiveHeight)]])]),
70
+ _: 1
71
+ })
64
72
  ]),
65
73
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(povesteConfig).responsivePresets, (preset, index) => {
66
74
  return openBlock(), createElementBlock("button", {
@@ -69,7 +77,7 @@ var ToolbarResponsiveSize_vue_vue_type_script_setup_true_lang_default = /*@__PUR
69
77
  onClick: ($event) => {
70
78
  unref(settings).responsiveWidth = preset.width;
71
79
  unref(settings).responsiveHeight = preset.height ?? null;
72
- hide();
80
+ close();
73
81
  }
74
82
  }, [createTextVNode(toDisplayString(preset.label) + " ", 1), createElementVNode("span", _hoisted_4, [
75
83
  preset.width ? (openBlock(), createElementBlock("span", _hoisted_5, [createTextVNode(toDisplayString(preset.width), 1), !preset.height ? (openBlock(), createElementBlock("span", _hoisted_6, "px")) : createCommentVNode("", true)])) : createCommentVNode("", true),
@@ -78,13 +86,16 @@ var ToolbarResponsiveSize_vue_vue_type_script_setup_true_lang_default = /*@__PUR
78
86
  ])], 10, _hoisted_3);
79
87
  }), 128))
80
88
  ])]),
81
- default: withCtx(() => [withDirectives((openBlock(), createElementBlock("div", { class: normalizeClass(["flex items-center gap-1 px-2.5 py-1.5 text-gray-900 dark:text-gray-100 transition-colors group", { "hover:bg-white/50 dark:hover:bg-white/10 hover:text-primary-500 dark:hover:text-primary-400 cursor-pointer": unref(povesteConfig).responsivePresets?.length }]) }, [createVNode(unref(Icon), {
89
+ default: withCtx(() => [createElementVNode("button", {
90
+ class: normalizeClass(["flex items-center gap-1 px-2.5 py-1.5 text-gray-900 dark:text-gray-100 transition-colors group", { "hover:bg-white/50 dark:hover:bg-white/10 hover:text-primary-500 dark:hover:text-primary-400 cursor-pointer": unref(povesteConfig).responsivePresets?.length }]),
91
+ "aria-label": "Responsive sizes"
92
+ }, [createVNode(unref(Icon), {
82
93
  icon: "carbon:devices",
83
94
  class: "w-4 h-4"
84
95
  }), createVNode(unref(Icon), {
85
96
  icon: "carbon:chevron-down",
86
97
  class: "w-3 h-3 opacity-40 group-hover:opacity-70"
87
- })], 2)), [[_directive_tooltip, "Responsive sizes"]])]),
98
+ })], 2)]),
88
99
  _: 1
89
100
  }, 8, ["disabled"]);
90
101
  };
@@ -1,25 +1,28 @@
1
1
  import TopBarChipItem_default from "../app/TopBarChipItem.js";
2
2
  import { usePreviewSettingsStore } from "../../stores/preview-settings.js";
3
- import { createBlock, createVNode, defineComponent, openBlock, resolveDirective, unref, withCtx, withDirectives } from "@poveste/vendors/vue";
3
+ import { createBlock, createVNode, defineComponent, openBlock, unref, withCtx } from "@poveste/vendors/vue";
4
4
  import { Icon } from "@poveste/vendors/iconify";
5
+ import { HstTooltip } from "@poveste/controls";
5
6
  //#region src/app/components/toolbar/ToolbarTextDirection.vue?vue&type=script&setup=true&lang.ts
6
7
  var ToolbarTextDirection_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
8
  __name: "ToolbarTextDirection",
8
9
  setup(__props) {
9
10
  const settings = usePreviewSettingsStore().currentSettings;
10
11
  return (_ctx, _cache) => {
11
- const _directive_tooltip = resolveDirective("tooltip");
12
- return withDirectives((openBlock(), createBlock(TopBarChipItem_default, {
13
- "aria-label": "Toggle text direction",
14
- class: "poveste-toolbar-text-direction",
15
- onClick: _cache[0] || (_cache[0] = ($event) => unref(settings).textDirection = unref(settings).textDirection === "ltr" ? "rtl" : "ltr")
16
- }, {
17
- default: withCtx(() => [createVNode(unref(Icon), {
18
- icon: unref(settings).textDirection === "ltr" ? "fluent:text-paragraph-direction-right-16-regular" : "fluent:text-paragraph-direction-left-16-regular",
19
- class: "w-4 h-4"
20
- }, null, 8, ["icon"])]),
12
+ return openBlock(), createBlock(unref(HstTooltip), { content: `Switch to text direction ${unref(settings).textDirection === "ltr" ? "Right to Left" : "Left to Right"}` }, {
13
+ default: withCtx(() => [createVNode(TopBarChipItem_default, {
14
+ "aria-label": "Toggle text direction",
15
+ class: "poveste-toolbar-text-direction",
16
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(settings).textDirection = unref(settings).textDirection === "ltr" ? "rtl" : "ltr")
17
+ }, {
18
+ default: withCtx(() => [createVNode(unref(Icon), {
19
+ icon: unref(settings).textDirection === "ltr" ? "fluent:text-paragraph-direction-right-16-regular" : "fluent:text-paragraph-direction-left-16-regular",
20
+ class: "w-4 h-4"
21
+ }, null, 8, ["icon"])]),
22
+ _: 1
23
+ })]),
21
24
  _: 1
22
- })), [[_directive_tooltip, `Switch to text direction ${unref(settings).textDirection === "ltr" ? "Right to Left" : "Left to Right"}`]]);
25
+ }, 8, ["content"]);
23
26
  };
24
27
  }
25
28
  });
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
2
2
  import ToolbarTitle_vue_vue_type_script_setup_true_lang_default from "./ToolbarTitle.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/app/components/toolbar/ToolbarTitle.vue
5
- var ToolbarTitle_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ToolbarTitle_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-14aa93ef"]]);
5
+ var ToolbarTitle_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ToolbarTitle_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-30c06406"]]);
6
6
  //#endregion
7
7
  export { ToolbarTitle_default as default };
@@ -15,7 +15,7 @@ var ToolbarTitle_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
15
15
  story: {}
16
16
  },
17
17
  setup(__props) {
18
- useCssVars((_ctx) => ({ "b5fb8c94": iconColor.value }));
18
+ useCssVars((_ctx) => ({ "v5947d534": iconColor.value }));
19
19
  const props = __props;
20
20
  const icon = computed(() => props.variant?.icon ?? props.story?.icon ?? "carbon:cube");
21
21
  const iconColor = computed(() => props.variant?.iconColor ?? props.story?.iconColor);
@@ -46,11 +46,11 @@ var StoryGroup_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
46
46
  "path",
47
47
  "folder",
48
48
  "stories"
49
- ])) : (openBlock(), createBlock(StoryListItem_default, {
49
+ ])) : __props.stories[element.index] ? (openBlock(), createBlock(StoryListItem_default, {
50
50
  key: 1,
51
51
  story: __props.stories[element.index],
52
52
  depth: 0
53
- }, null, 8, ["story"]))], 64);
53
+ }, null, 8, ["story"])) : createCommentVNode("", true)], 64);
54
54
  }), 128))])) : createCommentVNode("", true)]);
55
55
  };
56
56
  }
@@ -1,7 +1,7 @@
1
1
  import StoryListItem_default from "./StoryListItem.js";
2
2
  import StoryListFolder_default from "./StoryListFolder.js";
3
3
  import StoryGroup_default from "./StoryGroup.js";
4
- import { Fragment, createBlock, createElementBlock, defineComponent, openBlock, renderList } from "@poveste/vendors/vue";
4
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, defineComponent, openBlock, renderList } from "@poveste/vendors/vue";
5
5
  //#region src/app/components/tree/StoryList.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = { class: "poveste-story-list overflow-y-auto" };
7
7
  var StoryList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -21,10 +21,10 @@ var StoryList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
21
21
  key: 1,
22
22
  folder: element,
23
23
  stories: __props.stories
24
- }, null, 8, ["folder", "stories"])) : (openBlock(), createBlock(StoryListItem_default, {
24
+ }, null, 8, ["folder", "stories"])) : __props.stories[element.index] ? (openBlock(), createBlock(StoryListItem_default, {
25
25
  key: 2,
26
26
  story: __props.stories[element.index]
27
- }, null, 8, ["story"]))], 64);
27
+ }, null, 8, ["story"])) : createCommentVNode("", true)], 64);
28
28
  }), 128))]);
29
29
  };
30
30
  }
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
2
2
  import StoryListFolder_vue_vue_type_script_setup_true_lang_default from "./StoryListFolder.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/app/components/tree/StoryListFolder.vue
5
- var StoryListFolder_default = /*#__PURE__*/ _plugin_vue_export_helper_default(StoryListFolder_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-11f8c91e"]]);
5
+ var StoryListFolder_default = /*#__PURE__*/ _plugin_vue_export_helper_default(StoryListFolder_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9702f44e"]]);
6
6
  //#endregion
7
7
  export { StoryListFolder_default as default };
@@ -20,7 +20,7 @@ var StoryListFolder_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
20
20
  depth: { default: 0 }
21
21
  },
22
22
  setup(__props) {
23
- useCssVars((_ctx) => ({ "v047dbc51": folderPadding.value }));
23
+ useCssVars((_ctx) => ({ "v716b068e": folderPadding.value }));
24
24
  const props = __props;
25
25
  const folderStore = useFolderStore();
26
26
  const folderPath = computed(() => [...props.path, props.folder.title]);
@@ -54,11 +54,11 @@ var StoryListFolder_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
54
54
  "folder",
55
55
  "stories",
56
56
  "depth"
57
- ])) : (openBlock(), createBlock(StoryListItem_default, {
57
+ ])) : __props.stories[element.index] ? (openBlock(), createBlock(StoryListItem_default, {
58
58
  key: 1,
59
59
  story: __props.stories[element.index],
60
60
  depth: __props.depth + 1
61
- }, null, 8, ["story", "depth"]))], 64);
61
+ }, null, 8, ["story", "depth"])) : createCommentVNode("", true)], 64);
62
62
  }), 128))])) : createCommentVNode("", true)]);
63
63
  };
64
64
  }
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
2
2
  import StoryListItem_vue_vue_type_script_setup_true_lang_default from "./StoryListItem.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/app/components/tree/StoryListItem.vue
5
- var StoryListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(StoryListItem_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-184d6cf3"]]);
5
+ var StoryListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(StoryListItem_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-83161585"]]);
6
6
  //#endregion
7
7
  export { StoryListItem_default as default };
@@ -16,8 +16,8 @@ var StoryListItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
16
16
  },
17
17
  setup(__props) {
18
18
  useCssVars((_ctx) => ({
19
- "v516f2a64": filePadding.value,
20
- "v2fa7200a": _ctx.story.iconColor
19
+ "v0299061e": filePadding.value,
20
+ "v80ccd94c": _ctx.story.iconColor
21
21
  }));
22
22
  const props = __props;
23
23
  const errorStore = useStoryErrorStore();
@@ -26,7 +26,7 @@ var StoryListItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
26
26
  return `${props.depth * 12}px`;
27
27
  });
28
28
  const route = useRoute();
29
- const isActive = computed(() => route.params.storyId === props.story.id);
29
+ const isActive = computed(() => route.params["storyId"] === props.story.id);
30
30
  const el = ref();
31
31
  useScrollOnActive(isActive, el);
32
32
  return (_ctx, _cache) => {
@@ -4,7 +4,6 @@ import "./plugin.js";
4
4
  import { iconCollections } from "./util/icons.generated.js";
5
5
  import { createApp } from "@poveste/vendors/vue";
6
6
  import { addCollection } from "@poveste/vendors/iconify";
7
- import FloatingVue from "@poveste/vendors/floating-vue";
8
7
  import { createPinia } from "@poveste/vendors/pinia";
9
8
  import "virtual:$poveste-theme";
10
9
  //#region src/app/index.ts
@@ -12,18 +11,6 @@ async function mountMainApp() {
12
11
  for (const collection of iconCollections) addCollection(collection);
13
12
  const app = createApp(App_default);
14
13
  app.use(createPinia());
15
- app.use(FloatingVue, {
16
- container: ".poveste-app-root",
17
- overflowPadding: 4,
18
- arrowPadding: 8,
19
- themes: {
20
- tooltip: { distance: 8 },
21
- dropdown: {
22
- computeTransformOrigin: true,
23
- distance: 8
24
- }
25
- }
26
- });
27
14
  app.use(router);
28
15
  app.mount("#app");
29
16
  if (import.meta.hot) import.meta.hot.send("poveste:mount", {});
@@ -17,8 +17,8 @@ import { parseQuery } from "@poveste/vendors/vue-router";
17
17
  import { reportStoryError } from "@poveste/shared";
18
18
  //#region src/app/sandbox.ts
19
19
  var query = parseQuery(window.location.search);
20
- var storyId = ref(typeof query.storyId === "string" ? query.storyId : null);
21
- var variantId = ref(typeof query.variantId === "string" ? query.variantId : null);
20
+ var storyId = ref(typeof query["storyId"] === "string" ? query["storyId"] : null);
21
+ var variantId = ref(typeof query["variantId"] === "string" ? query["variantId"] : null);
22
22
  watchEffect(() => {
23
23
  occupant.storyId = storyId.value;
24
24
  occupant.variantId = variantId.value;
@@ -73,6 +73,7 @@ var app = createApp({
73
73
  let bridge = createStateBridge(postState);
74
74
  let mounted = false;
75
75
  window.addEventListener("message", (event) => {
76
+ if (event.origin !== window.location.origin) return;
76
77
  if (event.data?.type === "__poveste:state-sync") {
77
78
  if (!mounted || !variant.value) return;
78
79
  bridge.receive(variant.value.state, event.data.state);
@@ -102,7 +103,8 @@ var app = createApp({
102
103
  return [h("div", { class: "__poveste-sandbox-hidden" }, [h(GenericMountStory_default, {
103
104
  key: file.value.story.id,
104
105
  story: file.value.story,
105
- targetVariantId: variantId.value
106
+ targetVariantId: variantId.value,
107
+ syncState: false
106
108
  })]), this.story && this.variant ? h(GenericRenderStory_default, {
107
109
  key: `${this.story.id}/${this.variant.id}`,
108
110
  story: this.story,
@@ -7,8 +7,8 @@ var useStoryStore = defineStore("story", () => {
7
7
  function setStories(value) {
8
8
  stories.value = value;
9
9
  }
10
- const currentStory = computed(() => stories.value.find((s) => s.id === router.currentRoute.value.params.storyId));
11
- const currentVariant = computed(() => currentStory.value?.variants.find((v) => v.id === router.currentRoute.value.query.variantId));
10
+ const currentStory = computed(() => stories.value.find((s) => s.id === router.currentRoute.value.params["storyId"]));
11
+ const currentVariant = computed(() => currentStory.value?.variants.find((v) => v.id === router.currentRoute.value.query["variantId"]));
12
12
  const maps = computed(() => {
13
13
  const storyMap = /* @__PURE__ */ new Map();
14
14
  const variantMap = /* @__PURE__ */ new Map();
@@ -33,7 +33,7 @@ var builtinCommands = [{
33
33
  label: "Open Poveste Documentation",
34
34
  icon: "carbon:help",
35
35
  clientAction: () => {
36
- window.open("https://poveste.dev/guide/getting-started.html", "_blank");
36
+ window.open("https://poveste.dev/guide/getting-started", "_blank");
37
37
  }
38
38
  }];
39
39
  function executeCommand(command, params) {