@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.
Files changed (187) hide show
  1. package/dist/app/style/floating.pcss +4 -4
  2. package/dist/app/style/main.pcss +2 -2
  3. package/dist/app/style/sandbox.css +1 -1
  4. package/dist/bundle-main.js +2 -0
  5. package/dist/bundled/App.vue2.js +81 -37
  6. package/dist/bundled/app.css +51 -46
  7. package/dist/bundled/components/HomeView.vue2.js +3 -3
  8. package/dist/bundled/components/app/AppActions.vue.js +5 -0
  9. package/dist/bundled/components/app/AppActions.vue2.js +76 -0
  10. package/dist/bundled/components/app/AppHeader.vue2.js +5 -47
  11. package/dist/bundled/components/app/Breadcrumb.vue.js +1 -1
  12. package/dist/bundled/components/app/Breadcrumb.vue2.js +9 -9
  13. package/dist/bundled/components/app/HomeCounter.vue2.js +5 -5
  14. package/dist/bundled/components/app/InitialLoading.vue2.js +5 -5
  15. package/dist/bundled/components/app/MobileOverlay.vue2.js +5 -5
  16. package/dist/bundled/components/app/TopBar.vue.js +5 -0
  17. package/dist/bundled/components/app/TopBar.vue2.js +73 -0
  18. package/dist/bundled/components/app/TopBarChip.vue.js +13 -0
  19. package/dist/bundled/components/app/TopBarChipItem.vue.js +13 -0
  20. package/dist/bundled/components/base/BaseButton.vue2.js +3 -3
  21. package/dist/bundled/components/base/BaseCheckbox.vue2.js +8 -8
  22. package/dist/bundled/components/base/BaseEmpty.vue.js +2 -2
  23. package/dist/bundled/components/base/BaseKeyboardShortcut.vue2.js +1 -1
  24. package/dist/bundled/components/base/BaseListItem.vue2.js +2 -2
  25. package/dist/bundled/components/base/BaseListItemLink.vue.js +2 -2
  26. package/dist/bundled/components/base/BaseOverflowMenu.vue2.js +4 -4
  27. package/dist/bundled/components/base/BaseOverflowTab.vue.js +3 -3
  28. package/dist/bundled/components/base/BaseSelect.vue2.js +6 -6
  29. package/dist/bundled/components/base/BaseSplitPane.vue.js +1 -1
  30. package/dist/bundled/components/base/BaseSplitPane.vue2.js +20 -16
  31. package/dist/bundled/components/base/BaseTab.vue.js +3 -3
  32. package/dist/bundled/components/base/BaseTag.vue.js +1 -1
  33. package/dist/bundled/components/command/CommandPrompts.vue2.js +5 -5
  34. package/dist/bundled/components/command/CommandPromptsModal.vue2.js +3 -3
  35. package/dist/bundled/components/command/PromptSelect.vue2.js +12 -12
  36. package/dist/bundled/components/command/PromptText.vue2.js +4 -4
  37. package/dist/bundled/components/layout/LayoutItem.vue.js +5 -0
  38. package/dist/bundled/components/layout/LayoutItem.vue2.js +44 -0
  39. package/dist/bundled/components/layout/LayoutItemGroup.vue.js +5 -0
  40. package/dist/bundled/components/layout/LayoutItemGroup.vue2.js +25 -0
  41. package/dist/bundled/components/layout/LayoutModal.vue.js +5 -0
  42. package/dist/bundled/components/layout/LayoutModal.vue2.js +68 -0
  43. package/dist/bundled/components/layout/LayoutPane.vue.js +5 -0
  44. package/dist/bundled/components/layout/LayoutPane.vue2.js +59 -0
  45. package/dist/bundled/components/panel/ControlsComponentPropItem.vue2.js +2 -2
  46. package/dist/bundled/components/panel/ControlsComponentProps.vue2.js +4 -4
  47. package/dist/bundled/components/panel/ControlsComponentState.vue2.js +2 -2
  48. package/dist/bundled/components/panel/PaneTabs.vue2.js +4 -4
  49. package/dist/bundled/components/panel/StatePresets.vue2.js +13 -13
  50. package/dist/bundled/components/panel/StoryControls.vue2.js +6 -6
  51. package/dist/bundled/components/panel/StoryDocs.vue2.js +4 -4
  52. package/dist/bundled/components/panel/StoryEvent.vue2.js +7 -7
  53. package/dist/bundled/components/panel/StoryEvents.vue2.js +1 -1
  54. package/dist/bundled/components/panel/StorySidePanel.vue2.js +58 -47
  55. package/dist/bundled/components/panel/StorySourceCode.vue.js +1 -1
  56. package/dist/bundled/components/panel/StorySourceCode.vue2.js +19 -19
  57. package/dist/bundled/components/search/SearchItem.vue.js +1 -1
  58. package/dist/bundled/components/search/SearchItem.vue2.js +3 -3
  59. package/dist/bundled/components/search/SearchItemContent.vue2.js +9 -9
  60. package/dist/bundled/components/search/SearchLoading.vue2.js +2 -2
  61. package/dist/bundled/components/search/SearchModal.vue2.js +3 -3
  62. package/dist/bundled/components/search/SearchPane.vue2.js +4 -4
  63. package/dist/bundled/components/story/StoryResponsivePreview.vue.js +1 -1
  64. package/dist/bundled/components/story/StoryResponsivePreview.vue2.js +21 -21
  65. package/dist/bundled/components/story/StoryVariantGrid.vue2.js +7 -26
  66. package/dist/bundled/components/story/StoryVariantGridItem.vue.js +1 -1
  67. package/dist/bundled/components/story/StoryVariantGridItem.vue2.js +36 -21
  68. package/dist/bundled/components/story/StoryVariantListItem.vue.js +1 -1
  69. package/dist/bundled/components/story/StoryVariantListItem.vue2.js +5 -5
  70. package/dist/bundled/components/story/StoryVariantSingle.vue.js +1 -1
  71. package/dist/bundled/components/story/StoryVariantSingle.vue2.js +10 -10
  72. package/dist/bundled/components/story/StoryVariantSinglePreviewNative.vue2.js +6 -5
  73. package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.vue2.js +33 -8
  74. package/dist/bundled/components/story/StoryVariantSingleView.vue2.js +8 -39
  75. package/dist/bundled/components/story/StoryView.vue2.js +21 -11
  76. package/dist/bundled/components/story/StoryViewer.vue.js +1 -1
  77. package/dist/bundled/components/story/StoryViewer.vue2.js +2 -2
  78. package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.vue2.js +13 -9
  79. package/dist/bundled/components/toolbar/ToolbarBackground.vue.js +1 -1
  80. package/dist/bundled/components/toolbar/ToolbarBackground.vue2.js +62 -33
  81. package/dist/bundled/components/toolbar/ToolbarNewTab.vue2.js +13 -10
  82. package/dist/bundled/components/toolbar/ToolbarResponsiveSize.vue2.js +14 -14
  83. package/dist/bundled/components/toolbar/ToolbarTextDirection.vue2.js +13 -9
  84. package/dist/bundled/components/toolbar/ToolbarTitle.vue.js +4 -1
  85. package/dist/bundled/components/toolbar/ToolbarTitle.vue2.js +30 -7
  86. package/dist/bundled/components/tree/StoryGroup.vue2.js +5 -5
  87. package/dist/bundled/components/tree/StoryList.vue2.js +1 -1
  88. package/dist/bundled/components/tree/StoryListFolder.vue.js +1 -1
  89. package/dist/bundled/components/tree/StoryListFolder.vue2.js +7 -7
  90. package/dist/bundled/components/tree/StoryListItem.vue.js +1 -1
  91. package/dist/bundled/components/tree/StoryListItem.vue2.js +8 -8
  92. package/dist/bundled/index.js +3 -0
  93. package/dist/bundled/sandbox.js +41 -15
  94. package/dist/bundled/stores/layout.js +16 -0
  95. package/dist/bundled/stores/preview-settings.js +19 -4
  96. package/dist/bundled/util/color-scheme.js +27 -0
  97. package/dist/bundled/util/const.js +2 -0
  98. package/dist/bundled/util/dark.js +3 -3
  99. package/dist/bundled/util/keyboard.js +60 -32
  100. package/dist/bundled/util/preview-settings.js +11 -0
  101. package/dist/bundled/util/tooltip.js +2 -2
  102. package/dist/style.css +644 -529
  103. package/package.json +8 -8
  104. package/src/app/App.vue +109 -66
  105. package/src/app/components/HomeView.vue +3 -3
  106. package/src/app/components/app/AppActions.vue +58 -0
  107. package/src/app/components/app/AppHeader.vue +4 -47
  108. package/src/app/components/app/Breadcrumb.vue +8 -8
  109. package/src/app/components/app/HomeCounter.vue +5 -5
  110. package/src/app/components/app/InitialLoading.vue +5 -5
  111. package/src/app/components/app/MobileOverlay.vue +5 -5
  112. package/src/app/components/app/TopBar.vue +60 -0
  113. package/src/app/components/app/TopBarChip.vue +5 -0
  114. package/src/app/components/app/TopBarChipItem.vue +7 -0
  115. package/src/app/components/base/BaseButton.vue +3 -3
  116. package/src/app/components/base/BaseCheckbox.vue +9 -9
  117. package/src/app/components/base/BaseCopyIcon.vue +1 -1
  118. package/src/app/components/base/BaseEmpty.vue +4 -4
  119. package/src/app/components/base/BaseKeyboardShortcut.vue +1 -1
  120. package/src/app/components/base/BaseListItem.vue +3 -3
  121. package/src/app/components/base/BaseListItemLink.vue +3 -3
  122. package/src/app/components/base/BaseOverflowMenu.vue +4 -4
  123. package/src/app/components/base/BaseOverflowTab.vue +3 -3
  124. package/src/app/components/base/BaseSelect.vue +6 -6
  125. package/src/app/components/base/BaseSplitPane.vue +21 -16
  126. package/src/app/components/base/BaseTab.vue +3 -3
  127. package/src/app/components/base/BaseTag.vue +1 -1
  128. package/src/app/components/command/CommandPrompts.vue +5 -5
  129. package/src/app/components/command/CommandPromptsModal.vue +3 -3
  130. package/src/app/components/command/PromptSelect.vue +14 -14
  131. package/src/app/components/command/PromptText.vue +4 -4
  132. package/src/app/components/layout/LayoutItem.vue +36 -0
  133. package/src/app/components/layout/LayoutItemGroup.vue +18 -0
  134. package/src/app/components/layout/LayoutModal.vue +60 -0
  135. package/src/app/components/layout/LayoutPane.vue +45 -0
  136. package/src/app/components/panel/ControlsComponentPropItem.vue +2 -2
  137. package/src/app/components/panel/ControlsComponentProps.vue +3 -3
  138. package/src/app/components/panel/ControlsComponentState.vue +2 -2
  139. package/src/app/components/panel/PaneTabs.vue +4 -4
  140. package/src/app/components/panel/StatePresets.vue +13 -13
  141. package/src/app/components/panel/StoryControls.vue +6 -6
  142. package/src/app/components/panel/StoryDocs.vue +4 -4
  143. package/src/app/components/panel/StoryEvent.vue +7 -7
  144. package/src/app/components/panel/StoryEvents.vue +1 -1
  145. package/src/app/components/panel/StorySidePanel.vue +51 -41
  146. package/src/app/components/panel/StorySourceCode.vue +19 -19
  147. package/src/app/components/search/SearchItem.vue +2 -2
  148. package/src/app/components/search/SearchItemContent.vue +9 -9
  149. package/src/app/components/search/SearchLoading.vue +2 -2
  150. package/src/app/components/search/SearchModal.vue +3 -3
  151. package/src/app/components/search/SearchPane.vue +4 -4
  152. package/src/app/components/story/StoryResponsivePreview.vue +27 -27
  153. package/src/app/components/story/StoryVariantGrid.vue +5 -24
  154. package/src/app/components/story/StoryVariantGridItem.vue +36 -17
  155. package/src/app/components/story/StoryVariantListItem.vue +4 -4
  156. package/src/app/components/story/StoryVariantSingle.vue +9 -9
  157. package/src/app/components/story/StoryVariantSinglePreviewNative.vue +7 -5
  158. package/src/app/components/story/StoryVariantSinglePreviewRemote.vue +37 -7
  159. package/src/app/components/story/StoryVariantSingleView.vue +1 -34
  160. package/src/app/components/story/StoryView.vue +23 -8
  161. package/src/app/components/story/StoryViewer.vue +1 -1
  162. package/src/app/components/toolbar/DevOnlyToolbarOpenInEditor.vue +5 -4
  163. package/src/app/components/toolbar/ToolbarBackground.vue +62 -25
  164. package/src/app/components/toolbar/ToolbarNewTab.vue +5 -4
  165. package/src/app/components/toolbar/ToolbarResponsiveSize.vue +15 -15
  166. package/src/app/components/toolbar/ToolbarTextDirection.vue +5 -4
  167. package/src/app/components/toolbar/ToolbarTitle.vue +32 -8
  168. package/src/app/components/tree/StoryGroup.vue +5 -5
  169. package/src/app/components/tree/StoryList.vue +1 -1
  170. package/src/app/components/tree/StoryListFolder.vue +6 -6
  171. package/src/app/components/tree/StoryListItem.vue +6 -6
  172. package/src/app/index.ts +3 -0
  173. package/src/app/sandbox.ts +59 -15
  174. package/src/app/stores/layout.ts +22 -0
  175. package/src/app/stores/preview-settings.ts +26 -2
  176. package/src/app/style/floating.pcss +4 -4
  177. package/src/app/style/main.pcss +2 -2
  178. package/src/app/style/sandbox.css +1 -1
  179. package/src/app/types.ts +49 -0
  180. package/src/app/util/color-scheme.ts +36 -0
  181. package/src/app/util/const.ts +1 -0
  182. package/src/app/util/dark.ts +3 -3
  183. package/src/app/util/keyboard.ts +65 -32
  184. package/src/app/util/preview-settings.ts +16 -0
  185. package/src/app/util/tooltip.ts +2 -2
  186. package/src/bundle-main.js +2 -0
  187. package/src/shim.d.ts +2 -2
@@ -34,35 +34,35 @@ watch(path, () => {
34
34
  <div
35
35
  role="checkbox"
36
36
  tabindex="0"
37
- class="poveste-base-checkbox htw-flex htw-items-center htw-gap-2 htw-select-none htw-px-4 htw-py-3 htw-cursor-pointer hover:htw-bg-primary-100 dark:hover:htw-bg-primary-700"
37
+ class="poveste-base-checkbox ptw-flex ptw-items-center ptw-gap-2 ptw-select-none ptw-px-4 ptw-py-3 ptw-cursor-pointer hover:ptw-bg-primary-100 dark:hover:ptw-bg-primary-700"
38
38
  @click="toggle()"
39
39
  @keydown.enter.prevent="toggle()"
40
40
  @keydown.space.prevent="toggle()"
41
41
  >
42
- <div class="htw-text-white htw-w-[16px] htw-h-[16px] htw-relative">
42
+ <div class="ptw-text-white ptw-w-[16px] ptw-h-[16px] ptw-relative">
43
43
  <div
44
- class="htw-border group-active:htw-bg-gray-500/20 htw-rounded-sm htw-box-border htw-absolute htw-inset-0 htw-transition-border htw-duration-150 htw-ease-out"
44
+ class="ptw-border group-active:ptw-bg-gray-500/20 ptw-rounded-sm ptw-box-border ptw-absolute ptw-inset-0 ptw-transition-border ptw-duration-150 ptw-ease-out"
45
45
  :class="[
46
46
  modelValue
47
- ? 'htw-border-primary-500 htw-border-8'
48
- : 'htw-border-black/25 dark:htw-border-white/25 htw-delay-150',
47
+ ? 'ptw-border-primary-500 ptw-border-8'
48
+ : 'ptw-border-black/25 dark:ptw-border-white/25 ptw-delay-150',
49
49
  ]"
50
50
  />
51
51
  <svg
52
52
  width="16"
53
53
  height="16"
54
54
  viewBox="0 0 24 24"
55
- class="htw-relative htw-z-10"
55
+ class="ptw-relative ptw-z-10"
56
56
  >
57
57
  <path
58
58
  ref="path"
59
59
  d="m 4 12 l 5 5 l 10 -10"
60
60
  fill="none"
61
- class="htw-stroke-white htw-stroke-2 htw-duration-200 htw-ease-in-out"
61
+ class="ptw-stroke-white ptw-stroke-2 ptw-duration-200 ptw-ease-in-out"
62
62
  :class="[
63
- animationEnabled ? 'htw-transition-all' : 'htw-transition-none',
63
+ animationEnabled ? 'ptw-transition-all' : 'ptw-transition-none',
64
64
  {
65
- 'htw-delay-150': modelValue,
65
+ 'ptw-delay-150': modelValue,
66
66
  },
67
67
  ]"
68
68
  :stroke-dasharray="dasharray"
@@ -28,7 +28,7 @@ const action = () => copy(props.content)
28
28
  delay: 0,
29
29
  }"
30
30
  icon="carbon:copy-file"
31
- class="poveste-base-copy-icon htw-w-4 htw-h-4 htw-opacity-50 hover:htw-opacity-100 hover:htw-text-primary-500 htw-cursor-pointer"
31
+ class="poveste-base-copy-icon ptw-w-4 ptw-h-4 ptw-opacity-50 hover:ptw-opacity-100 hover:ptw-text-primary-500 ptw-cursor-pointer"
32
32
  @click="action()"
33
33
  />
34
34
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
- <div class="poveste-base-empty htw-base-empty htw-flex htw-flex-col htw-items-center htw-justify-center htw-space-y-4 htw-py-12 htw-h-full htw-text-center htw-text-gray-400 htw-text-lg">
2
+ <div class="poveste-base-empty ptw-base-empty ptw-flex ptw-flex-col ptw-items-center ptw-justify-center ptw-space-y-4 ptw-py-12 ptw-h-full ptw-text-center ptw-text-gray-400 ptw-text-lg">
3
3
  <slot />
4
4
  </div>
5
5
  </template>
6
6
 
7
7
  <style scoped>
8
- .htw-base-empty:not(.no-animation) {
9
- animation: htw-base-empty .15s .2s both;
8
+ .ptw-base-empty:not(.no-animation) {
9
+ animation: ptw-base-empty .15s .2s both;
10
10
  }
11
11
 
12
- @keyframes htw-base-empty {
12
+ @keyframes ptw-base-empty {
13
13
  0% {
14
14
  opacity: 0;
15
15
  }
@@ -10,7 +10,7 @@ const formatted = computed(() => props.shortcut.split('+').map(k => formatKey(k.
10
10
  </script>
11
11
 
12
12
  <template>
13
- <span class="poveste-base-keyboard-shortcut htw-border htw-border-current htw-opacity-50 htw-px-1 htw-rounded-sm">
13
+ <span class="poveste-base-keyboard-shortcut ptw-border ptw-border-current ptw-opacity-50 ptw-px-1 ptw-rounded-sm">
14
14
  {{ formatted }}
15
15
  </span>
16
16
  </template>
@@ -14,12 +14,12 @@ function handleNavigate() {
14
14
 
15
15
  <template>
16
16
  <a
17
- class="istoire-base-list-ite htw-flex htw-items-center htw-gap-2 htw-text-gray-900 dark:htw-text-gray-100"
17
+ class="poveste-base-list-item ptw-flex ptw-items-center ptw-gap-2 ptw-text-gray-900 dark:ptw-text-gray-100"
18
18
  :class="[
19
19
  $attrs.class,
20
20
  isActive
21
- ? 'active htw-bg-primary-500 hover:htw-bg-primary-600 htw-text-white dark:htw-text-black'
22
- : 'hover:htw-bg-primary-100 dark:hover:htw-bg-primary-900',
21
+ ? 'active ptw-bg-primary-500 hover:ptw-bg-primary-600 ptw-text-white dark:ptw-text-black'
22
+ : 'hover:ptw-bg-primary-100 dark:hover:ptw-bg-primary-900',
23
23
  ]"
24
24
  @click="handleNavigate()"
25
25
  @keyup.enter="handleNavigate()"
@@ -37,12 +37,12 @@ export default defineComponent({
37
37
  >
38
38
  <a
39
39
  :href="href"
40
- class="htw-flex htw-items-center htw-gap-2 htw-text-gray-900 dark:htw-text-gray-100"
40
+ class="ptw-flex ptw-items-center ptw-gap-2 ptw-text-gray-900 dark:ptw-text-gray-100"
41
41
  :class="[
42
42
  $attrs.class,
43
43
  (isActive != null ? isActive : linkIsActive)
44
- ? 'active htw-bg-primary-500 hover:htw-bg-primary-600 htw-text-white dark:htw-text-black'
45
- : 'hover:htw-bg-primary-100 dark:hover:htw-bg-primary-900',
44
+ ? 'active ptw-bg-primary-500 hover:ptw-bg-primary-600 ptw-text-white dark:ptw-text-black'
45
+ : 'hover:ptw-bg-primary-100 dark:hover:ptw-bg-primary-900',
46
46
  ]"
47
47
  @click="handleNavigate($event, navigate)"
48
48
  @keyup.enter="handleNavigate($event, navigate)"
@@ -86,7 +86,7 @@ function ChildrenSlice(props, { slots }) {
86
86
  <template>
87
87
  <div
88
88
  ref="el"
89
- class="poveste-base-overflow-menu htw-flex htw-overflow-hidden htw-relative"
89
+ class="poveste-base-overflow-menu ptw-flex ptw-overflow-hidden ptw-relative"
90
90
  >
91
91
  <ChildrenRender>
92
92
  <slot />
@@ -97,16 +97,16 @@ function ChildrenSlice(props, { slots }) {
97
97
  >
98
98
  <div
99
99
  role="button"
100
- class="htw-cursor-pointer hover:htw-bg-primary-50 dark:hover:htw-bg-primary-900 htw-w-8 htw-h-full htw-flex htw-items-center htw-justify-center htw-absolute htw-top-0 htw-right-0"
100
+ class="ptw-cursor-pointer hover:ptw-bg-primary-50 dark:hover:ptw-bg-primary-900 ptw-w-8 ptw-h-full ptw-flex ptw-items-center ptw-justify-center ptw-absolute ptw-top-0 ptw-right-0"
101
101
  >
102
102
  <Icon
103
103
  icon="carbon:caret-down"
104
- class="htw-w-4 htw-h-4 htw-opacity-50 group-hover:htw-opacity-100"
104
+ class="ptw-w-4 ptw-h-4 ptw-opacity-50 group-hover:ptw-opacity-100"
105
105
  />
106
106
  </div>
107
107
 
108
108
  <template #popper>
109
- <div class="htw-flex htw-flex-col htw-items-stretch">
109
+ <div class="ptw-flex ptw-flex-col ptw-items-stretch">
110
110
  <ChildrenSlice
111
111
  :start="visibleChildrenCount"
112
112
  >
@@ -28,9 +28,9 @@ export default defineComponent({
28
28
  <a
29
29
  v-bind="$attrs"
30
30
  :href="href"
31
- class="htw-px-4 htw-h-10 htw-min-w-[150px] htw-inline-flex htw-items-center hover:htw-bg-primary-50 dark:hover:htw-bg-primary-900 htw-relative htw-text-gray-900 dark:htw-text-gray-100"
31
+ class="ptw-px-4 ptw-h-10 ptw-min-w-[150px] ptw-inline-flex ptw-items-center hover:ptw-bg-primary-50 dark:hover:ptw-bg-primary-900 ptw-relative ptw-text-gray-900 dark:ptw-text-gray-100"
32
32
  :class="{
33
- 'htw-text-primary-500 dark:htw-text-primary-400': matched != null ? matched : (exact && isExactActive) || (!exact && isActive),
33
+ 'ptw-text-primary-500 dark:ptw-text-primary-400': matched != null ? matched : (exact && isExactActive) || (!exact && isActive),
34
34
  }"
35
35
  @click="navigate"
36
36
  >
@@ -39,7 +39,7 @@ export default defineComponent({
39
39
  <transition name="__poveste-scale-y">
40
40
  <div
41
41
  v-if="matched != null ? matched : (exact && isExactActive) || (!exact && isActive)"
42
- class="htw-absolute htw-top-0 htw-left-0 htw-h-full htw-w-[2px] htw-bg-primary-500 dark:htw-bg-primary-400"
42
+ class="ptw-absolute ptw-top-0 ptw-left-0 ptw-h-full ptw-w-[2px] ptw-bg-primary-500 dark:ptw-bg-primary-400"
43
43
  />
44
44
  </transition>
45
45
  </a>
@@ -37,27 +37,27 @@ function selectValue(value: string, hide: () => void) {
37
37
  auto-boundary-max-size
38
38
  >
39
39
  <div
40
- class="htw-cursor-pointer htw-w-full htw-outline-none htw-px-2 htw-h-[27px] -htw-my-1 htw-border htw-border-solid htw-border-black/25 dark:htw-border-white/25 hover:htw-border-primary-500 dark:hover:htw-border-primary-500 htw-rounded-sm htw-flex htw-gap-2 htw-items-center htw-leading-normal"
40
+ class="ptw-cursor-pointer ptw-w-full ptw-outline-none ptw-px-2 ptw-h-[27px] -ptw-my-1 ptw-border ptw-border-solid ptw-border-black/25 dark:ptw-border-white/25 hover:ptw-border-primary-500 dark:hover:ptw-border-primary-500 ptw-rounded-sm ptw-flex ptw-gap-2 ptw-items-center ptw-leading-normal"
41
41
  >
42
- <div class="htw-flex-1 htw-truncate">
42
+ <div class="ptw-flex-1 ptw-truncate">
43
43
  <slot :label="selectedLabel">
44
44
  {{ selectedLabel }}
45
45
  </slot>
46
46
  </div>
47
47
  <Icon
48
48
  icon="carbon:chevron-sort"
49
- class="htw-w-4 htw-h-4 htw-flex-none htw-ml-auto"
49
+ class="ptw-w-4 ptw-h-4 ptw-flex-none ptw-ml-auto"
50
50
  />
51
51
  </div>
52
52
  <template #popper="{ hide }">
53
- <div class="htw-flex htw-flex-col htw-bg-gray-50 dark:htw-bg-gray-700">
53
+ <div class="ptw-flex ptw-flex-col ptw-bg-gray-50 dark:ptw-bg-gray-700">
54
54
  <div
55
55
  v-for="(label, value) in formattedOptions"
56
56
  v-bind="{ ...$attrs, class: null, style: null }"
57
57
  :key="label"
58
- class="htw-px-2 htw-py-1 htw-cursor-pointer hover:htw-bg-primary-100 dark:hover:htw-bg-primary-700"
58
+ class="ptw-px-2 ptw-py-1 ptw-cursor-pointer hover:ptw-bg-primary-100 dark:hover:ptw-bg-primary-700"
59
59
  :class="{
60
- 'htw-bg-primary-200 dark:htw-bg-primary-800': props.modelValue === value,
60
+ 'ptw-bg-primary-200 dark:ptw-bg-primary-800': props.modelValue === value,
61
61
  }"
62
62
  @click="selectValue(value, hide)"
63
63
  >
@@ -45,6 +45,11 @@ const props = defineProps({
45
45
  type: Boolean,
46
46
  default: false,
47
47
  },
48
+
49
+ showDivider: {
50
+ type: Boolean,
51
+ default: true,
52
+ },
48
53
  })
49
54
 
50
55
  const emit = defineEmits({
@@ -165,42 +170,42 @@ onUnmounted(() => {
165
170
  <template>
166
171
  <div
167
172
  ref="el"
168
- class="poveste-base-split-pane htw-flex htw-h-full htw-isolate htw-overflow-auto"
173
+ class="poveste-base-split-pane ptw-flex ptw-h-full ptw-isolate ptw-overflow-auto"
169
174
  :class="{
170
- 'htw-flex-col': orientation === 'portrait',
171
- 'htw-cursor-ew-resize': dragging && orientation === 'landscape',
172
- 'htw-cursor-ns-resize': dragging && orientation === 'portrait',
175
+ 'ptw-flex-col': orientation === 'portrait',
176
+ 'ptw-cursor-ew-resize': dragging && orientation === 'landscape',
177
+ 'ptw-cursor-ns-resize': dragging && orientation === 'portrait',
173
178
  [orientation]: true,
174
179
  }"
175
180
  >
176
181
  <div
177
- class="htw-relative htw-top-0 htw-left-0 htw-z-20"
182
+ class="ptw-relative ptw-top-0 ptw-left-0 ptw-z-20"
178
183
  :class="{
179
- 'htw-pointer-events-none': dragging,
180
- 'htw-border-r htw-border-gray-300/30 dark:htw-border-gray-800': orientation === 'landscape',
181
- 'htw-flex-none': fixed,
184
+ 'ptw-pointer-events-none': dragging,
185
+ 'ptw-border-r ptw-border-gray-300/30 dark:ptw-border-gray-800': orientation === 'landscape' && showDivider,
186
+ 'ptw-flex-none': fixed,
182
187
  }"
183
188
  :style="leftStyle"
184
189
  >
185
190
  <slot name="first" />
186
191
 
187
192
  <div
188
- class="dragger htw-absolute htw-z-100 hover:htw-bg-primary-500/50 htw-transition-colors htw-duration-150 htw-delay-150"
193
+ class="dragger ptw-absolute ptw-z-100 hover:ptw-bg-primary-500/50 ptw-transition-colors ptw-duration-150 ptw-delay-150"
189
194
  :class="{
190
- 'htw-top-0 htw-bottom-0 htw-cursor-ew-resize': orientation === 'landscape',
191
- 'htw-left-0 htw-right-0 htw-cursor-ns-resize': orientation === 'portrait',
195
+ 'ptw-top-0 ptw-bottom-0 ptw-cursor-ew-resize': orientation === 'landscape',
196
+ 'ptw-left-0 ptw-right-0 ptw-cursor-ns-resize': orientation === 'portrait',
192
197
  [`dragger-offset-${draggerOffset}`]: true,
193
- 'htw-bg-primary-500/25': dragging,
198
+ 'ptw-bg-primary-500/25': dragging,
194
199
  }"
195
200
  @mousedown.prevent="dragStart"
196
201
  />
197
202
  </div>
198
203
  <div
199
- class="htw-relative htw-bottom-0 htw-right-0"
204
+ class="ptw-relative ptw-bottom-0 ptw-right-0"
200
205
  :class="{
201
- 'htw-pointer-events-none': dragging,
202
- 'htw-border-t htw-border-gray-300/30 dark:htw-border-gray-800': orientation === 'portrait',
203
- 'htw-flex-1': fixed,
206
+ 'ptw-pointer-events-none': dragging,
207
+ 'ptw-border-t ptw-border-gray-300/30 dark:ptw-border-gray-800': orientation === 'portrait' && showDivider,
208
+ 'ptw-flex-1': fixed,
204
209
  }"
205
210
  :style="rightStyle"
206
211
  >
@@ -28,9 +28,9 @@ export default defineComponent({
28
28
  <a
29
29
  v-bind="$attrs"
30
30
  :href="href"
31
- class="htw-px-4 htw-h-full htw-inline-flex htw-items-center hover:htw-bg-primary-50 dark:hover:htw-bg-primary-900 htw-relative htw-text-gray-900 dark:htw-text-gray-100"
31
+ class="ptw-px-4 ptw-h-full ptw-inline-flex ptw-items-center hover:ptw-bg-primary-50 dark:hover:ptw-bg-primary-900 ptw-relative ptw-text-gray-900 dark:ptw-text-gray-100"
32
32
  :class="{
33
- 'htw-text-primary-500 dark:htw-text-primary-400': matched != null ? matched : (exact && isExactActive) || (!exact && isActive),
33
+ 'ptw-text-primary-500 dark:ptw-text-primary-400': matched != null ? matched : (exact && isExactActive) || (!exact && isActive),
34
34
  }"
35
35
  @click="navigate"
36
36
  >
@@ -39,7 +39,7 @@ export default defineComponent({
39
39
  <transition name="__poveste-scale-x">
40
40
  <div
41
41
  v-if="matched != null ? matched : (exact && isExactActive) || (!exact && isActive)"
42
- class="htw-absolute htw-bottom-0 htw-left-0 htw-w-full htw-h-[2px] htw-bg-primary-500 dark:htw-bg-primary-400"
42
+ class="ptw-absolute ptw-bottom-0 ptw-left-0 ptw-w-full ptw-h-[2px] ptw-bg-primary-500 dark:ptw-bg-primary-400"
43
43
  />
44
44
  </transition>
45
45
  </a>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <span class="poveste-base-tag htw-text-center htw-text-xs htw-mx-1 htw-px-0.5 htw-h-4 htw-uppercase htw-min-w-4 htw-rounded-full htw-bg-primary-500 htw-text-white dark:htw-text-black">
2
+ <span class="poveste-base-tag ptw-text-center ptw-text-xs ptw-mx-1 ptw-px-0.5 ptw-h-4 ptw-uppercase ptw-min-w-4 ptw-rounded-full ptw-bg-primary-500 ptw-text-white dark:ptw-text-black">
3
3
  <slot />
4
4
  </span>
5
5
  </template>
@@ -59,11 +59,11 @@ onMounted(() => {
59
59
 
60
60
  <template>
61
61
  <form
62
- class="poveste-command-prompts htw-flex htw-flex-col"
62
+ class="poveste-command-prompts ptw-flex ptw-flex-col"
63
63
  @submit.prevent="submit()"
64
64
  @keyup.escape="$emit('close')"
65
65
  >
66
- <div class="htw-p-4 htw-opacity-70">
66
+ <div class="ptw-p-4 ptw-opacity-70">
67
67
  {{ command.label }}
68
68
  </div>
69
69
 
@@ -76,14 +76,14 @@ onMounted(() => {
76
76
  :prompt="prompt"
77
77
  :answers="answers"
78
78
  :index="index"
79
- class="hover:htw-bg-gray-500/10 focus-within:htw-bg-gray-500/5"
79
+ class="hover:ptw-bg-gray-500/10 focus-within:ptw-bg-gray-500/5"
80
80
  @next="focusPrompt(index + 1)"
81
81
  />
82
82
 
83
- <div class="htw-flex htw-justify-end htw-gap-2 htw-p-2">
83
+ <div class="ptw-flex ptw-justify-end ptw-gap-2 ptw-p-2">
84
84
  <BaseButton
85
85
  type="submit"
86
- class="htw-px-4 htw-py-2 htw-flex htw-items-start htw-gap-2"
86
+ class="ptw-px-4 ptw-py-2 ptw-flex ptw-items-start ptw-gap-2"
87
87
  >
88
88
  <BaseKeyboardShortcut
89
89
  shortcut="Enter"
@@ -25,13 +25,13 @@ const commandStore = useCommandStore()
25
25
  <template>
26
26
  <div
27
27
  v-if="shown"
28
- class="poveste-command-prompts-modal htw-fixed htw-inset-0 htw-bg-white/80 dark:htw-bg-gray-900/80 htw-z-20"
28
+ class="poveste-command-prompts-modal ptw-fixed ptw-inset-0 ptw-bg-white/80 dark:ptw-bg-gray-900/80 ptw-z-20"
29
29
  >
30
30
  <div
31
- class="htw-absolute htw-inset-0"
31
+ class="ptw-absolute ptw-inset-0"
32
32
  @click="close()"
33
33
  />
34
- <div class="htw-bg-white dark:htw-bg-gray-900 md:htw-mt-16 md:htw-mx-auto htw-w-screen htw-max-w-[512px] htw-max-h-[80vh] htw-overflow-y-auto htw-scroll-smooth htw-shadow-xl htw-border htw-border-gray-200 dark:htw-border-gray-750 htw-rounded-lg htw-relative htw-divide-y htw-divide-gray-200 dark:htw-divide-gray-850">
34
+ <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-max-h-[80vh] ptw-overflow-y-auto ptw-scroll-smooth 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">
35
35
  <CommandPrompts
36
36
  :command="commandStore.selectedCommand"
37
37
  @close="close()"
@@ -84,36 +84,36 @@ function selectIndex(index: number) {
84
84
  </script>
85
85
 
86
86
  <template>
87
- <div class="poveste-prompt-select htw-relative htw-group">
87
+ <div class="poveste-prompt-select ptw-relative ptw-group">
88
88
  <input
89
89
  v-model="model"
90
90
  :required="prompt.required"
91
91
  tabindex="-1"
92
- class="htw-absolute htw-inset-0 htw-opacity-0 htw-pointer-events-none"
92
+ class="ptw-absolute ptw-inset-0 ptw-opacity-0 ptw-pointer-events-none"
93
93
  >
94
- <label class="htw-flex htw-flex-col htw-gap-2 htw-p-2">
95
- <span class="htw-px-2 htw-flex">
94
+ <label class="ptw-flex ptw-flex-col ptw-gap-2 ptw-p-2">
95
+ <span class="ptw-px-2 ptw-flex">
96
96
  <span>{{ prompt.label }}</span>
97
97
  <span
98
98
  v-if="prompt.required"
99
- class="htw-opacity-70"
99
+ class="ptw-opacity-70"
100
100
  >*</span>
101
101
 
102
- <span class="htw-opacity-40 htw-text-sm htw-ml-auto htw-invisible group-focus-within:htw-visible">
102
+ <span class="ptw-opacity-40 ptw-text-sm ptw-ml-auto ptw-invisible group-focus-within:ptw-visible">
103
103
  Press <BaseKeyboardShortcut shortcut="Space" /> to select
104
104
  </span>
105
105
  </span>
106
106
  <input
107
107
  ref="input"
108
108
  v-model="search"
109
- class="htw-bg-transparent htw-w-full htw-p-2 htw-border htw-border-gray-500/50 focus:htw-border-primary-500/50 htw-rounded htw-outline-none"
109
+ class="ptw-bg-transparent ptw-w-full ptw-p-2 ptw-border ptw-border-gray-500/50 focus:ptw-border-primary-500/50 ptw-rounded ptw-outline-none"
110
110
  @keydown.down.prevent="selectNext()"
111
111
  @keydown.up.prevent="selectPrevious()"
112
112
  @keydown.space.prevent="selectIndex(selectedIndex)"
113
113
  >
114
114
  </label>
115
115
 
116
- <div class="htw-overflow-auto max-h-[300px] htw-mb-2">
116
+ <div class="ptw-overflow-auto max-h-[300px] ptw-mb-2">
117
117
  <button
118
118
  v-for="(option, index) of formattedOptions"
119
119
  :key="option.value"
@@ -121,20 +121,20 @@ function selectIndex(index: number) {
121
121
  tabindex="-1"
122
122
  :class="[
123
123
  model === option.value
124
- ? 'htw-bg-primary-500/20'
124
+ ? 'ptw-bg-primary-500/20'
125
125
  : index === selectedIndex
126
- ? 'htw-bg-primary-500/10'
127
- : 'htw-bg-transparent',
126
+ ? 'ptw-bg-primary-500/10'
127
+ : 'ptw-bg-transparent',
128
128
  ]"
129
- class="htw-w-full htw-text-left htw-px-4 htw-py-2 hover:htw-bg-primary-500/10 htw-flex htw-items-center"
129
+ class="ptw-w-full ptw-text-left ptw-px-4 ptw-py-2 hover:ptw-bg-primary-500/10 ptw-flex ptw-items-center"
130
130
  @click="model = option.value"
131
131
  >
132
- <span class="htw-flex-1">{{ option.label }}</span>
132
+ <span class="ptw-flex-1">{{ option.label }}</span>
133
133
 
134
134
  <Icon
135
135
  v-if="model === option.value"
136
136
  icon="carbon:checkmark"
137
- class="htw-w-4 htw-h-4 htw-text-primary-500"
137
+ class="ptw-w-4 ptw-h-4 ptw-text-primary-500"
138
138
  />
139
139
  </button>
140
140
  </div>
@@ -46,18 +46,18 @@ watch(defaultValue, (value) => {
46
46
 
47
47
  <template>
48
48
  <div class="poveste-prompt-text">
49
- <label class="htw-flex htw-flex-col htw-gap-2 htw-p-2">
50
- <span class="htw-px-2">
49
+ <label class="ptw-flex ptw-flex-col ptw-gap-2 ptw-p-2">
50
+ <span class="ptw-px-2">
51
51
  <span>{{ prompt.label }}</span>
52
52
  <span
53
53
  v-if="prompt.required"
54
- class="htw-opacity-70"
54
+ class="ptw-opacity-70"
55
55
  >*</span>
56
56
  </span>
57
57
  <input
58
58
  ref="input"
59
59
  v-model="model"
60
- class="htw-bg-transparent htw-w-full htw-p-2 htw-border htw-border-gray-500/50 focus:htw-border-primary-500/50 htw-rounded htw-outline-none"
60
+ class="ptw-bg-transparent ptw-w-full ptw-p-2 ptw-border ptw-border-gray-500/50 focus:ptw-border-primary-500/50 ptw-rounded ptw-outline-none"
61
61
  :required="prompt.required"
62
62
  >
63
63
  </label>
@@ -0,0 +1,36 @@
1
+ <script setup lang="ts">
2
+ import { Icon } from '@iconify/vue'
3
+ import BaseListItem from '../base/BaseListItem.vue'
4
+
5
+ defineProps<{
6
+ title: string
7
+ icon: string
8
+ stateIcon?: string
9
+ isActive?: boolean
10
+ }>()
11
+
12
+ defineEmits<{
13
+ (e: 'click'): void
14
+ }>()
15
+ </script>
16
+
17
+ <template>
18
+ <BaseListItem
19
+ :is-active="isActive"
20
+ class="ptw-px-6 ptw-py-4 ptw-gap-4"
21
+ @navigate="$emit('click')"
22
+ >
23
+ <Icon
24
+ class="ptw-w-4 ptw-h-4 ptw-flex-none"
25
+ :icon="icon"
26
+ aria-hidden="true"
27
+ />
28
+ <span class="ptw-flex-1">{{ title }}</span>
29
+ <Icon
30
+ v-if="stateIcon"
31
+ class="ptw-w-4 ptw-h-4 ptw-flex-none ptw-opacity-70"
32
+ :icon="stateIcon"
33
+ aria-hidden="true"
34
+ />
35
+ </BaseListItem>
36
+ </template>
@@ -0,0 +1,18 @@
1
+ <script setup lang="ts">
2
+ defineProps<{
3
+ title: string
4
+ }>()
5
+ </script>
6
+
7
+ <template>
8
+ <div role="group">
9
+ <div
10
+ role="heading"
11
+ aria-level="3"
12
+ class="ptw-px-6 ptw-pt-3 ptw-pb-1 ptw-text-xs ptw-uppercase ptw-tracking-wide ptw-opacity-50"
13
+ >
14
+ {{ title }}
15
+ </div>
16
+ <slot />
17
+ </div>
18
+ </template>
@@ -0,0 +1,60 @@
1
+ <script setup lang="ts">
2
+ import { Icon } from '@iconify/vue'
3
+ import { onKeyboardShortcut } from '../../util/keyboard'
4
+ import LayoutPane from './LayoutPane.vue'
5
+
6
+ const props = defineProps({
7
+ shown: {
8
+ type: Boolean,
9
+ default: false,
10
+ },
11
+ })
12
+
13
+ const emit = defineEmits({
14
+ close: () => true,
15
+ })
16
+
17
+ function close() {
18
+ emit('close')
19
+ }
20
+
21
+ onKeyboardShortcut(['escape'], () => {
22
+ if (props.shown) {
23
+ close()
24
+ }
25
+ })
26
+ </script>
27
+
28
+ <template>
29
+ <div
30
+ v-show="shown"
31
+ class="poveste-layout-modal ptw-fixed ptw-inset-0 ptw-bg-white/80 dark:ptw-bg-gray-900/80 ptw-z-20"
32
+ data-test-id="layout-modal"
33
+ >
34
+ <div
35
+ class="ptw-absolute ptw-inset-0"
36
+ @click="close()"
37
+ />
38
+ <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">
39
+ <div class="ptw-flex ptw-items-center ptw-px-6 ptw-py-3 ptw-text-gray-900 dark:ptw-text-gray-100">
40
+ <h2 class="ptw-flex-1 ptw-text-sm ptw-font-medium ptw-m-0">
41
+ Customize Layout
42
+ </h2>
43
+ <button
44
+ type="button"
45
+ class="ptw-flex ptw-items-center ptw-justify-center ptw-p-1 ptw-bg-transparent ptw-border-0 ptw-text-gray-500 dark:ptw-text-gray-400 hover:ptw-text-primary-500 dark:hover:ptw-text-primary-400 ptw-cursor-pointer"
46
+ aria-label="Close layout customization"
47
+ data-test-id="layout-modal-close"
48
+ @click="close()"
49
+ >
50
+ <Icon
51
+ icon="carbon:close"
52
+ class="ptw-w-5 ptw-h-5"
53
+ aria-hidden="true"
54
+ />
55
+ </button>
56
+ </div>
57
+ <LayoutPane />
58
+ </div>
59
+ </div>
60
+ </template>
@@ -0,0 +1,45 @@
1
+ <script setup lang="ts">
2
+ import { useLayoutStore } from '../../stores/layout'
3
+ import LayoutItem from './LayoutItem.vue'
4
+ import LayoutItemGroup from './LayoutItemGroup.vue'
5
+
6
+ const settings = useLayoutStore().settings
7
+ </script>
8
+
9
+ <template>
10
+ <div class="ptw-py-2">
11
+ <LayoutItemGroup title="Visibility">
12
+ <LayoutItem
13
+ title="Story List"
14
+ icon="carbon:open-panel-filled-left"
15
+ :state-icon="settings.storyListVisible ? 'carbon:view' : 'carbon:view-off'"
16
+ data-test-id="layout-toggle-story-list"
17
+ @click="settings.storyListVisible = !settings.storyListVisible"
18
+ />
19
+ <LayoutItem
20
+ title="Story Options"
21
+ icon="carbon:open-panel-filled-right"
22
+ :state-icon="settings.storyOptionsVisible ? 'carbon:view' : 'carbon:view-off'"
23
+ data-test-id="layout-toggle-story-options"
24
+ @click="settings.storyOptionsVisible = !settings.storyOptionsVisible"
25
+ />
26
+ </LayoutItemGroup>
27
+
28
+ <LayoutItemGroup title="Story Options Placement">
29
+ <LayoutItem
30
+ title="Right"
31
+ icon="carbon:open-panel-filled-right"
32
+ :is-active="settings.storyOptionsPlacement === 'right'"
33
+ data-test-id="layout-placement-right"
34
+ @click="settings.storyOptionsPlacement = 'right'"
35
+ />
36
+ <LayoutItem
37
+ title="Bottom"
38
+ icon="carbon:open-panel-filled-bottom"
39
+ :is-active="settings.storyOptionsPlacement === 'bottom'"
40
+ data-test-id="layout-placement-bottom"
41
+ @click="settings.storyOptionsPlacement = 'bottom'"
42
+ />
43
+ </LayoutItemGroup>
44
+ </div>
45
+ </template>
@@ -62,9 +62,9 @@ const canReset = computed(() => props.variant.state?._hPropState?.[props.compone
62
62
  <Icon
63
63
  v-tooltip="'Remove override'"
64
64
  icon="carbon:erase"
65
- class="htw-cursor-pointer htw-w-4 htw-h-4 hover:htw-text-primary-500 dark:hover:htw-text-primary-400 htw-text-gray-900 dark:htw-text-gray-100"
65
+ 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"
66
66
  :class="[
67
- canReset ? 'htw-opacity-50 hover:htw-opacity-100' : 'htw-opacity-25 htw-pointer-events-none',
67
+ canReset ? 'ptw-opacity-50 hover:ptw-opacity-100' : 'ptw-opacity-25 ptw-pointer-events-none',
68
68
  ]"
69
69
  @click.stop="reset()"
70
70
  />