@poveste/app 0.2.0 → 0.3.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 (411) hide show
  1. package/dist/app/style/floating.pcss +16 -10
  2. package/dist/app/style/main.pcss +190 -30
  3. package/dist/app/style/sandbox.css +3 -1
  4. package/dist/app/style/transitions.pcss +49 -50
  5. package/dist/bundled/App.js +5 -0
  6. package/dist/bundled/App.vue_vue_type_script_setup_true_lang.js +169 -0
  7. package/dist/bundled/_virtual/_plugin-vue_export-helper.js +7 -9
  8. package/dist/bundled/api.js +5 -9
  9. package/dist/bundled/app.css +40 -39
  10. package/dist/bundled/assets/poveste-text-dark.js +4 -0
  11. package/dist/bundled/assets/poveste-text.js +4 -0
  12. package/dist/bundled/assets/poveste.js +4 -0
  13. package/dist/bundled/components/HomeView.js +5 -0
  14. package/dist/bundled/components/HomeView.vue_vue_type_script_setup_true_lang.js +58 -0
  15. package/dist/bundled/components/app/AppActions.js +5 -0
  16. package/dist/bundled/components/app/AppActions.vue_vue_type_script_setup_true_lang.js +63 -0
  17. package/dist/bundled/components/app/AppHeader.js +5 -0
  18. package/dist/bundled/components/app/AppHeader.vue_vue_type_script_setup_true_lang.js +21 -0
  19. package/dist/bundled/components/app/AppLogo.js +5 -0
  20. package/dist/bundled/components/app/AppLogo.vue_vue_type_script_setup_true_lang.js +26 -0
  21. package/dist/bundled/components/app/Breadcrumb.js +7 -0
  22. package/dist/bundled/components/app/Breadcrumb.vue_vue_type_script_setup_true_lang.js +68 -0
  23. package/dist/bundled/components/app/HomeCounter.js +5 -0
  24. package/dist/bundled/components/app/HomeCounter.vue_vue_type_script_setup_true_lang.js +35 -0
  25. package/dist/bundled/components/app/InitialLoading.js +5 -0
  26. package/dist/bundled/components/app/InitialLoading.vue_vue_type_script_setup_true_lang.js +34 -0
  27. package/dist/bundled/components/app/MobileOverlay.js +5 -0
  28. package/dist/bundled/components/app/MobileOverlay.vue_vue_type_script_setup_true_lang.js +34 -0
  29. package/dist/bundled/components/app/TopBar.js +5 -0
  30. package/dist/bundled/components/app/TopBar.vue_vue_type_script_setup_true_lang.js +65 -0
  31. package/dist/bundled/components/app/TopBarChip.js +11 -0
  32. package/dist/bundled/components/app/TopBarChipItem.js +11 -0
  33. package/dist/bundled/components/base/BaseButton.js +5 -0
  34. package/dist/bundled/components/base/BaseButton.vue_vue_type_script_setup_true_lang.js +30 -0
  35. package/dist/bundled/components/base/BaseCheckbox.js +5 -0
  36. package/dist/bundled/components/base/BaseCheckbox.vue_vue_type_script_setup_true_lang.js +53 -0
  37. package/dist/bundled/components/base/BaseEmpty.js +12 -0
  38. package/dist/bundled/components/base/BaseIcon.js +7 -0
  39. package/dist/bundled/components/base/BaseIcon.vue_vue_type_script_setup_true_lang.js +26 -0
  40. package/dist/bundled/components/base/BaseKeyboardShortcut.js +5 -0
  41. package/dist/bundled/components/base/BaseKeyboardShortcut.vue_vue_type_script_setup_true_lang.js +17 -0
  42. package/dist/bundled/components/base/BaseListItem.js +5 -0
  43. package/dist/bundled/components/base/BaseListItem.vue_vue_type_script_setup_true_lang.js +22 -0
  44. package/dist/bundled/components/base/BaseListItemLink.js +24 -0
  45. package/dist/bundled/components/base/BaseListItemLink.vue_vue_type_script_lang.js +19 -0
  46. package/dist/bundled/components/base/BaseOverflowMenu.js +5 -0
  47. package/dist/bundled/components/base/BaseOverflowMenu.vue_vue_type_script_setup_true_lang.js +95 -0
  48. package/dist/bundled/components/base/BaseOverflowTab.js +26 -0
  49. package/dist/bundled/components/base/BaseOverflowTab.vue_vue_type_script_lang.js +17 -0
  50. package/dist/bundled/components/base/BaseSelect.js +5 -0
  51. package/dist/bundled/components/base/BaseSelect.vue_vue_type_script_setup_true_lang.js +59 -0
  52. package/dist/bundled/components/base/BaseSplitPane.js +7 -0
  53. package/dist/bundled/components/base/BaseSplitPane.vue_vue_type_script_setup_true_lang.js +159 -0
  54. package/dist/bundled/components/base/BaseTab.js +26 -0
  55. package/dist/bundled/components/base/BaseTab.vue_vue_type_script_lang.js +17 -0
  56. package/dist/bundled/components/base/BaseTag.js +11 -0
  57. package/dist/bundled/components/command/CommandPrompts.js +5 -0
  58. package/dist/bundled/components/command/CommandPrompts.vue_vue_type_script_setup_true_lang.js +86 -0
  59. package/dist/bundled/components/command/CommandPromptsModal.js +5 -0
  60. package/dist/bundled/components/command/CommandPromptsModal.vue_vue_type_script_setup_true_lang.js +35 -0
  61. package/dist/bundled/components/command/PromptSelect.js +5 -0
  62. package/dist/bundled/components/command/PromptSelect.vue_vue_type_script_setup_true_lang.js +111 -0
  63. package/dist/bundled/components/command/PromptText.js +5 -0
  64. package/dist/bundled/components/command/PromptText.vue_vue_type_script_setup_true_lang.js +51 -0
  65. package/dist/bundled/components/layout/LayoutItem.js +5 -0
  66. package/dist/bundled/components/layout/LayoutItem.vue_vue_type_script_setup_true_lang.js +42 -0
  67. package/dist/bundled/components/layout/LayoutItemGroup.js +5 -0
  68. package/dist/bundled/components/layout/LayoutItemGroup.vue_vue_type_script_setup_true_lang.js +19 -0
  69. package/dist/bundled/components/layout/LayoutModal.js +5 -0
  70. package/dist/bundled/components/layout/LayoutModal.vue_vue_type_script_setup_true_lang.js +47 -0
  71. package/dist/bundled/components/layout/LayoutPane.js +5 -0
  72. package/dist/bundled/components/layout/LayoutPane.vue_vue_type_script_setup_true_lang.js +47 -0
  73. package/dist/bundled/components/misc/CheckerboardPattern.js +34 -0
  74. package/dist/bundled/components/misc/HatchedPattern.js +12 -0
  75. package/dist/bundled/components/panel/ControlsComponentPropItem.js +5 -0
  76. package/dist/bundled/components/panel/ControlsComponentPropItem.vue_vue_type_script_setup_true_lang.js +60 -0
  77. package/dist/bundled/components/panel/ControlsComponentProps.js +5 -0
  78. package/dist/bundled/components/panel/ControlsComponentProps.vue_vue_type_script_setup_true_lang.js +39 -0
  79. package/dist/bundled/components/panel/ControlsComponentState.js +5 -0
  80. package/dist/bundled/components/panel/ControlsComponentState.vue_vue_type_script_setup_true_lang.js +29 -0
  81. package/dist/bundled/components/panel/ControlsComponentStateItem.js +5 -0
  82. package/dist/bundled/components/panel/ControlsComponentStateItem.vue_vue_type_script_setup_true_lang.js +40 -0
  83. package/dist/bundled/components/panel/PaneTabs.js +5 -0
  84. package/dist/bundled/components/panel/PaneTabs.vue_vue_type_script_setup_true_lang.js +137 -0
  85. package/dist/bundled/components/panel/StatePresets.js +5 -0
  86. package/dist/bundled/components/panel/StatePresets.vue_vue_type_script_setup_true_lang.js +147 -0
  87. package/dist/bundled/components/panel/StoryControls.js +5 -0
  88. package/dist/bundled/components/panel/StoryControls.vue_vue_type_script_setup_true_lang.js +73 -0
  89. package/dist/bundled/components/panel/StoryDocs.js +5 -0
  90. package/dist/bundled/components/panel/StoryDocs.vue_vue_type_script_setup_true_lang.js +130 -0
  91. package/dist/bundled/components/panel/StoryEvent.js +5 -0
  92. package/dist/bundled/components/panel/StoryEvent.vue_vue_type_script_setup_true_lang.js +36 -0
  93. package/dist/bundled/components/panel/StoryEvents.js +5 -0
  94. package/dist/bundled/components/panel/StoryEvents.vue_vue_type_script_setup_true_lang.js +42 -0
  95. package/dist/bundled/components/panel/StorySidePanel.js +5 -0
  96. package/dist/bundled/components/panel/StorySidePanel.vue_vue_type_script_setup_true_lang.js +69 -0
  97. package/dist/bundled/components/panel/StorySourceCode.js +7 -0
  98. package/dist/bundled/components/panel/StorySourceCode.vue_vue_type_script_setup_true_lang.js +146 -0
  99. package/dist/bundled/components/search/SearchItem.js +7 -0
  100. package/dist/bundled/components/search/SearchItem.vue_vue_type_script_setup_true_lang.js +67 -0
  101. package/dist/bundled/components/search/SearchItemContent.js +5 -0
  102. package/dist/bundled/components/search/SearchItemContent.vue_vue_type_script_setup_true_lang.js +49 -0
  103. package/dist/bundled/components/search/SearchLoading.js +5 -0
  104. package/dist/bundled/components/search/SearchLoading.vue_vue_type_script_setup_true_lang.js +17 -0
  105. package/dist/bundled/components/search/SearchModal.js +5 -0
  106. package/dist/bundled/components/search/SearchModal.vue_vue_type_script_setup_true_lang.js +38 -0
  107. package/dist/bundled/components/search/SearchPane.js +5 -0
  108. package/dist/bundled/components/search/SearchPane.vue_vue_type_script_setup_true_lang.js +229 -0
  109. package/dist/bundled/components/search/search-docs-data.js +6 -8
  110. package/dist/bundled/components/search/search-title-data.js +7 -9
  111. package/dist/bundled/components/story/GenericMountStory.js +5 -0
  112. package/dist/bundled/components/story/GenericMountStory.vue_vue_type_script_setup_true_lang.js +27 -0
  113. package/dist/bundled/components/story/GenericRenderStory.js +5 -0
  114. package/dist/bundled/components/story/GenericRenderStory.vue_vue_type_script_setup_true_lang.js +30 -0
  115. package/dist/bundled/components/story/StoryResponsivePreview.js +7 -0
  116. package/dist/bundled/components/story/StoryResponsivePreview.vue_vue_type_script_setup_true_lang.js +170 -0
  117. package/dist/bundled/components/story/StoryVariantGrid.js +5 -0
  118. package/dist/bundled/components/story/StoryVariantGrid.vue_vue_type_script_setup_true_lang.js +99 -0
  119. package/dist/bundled/components/story/StoryVariantGridItem.js +7 -0
  120. package/dist/bundled/components/story/StoryVariantGridItem.vue_vue_type_script_setup_true_lang.js +142 -0
  121. package/dist/bundled/components/story/StoryVariantListItem.js +7 -0
  122. package/dist/bundled/components/story/StoryVariantListItem.vue_vue_type_script_setup_true_lang.js +44 -0
  123. package/dist/bundled/components/story/StoryVariantSingle.js +7 -0
  124. package/dist/bundled/components/story/StoryVariantSingle.vue_vue_type_script_setup_true_lang.js +76 -0
  125. package/dist/bundled/components/story/StoryVariantSinglePreviewNative.js +5 -0
  126. package/dist/bundled/components/story/StoryVariantSinglePreviewNative.vue_vue_type_script_setup_true_lang.js +68 -0
  127. package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.js +5 -0
  128. package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.vue_vue_type_script_setup_true_lang.js +134 -0
  129. package/dist/bundled/components/story/StoryVariantSingleView.js +5 -0
  130. package/dist/bundled/components/story/StoryVariantSingleView.vue_vue_type_script_setup_true_lang.js +30 -0
  131. package/dist/bundled/components/story/StoryView.js +5 -0
  132. package/dist/bundled/components/story/StoryView.vue_vue_type_script_setup_true_lang.js +95 -0
  133. package/dist/bundled/components/story/StoryViewer.js +7 -0
  134. package/dist/bundled/components/story/StoryViewer.vue_vue_type_script_setup_true_lang.js +43 -0
  135. package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.js +5 -0
  136. package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.vue_vue_type_script_setup_true_lang.js +30 -0
  137. package/dist/bundled/components/toolbar/ToolbarBackground.js +7 -0
  138. package/dist/bundled/components/toolbar/ToolbarBackground.vue_vue_type_script_setup_true_lang.js +109 -0
  139. package/dist/bundled/components/toolbar/ToolbarNewTab.js +5 -0
  140. package/dist/bundled/components/toolbar/ToolbarNewTab.vue_vue_type_script_setup_true_lang.js +34 -0
  141. package/dist/bundled/components/toolbar/ToolbarResponsiveSize.js +5 -0
  142. package/dist/bundled/components/toolbar/ToolbarResponsiveSize.vue_vue_type_script_setup_true_lang.js +93 -0
  143. package/dist/bundled/components/toolbar/ToolbarTextDirection.js +5 -0
  144. package/dist/bundled/components/toolbar/ToolbarTextDirection.vue_vue_type_script_setup_true_lang.js +26 -0
  145. package/dist/bundled/components/toolbar/ToolbarTitle.js +7 -0
  146. package/dist/bundled/components/toolbar/ToolbarTitle.vue_vue_type_script_setup_true_lang.js +35 -0
  147. package/dist/bundled/components/tree/StoryGroup.js +5 -0
  148. package/dist/bundled/components/tree/StoryGroup.vue_vue_type_script_setup_true_lang.js +59 -0
  149. package/dist/bundled/components/tree/StoryList.js +5 -0
  150. package/dist/bundled/components/tree/StoryList.vue_vue_type_script_setup_true_lang.js +33 -0
  151. package/dist/bundled/components/tree/StoryListFolder.js +7 -0
  152. package/dist/bundled/components/tree/StoryListFolder.vue_vue_type_script_setup_true_lang.js +67 -0
  153. package/dist/bundled/components/tree/StoryListItem.js +7 -0
  154. package/dist/bundled/components/tree/StoryListItem.vue_vue_type_script_setup_true_lang.js +58 -0
  155. package/dist/bundled/index.js +24 -33
  156. package/dist/bundled/plugin.js +43 -46
  157. package/dist/bundled/router.js +20 -28
  158. package/dist/bundled/sandbox.js +85 -99
  159. package/dist/bundled/stores/command.js +21 -23
  160. package/dist/bundled/stores/events.js +26 -27
  161. package/dist/bundled/stores/folder.js +37 -51
  162. package/dist/bundled/stores/layout.js +9 -13
  163. package/dist/bundled/stores/preview-settings.js +28 -31
  164. package/dist/bundled/stores/story.js +54 -41
  165. package/dist/bundled/util/color-scheme.js +29 -21
  166. package/dist/bundled/util/commands.js +39 -50
  167. package/dist/bundled/util/config.js +5 -7
  168. package/dist/bundled/util/const.js +8 -12
  169. package/dist/bundled/util/dark.js +16 -20
  170. package/dist/bundled/util/docs.js +14 -23
  171. package/dist/bundled/util/env.js +4 -4
  172. package/dist/bundled/util/events.js +22 -28
  173. package/dist/bundled/util/highlighter.js +23 -0
  174. package/dist/bundled/util/keyboard.js +89 -103
  175. package/dist/bundled/util/mapping.js +49 -64
  176. package/dist/bundled/util/open-in-editor.js +4 -4
  177. package/dist/bundled/util/preview-settings.js +23 -26
  178. package/dist/bundled/util/responsive.js +4 -5
  179. package/dist/bundled/util/sandbox.js +7 -8
  180. package/dist/bundled/util/scroll.js +20 -28
  181. package/dist/bundled/util/select.js +21 -26
  182. package/dist/bundled/util/state.js +25 -36
  183. package/dist/bundled/util/tooltip.js +8 -9
  184. package/dist/bundled/util/variant.js +14 -17
  185. package/dist/style.css +2805 -2953
  186. package/package.json +12 -9
  187. package/src/__tests__/postcss-scope-wrapper.spec.ts +65 -0
  188. package/src/app/App.vue +16 -16
  189. package/src/app/components/HomeView.vue +3 -3
  190. package/src/app/components/app/AppActions.vue +3 -3
  191. package/src/app/components/app/AppHeader.vue +4 -4
  192. package/src/app/components/app/Breadcrumb.vue +8 -8
  193. package/src/app/components/app/HomeCounter.vue +5 -5
  194. package/src/app/components/app/InitialLoading.vue +5 -5
  195. package/src/app/components/app/MobileOverlay.vue +5 -5
  196. package/src/app/components/app/TopBar.vue +4 -4
  197. package/src/app/components/app/TopBarChip.vue +1 -1
  198. package/src/app/components/app/TopBarChipItem.vue +1 -1
  199. package/src/app/components/base/BaseButton.vue +3 -3
  200. package/src/app/components/base/BaseCheckbox.vue +9 -9
  201. package/src/app/components/base/BaseCopyIcon.vue +1 -1
  202. package/src/app/components/base/BaseEmpty.vue +4 -4
  203. package/src/app/components/base/BaseKeyboardShortcut.vue +1 -1
  204. package/src/app/components/base/BaseListItem.vue +3 -3
  205. package/src/app/components/base/BaseListItemLink.vue +3 -3
  206. package/src/app/components/base/BaseOverflowMenu.vue +4 -4
  207. package/src/app/components/base/BaseOverflowTab.vue +3 -3
  208. package/src/app/components/base/BaseSelect.vue +6 -6
  209. package/src/app/components/base/BaseSplitPane.vue +18 -18
  210. package/src/app/components/base/BaseTab.vue +3 -3
  211. package/src/app/components/base/BaseTag.vue +1 -1
  212. package/src/app/components/command/CommandPrompts.vue +5 -5
  213. package/src/app/components/command/CommandPromptsModal.vue +5 -5
  214. package/src/app/components/command/PromptSelect.vue +14 -14
  215. package/src/app/components/command/PromptText.vue +4 -4
  216. package/src/app/components/layout/LayoutItem.vue +4 -4
  217. package/src/app/components/layout/LayoutItemGroup.vue +1 -1
  218. package/src/app/components/layout/LayoutModal.vue +7 -7
  219. package/src/app/components/layout/LayoutPane.vue +1 -1
  220. package/src/app/components/panel/ControlsComponentPropItem.vue +2 -2
  221. package/src/app/components/panel/ControlsComponentProps.vue +3 -3
  222. package/src/app/components/panel/ControlsComponentState.vue +2 -2
  223. package/src/app/components/panel/PaneTabs.vue +4 -4
  224. package/src/app/components/panel/StatePresets.vue +16 -16
  225. package/src/app/components/panel/StoryControls.vue +7 -8
  226. package/src/app/components/panel/StoryDocs.vue +5 -5
  227. package/src/app/components/panel/StoryEvent.vue +7 -7
  228. package/src/app/components/panel/StoryEvents.vue +1 -1
  229. package/src/app/components/panel/StorySidePanel.vue +6 -6
  230. package/src/app/components/panel/StorySourceCode.vue +31 -33
  231. package/src/app/components/search/SearchItem.vue +5 -17
  232. package/src/app/components/search/SearchItemContent.vue +9 -9
  233. package/src/app/components/search/SearchLoading.vue +2 -2
  234. package/src/app/components/search/SearchModal.vue +9 -9
  235. package/src/app/components/search/SearchPane.vue +41 -17
  236. package/src/app/components/story/StoryResponsivePreview.vue +27 -27
  237. package/src/app/components/story/StoryVariantGrid.vue +5 -5
  238. package/src/app/components/story/StoryVariantGridItem.vue +21 -21
  239. package/src/app/components/story/StoryVariantListItem.vue +4 -4
  240. package/src/app/components/story/StoryVariantSingle.vue +9 -9
  241. package/src/app/components/story/StoryVariantSinglePreviewNative.vue +7 -8
  242. package/src/app/components/story/StoryVariantSinglePreviewRemote.vue +15 -14
  243. package/src/app/components/story/StoryVariantSingleView.vue +1 -1
  244. package/src/app/components/story/StoryView.vue +5 -5
  245. package/src/app/components/story/StoryViewer.vue +1 -1
  246. package/src/app/components/toolbar/DevOnlyToolbarOpenInEditor.vue +1 -1
  247. package/src/app/components/toolbar/ToolbarBackground.vue +16 -16
  248. package/src/app/components/toolbar/ToolbarNewTab.vue +1 -1
  249. package/src/app/components/toolbar/ToolbarResponsiveSize.vue +14 -14
  250. package/src/app/components/toolbar/ToolbarTextDirection.vue +1 -1
  251. package/src/app/components/toolbar/ToolbarTitle.vue +6 -6
  252. package/src/app/components/tree/StoryGroup.vue +5 -5
  253. package/src/app/components/tree/StoryList.vue +1 -1
  254. package/src/app/components/tree/StoryListFolder.vue +6 -6
  255. package/src/app/components/tree/StoryListItem.vue +6 -6
  256. package/src/app/sandbox.ts +36 -10
  257. package/src/app/stores/story.ts +17 -0
  258. package/src/app/style/floating.pcss +16 -10
  259. package/src/app/style/main.pcss +190 -30
  260. package/src/app/style/sandbox.css +3 -1
  261. package/src/app/style/transitions.pcss +49 -50
  262. package/src/app/util/env.ts +5 -0
  263. package/src/app/util/events.ts +0 -1
  264. package/src/app/util/highlighter.ts +32 -0
  265. package/src/app/util/scroll.ts +2 -1
  266. package/src/app/util/tooltip.ts +2 -2
  267. package/dist/bundled/App.vue.js +0 -5
  268. package/dist/bundled/App.vue2.js +0 -211
  269. package/dist/bundled/assets/poveste-text-dark.svg.js +0 -4
  270. package/dist/bundled/assets/poveste-text.svg.js +0 -4
  271. package/dist/bundled/assets/poveste.svg.js +0 -4
  272. package/dist/bundled/components/HomeView.vue.js +0 -5
  273. package/dist/bundled/components/HomeView.vue2.js +0 -66
  274. package/dist/bundled/components/app/AppActions.vue.js +0 -5
  275. package/dist/bundled/components/app/AppActions.vue2.js +0 -76
  276. package/dist/bundled/components/app/AppHeader.vue.js +0 -5
  277. package/dist/bundled/components/app/AppHeader.vue2.js +0 -29
  278. package/dist/bundled/components/app/AppLogo.vue.js +0 -5
  279. package/dist/bundled/components/app/AppLogo.vue2.js +0 -29
  280. package/dist/bundled/components/app/Breadcrumb.vue.js +0 -8
  281. package/dist/bundled/components/app/Breadcrumb.vue2.js +0 -91
  282. package/dist/bundled/components/app/HomeCounter.vue.js +0 -5
  283. package/dist/bundled/components/app/HomeCounter.vue2.js +0 -42
  284. package/dist/bundled/components/app/InitialLoading.vue.js +0 -5
  285. package/dist/bundled/components/app/InitialLoading.vue2.js +0 -51
  286. package/dist/bundled/components/app/MobileOverlay.vue.js +0 -5
  287. package/dist/bundled/components/app/MobileOverlay.vue2.js +0 -45
  288. package/dist/bundled/components/app/TopBar.vue.js +0 -5
  289. package/dist/bundled/components/app/TopBar.vue2.js +0 -73
  290. package/dist/bundled/components/app/TopBarChip.vue.js +0 -13
  291. package/dist/bundled/components/app/TopBarChipItem.vue.js +0 -13
  292. package/dist/bundled/components/base/BaseButton.vue.js +0 -5
  293. package/dist/bundled/components/base/BaseButton.vue2.js +0 -39
  294. package/dist/bundled/components/base/BaseCheckbox.vue.js +0 -5
  295. package/dist/bundled/components/base/BaseCheckbox.vue2.js +0 -78
  296. package/dist/bundled/components/base/BaseEmpty.vue.js +0 -14
  297. package/dist/bundled/components/base/BaseIcon.vue.js +0 -8
  298. package/dist/bundled/components/base/BaseIcon.vue2.js +0 -29
  299. package/dist/bundled/components/base/BaseKeyboardShortcut.vue.js +0 -5
  300. package/dist/bundled/components/base/BaseKeyboardShortcut.vue2.js +0 -20
  301. package/dist/bundled/components/base/BaseListItem.vue.js +0 -5
  302. package/dist/bundled/components/base/BaseListItem.vue2.js +0 -33
  303. package/dist/bundled/components/base/BaseListItemLink.vue.js +0 -33
  304. package/dist/bundled/components/base/BaseListItemLink.vue2.js +0 -26
  305. package/dist/bundled/components/base/BaseOverflowMenu.vue.js +0 -5
  306. package/dist/bundled/components/base/BaseOverflowMenu.vue2.js +0 -100
  307. package/dist/bundled/components/base/BaseOverflowTab.vue.js +0 -36
  308. package/dist/bundled/components/base/BaseOverflowTab.vue2.js +0 -18
  309. package/dist/bundled/components/base/BaseSelect.vue.js +0 -5
  310. package/dist/bundled/components/base/BaseSelect.vue2.js +0 -77
  311. package/dist/bundled/components/base/BaseSplitPane.vue.js +0 -8
  312. package/dist/bundled/components/base/BaseSplitPane.vue2.js +0 -187
  313. package/dist/bundled/components/base/BaseTab.vue.js +0 -36
  314. package/dist/bundled/components/base/BaseTab.vue2.js +0 -18
  315. package/dist/bundled/components/base/BaseTag.vue.js +0 -13
  316. package/dist/bundled/components/command/CommandPrompts.vue.js +0 -5
  317. package/dist/bundled/components/command/CommandPrompts.vue2.js +0 -91
  318. package/dist/bundled/components/command/CommandPromptsModal.vue.js +0 -5
  319. package/dist/bundled/components/command/CommandPromptsModal.vue2.js +0 -45
  320. package/dist/bundled/components/command/PromptSelect.vue.js +0 -5
  321. package/dist/bundled/components/command/PromptSelect.vue2.js +0 -142
  322. package/dist/bundled/components/command/PromptText.vue.js +0 -5
  323. package/dist/bundled/components/command/PromptText.vue2.js +0 -67
  324. package/dist/bundled/components/layout/LayoutItem.vue.js +0 -5
  325. package/dist/bundled/components/layout/LayoutItem.vue2.js +0 -44
  326. package/dist/bundled/components/layout/LayoutItemGroup.vue.js +0 -5
  327. package/dist/bundled/components/layout/LayoutItemGroup.vue2.js +0 -25
  328. package/dist/bundled/components/layout/LayoutModal.vue.js +0 -5
  329. package/dist/bundled/components/layout/LayoutModal.vue2.js +0 -68
  330. package/dist/bundled/components/layout/LayoutPane.vue.js +0 -5
  331. package/dist/bundled/components/layout/LayoutPane.vue2.js +0 -59
  332. package/dist/bundled/components/misc/CheckerboardPattern.vue.js +0 -40
  333. package/dist/bundled/components/misc/HatchedPattern.vue.js +0 -12
  334. package/dist/bundled/components/panel/ControlsComponentPropItem.vue.js +0 -5
  335. package/dist/bundled/components/panel/ControlsComponentPropItem.vue2.js +0 -72
  336. package/dist/bundled/components/panel/ControlsComponentProps.vue.js +0 -5
  337. package/dist/bundled/components/panel/ControlsComponentProps.vue2.js +0 -45
  338. package/dist/bundled/components/panel/ControlsComponentState.vue.js +0 -5
  339. package/dist/bundled/components/panel/ControlsComponentState.vue2.js +0 -41
  340. package/dist/bundled/components/panel/ControlsComponentStateItem.vue.js +0 -5
  341. package/dist/bundled/components/panel/ControlsComponentStateItem.vue2.js +0 -46
  342. package/dist/bundled/components/panel/PaneTabs.vue.js +0 -5
  343. package/dist/bundled/components/panel/PaneTabs.vue2.js +0 -114
  344. package/dist/bundled/components/panel/StatePresets.vue.js +0 -5
  345. package/dist/bundled/components/panel/StatePresets.vue2.js +0 -193
  346. package/dist/bundled/components/panel/StoryControls.vue.js +0 -5
  347. package/dist/bundled/components/panel/StoryControls.vue2.js +0 -87
  348. package/dist/bundled/components/panel/StoryDocs.vue.js +0 -7
  349. package/dist/bundled/components/panel/StoryDocs.vue2.js +0 -161
  350. package/dist/bundled/components/panel/StoryEvent.vue.js +0 -5
  351. package/dist/bundled/components/panel/StoryEvent.vue2.js +0 -59
  352. package/dist/bundled/components/panel/StoryEvents.vue.js +0 -5
  353. package/dist/bundled/components/panel/StoryEvents.vue2.js +0 -53
  354. package/dist/bundled/components/panel/StorySidePanel.vue.js +0 -5
  355. package/dist/bundled/components/panel/StorySidePanel.vue2.js +0 -94
  356. package/dist/bundled/components/panel/StorySourceCode.vue.js +0 -8
  357. package/dist/bundled/components/panel/StorySourceCode.vue2.js +0 -204
  358. package/dist/bundled/components/search/SearchItem.vue.js +0 -8
  359. package/dist/bundled/components/search/SearchItem.vue2.js +0 -93
  360. package/dist/bundled/components/search/SearchItemContent.vue.js +0 -5
  361. package/dist/bundled/components/search/SearchItemContent.vue2.js +0 -71
  362. package/dist/bundled/components/search/SearchLoading.vue.js +0 -5
  363. package/dist/bundled/components/search/SearchLoading.vue2.js +0 -21
  364. package/dist/bundled/components/search/SearchModal.vue.js +0 -5
  365. package/dist/bundled/components/search/SearchModal.vue2.js +0 -51
  366. package/dist/bundled/components/search/SearchPane.vue.js +0 -5
  367. package/dist/bundled/components/search/SearchPane.vue2.js +0 -272
  368. package/dist/bundled/components/story/GenericMountStory.vue.js +0 -5
  369. package/dist/bundled/components/story/GenericMountStory.vue2.js +0 -34
  370. package/dist/bundled/components/story/GenericRenderStory.vue.js +0 -5
  371. package/dist/bundled/components/story/GenericRenderStory.vue2.js +0 -39
  372. package/dist/bundled/components/story/StoryResponsivePreview.vue.js +0 -8
  373. package/dist/bundled/components/story/StoryResponsivePreview.vue2.js +0 -207
  374. package/dist/bundled/components/story/StoryVariantGrid.vue.js +0 -5
  375. package/dist/bundled/components/story/StoryVariantGrid.vue2.js +0 -127
  376. package/dist/bundled/components/story/StoryVariantGridItem.vue.js +0 -8
  377. package/dist/bundled/components/story/StoryVariantGridItem.vue2.js +0 -170
  378. package/dist/bundled/components/story/StoryVariantListItem.vue.js +0 -8
  379. package/dist/bundled/components/story/StoryVariantListItem.vue2.js +0 -55
  380. package/dist/bundled/components/story/StoryVariantSingle.vue.js +0 -8
  381. package/dist/bundled/components/story/StoryVariantSingle.vue2.js +0 -107
  382. package/dist/bundled/components/story/StoryVariantSinglePreviewNative.vue.js +0 -5
  383. package/dist/bundled/components/story/StoryVariantSinglePreviewNative.vue2.js +0 -73
  384. package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.vue.js +0 -5
  385. package/dist/bundled/components/story/StoryVariantSinglePreviewRemote.vue2.js +0 -153
  386. package/dist/bundled/components/story/StoryVariantSingleView.vue.js +0 -5
  387. package/dist/bundled/components/story/StoryVariantSingleView.vue2.js +0 -35
  388. package/dist/bundled/components/story/StoryView.vue.js +0 -5
  389. package/dist/bundled/components/story/StoryView.vue2.js +0 -114
  390. package/dist/bundled/components/story/StoryViewer.vue.js +0 -8
  391. package/dist/bundled/components/story/StoryViewer.vue2.js +0 -55
  392. package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.vue.js +0 -5
  393. package/dist/bundled/components/toolbar/DevOnlyToolbarOpenInEditor.vue2.js +0 -35
  394. package/dist/bundled/components/toolbar/ToolbarBackground.vue.js +0 -8
  395. package/dist/bundled/components/toolbar/ToolbarBackground.vue2.js +0 -127
  396. package/dist/bundled/components/toolbar/ToolbarNewTab.vue.js +0 -5
  397. package/dist/bundled/components/toolbar/ToolbarNewTab.vue2.js +0 -39
  398. package/dist/bundled/components/toolbar/ToolbarResponsiveSize.vue.js +0 -5
  399. package/dist/bundled/components/toolbar/ToolbarResponsiveSize.vue2.js +0 -127
  400. package/dist/bundled/components/toolbar/ToolbarTextDirection.vue.js +0 -5
  401. package/dist/bundled/components/toolbar/ToolbarTextDirection.vue2.js +0 -31
  402. package/dist/bundled/components/toolbar/ToolbarTitle.vue.js +0 -8
  403. package/dist/bundled/components/toolbar/ToolbarTitle.vue2.js +0 -49
  404. package/dist/bundled/components/tree/StoryGroup.vue.js +0 -5
  405. package/dist/bundled/components/tree/StoryGroup.vue2.js +0 -74
  406. package/dist/bundled/components/tree/StoryList.vue.js +0 -5
  407. package/dist/bundled/components/tree/StoryList.vue2.js +0 -41
  408. package/dist/bundled/components/tree/StoryListFolder.vue.js +0 -8
  409. package/dist/bundled/components/tree/StoryListFolder.vue2.js +0 -86
  410. package/dist/bundled/components/tree/StoryListItem.vue.js +0 -8
  411. package/dist/bundled/components/tree/StoryListItem.vue2.js +0 -69
@@ -13,46 +13,46 @@ const settings = usePreviewSettingsStore().currentSettings
13
13
  placement="bottom-end"
14
14
  :skidding="6"
15
15
  :disabled="!povesteConfig.responsivePresets?.length"
16
- class="poveste-toolbar-responsive-size ptw-flex-none"
16
+ class="poveste-toolbar-responsive-size flex-none"
17
17
  >
18
18
  <div
19
19
  v-tooltip="'Responsive sizes'"
20
- class="ptw-flex ptw-items-center ptw-gap-1 ptw-px-2.5 ptw-py-1.5 ptw-text-gray-900 dark:ptw-text-gray-100 ptw-transition-colors ptw-group"
20
+ class="flex items-center gap-1 px-2.5 py-1.5 text-gray-900 dark:text-gray-100 transition-colors group"
21
21
  :class="{
22
- 'hover:ptw-bg-white/50 dark:hover:ptw-bg-white/10 hover:ptw-text-primary-500 dark:hover:ptw-text-primary-400 ptw-cursor-pointer': povesteConfig.responsivePresets?.length,
22
+ 'hover:bg-white/50 dark:hover:bg-white/10 hover:text-primary-500 dark:hover:text-primary-400 cursor-pointer': povesteConfig.responsivePresets?.length,
23
23
  }"
24
24
  >
25
25
  <Icon
26
26
  icon="carbon:devices"
27
- class="ptw-w-4 ptw-h-4"
27
+ class="w-4 h-4"
28
28
  />
29
29
  <Icon
30
30
  icon="carbon:chevron-down"
31
- class="ptw-w-3 ptw-h-3 ptw-opacity-40 group-hover:ptw-opacity-70"
31
+ class="w-3 h-3 opacity-40 group-hover:opacity-70"
32
32
  />
33
33
  </div>
34
34
 
35
35
  <template #popper="{ hide }">
36
- <div class="ptw-flex ptw-flex-col ptw-items-stretch">
36
+ <div class="flex flex-col items-stretch">
37
37
  <BaseCheckbox v-model="settings.rotate">
38
38
  Rotate
39
39
  </BaseCheckbox>
40
40
 
41
- <div class="ptw-flex ptw-items-center ptw-gap-2 ptw-px-4 ptw-py-3">
41
+ <div class="flex items-center gap-2 px-4 py-3">
42
42
  <input
43
43
  v-model.number="settings.responsiveWidth"
44
44
  v-tooltip="'Responsive width (px)'"
45
45
  type="number"
46
- class="ptw-bg-transparent ptw-border ptw-border-gray-200 dark:ptw-border-gray-850 ptw-rounded ptw-w-20 ptw-opacity-50 focus:ptw-opacity-100 ptw-flex-1 ptw-min-w-0"
46
+ class="bg-transparent border border-gray-200 dark:border-gray-850 rounded w-20 opacity-50 focus:opacity-100 flex-1 min-w-0"
47
47
  step="16"
48
48
  placeholder="Auto"
49
49
  >
50
- <span class="ptw-opacity-50">×</span>
50
+ <span class="opacity-50">×</span>
51
51
  <input
52
52
  v-model.number="settings.responsiveHeight"
53
53
  v-tooltip="'Responsive height (px)'"
54
54
  type="number"
55
- class="ptw-bg-transparent ptw-border ptw-border-gray-200 dark:ptw-border-gray-850 ptw-rounded ptw-w-20 ptw-opacity-50 focus:ptw-opacity-100 ptw-flex-1 ptw-min-w-0"
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
56
  step="16"
57
57
  placeholder="Auto"
58
58
  >
@@ -61,16 +61,16 @@ const settings = usePreviewSettingsStore().currentSettings
61
61
  <button
62
62
  v-for="(preset, index) in povesteConfig.responsivePresets"
63
63
  :key="index"
64
- class="ptw-px-4 ptw-py-3 ptw-cursor-pointer ptw-text-left ptw-flex ptw-gap-4"
64
+ class="px-4 py-3 cursor-pointer text-left flex gap-4"
65
65
  :class="[
66
66
  settings.responsiveWidth === preset.width && settings.responsiveHeight === preset.height
67
- ? 'ptw-bg-primary-500 hover:ptw-bg-primary-600 ptw-text-white dark:ptw-text-black'
68
- : 'ptw-bg-transparent hover:ptw-bg-primary-100 dark:hover:ptw-bg-primary-700',
67
+ ? 'bg-primary-500 hover:bg-primary-600 text-white dark:text-black'
68
+ : 'bg-transparent hover:bg-primary-100 dark:hover:bg-primary-700',
69
69
  ]"
70
70
  @click="settings.responsiveWidth = preset.width;settings.responsiveHeight = preset.height;hide()"
71
71
  >
72
72
  {{ preset.label }}
73
- <span class="ptw-ml-auto ptw-opacity-70 ptw-flex ptw-gap-1">
73
+ <span class="ml-auto opacity-70 flex gap-1">
74
74
  <span v-if="preset.width">{{ preset.width }}<span v-if="!preset.height">px</span></span>
75
75
  <span v-if="preset.width && preset.height">x</span>
76
76
  <span v-if="preset.height">{{ preset.height }}<span v-if="!preset.width">px</span></span>
@@ -14,7 +14,7 @@ const settings = usePreviewSettingsStore().currentSettings
14
14
  >
15
15
  <Icon
16
16
  :icon="settings.textDirection === 'ltr' ? 'fluent:text-paragraph-direction-right-16-regular' : 'fluent:text-paragraph-direction-left-16-regular'"
17
- class="ptw-w-4 ptw-h-4"
17
+ class="w-4 h-4"
18
18
  />
19
19
  </TopBarChipItem>
20
20
  </template>
@@ -20,19 +20,19 @@ const subtitle = computed(() => {
20
20
  </script>
21
21
 
22
22
  <template>
23
- <div class="poveste-toolbar-title ptw-flex ptw-items-center ptw-gap-2 ptw-min-w-0">
23
+ <div class="poveste-toolbar-title flex items-center gap-2 min-w-0">
24
24
  <Icon
25
25
  :icon="icon"
26
- class="ptw-w-4 ptw-h-4 ptw-flex-none"
26
+ class="w-4 h-4 flex-none"
27
27
  :class="[
28
- iconColor ? 'bind-icon-color' : 'ptw-text-gray-500 dark:ptw-text-gray-400',
28
+ iconColor ? 'bind-icon-color' : 'text-gray-500 dark:text-gray-400',
29
29
  ]"
30
30
  />
31
- <div class="ptw-flex ptw-flex-col ptw-justify-center ptw-min-w-0 ptw-leading-tight ptw-text-center ptw-h-[2.25rem]">
32
- <span class="ptw-truncate ptw-text-sm ptw-font-medium ptw-text-gray-900 dark:ptw-text-gray-100">{{ title }}</span>
31
+ <div class="flex flex-col justify-center min-w-0 leading-tight text-center h-[2.25rem]">
32
+ <span class="truncate text-sm font-medium text-gray-900 dark:text-gray-100">{{ title }}</span>
33
33
  <span
34
34
  v-if="subtitle"
35
- class="ptw-truncate ptw-text-xs ptw-text-gray-500 dark:ptw-text-gray-400"
35
+ class="truncate text-xs text-gray-500 dark:text-gray-400"
36
36
  >{{ subtitle }}</span>
37
37
  </div>
38
38
  </div>
@@ -27,23 +27,23 @@ function toggleOpen() {
27
27
  <template>
28
28
  <div
29
29
  data-test-id="story-group"
30
- class="poveste-story-group ptw-my-2 first:ptw-mt-0 last:ptw-mb-0 ptw-group"
30
+ class="poveste-story-group my-2 first:mt-0 last:mb-0 group"
31
31
  >
32
32
  <template v-if="group.title">
33
- <div class="ptw-h-[1px] ptw-bg-gray-500/10 ptw-mx-6 ptw-mb-2 group-first:ptw-hidden" />
33
+ <div class="h-[1px] bg-gray-500/10 mx-6 mb-2 group-first:hidden" />
34
34
  <div
35
35
  role="button"
36
36
  tabindex="0"
37
- class="ptw-px-0.5 ptw-py-2 md:ptw-py-1.5 ptw-mx-1 ptw-rounded-sm hover:ptw-bg-primary-100 dark:hover:ptw-bg-primary-900 ptw-cursor-pointer ptw-select-none ptw-flex ptw-items-center ptw-gap-2 ptw-min-w-0 ptw-opacity-50 hover:ptw-opacity-100"
37
+ class="px-0.5 py-2 md:py-1.5 mx-1 rounded-sm hover:bg-primary-100 dark:hover:bg-primary-900 cursor-pointer select-none flex items-center gap-2 min-w-0 opacity-50 hover:opacity-100"
38
38
  @click="toggleOpen"
39
39
  @keyup.enter="toggleOpen"
40
40
  @keyup.space="toggleOpen"
41
41
  >
42
42
  <Icon
43
43
  :icon="isFolderOpen ? 'ri:subtract-line' : 'ri:add-line'"
44
- class="ptw-w-4 ptw-h-4 ptw-ml-4 ptw-rounded-sm ptw-border ptw-border-gray-500/40"
44
+ class="w-4 h-4 ml-4 rounded-sm border border-gray-500/40"
45
45
  />
46
- <span class="ptw-truncate">{{ group.title }}</span>
46
+ <span class="truncate">{{ group.title }}</span>
47
47
  </div>
48
48
  </template>
49
49
 
@@ -11,7 +11,7 @@ defineProps<{
11
11
  </script>
12
12
 
13
13
  <template>
14
- <div class="poveste-story-list ptw-overflow-y-auto">
14
+ <div class="poveste-story-list overflow-y-auto">
15
15
  <template
16
16
  v-for="element of tree"
17
17
  :key="element.title"
@@ -37,22 +37,22 @@ const folderPadding = computed(() => {
37
37
  <div
38
38
  role="button"
39
39
  tabindex="0"
40
- class="poveste-story-list-folder-button ptw-px-0.5 ptw-py-2 md:ptw-py-1.5 ptw-mx-1 ptw-rounded-sm hover:ptw-bg-primary-100 dark:hover:ptw-bg-primary-900 ptw-cursor-pointer ptw-select-none ptw-flex"
40
+ class="poveste-story-list-folder-button px-0.5 py-2 md:py-1.5 mx-1 rounded-sm hover:bg-primary-100 dark:hover:bg-primary-900 cursor-pointer select-none flex"
41
41
  @click="toggleOpen"
42
42
  @keyup.enter="toggleOpen"
43
43
  @keyup.space="toggleOpen"
44
44
  >
45
- <span class="bind-tree-padding ptw-flex ptw-items-center ptw-gap-2 ptw-min-w-0">
46
- <span class="ptw-flex ptw-flex-none ptw-items-center ptw-opacity-30 [.poveste-story-list-folder-button:hover_&]:ptw-opacity-100 ptw-ml-4 ptw-w-4 ptw-h-4 ptw-rounded-sm ptw-border ptw-border-gray-500/40">
45
+ <span class="bind-tree-padding flex items-center gap-2 min-w-0">
46
+ <span class="flex flex-none items-center opacity-30 [.poveste-story-list-folder-button:hover_&]:opacity-100 ml-4 w-4 h-4 rounded-sm border border-gray-500/40">
47
47
  <Icon
48
48
  icon="carbon:caret-right"
49
- class="ptw-w-full ptw-h-full ptw-transition-transform ptw-duration-150"
49
+ class="w-full h-full transition-transform duration-150"
50
50
  :class="{
51
- 'ptw-rotate-90': isFolderOpen,
51
+ 'rotate-90': isFolderOpen,
52
52
  }"
53
53
  />
54
54
  </span>
55
- <span class="ptw-truncate">{{ folder.title }}</span>
55
+ <span class="truncate">{{ folder.title }}</span>
56
56
  </span>
57
57
  </div>
58
58
 
@@ -37,23 +37,23 @@ useScrollOnActive(isActive, el)
37
37
  storyId: story.id,
38
38
  },
39
39
  }"
40
- class="ptw-pl-0.5 ptw-pr-2 ptw-py-2 md:ptw-py-1.5 ptw-mx-1 ptw-rounded-sm"
40
+ class="pl-0.5 pr-2 py-2 md:py-1.5 mx-1 rounded-sm"
41
41
  >
42
- <span class="bind-tree-margin ptw-flex ptw-items-center ptw-gap-2 ptw-pl-4 ptw-min-w-0">
42
+ <span class="bind-tree-margin flex items-center gap-2 pl-4 min-w-0">
43
43
  <Icon
44
44
  :icon="story.icon ?? 'carbon:cube'"
45
- class="ptw-w-5 ptw-h-5 sm:ptw-w-4 sm:ptw-h-4 ptw-flex-none"
45
+ class="w-5 h-5 sm:w-4 sm:h-4 flex-none"
46
46
  :class="{
47
- 'ptw-text-primary-500': !active && !story.iconColor,
47
+ 'text-primary-500': !active && !story.iconColor,
48
48
  'bind-icon-color': !active && story.iconColor,
49
49
  }"
50
50
  />
51
- <span class="ptw-truncate">{{ story.title }}</span>
51
+ <span class="truncate">{{ story.title }}</span>
52
52
  </span>
53
53
 
54
54
  <span
55
55
  v-if="!story.docsOnly"
56
- class="ptw-opacity-40 ptw-text-sm"
56
+ class="opacity-40 text-sm"
57
57
  >
58
58
  {{ story.variants.length }}
59
59
  </span>
@@ -33,14 +33,36 @@ if (storedSettings) {
33
33
  const prefersDark = usePreferredDark()
34
34
  const previewDark = computed(() => resolvePreviewDark(receivedSettings.colorScheme, prefersDark.value, isDark.value))
35
35
 
36
+ // `sandboxDarkClass` is poveste's own deprecated config option, superseded by
37
+ // `theme.darkClass`. Still honoured on purpose: dropping it would silently stop
38
+ // applying the class for anyone who set it. Removing the option is a breaking
39
+ // config change and belongs to a major, not here.
40
+ /*
41
+ * The class also has to land *inside* the story's `@scope` root, not only on
42
+ * `<html>` (#101).
43
+ *
44
+ * User CSS is wrapped in `@scope (.__poveste-render-story)`, and `<html>` sits
45
+ * above that root, so `@scope` cannot match it. A rule shaped like
46
+ * `.dark .foo { … }` — which is what Tailwind's `darkMode: 'class'` and most
47
+ * hand-written dark styling produce — is therefore inert, with no error and no
48
+ * warning to say so.
49
+ *
50
+ * Putting it on the scope root itself is *not* enough: a descendant combinator
51
+ * needs the ancestor to be matchable in scope too, and the root does not
52
+ * qualify. `#app` is strictly inside the root, which does.
53
+ *
54
+ * It stays on `<html>` as well, for user CSS that is not scope-wrapped and for
55
+ * anyone keying off `html.dark`.
56
+ */
57
+ const darkClassTargets = [document.documentElement, document.querySelector('#app')]
58
+
36
59
  watch(previewDark, (value) => {
37
- if (value) {
38
- document.documentElement.classList.add(povesteConfig.sandboxDarkClass) // @TODO remove
39
- document.documentElement.classList.add(povesteConfig.theme.darkClass)
40
- }
41
- else {
42
- document.documentElement.classList.remove(povesteConfig.sandboxDarkClass) // @TODO remove
43
- document.documentElement.classList.remove(povesteConfig.theme.darkClass)
60
+ for (const el of darkClassTargets) {
61
+ if (!el) continue
62
+
63
+ // eslint-disable-next-line ts/no-deprecated
64
+ el.classList.toggle(povesteConfig.sandboxDarkClass, value)
65
+ el.classList.toggle(povesteConfig.theme.darkClass, value)
44
66
  }
45
67
  }, {
46
68
  immediate: true,
@@ -53,6 +75,11 @@ const app = createApp({
53
75
  const story = computed(() => file.value.story)
54
76
  const variant = computed(() => story.value?.variants.find(v => v.id === query.variantId))
55
77
 
78
+ // `synced` is the sandbox end of the same flag the host holds, with the same
79
+ // #95 caveat: only set it when the apply will actually provoke the watcher
80
+ // below, which is what `applyState`'s return value reports. Set it
81
+ // unconditionally and an apply that changes nothing leaves it stuck, so the
82
+ // next edit the story makes never reaches the host.
56
83
  let synced = false
57
84
  let mounted = false
58
85
 
@@ -60,8 +87,7 @@ const app = createApp({
60
87
  // console.log('[sandbox] received message', event.data)
61
88
  if (event.data?.type === STATE_SYNC) {
62
89
  if (!mounted) return
63
- synced = true
64
- applyState(variant.value.state, event.data.state)
90
+ synced = applyState(variant.value.state, event.data.state)
65
91
  }
66
92
  else if (event.data?.type === PREVIEW_SETTINGS_SYNC) {
67
93
  applyPreviewSettings(event.data.settings)
@@ -93,7 +119,7 @@ const app = createApp({
93
119
 
94
120
  render() {
95
121
  return [
96
- h('div', { class: 'ptw-sandbox-hidden' }, [
122
+ h('div', { class: '__poveste-sandbox-hidden' }, [
97
123
  h(GenericMountStory, {
98
124
  key: file.value.story.id,
99
125
  story: file.value.story,
@@ -36,6 +36,22 @@ export const useStoryStore = defineStore('story', () => {
36
36
  return maps.value.variants.get(idWithStoryId)
37
37
  }
38
38
 
39
+ /**
40
+ * Whether a variant's preview has finished mounting. The preview components
41
+ * report it and `StorySidePanel` waits on it, so it has to be reachable from
42
+ * both — and it stays a field on the variant rather than a map in here
43
+ * because it pairs with `configReady`, which the framework plugins write from
44
+ * inside the sandbox. The side panel reads the two together; splitting them
45
+ * across two owners would make that condition harder to follow, not easier.
46
+ *
47
+ * What does belong here is the write. This store owns the variant objects,
48
+ * so a component reaching into one of its own props to flip the flag was the
49
+ * part that needed to go.
50
+ */
51
+ function setPreviewReady(variant: Variant, value: boolean) {
52
+ variant.previewReady = value
53
+ }
54
+
39
55
  return {
40
56
  stories,
41
57
  setStories,
@@ -43,5 +59,6 @@ export const useStoryStore = defineStore('story', () => {
43
59
  currentVariant,
44
60
  getStoryById,
45
61
  getVariantById,
62
+ setPreviewReady,
46
63
  }
47
64
  })
@@ -5,18 +5,24 @@
5
5
  }
6
6
 
7
7
  .v-popper--theme-dropdown {
8
- .ptw-dark & {
9
- .v-popper__inner {
10
- @apply ptw-bg-gray-700 ptw-border-gray-850 ptw-text-gray-100;
11
- }
8
+ /*
9
+ * Written with the `dark:` variant rather than a `.ptw-dark &` descendant
10
+ * rule. The chrome CSS is wrapped in `@scope`, and `.ptw-dark` sits on
11
+ * `<html>` — above the scope root — so a descendant rule keyed on it never
12
+ * matches and the dropdown silently falls back to floating-vue's stock light
13
+ * theme. `dark:` compiles to `&:where(.ptw-dark, .ptw-dark *)`, which puts the
14
+ * condition on the subject and survives the wrapper. See #101.
15
+ */
16
+ .v-popper__inner {
17
+ @apply dark:bg-gray-700 dark:border-gray-850 dark:text-gray-100;
18
+ }
12
19
 
13
- .v-popper__arrow-inner {
14
- @apply ptw-border-gray-700;
15
- }
20
+ .v-popper__arrow-inner {
21
+ @apply dark:border-gray-700;
22
+ }
16
23
 
17
- .v-popper__arrow-outer {
18
- @apply ptw-border-gray-850;
19
- }
24
+ .v-popper__arrow-outer {
25
+ @apply dark:border-gray-850;
20
26
  }
21
27
 
22
28
  &.v-popper__popper--show-from .v-popper__wrapper {
@@ -2,40 +2,115 @@
2
2
  @import 'floating-vue/dist/style.css';
3
3
  @import '@poveste/controls/dist/index.es.css';
4
4
 
5
- @import 'floating.pcss';
6
- @import 'transitions.pcss';
7
-
8
- *,
9
- ::before,
10
- ::after {
11
- box-sizing: border-box;
12
- border-width: 0;
13
- border-style: solid;
14
- border-color: #e5e7eb;
15
- }
5
+ @import './floating.pcss';
6
+ @import './transitions.pcss';
16
7
 
17
- a,
18
- input,
19
- button {
20
- color: inherit;
21
- }
8
+ /*
9
+ * Tailwind v4. Preflight is intentionally omitted (was `corePlugins.preflight:
10
+ * false` in v3) — the manual reset below replaces it. The `ptw-` utility prefix
11
+ * is gone; chrome/story isolation is handled by @scope (postcss-scope-wrapper, #27).
12
+ */
13
+ @layer theme, base, components, utilities;
14
+ @import 'tailwindcss/theme.css' layer(theme);
15
+ @import 'tailwindcss/utilities.css' layer(utilities);
22
16
 
23
- a {
24
- text-decoration: inherit;
25
- }
17
+ /* v4 auto-detection only scans this package; the app renders controls, so their
18
+ utility classes must be generated here too (was a content glob in v3). */
19
+ @source "../../../../poveste-controls/src";
26
20
 
27
- input, button {
28
- font-family: inherit;
29
- }
21
+ /* The markdown renderer builds the docs code-block chrome as an HTML string, so
22
+ its utility classes live in a package v4 never scans. */
23
+ @source "../../../../poveste/src/node/markdown.ts";
24
+
25
+ /* TODO(#36): port the v3 typography theme() customization to v4 CSS. */
26
+ @plugin '@tailwindcss/typography';
27
+
28
+ /* Chrome dark mode. Deliberately a distinct class from the story-side
29
+ `theme.darkClass` default (`dark`) so chrome and story themes stay independent —
30
+ in v3 the `ptw-` prefix applied to the dark class and kept them separate. */
31
+ @custom-variant dark (&:where(.ptw-dark, .ptw-dark *));
30
32
 
31
- a,
32
- button {
33
- user-select: none;
33
+ @theme {
34
+ /*
35
+ * primary + gray are themable at runtime: resolved-theme.ts injects
36
+ * --_poveste-color-<name>-<key> as space-separated RGB channels, and v4's
37
+ * native color-mix handles opacity (replacing the v3 withOpacityValue shim).
38
+ */
39
+ --color-primary-50: rgb(var(--_poveste-color-primary-50));
40
+ --color-primary-100: rgb(var(--_poveste-color-primary-100));
41
+ --color-primary-200: rgb(var(--_poveste-color-primary-200));
42
+ --color-primary-300: rgb(var(--_poveste-color-primary-300));
43
+ --color-primary-400: rgb(var(--_poveste-color-primary-400));
44
+ --color-primary-500: rgb(var(--_poveste-color-primary-500));
45
+ --color-primary-600: rgb(var(--_poveste-color-primary-600));
46
+ --color-primary-700: rgb(var(--_poveste-color-primary-700));
47
+ --color-primary-800: rgb(var(--_poveste-color-primary-800));
48
+ --color-primary-900: rgb(var(--_poveste-color-primary-900));
49
+
50
+ --color-gray-50: rgb(var(--_poveste-color-gray-50));
51
+ --color-gray-100: rgb(var(--_poveste-color-gray-100));
52
+ --color-gray-200: rgb(var(--_poveste-color-gray-200));
53
+ --color-gray-300: rgb(var(--_poveste-color-gray-300));
54
+ --color-gray-400: rgb(var(--_poveste-color-gray-400));
55
+ --color-gray-500: rgb(var(--_poveste-color-gray-500));
56
+ --color-gray-600: rgb(var(--_poveste-color-gray-600));
57
+ --color-gray-700: rgb(var(--_poveste-color-gray-700));
58
+ --color-gray-750: rgb(var(--_poveste-color-gray-750));
59
+ --color-gray-800: rgb(var(--_poveste-color-gray-800));
60
+ --color-gray-850: rgb(var(--_poveste-color-gray-850));
61
+ --color-gray-900: rgb(var(--_poveste-color-gray-900));
62
+ --color-gray-950: rgb(var(--_poveste-color-gray-950));
63
+
64
+ /* border radius (ported from the root v3 config) */
65
+ --radius-sm: 0.25rem;
66
+ --radius: 0.375rem;
67
+ --radius-md: 0.5rem;
68
+ --radius-lg: 0.75rem;
69
+ --radius-xl: 1rem;
70
+ --radius-2xl: 1.5rem;
71
+ --radius-3xl: 2rem;
34
72
  }
35
73
 
36
- @tailwind base;
37
- @tailwind components;
38
- @tailwind utilities;
74
+ /*
75
+ * Manual reset — replaces Preflight, which is intentionally disabled.
76
+ *
77
+ * MUST stay inside `@layer base`. Unlayered rules beat *every* layered rule
78
+ * regardless of specificity, so an unlayered `* { border-width: 0 }` silently
79
+ * defeats `.border` in `@layer utilities` — every border in the app renders at
80
+ * zero width. In v3 this block was safe unlayered because `@tailwind utilities`
81
+ * emitted unlayered rules that won on specificity; v4 puts them in a real
82
+ * cascade layer, which inverts the outcome. Same trap for the `a`/`input`/
83
+ * `button` rules below vs. text-colour and font utilities.
84
+ */
85
+ @layer base {
86
+ *,
87
+ ::before,
88
+ ::after {
89
+ box-sizing: border-box;
90
+ border-width: 0;
91
+ border-style: solid;
92
+ border-color: #e5e7eb;
93
+ }
94
+
95
+ a,
96
+ input,
97
+ button {
98
+ color: inherit;
99
+ }
100
+
101
+ a {
102
+ text-decoration: inherit;
103
+ }
104
+
105
+ input, button {
106
+ font-family: inherit;
107
+ }
108
+
109
+ a,
110
+ button {
111
+ user-select: none;
112
+ }
113
+ }
39
114
 
40
115
  @layer base {
41
116
  body,
@@ -73,7 +148,7 @@ button {
73
148
  background: transparent !important;
74
149
  }
75
150
 
76
- .ptw-prose {
151
+ .prose {
77
152
  h1, h2, h3, h4 {
78
153
  &:not(:hover) {
79
154
  .header-anchor[aria-hidden="true"] {
@@ -93,8 +168,93 @@ button {
93
168
  background-repeat: no-repeat;
94
169
  background-position: right;
95
170
 
96
- .ptw-dark & {
171
+ /* Subject-side, not `.ptw-dark &` — see the note in floating.pcss. */
172
+ &:where(.ptw-dark, .ptw-dark *) {
97
173
  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
98
174
  }
99
175
  }
100
176
  }
177
+
178
+ /*
179
+ * Typography (@tailwindcss/typography) customization — ported from the v3
180
+ * `theme.extend.typography` JS config to CSS. Unlayered so it overrides the
181
+ * plugin's layered defaults. Needs a visual pass on the docs/markdown pages.
182
+ */
183
+ .prose {
184
+ --tw-prose-invert-quote-borders: var(--color-gray-800);
185
+ --tw-prose-invert-hr: var(--color-gray-800);
186
+ --tw-prose-invert-bullets: var(--color-gray-500);
187
+
188
+ /*
189
+ * The guard repeats what the plugin puts on every rule it generates, so
190
+ * `not-prose` opts out of ours too. In v3 these lived in
191
+ * `theme.extend.typography` and the plugin added it for us; hand-written CSS
192
+ * gets nothing.
193
+ *
194
+ * `:where()` keeps the guard at zero specificity, so every selector below
195
+ * weighs exactly what its unguarded form did.
196
+ */
197
+ & :not(:where([class~='not-prose'], [class~='not-prose'] *)) {
198
+ &:is(a) {
199
+ color: var(--color-primary-500);
200
+ text-decoration: none;
201
+
202
+ &:hover {
203
+ text-decoration: underline;
204
+ }
205
+ }
206
+
207
+ &:is(h1, h2, h3, h4, th) {
208
+ margin-bottom: 0.75rem;
209
+
210
+ &:not(:first-child) {
211
+ margin-top: 1.25rem;
212
+ }
213
+ }
214
+
215
+ &:is(blockquote) {
216
+ margin-left: 0;
217
+ margin-right: 0;
218
+ background-color: var(--color-gray-100);
219
+ padding: 0.25rem 0.375rem;
220
+
221
+ &:where(.ptw-dark, .ptw-dark *) {
222
+ background-color: var(--color-gray-750);
223
+ }
224
+
225
+ & p:first-child {
226
+ margin-top: 0;
227
+ }
228
+
229
+ & p:last-child {
230
+ margin-bottom: 0;
231
+ }
232
+ }
233
+
234
+ &:is(li) {
235
+ margin-top: 0.1rem;
236
+ margin-bottom: 0.1rem;
237
+ }
238
+
239
+ /*
240
+ * Inline code only. markdown-it wraps the highlighted output in
241
+ * `<pre><code class="language-x">`, and that `code` is the parent of the
242
+ * `not-prose` island rather than part of it, so the guard above misses it —
243
+ * as does the island itself for shiki's own `code`, which sits in a `pre`
244
+ * too. The plugin's `pre code` reset would have handled both, but it lives
245
+ * in a cascade layer and this rule is unlayered: unlayered wins outright,
246
+ * the same inversion as #104.
247
+ */
248
+ &:is(code):not(:where(pre *)) {
249
+ background-color: color-mix(in oklab, var(--color-gray-500) 20%, transparent);
250
+ font-weight: normal;
251
+ padding: 0.05rem 0.5rem;
252
+ border-radius: 0.25rem;
253
+ font-size: 0.8rem;
254
+
255
+ &::before, &::after {
256
+ display: none;
257
+ }
258
+ }
259
+ }
260
+ }
@@ -14,7 +14,9 @@ html {
14
14
  font-family: 'Noto Sans Display', system-ui, sans-serif;
15
15
  }
16
16
 
17
- .ptw-sandbox-hidden {
17
+ /* Namespaced: sandbox.css is not @scope-wrapped, so this rule shares the
18
+ document with user story markup. */
19
+ .__poveste-sandbox-hidden {
18
20
  display: none;
19
21
  }
20
22