@poveste/app 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/style/floating.pcss +4 -4
- package/dist/app/style/main.pcss +2 -2
- package/dist/app/style/sandbox.css +1 -1
- package/dist/bundle-main.js +2 -0
- package/dist/bundled/App.vue2.js +81 -37
- package/dist/bundled/app.css +51 -46
- package/dist/bundled/components/HomeView.vue2.js +3 -3
- package/dist/bundled/components/app/AppActions.vue.js +5 -0
- package/dist/bundled/components/app/AppActions.vue2.js +76 -0
- package/dist/bundled/components/app/AppHeader.vue2.js +5 -47
- package/dist/bundled/components/app/Breadcrumb.vue.js +1 -1
- package/dist/bundled/components/app/Breadcrumb.vue2.js +9 -9
- package/dist/bundled/components/app/HomeCounter.vue2.js +5 -5
- package/dist/bundled/components/app/InitialLoading.vue2.js +5 -5
- package/dist/bundled/components/app/MobileOverlay.vue2.js +5 -5
- package/dist/bundled/components/app/TopBar.vue.js +5 -0
- package/dist/bundled/components/app/TopBar.vue2.js +73 -0
- package/dist/bundled/components/app/TopBarChip.vue.js +13 -0
- package/dist/bundled/components/app/TopBarChipItem.vue.js +13 -0
- package/dist/bundled/components/base/BaseButton.vue2.js +3 -3
- package/dist/bundled/components/base/BaseCheckbox.vue2.js +8 -8
- package/dist/bundled/components/base/BaseEmpty.vue.js +2 -2
- package/dist/bundled/components/base/BaseKeyboardShortcut.vue2.js +1 -1
- package/dist/bundled/components/base/BaseListItem.vue2.js +2 -2
- package/dist/bundled/components/base/BaseListItemLink.vue.js +2 -2
- package/dist/bundled/components/base/BaseOverflowMenu.vue2.js +4 -4
- package/dist/bundled/components/base/BaseOverflowTab.vue.js +3 -3
- package/dist/bundled/components/base/BaseSelect.vue2.js +6 -6
- package/dist/bundled/components/base/BaseSplitPane.vue.js +1 -1
- package/dist/bundled/components/base/BaseSplitPane.vue2.js +20 -16
- package/dist/bundled/components/base/BaseTab.vue.js +3 -3
- package/dist/bundled/components/base/BaseTag.vue.js +1 -1
- package/dist/bundled/components/command/CommandPrompts.vue2.js +5 -5
- package/dist/bundled/components/command/CommandPromptsModal.vue2.js +3 -3
- package/dist/bundled/components/command/PromptSelect.vue2.js +12 -12
- package/dist/bundled/components/command/PromptText.vue2.js +4 -4
- package/dist/bundled/components/layout/LayoutItem.vue.js +5 -0
- package/dist/bundled/components/layout/LayoutItem.vue2.js +44 -0
- package/dist/bundled/components/layout/LayoutItemGroup.vue.js +5 -0
- package/dist/bundled/components/layout/LayoutItemGroup.vue2.js +25 -0
- package/dist/bundled/components/layout/LayoutModal.vue.js +5 -0
- package/dist/bundled/components/layout/LayoutModal.vue2.js +68 -0
- package/dist/bundled/components/layout/LayoutPane.vue.js +5 -0
- package/dist/bundled/components/layout/LayoutPane.vue2.js +59 -0
- package/dist/bundled/components/panel/ControlsComponentPropItem.vue2.js +2 -2
- package/dist/bundled/components/panel/ControlsComponentProps.vue2.js +4 -4
- package/dist/bundled/components/panel/ControlsComponentState.vue2.js +2 -2
- package/dist/bundled/components/panel/PaneTabs.vue2.js +4 -4
- package/dist/bundled/components/panel/StatePresets.vue2.js +13 -13
- package/dist/bundled/components/panel/StoryControls.vue2.js +6 -6
- package/dist/bundled/components/panel/StoryDocs.vue2.js +4 -4
- package/dist/bundled/components/panel/StoryEvent.vue2.js +7 -7
- package/dist/bundled/components/panel/StoryEvents.vue2.js +1 -1
- package/dist/bundled/components/panel/StorySidePanel.vue2.js +58 -47
- package/dist/bundled/components/panel/StorySourceCode.vue.js +1 -1
- package/dist/bundled/components/panel/StorySourceCode.vue2.js +19 -19
- package/dist/bundled/components/search/SearchItem.vue.js +1 -1
- package/dist/bundled/components/search/SearchItem.vue2.js +3 -3
- package/dist/bundled/components/search/SearchItemContent.vue2.js +9 -9
- package/dist/bundled/components/search/SearchLoading.vue2.js +2 -2
- package/dist/bundled/components/search/SearchModal.vue2.js +3 -3
- package/dist/bundled/components/search/SearchPane.vue2.js +4 -4
- package/dist/bundled/components/story/StoryResponsivePreview.vue.js +1 -1
- package/dist/bundled/components/story/StoryResponsivePreview.vue2.js +21 -21
- package/dist/bundled/components/story/StoryVariantGrid.vue2.js +7 -26
- package/dist/bundled/components/story/StoryVariantGridItem.vue.js +1 -1
- package/dist/bundled/components/story/StoryVariantGridItem.vue2.js +36 -21
- package/dist/bundled/components/story/StoryVariantListItem.vue.js +1 -1
- package/dist/bundled/components/story/StoryVariantListItem.vue2.js +5 -5
- package/dist/bundled/components/story/StoryVariantSingle.vue.js +1 -1
- package/dist/bundled/components/story/StoryVariantSingle.vue2.js +10 -10
- package/dist/bundled/components/story/StoryVariantSinglePreviewNative.vue2.js +6 -5
- package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.vue2.js +33 -8
- package/dist/bundled/components/story/StoryVariantSingleView.vue2.js +8 -39
- package/dist/bundled/components/story/StoryView.vue2.js +21 -11
- package/dist/bundled/components/story/StoryViewer.vue.js +1 -1
- package/dist/bundled/components/story/StoryViewer.vue2.js +2 -2
- package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.vue2.js +13 -9
- package/dist/bundled/components/toolbar/ToolbarBackground.vue.js +1 -1
- package/dist/bundled/components/toolbar/ToolbarBackground.vue2.js +62 -33
- package/dist/bundled/components/toolbar/ToolbarNewTab.vue2.js +13 -10
- package/dist/bundled/components/toolbar/ToolbarResponsiveSize.vue2.js +14 -14
- package/dist/bundled/components/toolbar/ToolbarTextDirection.vue2.js +13 -9
- package/dist/bundled/components/toolbar/ToolbarTitle.vue.js +4 -1
- package/dist/bundled/components/toolbar/ToolbarTitle.vue2.js +30 -7
- package/dist/bundled/components/tree/StoryGroup.vue2.js +5 -5
- package/dist/bundled/components/tree/StoryList.vue2.js +1 -1
- package/dist/bundled/components/tree/StoryListFolder.vue.js +1 -1
- package/dist/bundled/components/tree/StoryListFolder.vue2.js +7 -7
- package/dist/bundled/components/tree/StoryListItem.vue.js +1 -1
- package/dist/bundled/components/tree/StoryListItem.vue2.js +8 -8
- package/dist/bundled/index.js +3 -0
- package/dist/bundled/sandbox.js +41 -15
- package/dist/bundled/stores/layout.js +16 -0
- package/dist/bundled/stores/preview-settings.js +19 -4
- package/dist/bundled/util/color-scheme.js +27 -0
- package/dist/bundled/util/const.js +2 -0
- package/dist/bundled/util/dark.js +3 -3
- package/dist/bundled/util/keyboard.js +60 -32
- package/dist/bundled/util/preview-settings.js +11 -0
- package/dist/bundled/util/tooltip.js +2 -2
- package/dist/style.css +644 -529
- package/package.json +8 -8
- package/src/app/App.vue +109 -66
- package/src/app/components/HomeView.vue +3 -3
- package/src/app/components/app/AppActions.vue +58 -0
- package/src/app/components/app/AppHeader.vue +4 -47
- package/src/app/components/app/Breadcrumb.vue +8 -8
- package/src/app/components/app/HomeCounter.vue +5 -5
- package/src/app/components/app/InitialLoading.vue +5 -5
- package/src/app/components/app/MobileOverlay.vue +5 -5
- package/src/app/components/app/TopBar.vue +60 -0
- package/src/app/components/app/TopBarChip.vue +5 -0
- package/src/app/components/app/TopBarChipItem.vue +7 -0
- package/src/app/components/base/BaseButton.vue +3 -3
- package/src/app/components/base/BaseCheckbox.vue +9 -9
- package/src/app/components/base/BaseCopyIcon.vue +1 -1
- package/src/app/components/base/BaseEmpty.vue +4 -4
- package/src/app/components/base/BaseKeyboardShortcut.vue +1 -1
- package/src/app/components/base/BaseListItem.vue +3 -3
- package/src/app/components/base/BaseListItemLink.vue +3 -3
- package/src/app/components/base/BaseOverflowMenu.vue +4 -4
- package/src/app/components/base/BaseOverflowTab.vue +3 -3
- package/src/app/components/base/BaseSelect.vue +6 -6
- package/src/app/components/base/BaseSplitPane.vue +21 -16
- package/src/app/components/base/BaseTab.vue +3 -3
- package/src/app/components/base/BaseTag.vue +1 -1
- package/src/app/components/command/CommandPrompts.vue +5 -5
- package/src/app/components/command/CommandPromptsModal.vue +3 -3
- package/src/app/components/command/PromptSelect.vue +14 -14
- package/src/app/components/command/PromptText.vue +4 -4
- package/src/app/components/layout/LayoutItem.vue +36 -0
- package/src/app/components/layout/LayoutItemGroup.vue +18 -0
- package/src/app/components/layout/LayoutModal.vue +60 -0
- package/src/app/components/layout/LayoutPane.vue +45 -0
- package/src/app/components/panel/ControlsComponentPropItem.vue +2 -2
- package/src/app/components/panel/ControlsComponentProps.vue +3 -3
- package/src/app/components/panel/ControlsComponentState.vue +2 -2
- package/src/app/components/panel/PaneTabs.vue +4 -4
- package/src/app/components/panel/StatePresets.vue +13 -13
- package/src/app/components/panel/StoryControls.vue +6 -6
- package/src/app/components/panel/StoryDocs.vue +4 -4
- package/src/app/components/panel/StoryEvent.vue +7 -7
- package/src/app/components/panel/StoryEvents.vue +1 -1
- package/src/app/components/panel/StorySidePanel.vue +51 -41
- package/src/app/components/panel/StorySourceCode.vue +19 -19
- package/src/app/components/search/SearchItem.vue +2 -2
- package/src/app/components/search/SearchItemContent.vue +9 -9
- package/src/app/components/search/SearchLoading.vue +2 -2
- package/src/app/components/search/SearchModal.vue +3 -3
- package/src/app/components/search/SearchPane.vue +4 -4
- package/src/app/components/story/StoryResponsivePreview.vue +27 -27
- package/src/app/components/story/StoryVariantGrid.vue +5 -24
- package/src/app/components/story/StoryVariantGridItem.vue +36 -17
- package/src/app/components/story/StoryVariantListItem.vue +4 -4
- package/src/app/components/story/StoryVariantSingle.vue +9 -9
- package/src/app/components/story/StoryVariantSinglePreviewNative.vue +7 -5
- package/src/app/components/story/StoryVariantSinglePreviewRemote.vue +37 -7
- package/src/app/components/story/StoryVariantSingleView.vue +1 -34
- package/src/app/components/story/StoryView.vue +23 -8
- package/src/app/components/story/StoryViewer.vue +1 -1
- package/src/app/components/toolbar/DevOnlyToolbarOpenInEditor.vue +5 -4
- package/src/app/components/toolbar/ToolbarBackground.vue +62 -25
- package/src/app/components/toolbar/ToolbarNewTab.vue +5 -4
- package/src/app/components/toolbar/ToolbarResponsiveSize.vue +15 -15
- package/src/app/components/toolbar/ToolbarTextDirection.vue +5 -4
- package/src/app/components/toolbar/ToolbarTitle.vue +32 -8
- package/src/app/components/tree/StoryGroup.vue +5 -5
- package/src/app/components/tree/StoryList.vue +1 -1
- package/src/app/components/tree/StoryListFolder.vue +6 -6
- package/src/app/components/tree/StoryListItem.vue +6 -6
- package/src/app/index.ts +3 -0
- package/src/app/sandbox.ts +59 -15
- package/src/app/stores/layout.ts +22 -0
- package/src/app/stores/preview-settings.ts +26 -2
- package/src/app/style/floating.pcss +4 -4
- package/src/app/style/main.pcss +2 -2
- package/src/app/style/sandbox.css +1 -1
- package/src/app/types.ts +49 -0
- package/src/app/util/color-scheme.ts +36 -0
- package/src/app/util/const.ts +1 -0
- package/src/app/util/dark.ts +3 -3
- package/src/app/util/keyboard.ts +65 -32
- package/src/app/util/preview-settings.ts +16 -0
- package/src/app/util/tooltip.ts +2 -2
- package/src/bundle-main.js +2 -0
- package/src/shim.d.ts +2 -2
|
@@ -12,14 +12,14 @@ defineProps<{
|
|
|
12
12
|
|
|
13
13
|
<template>
|
|
14
14
|
<div class="poveste-controls-component-props">
|
|
15
|
-
<div class="
|
|
15
|
+
<div class="ptw-font-mono ptw-p-2 ptw-flex ptw-items-center ptw-gap-1">
|
|
16
16
|
<Icon
|
|
17
17
|
v-tooltip="'Auto-detected props'"
|
|
18
18
|
icon="carbon:flash"
|
|
19
|
-
class="
|
|
19
|
+
class="ptw-w-4 ptw-h-4 ptw-text-primary-500 ptw-flex-none"
|
|
20
20
|
/>
|
|
21
21
|
<div>
|
|
22
|
-
<span class="
|
|
22
|
+
<span class="ptw-opacity-30"><</span>{{ definition.name }}<span class="ptw-opacity-30">></span>
|
|
23
23
|
</div>
|
|
24
24
|
</div>
|
|
25
25
|
|
|
@@ -14,11 +14,11 @@ const stateKeys = computed(() => Object.keys(props.variant.state || {})
|
|
|
14
14
|
|
|
15
15
|
<template>
|
|
16
16
|
<div class="poveste-controls-component-init-state">
|
|
17
|
-
<div class="
|
|
17
|
+
<div class="ptw-p-2 ptw-flex ptw-items-center ptw-gap-1">
|
|
18
18
|
<Icon
|
|
19
19
|
v-tooltip="'Auto-detected state'"
|
|
20
20
|
icon="carbon:data-vis-1"
|
|
21
|
-
class="
|
|
21
|
+
class="ptw-w-4 ptw-h-4 ptw-text-primary-500 ptw-flex-none"
|
|
22
22
|
/>
|
|
23
23
|
<div>
|
|
24
24
|
State
|
|
@@ -22,7 +22,7 @@ const hasEvents = computed(() => eventsStore.events.length)
|
|
|
22
22
|
</script>
|
|
23
23
|
|
|
24
24
|
<template>
|
|
25
|
-
<BaseOverflowMenu class="poveste-pane-tabs
|
|
25
|
+
<BaseOverflowMenu class="poveste-pane-tabs ptw-h-10 ptw-flex-none ptw-border-b ptw-border-gray-100 dark:ptw-border-gray-750">
|
|
26
26
|
<BaseTab
|
|
27
27
|
:to="{ ...$route, query: { ...$route.query, tab: '' } }"
|
|
28
28
|
:matched="!$route.query.tab"
|
|
@@ -33,7 +33,7 @@ const hasEvents = computed(() => eventsStore.events.length)
|
|
|
33
33
|
:to="{ ...$route, query: { ...$route.query, tab: 'docs' } }"
|
|
34
34
|
:matched="$route.query.tab === 'docs'"
|
|
35
35
|
:class="{
|
|
36
|
-
'
|
|
36
|
+
'ptw-opacity-50': !renderedDoc,
|
|
37
37
|
}"
|
|
38
38
|
>
|
|
39
39
|
Docs
|
|
@@ -42,7 +42,7 @@ const hasEvents = computed(() => eventsStore.events.length)
|
|
|
42
42
|
:to="{ ...$route, query: { ...$route.query, tab: 'events' } }"
|
|
43
43
|
:matched="$route.query.tab === 'events'"
|
|
44
44
|
:class="{
|
|
45
|
-
'
|
|
45
|
+
'ptw-opacity-50': !hasEvents,
|
|
46
46
|
}"
|
|
47
47
|
>
|
|
48
48
|
Events
|
|
@@ -71,7 +71,7 @@ const hasEvents = computed(() => eventsStore.events.length)
|
|
|
71
71
|
:to="{ ...$route, query: { ...$route.query, tab: 'events' } }"
|
|
72
72
|
:matched="$route.query.tab === 'events'"
|
|
73
73
|
:class="{
|
|
74
|
-
'
|
|
74
|
+
'ptw-opacity-50': !hasEvents,
|
|
75
75
|
}"
|
|
76
76
|
>
|
|
77
77
|
Events
|
|
@@ -118,10 +118,10 @@ onClickOutside(select, stopEditing)
|
|
|
118
118
|
</script>
|
|
119
119
|
|
|
120
120
|
<template>
|
|
121
|
-
<div class="poveste-state-presets
|
|
121
|
+
<div class="poveste-state-presets ptw-flex ptw-gap-2 ptw-w-full ptw-items-center">
|
|
122
122
|
<div
|
|
123
123
|
ref="select"
|
|
124
|
-
class="
|
|
124
|
+
class="ptw-flex-1 ptw-min-w-0"
|
|
125
125
|
>
|
|
126
126
|
<BaseSelect
|
|
127
127
|
v-model="selectedOption"
|
|
@@ -137,37 +137,37 @@ onClickOutside(select, stopEditing)
|
|
|
137
137
|
ref="input"
|
|
138
138
|
v-model="presetStates.get(selectedOption).label"
|
|
139
139
|
type="text"
|
|
140
|
-
class="
|
|
140
|
+
class="ptw-text-inherit ptw-bg-transparent ptw-w-full ptw-h-full ptw-outline-none"
|
|
141
141
|
@click.stop.prevent
|
|
142
142
|
>
|
|
143
143
|
|
|
144
144
|
<div
|
|
145
145
|
v-else
|
|
146
|
-
class="
|
|
146
|
+
class="ptw-flex ptw-items-center ptw-gap-2"
|
|
147
147
|
>
|
|
148
|
-
<span class="
|
|
148
|
+
<span class="ptw-flex-1 ptw-truncate">
|
|
149
149
|
{{ label }}
|
|
150
150
|
</span>
|
|
151
151
|
<Icon
|
|
152
152
|
v-if="canEdit"
|
|
153
153
|
v-tooltip="'Rename this preset'"
|
|
154
154
|
icon="carbon:edit"
|
|
155
|
-
class="
|
|
155
|
+
class="ptw-flex-none ptw-cursor-pointer ptw-w-4 ptw-h-4 hover:ptw-text-primary-500 ptw-opacity-50 hover:ptw-opacity-100 dark:hover:ptw-text-primary-400 ptw-text-gray-900 dark:ptw-text-gray-100"
|
|
156
156
|
@click.stop="startEditing()"
|
|
157
157
|
/>
|
|
158
158
|
</div>
|
|
159
159
|
</template>
|
|
160
160
|
|
|
161
161
|
<template #option="{ label, value }">
|
|
162
|
-
<div class="
|
|
162
|
+
<div class="ptw-flex ptw-gap-2 ptw-items-center">
|
|
163
163
|
<span
|
|
164
|
-
class="
|
|
164
|
+
class="ptw-flex-1 ptw-truncate"
|
|
165
165
|
>{{ label }}</span>
|
|
166
166
|
<Icon
|
|
167
167
|
v-if="value !== DEFAULT_ID"
|
|
168
168
|
v-tooltip="'Delete this preset'"
|
|
169
169
|
icon="carbon:trash-can"
|
|
170
|
-
class="
|
|
170
|
+
class="ptw-flex-none ptw-cursor-pointer ptw-w-4 ptw-h-4 hover:ptw-text-primary-500 ptw-opacity-50 hover:ptw-opacity-100 dark:hover:ptw-text-primary-400 ptw-text-gray-900 dark:ptw-text-gray-100"
|
|
171
171
|
@click.stop="deletePreset(value)"
|
|
172
172
|
/>
|
|
173
173
|
</div>
|
|
@@ -177,22 +177,22 @@ onClickOutside(select, stopEditing)
|
|
|
177
177
|
<Icon
|
|
178
178
|
v-tooltip="savedNotif ? 'Saved!' : canEdit ? 'Save to preset' : null"
|
|
179
179
|
:icon="savedNotif ? 'carbon:checkmark' : 'carbon:save'"
|
|
180
|
-
class="
|
|
180
|
+
class="ptw-cursor-pointer ptw-w-4 ptw-h-4 hover:ptw-text-primary-500 dark:hover:ptw-text-primary-400 ptw-text-gray-900 dark:ptw-text-gray-100"
|
|
181
181
|
:class="[
|
|
182
|
-
canEdit ? '
|
|
182
|
+
canEdit ? 'ptw-opacity-50 hover:ptw-opacity-100' : 'ptw-opacity-25 ptw-pointer-events-none',
|
|
183
183
|
]"
|
|
184
184
|
@click="savePreset()"
|
|
185
185
|
/>
|
|
186
186
|
<Icon
|
|
187
187
|
v-tooltip="'Create new preset'"
|
|
188
188
|
icon="carbon:add-alt"
|
|
189
|
-
class="
|
|
189
|
+
class="ptw-cursor-pointer ptw-w-4 ptw-h-4 hover:ptw-text-primary-500 ptw-opacity-50 hover:ptw-opacity-100 dark:hover:ptw-text-primary-400 ptw-text-gray-900 dark:ptw-text-gray-100"
|
|
190
190
|
@click="createPreset()"
|
|
191
191
|
/>
|
|
192
192
|
<Icon
|
|
193
193
|
v-tooltip="'Reset to initial state'"
|
|
194
194
|
icon="carbon:reset"
|
|
195
|
-
class="
|
|
195
|
+
class="ptw-cursor-pointer ptw-w-4 ptw-h-4 hover:ptw-text-primary-500 ptw-opacity-50 hover:ptw-opacity-100 dark:hover:ptw-text-primary-400 ptw-text-gray-900 dark:ptw-text-gray-100"
|
|
196
196
|
@click="resetState()"
|
|
197
197
|
/>
|
|
198
198
|
</div>
|
|
@@ -39,11 +39,11 @@ const hasInitState = computed(() => Object
|
|
|
39
39
|
<template>
|
|
40
40
|
<div
|
|
41
41
|
data-test-id="story-controls"
|
|
42
|
-
class="poveste-story-controls
|
|
42
|
+
class="poveste-story-controls ptw-flex ptw-flex-col ptw-divide-y ptw-divide-gray-100 dark:ptw-divide-gray-750"
|
|
43
43
|
>
|
|
44
44
|
<!-- Toolbar -->
|
|
45
45
|
<div
|
|
46
|
-
class="
|
|
46
|
+
class="ptw-h-9 ptw-flex-none ptw-px-2 ptw-flex ptw-items-center"
|
|
47
47
|
>
|
|
48
48
|
<StatePresets
|
|
49
49
|
v-if="ready || !hasCustomControls"
|
|
@@ -59,7 +59,7 @@ const hasInitState = computed(() => Object
|
|
|
59
59
|
slot-name="controls"
|
|
60
60
|
:variant="variant"
|
|
61
61
|
:story="story"
|
|
62
|
-
class="__poveste-render-custom-controls __histoire-render-custom-controls
|
|
62
|
+
class="__poveste-render-custom-controls __histoire-render-custom-controls ptw-flex-none"
|
|
63
63
|
@ready="ready = true"
|
|
64
64
|
/>
|
|
65
65
|
|
|
@@ -68,7 +68,7 @@ const hasInitState = computed(() => Object
|
|
|
68
68
|
v-else-if="hasInitState"
|
|
69
69
|
>
|
|
70
70
|
<ControlsComponentState
|
|
71
|
-
class="
|
|
71
|
+
class="ptw-flex-none ptw-my-2"
|
|
72
72
|
:variant="variant"
|
|
73
73
|
/>
|
|
74
74
|
</div>
|
|
@@ -76,7 +76,7 @@ const hasInitState = computed(() => Object
|
|
|
76
76
|
<BaseEmpty v-else-if="!variant.state?._hPropDefs?.length">
|
|
77
77
|
<Icon
|
|
78
78
|
icon="carbon:audio-console"
|
|
79
|
-
class="
|
|
79
|
+
class="ptw-w-8 ptw-h-8 ptw-opacity-50 ptw-mb-6"
|
|
80
80
|
/>
|
|
81
81
|
<span>No controls available for this story</span>
|
|
82
82
|
</BaseEmpty>
|
|
@@ -90,7 +90,7 @@ const hasInitState = computed(() => Object
|
|
|
90
90
|
:key="index"
|
|
91
91
|
:variant="variant"
|
|
92
92
|
:definition="def"
|
|
93
|
-
class="
|
|
93
|
+
class="ptw-flex-none ptw-my-2"
|
|
94
94
|
/>
|
|
95
95
|
</div>
|
|
96
96
|
</div>
|
|
@@ -170,9 +170,9 @@ const filePath = computed(() => story.value.file?.docsFilePath ?? (props.standal
|
|
|
170
170
|
>
|
|
171
171
|
<div
|
|
172
172
|
v-if="__POVESTE_DEV__ && renderedDoc && filePath"
|
|
173
|
-
class="
|
|
173
|
+
class="ptw-flex ptw-items-center ptw-gap-2 ptw-p-2"
|
|
174
174
|
:class="{
|
|
175
|
-
'
|
|
175
|
+
'ptw-pt-4': !standalone,
|
|
176
176
|
}"
|
|
177
177
|
>
|
|
178
178
|
<DevOnlyToolbarOpenInEditor
|
|
@@ -187,14 +187,14 @@ const filePath = computed(() => story.value.file?.docsFilePath ?? (props.standal
|
|
|
187
187
|
>
|
|
188
188
|
<Icon
|
|
189
189
|
icon="carbon:document-unknown"
|
|
190
|
-
class="
|
|
190
|
+
class="ptw-w-8 ptw-h-8 ptw-opacity-50 ptw-mb-6"
|
|
191
191
|
/>
|
|
192
192
|
No documentation available
|
|
193
193
|
</BaseEmpty>
|
|
194
194
|
<div
|
|
195
195
|
v-else
|
|
196
196
|
ref="renderedEl"
|
|
197
|
-
class="
|
|
197
|
+
class="ptw-prose dark:ptw-prose-invert ptw-p-4 ptw-max-w-none"
|
|
198
198
|
data-test-id="story-docs"
|
|
199
199
|
v-html="renderedDoc"
|
|
200
200
|
/>
|
|
@@ -20,34 +20,34 @@ const formattedArgument = computed(() => {
|
|
|
20
20
|
|
|
21
21
|
<template>
|
|
22
22
|
<VDropdown
|
|
23
|
-
class="poveste-story-event
|
|
23
|
+
class="poveste-story-event ptw-group"
|
|
24
24
|
placement="right"
|
|
25
25
|
data-test-id="event-item"
|
|
26
26
|
>
|
|
27
27
|
<template #default="{ shown }">
|
|
28
28
|
<div
|
|
29
|
-
class="group-hover:
|
|
29
|
+
class="group-hover:ptw-bg-primary-100 dark:group-hover:ptw-bg-primary-700 ptw-cursor-pointer ptw-py-2 ptw-px-4 ptw-flex ptw-items-baseline ptw-gap-1 ptw-leading-normal"
|
|
30
30
|
:class="[
|
|
31
|
-
shown ? '
|
|
31
|
+
shown ? 'ptw-bg-primary-50 dark:ptw-bg-primary-600' : 'group-odd:ptw-bg-gray-100/50 dark:group-odd:ptw-bg-gray-750/40',
|
|
32
32
|
]"
|
|
33
33
|
>
|
|
34
34
|
<span
|
|
35
35
|
:class="{
|
|
36
|
-
'
|
|
36
|
+
'ptw-text-primary-500': shown,
|
|
37
37
|
}"
|
|
38
38
|
>
|
|
39
39
|
{{ event.name }}
|
|
40
40
|
</span>
|
|
41
41
|
<span
|
|
42
42
|
v-if="event.argument"
|
|
43
|
-
class="
|
|
43
|
+
class="ptw-text-xs ptw-opacity-50 ptw-truncate"
|
|
44
44
|
>{{ formattedArgument }}</span>
|
|
45
45
|
</div>
|
|
46
46
|
</template>
|
|
47
47
|
|
|
48
48
|
<template #popper>
|
|
49
|
-
<div class="
|
|
50
|
-
<pre class="
|
|
49
|
+
<div class="ptw-overflow-auto ptw-max-w-[400px] ptw-max-h-[400px]">
|
|
50
|
+
<pre class="ptw-p-4">{{ event.argument }}</pre>
|
|
51
51
|
</div>
|
|
52
52
|
</template>
|
|
53
53
|
</VDropdown>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { computed } from 'vue'
|
|
3
3
|
import { useRoute } from 'vue-router'
|
|
4
|
+
import { useLayoutStore } from '../../stores/layout'
|
|
4
5
|
import { useStoryStore } from '../../stores/story'
|
|
5
6
|
|
|
6
7
|
import BaseEmpty from '../base/BaseEmpty.vue'
|
|
@@ -12,6 +13,11 @@ import StoryEvents from './StoryEvents.vue'
|
|
|
12
13
|
import StorySourceCode from './StorySourceCode.vue'
|
|
13
14
|
|
|
14
15
|
const storyStore = useStoryStore()
|
|
16
|
+
const layoutStore = useLayoutStore()
|
|
17
|
+
|
|
18
|
+
const innerOrientation = computed(() =>
|
|
19
|
+
layoutStore.settings.storyOptionsPlacement === 'bottom' ? 'landscape' : 'portrait',
|
|
20
|
+
)
|
|
15
21
|
|
|
16
22
|
const route = useRoute()
|
|
17
23
|
|
|
@@ -28,49 +34,53 @@ const panelContentComponent = computed(() => {
|
|
|
28
34
|
</script>
|
|
29
35
|
|
|
30
36
|
<template>
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
<div class="ptw-h-full ptw-w-full ptw-p-2">
|
|
38
|
+
<div class="ptw-h-full ptw-w-full ptw-rounded-lg ptw-border ptw-border-gray-200 dark:ptw-border-gray-700 ptw-overflow-hidden ptw-bg-white dark:ptw-bg-gray-700">
|
|
39
|
+
<BaseEmpty
|
|
40
|
+
v-if="!storyStore.currentVariant"
|
|
41
|
+
class="poveste-story-side-panel poveste-selection"
|
|
42
|
+
>
|
|
43
|
+
<span>Select a variant</span>
|
|
44
|
+
</BaseEmpty>
|
|
37
45
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
<BaseEmpty
|
|
47
|
+
v-else-if="!storyStore.currentVariant.configReady || !storyStore.currentVariant.previewReady"
|
|
48
|
+
class="poveste-story-side-panel poveste-loading"
|
|
49
|
+
>
|
|
50
|
+
<span>Loading...</span>
|
|
51
|
+
</BaseEmpty>
|
|
44
52
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
<BaseSplitPane
|
|
54
|
+
v-else
|
|
55
|
+
:save-id="`story-sidepane-${innerOrientation}`"
|
|
56
|
+
:orientation="innerOrientation"
|
|
57
|
+
class="poveste-story-side-panel poveste-loaded ptw-h-full"
|
|
58
|
+
data-test-id="story-side-panel"
|
|
59
|
+
>
|
|
60
|
+
<template #first>
|
|
61
|
+
<div class="ptw-flex ptw-flex-col ptw-h-full">
|
|
62
|
+
<PaneTabs
|
|
63
|
+
:story="storyStore.currentStory"
|
|
64
|
+
:variant="storyStore.currentVariant"
|
|
65
|
+
/>
|
|
58
66
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
<component
|
|
68
|
+
:is="panelContentComponent"
|
|
69
|
+
:story="storyStore.currentStory"
|
|
70
|
+
:variant="storyStore.currentVariant"
|
|
71
|
+
class="ptw-h-full ptw-overflow-auto"
|
|
72
|
+
/>
|
|
73
|
+
</div>
|
|
74
|
+
</template>
|
|
67
75
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
<template #last>
|
|
77
|
+
<StorySourceCode
|
|
78
|
+
:story="storyStore.currentStory"
|
|
79
|
+
:variant="storyStore.currentVariant"
|
|
80
|
+
class="ptw-h-full"
|
|
81
|
+
/>
|
|
82
|
+
</template>
|
|
83
|
+
</BaseSplitPane>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
76
86
|
</template>
|
|
@@ -133,32 +133,32 @@ watch(sourceHtml, async () => {
|
|
|
133
133
|
|
|
134
134
|
<template>
|
|
135
135
|
<div
|
|
136
|
-
class="poveste-story-source-code
|
|
136
|
+
class="poveste-story-source-code ptw-bg-gray-50 dark:ptw-bg-gray-750 ptw-h-full ptw-overflow-hidden ptw-flex ptw-flex-col"
|
|
137
137
|
>
|
|
138
138
|
<!-- Toolbar -->
|
|
139
139
|
<div
|
|
140
140
|
v-if="!error"
|
|
141
|
-
class="
|
|
141
|
+
class="ptw-h-10 ptw-flex-none ptw-border-b ptw-border-solid ptw-border-gray-500/5 ptw-px-4 ptw-flex ptw-items-center ptw-gap-2"
|
|
142
142
|
>
|
|
143
|
-
<div class="
|
|
143
|
+
<div class="ptw-text-gray-900 dark:ptw-text-gray-100">
|
|
144
144
|
Source
|
|
145
145
|
</div>
|
|
146
|
-
<div class="
|
|
146
|
+
<div class="ptw-flex-1" />
|
|
147
147
|
|
|
148
148
|
<!-- Display source modes -->
|
|
149
|
-
<div class="
|
|
149
|
+
<div class="ptw-flex ptw-flex-none ptw-gap-px ptw-h-full ptw-py-2">
|
|
150
150
|
<button
|
|
151
151
|
v-tooltip="!dynamicSourceCode ? 'Dynamic source code is not available' : displayedSource !== 'dynamic' ? 'Switch to dynamic source' : null"
|
|
152
|
-
class="
|
|
152
|
+
class="ptw-flex ptw-items-center ptw-gap-1 ptw-h-full ptw-px-1 ptw-bg-gray-500/10 ptw-rounded-l ptw-transition-all ptw-ease-[cubic-bezier(0,1,.6,1)] ptw-duration-300 ptw-overflow-hidden"
|
|
153
153
|
:class="[
|
|
154
|
-
displayedSource !== 'dynamic' ? '
|
|
155
|
-
dynamicSourceCode ? '
|
|
154
|
+
displayedSource !== 'dynamic' ? 'ptw-max-w-6 ptw-opacity-70' : 'ptw-max-w-[82px] ptw-text-primary-600 dark:ptw-text-primary-400',
|
|
155
|
+
dynamicSourceCode ? 'ptw-cursor-pointer hover:ptw-bg-gray-500/30 active:ptw-bg-gray-600/50' : 'ptw-opacity-50',
|
|
156
156
|
]"
|
|
157
157
|
@click="dynamicSourceCode && (displayedSource = 'dynamic')"
|
|
158
158
|
>
|
|
159
159
|
<Icon
|
|
160
160
|
icon="carbon:flash"
|
|
161
|
-
class="
|
|
161
|
+
class="ptw-w-4 ptw-h-4 ptw-flex-none"
|
|
162
162
|
/>
|
|
163
163
|
<span
|
|
164
164
|
class="transition-opacity duration-300"
|
|
@@ -171,16 +171,16 @@ watch(sourceHtml, async () => {
|
|
|
171
171
|
</button>
|
|
172
172
|
<button
|
|
173
173
|
v-tooltip="!staticSourceCode ? 'Static source code is not available' : displayedSource !== 'static' ? 'Switch to static source' : null"
|
|
174
|
-
class="
|
|
174
|
+
class="ptw-flex ptw-items-center ptw-gap-1 ptw-h-full ptw-px-1 ptw-bg-gray-500/10 ptw-rounded-r ptw-transition-all ptw-ease-[cubic-bezier(0,1,.6,1)] ptw-duration-300 ptw-overflow-hidden"
|
|
175
175
|
:class="[
|
|
176
|
-
displayedSource !== 'static' ? '
|
|
177
|
-
staticSourceCode ? '
|
|
176
|
+
displayedSource !== 'static' ? 'ptw-max-w-6 ptw-opacity-70' : 'ptw-max-w-[63px] ptw-text-primary-600 dark:ptw-text-primary-400',
|
|
177
|
+
staticSourceCode ? 'ptw-cursor-pointer hover:ptw-bg-gray-500/30 active:ptw-bg-gray-600/50' : 'ptw-opacity-50',
|
|
178
178
|
]"
|
|
179
179
|
@click="staticSourceCode && (displayedSource = 'static')"
|
|
180
180
|
>
|
|
181
181
|
<Icon
|
|
182
182
|
icon="carbon:document"
|
|
183
|
-
class="
|
|
183
|
+
class="ptw-w-4 ptw-h-4 ptw-flex-none"
|
|
184
184
|
/>
|
|
185
185
|
<span
|
|
186
186
|
class="transition-opacity duration-300"
|
|
@@ -195,13 +195,13 @@ watch(sourceHtml, async () => {
|
|
|
195
195
|
|
|
196
196
|
<HstCopyIcon
|
|
197
197
|
:content="displayedSourceCode"
|
|
198
|
-
class="
|
|
198
|
+
class="ptw-flex-none"
|
|
199
199
|
/>
|
|
200
200
|
</div>
|
|
201
201
|
|
|
202
202
|
<div
|
|
203
203
|
v-if="error"
|
|
204
|
-
class="
|
|
204
|
+
class="ptw-text-red-500 ptw-h-full ptw-p-2 ptw-overflow-auto ptw-font-mono ptw-text-sm"
|
|
205
205
|
>
|
|
206
206
|
Error: {{ error }}
|
|
207
207
|
</div>
|
|
@@ -209,7 +209,7 @@ watch(sourceHtml, async () => {
|
|
|
209
209
|
<BaseEmpty v-else-if="!displayedSourceCode">
|
|
210
210
|
<Icon
|
|
211
211
|
icon="carbon:code-hide"
|
|
212
|
-
class="
|
|
212
|
+
class="ptw-w-8 ptw-h-8 ptw-opacity-50 ptw-mb-6"
|
|
213
213
|
/>
|
|
214
214
|
<span>Not available</span>
|
|
215
215
|
</BaseEmpty>
|
|
@@ -217,7 +217,7 @@ watch(sourceHtml, async () => {
|
|
|
217
217
|
<textarea
|
|
218
218
|
v-else-if="!sourceHtml"
|
|
219
219
|
ref="scroller"
|
|
220
|
-
class="__poveste-code-placeholder
|
|
220
|
+
class="__poveste-code-placeholder ptw-w-full ptw-h-full ptw-p-4 ptw-outline-none ptw-bg-transparent ptw-resize-none ptw-m-0"
|
|
221
221
|
:value="displayedSourceCode"
|
|
222
222
|
readonly
|
|
223
223
|
data-test-id="story-source-code"
|
|
@@ -227,12 +227,12 @@ watch(sourceHtml, async () => {
|
|
|
227
227
|
<div
|
|
228
228
|
v-else
|
|
229
229
|
ref="scroller"
|
|
230
|
-
class="
|
|
230
|
+
class="ptw-w-full ptw-h-full ptw-overflow-auto"
|
|
231
231
|
data-test-id="story-source-code"
|
|
232
232
|
@scroll="onScroll"
|
|
233
233
|
>
|
|
234
234
|
<div
|
|
235
|
-
class="__poveste-code __histoire-code
|
|
235
|
+
class="__poveste-code __histoire-code ptw-p-4 ptw-w-fit"
|
|
236
236
|
v-html="sourceHtml"
|
|
237
237
|
/>
|
|
238
238
|
</div>
|
|
@@ -59,7 +59,7 @@ function action(fromClick = false) {
|
|
|
59
59
|
v-if="'route' in result"
|
|
60
60
|
:to="result.route"
|
|
61
61
|
:is-active="selected"
|
|
62
|
-
class="
|
|
62
|
+
class="ptw-px-6 ptw-py-4 ptw-gap-4"
|
|
63
63
|
@navigate="action(true)"
|
|
64
64
|
>
|
|
65
65
|
<SearchItemContent
|
|
@@ -71,7 +71,7 @@ function action(fromClick = false) {
|
|
|
71
71
|
<BaseListItem
|
|
72
72
|
v-if="'onActivate' in result"
|
|
73
73
|
:is-active="selected"
|
|
74
|
-
class="
|
|
74
|
+
class="ptw-px-6 ptw-py-4 ptw-gap-4"
|
|
75
75
|
@navigate="action(true)"
|
|
76
76
|
>
|
|
77
77
|
<SearchItemContent
|
|
@@ -23,14 +23,14 @@ const kindLabels = {
|
|
|
23
23
|
<template>
|
|
24
24
|
<BaseIcon
|
|
25
25
|
:icon="result.icon ?? defaultIcons[result.kind]"
|
|
26
|
-
class="
|
|
26
|
+
class="ptw-w-4 ptw-h-4"
|
|
27
27
|
:class="[
|
|
28
28
|
!selected ? [
|
|
29
29
|
result.iconColor
|
|
30
30
|
? 'bind-icon-color'
|
|
31
31
|
: {
|
|
32
|
-
'
|
|
33
|
-
'
|
|
32
|
+
'ptw-text-primary-500': result.kind === 'story',
|
|
33
|
+
'ptw-text-gray-500': result.kind === 'variant',
|
|
34
34
|
},
|
|
35
35
|
] : [],
|
|
36
36
|
{
|
|
@@ -38,27 +38,27 @@ const kindLabels = {
|
|
|
38
38
|
},
|
|
39
39
|
]"
|
|
40
40
|
/>
|
|
41
|
-
<div class="
|
|
42
|
-
<div class="
|
|
41
|
+
<div class="ptw-flex-1">
|
|
42
|
+
<div class="ptw-flex">
|
|
43
43
|
{{ result.title }}
|
|
44
|
-
<span class="
|
|
44
|
+
<span class="ptw-ml-auto ptw-opacity-40">
|
|
45
45
|
{{ kindLabels[result.kind] }}
|
|
46
46
|
</span>
|
|
47
47
|
</div>
|
|
48
48
|
|
|
49
49
|
<div
|
|
50
50
|
v-if="result.path?.length"
|
|
51
|
-
class="
|
|
51
|
+
class="ptw-flex ptw-items-center ptw-gap-0.5 ptw-opacity-60"
|
|
52
52
|
>
|
|
53
53
|
<div
|
|
54
54
|
v-for="(p, index) of result.path"
|
|
55
55
|
:key="index"
|
|
56
|
-
class="
|
|
56
|
+
class="ptw-flex ptw-items-center ptw-gap-0.5"
|
|
57
57
|
>
|
|
58
58
|
<Icon
|
|
59
59
|
v-if="index > 0"
|
|
60
60
|
icon="carbon:chevron-right"
|
|
61
|
-
class="
|
|
61
|
+
class="ptw-w-4 ptw-h-4 ptw-mt-0.5 ptw-opacity-50"
|
|
62
62
|
/>
|
|
63
63
|
<span>{{ p }}</span>
|
|
64
64
|
</div>
|
|
@@ -4,11 +4,11 @@ import { Icon } from '@iconify/vue'
|
|
|
4
4
|
|
|
5
5
|
<template>
|
|
6
6
|
<div
|
|
7
|
-
class="poveste-search-loading
|
|
7
|
+
class="poveste-search-loading ptw-flex ptw-items-center ptw-gap-4 ptw-pl-6 ptw-border ptw-border-transparent focus-visible:ptw-border-primary-500 ptw-h-[51px] ptw-opacity-30"
|
|
8
8
|
>
|
|
9
9
|
<Icon
|
|
10
10
|
icon="carbon:search"
|
|
11
|
-
class="flex-none
|
|
11
|
+
class="flex-none ptw-w-4 ptw-h-4"
|
|
12
12
|
/>
|
|
13
13
|
|
|
14
14
|
Loading...
|
|
@@ -27,14 +27,14 @@ function close() {
|
|
|
27
27
|
<template>
|
|
28
28
|
<div
|
|
29
29
|
v-show="shown"
|
|
30
|
-
class="poveste-search-modal
|
|
30
|
+
class="poveste-search-modal ptw-fixed ptw-inset-0 ptw-bg-white/80 dark:ptw-bg-gray-900/80 ptw-z-20"
|
|
31
31
|
data-test-id="search-modal"
|
|
32
32
|
>
|
|
33
33
|
<div
|
|
34
|
-
class="
|
|
34
|
+
class="ptw-absolute ptw-inset-0"
|
|
35
35
|
@click="close()"
|
|
36
36
|
/>
|
|
37
|
-
<div class="
|
|
37
|
+
<div class="ptw-bg-white dark:ptw-bg-gray-900 md:ptw-mt-16 md:ptw-mx-auto ptw-w-screen ptw-max-w-[512px] ptw-shadow-xl ptw-border ptw-border-gray-200 dark:ptw-border-gray-750 ptw-rounded-lg ptw-relative ptw-divide-y ptw-divide-gray-200 dark:ptw-divide-gray-850">
|
|
38
38
|
<SearchPane
|
|
39
39
|
:shown="shown"
|
|
40
40
|
@close="close()"
|