@scaffold-ui-kit/preview 0.0.0-stage → 2.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 (350) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1868 -2
  3. package/application/host/bootstrap.ts +43 -0
  4. package/application/host/main.ts +31 -0
  5. package/application/host/shell-host.ts +47 -0
  6. package/application/index.html +12 -0
  7. package/application/lib/base-url.ts +15 -0
  8. package/application/lib/no-code-block.ts +7 -0
  9. package/application/lib/no-setup.ts +3 -0
  10. package/application/lib/no-views.ts +6 -0
  11. package/application/preview/code/code.html +12 -0
  12. package/application/preview/code/main.ts +89 -0
  13. package/application/preview/globals.ts +254 -0
  14. package/application/preview/html/main.ts +93 -0
  15. package/application/preview/html/preview.html +12 -0
  16. package/application/preview/react/main.tsx +146 -0
  17. package/application/preview/react/preview.html +12 -0
  18. package/application/preview/svelte/Preview.svelte +104 -0
  19. package/application/preview/svelte/main.ts +13 -0
  20. package/application/preview/svelte/preview.html +12 -0
  21. package/application/preview/svelte/story-props.ts +172 -0
  22. package/application/preview/view/main.ts +124 -0
  23. package/application/preview/view/view.html +12 -0
  24. package/application/preview/vue/main.ts +145 -0
  25. package/application/preview/vue/preview.html +12 -0
  26. package/application/shells/charcell/components/Application/index.css +37 -0
  27. package/application/shells/charcell/components/Application/index.tsx +65 -0
  28. package/application/shells/charcell/components/Bar/index.css +68 -0
  29. package/application/shells/charcell/components/Bar/index.tsx +60 -0
  30. package/application/shells/charcell/components/CodePane/index.css +60 -0
  31. package/application/shells/charcell/components/CodePane/index.tsx +113 -0
  32. package/application/shells/charcell/components/ComponentStage/index.css +26 -0
  33. package/application/shells/charcell/components/ComponentStage/index.tsx +110 -0
  34. package/application/shells/charcell/components/Control/index.css +20 -0
  35. package/application/shells/charcell/components/Control/index.tsx +118 -0
  36. package/application/shells/charcell/components/CopyLink/index.tsx +35 -0
  37. package/application/shells/charcell/components/Description/index.css +6 -0
  38. package/application/shells/charcell/components/Description/index.tsx +24 -0
  39. package/application/shells/charcell/components/EditorAddDialog/index.css +9 -0
  40. package/application/shells/charcell/components/EditorAddDialog/index.tsx +158 -0
  41. package/application/shells/charcell/components/EditorPanel/index.css +48 -0
  42. package/application/shells/charcell/components/EditorPanel/index.tsx +496 -0
  43. package/application/shells/charcell/components/EventsRow/index.css +42 -0
  44. package/application/shells/charcell/components/EventsRow/index.tsx +68 -0
  45. package/application/shells/charcell/components/HeadingRow/index.css +11 -0
  46. package/application/shells/charcell/components/HeadingRow/index.tsx +16 -0
  47. package/application/shells/charcell/components/Hint/index.css +16 -0
  48. package/application/shells/charcell/components/Hint/index.tsx +81 -0
  49. package/application/shells/charcell/components/HtmlWarnings/index.tsx +45 -0
  50. package/application/shells/charcell/components/KeyHints/index.css +27 -0
  51. package/application/shells/charcell/components/KeyHints/index.tsx +106 -0
  52. package/application/shells/charcell/components/KitCodeBlock/index.css +55 -0
  53. package/application/shells/charcell/components/KitCodeBlock/index.tsx +18 -0
  54. package/application/shells/charcell/components/Markdown/index.tsx +16 -0
  55. package/application/shells/charcell/components/Navigation/index.css +13 -0
  56. package/application/shells/charcell/components/Navigation/index.tsx +98 -0
  57. package/application/shells/charcell/components/NavigationSplit/index.css +16 -0
  58. package/application/shells/charcell/components/NavigationSplit/index.tsx +82 -0
  59. package/application/shells/charcell/components/OptionControls/index.tsx +93 -0
  60. package/application/shells/charcell/components/PaneStatus/index.css +7 -0
  61. package/application/shells/charcell/components/PaneStatus/index.tsx +47 -0
  62. package/application/shells/charcell/components/PaneWidth/index.tsx +45 -0
  63. package/application/shells/charcell/components/PreviewGrid/index.css +39 -0
  64. package/application/shells/charcell/components/PreviewGrid/index.tsx +344 -0
  65. package/application/shells/charcell/components/PreviewPane/index.css +127 -0
  66. package/application/shells/charcell/components/PreviewPane/index.tsx +182 -0
  67. package/application/shells/charcell/components/PromptBar/index.tsx +133 -0
  68. package/application/shells/charcell/components/ScenarioRow/index.css +36 -0
  69. package/application/shells/charcell/components/ScenarioRow/index.tsx +71 -0
  70. package/application/shells/charcell/components/Select/index.tsx +48 -0
  71. package/application/shells/charcell/components/SlotOutlet/index.css +7 -0
  72. package/application/shells/charcell/components/SlotOutlet/index.tsx +25 -0
  73. package/application/shells/charcell/components/StageBar/index.css +7 -0
  74. package/application/shells/charcell/components/StageBar/index.tsx +109 -0
  75. package/application/shells/charcell/components/StageSplit/index.css +11 -0
  76. package/application/shells/charcell/components/StageSplit/index.tsx +99 -0
  77. package/application/shells/charcell/components/StatusBar/index.tsx +30 -0
  78. package/application/shells/charcell/components/ViewControls/index.css +15 -0
  79. package/application/shells/charcell/components/ViewControls/index.tsx +58 -0
  80. package/application/shells/charcell/components/ViewHeading/index.css +13 -0
  81. package/application/shells/charcell/components/ViewHeading/index.tsx +8 -0
  82. package/application/shells/charcell/components/ViewStage/index.css +9 -0
  83. package/application/shells/charcell/components/ViewStage/index.tsx +25 -0
  84. package/application/shells/charcell/components/WrapToggle/index.tsx +27 -0
  85. package/application/shells/charcell/configuration.ts +45 -0
  86. package/application/shells/charcell/controller-context.ts +27 -0
  87. package/application/shells/charcell/fit-labels.ts +42 -0
  88. package/application/shells/charcell/html-warnings.ts +18 -0
  89. package/application/shells/charcell/index.tsx +82 -0
  90. package/application/shells/charcell/page-loading.html +57 -0
  91. package/application/shells/charcell/placement.ts +24 -0
  92. package/application/shells/charcell/shell-options.ts +23 -0
  93. package/application/shells/charcell/shell.css +37 -0
  94. package/application/shells/charcell/shell.tsx +25 -0
  95. package/application/shells/charcell/split-reset.ts +47 -0
  96. package/application/shells/charcell/stacked-rows.ts +117 -0
  97. package/application/shells/charcell/stage-toggles.ts +93 -0
  98. package/application/types/manifest.d.ts +6 -0
  99. package/application/types/preview-configuration.d.ts +10 -0
  100. package/application/types/preview-shell.d.ts +7 -0
  101. package/application/types/react-registry.d.ts +15 -0
  102. package/application/types/vue-registry.d.ts +6 -0
  103. package/dist/build.d.ts +24 -0
  104. package/dist/build.js +34 -0
  105. package/dist/check.d.ts +48 -0
  106. package/dist/check.js +781 -0
  107. package/dist/cli.d.ts +2 -0
  108. package/dist/cli.js +88 -0
  109. package/dist/context.d.ts +179 -0
  110. package/dist/context.js +783 -0
  111. package/dist/controller/catalog.d.ts +339 -0
  112. package/dist/controller/catalog.js +367 -0
  113. package/dist/controller/create-preview-controller.d.ts +532 -0
  114. package/dist/controller/create-preview-controller.js +1707 -0
  115. package/dist/controller/editor-tree.d.ts +161 -0
  116. package/dist/controller/editor-tree.js +373 -0
  117. package/dist/controller/html-source.d.ts +62 -0
  118. package/dist/controller/html-source.js +61 -0
  119. package/dist/controller/index.d.ts +9 -0
  120. package/dist/controller/index.js +12 -0
  121. package/dist/controller/persistence.d.ts +191 -0
  122. package/dist/controller/persistence.js +315 -0
  123. package/dist/controller/regeneration.d.ts +30 -0
  124. package/dist/controller/regeneration.js +27 -0
  125. package/dist/controller/source.d.ts +80 -0
  126. package/dist/controller/source.js +236 -0
  127. package/dist/controller/store.d.ts +27 -0
  128. package/dist/controller/store.js +40 -0
  129. package/dist/declarations/application/shells/charcell/components/Application/index.d.ts +2 -0
  130. package/dist/declarations/application/shells/charcell/components/Bar/index.d.ts +11 -0
  131. package/dist/declarations/application/shells/charcell/components/CodePane/index.d.ts +5 -0
  132. package/dist/declarations/application/shells/charcell/components/ComponentStage/index.d.ts +2 -0
  133. package/dist/declarations/application/shells/charcell/components/Control/index.d.ts +9 -0
  134. package/dist/declarations/application/shells/charcell/components/CopyLink/index.d.ts +1 -0
  135. package/dist/declarations/application/shells/charcell/components/Description/index.d.ts +5 -0
  136. package/dist/declarations/application/shells/charcell/components/EditorAddDialog/index.d.ts +6 -0
  137. package/dist/declarations/application/shells/charcell/components/EditorPanel/index.d.ts +2 -0
  138. package/dist/declarations/application/shells/charcell/components/EventsRow/index.d.ts +4 -0
  139. package/dist/declarations/application/shells/charcell/components/HeadingRow/index.d.ts +6 -0
  140. package/dist/declarations/application/shells/charcell/components/Hint/index.d.ts +11 -0
  141. package/dist/declarations/application/shells/charcell/components/HtmlWarnings/index.d.ts +5 -0
  142. package/dist/declarations/application/shells/charcell/components/KeyHints/index.d.ts +2 -0
  143. package/dist/declarations/application/shells/charcell/components/KitCodeBlock/index.d.ts +5 -0
  144. package/dist/declarations/application/shells/charcell/components/Markdown/index.d.ts +3 -0
  145. package/dist/declarations/application/shells/charcell/components/Navigation/index.d.ts +8 -0
  146. package/dist/declarations/application/shells/charcell/components/NavigationSplit/index.d.ts +7 -0
  147. package/dist/declarations/application/shells/charcell/components/OptionControls/index.d.ts +7 -0
  148. package/dist/declarations/application/shells/charcell/components/PaneStatus/index.d.ts +2 -0
  149. package/dist/declarations/application/shells/charcell/components/PaneWidth/index.d.ts +4 -0
  150. package/dist/declarations/application/shells/charcell/components/PreviewGrid/index.d.ts +7 -0
  151. package/dist/declarations/application/shells/charcell/components/PreviewPane/index.d.ts +9 -0
  152. package/dist/declarations/application/shells/charcell/components/PromptBar/index.d.ts +1 -0
  153. package/dist/declarations/application/shells/charcell/components/ScenarioRow/index.d.ts +2 -0
  154. package/dist/declarations/application/shells/charcell/components/Select/index.d.ts +16 -0
  155. package/dist/declarations/application/shells/charcell/components/SlotOutlet/index.d.ts +5 -0
  156. package/dist/declarations/application/shells/charcell/components/StageBar/index.d.ts +2 -0
  157. package/dist/declarations/application/shells/charcell/components/StageSplit/index.d.ts +17 -0
  158. package/dist/declarations/application/shells/charcell/components/StatusBar/index.d.ts +1 -0
  159. package/dist/declarations/application/shells/charcell/components/ViewControls/index.d.ts +9 -0
  160. package/dist/declarations/application/shells/charcell/components/ViewHeading/index.d.ts +4 -0
  161. package/dist/declarations/application/shells/charcell/components/ViewStage/index.d.ts +4 -0
  162. package/dist/declarations/application/shells/charcell/components/WrapToggle/index.d.ts +1 -0
  163. package/dist/declarations/application/shells/charcell/configuration.d.ts +31 -0
  164. package/dist/declarations/application/shells/charcell/controller-context.d.ts +9 -0
  165. package/dist/declarations/application/shells/charcell/fit-labels.d.ts +18 -0
  166. package/dist/declarations/application/shells/charcell/html-warnings.d.ts +5 -0
  167. package/dist/declarations/application/shells/charcell/index.d.ts +39 -0
  168. package/dist/declarations/application/shells/charcell/placement.d.ts +7 -0
  169. package/dist/declarations/application/shells/charcell/shell-options.d.ts +15 -0
  170. package/dist/declarations/application/shells/charcell/shell.d.ts +9 -0
  171. package/dist/declarations/application/shells/charcell/split-reset.d.ts +30 -0
  172. package/dist/declarations/application/shells/charcell/stacked-rows.d.ts +58 -0
  173. package/dist/declarations/application/shells/charcell/stage-toggles.d.ts +28 -0
  174. package/dist/declarations/src/controller/catalog.d.ts +339 -0
  175. package/dist/declarations/src/controller/create-preview-controller.d.ts +532 -0
  176. package/dist/declarations/src/controller/editor-tree.d.ts +161 -0
  177. package/dist/declarations/src/controller/html-source.d.ts +62 -0
  178. package/dist/declarations/src/controller/index.d.ts +9 -0
  179. package/dist/declarations/src/controller/persistence.d.ts +191 -0
  180. package/dist/declarations/src/controller/regeneration.d.ts +30 -0
  181. package/dist/declarations/src/controller/source.d.ts +80 -0
  182. package/dist/declarations/src/controller/store.d.ts +27 -0
  183. package/dist/declarations/src/emit/common.d.ts +103 -0
  184. package/dist/declarations/src/emit/manifest.d.ts +138 -0
  185. package/dist/declarations/src/emit/source.d.ts +87 -0
  186. package/dist/declarations/src/lib/jsx-roots.d.ts +22 -0
  187. package/dist/declarations/src/lib/module-of-source.d.ts +18 -0
  188. package/dist/declarations/src/lib/naming.d.ts +29 -0
  189. package/dist/declarations/src/lib/react-spelling.d.ts +68 -0
  190. package/dist/declarations/src/lib/scenario-story.d.ts +41 -0
  191. package/dist/declarations/src/lib/slot-fill.d.ts +15 -0
  192. package/dist/declarations/src/lib/types.d.ts +741 -0
  193. package/dist/declarations/src/options.d.ts +224 -0
  194. package/dist/declarations/src/protocol.d.ts +541 -0
  195. package/dist/declarations/src/react-view.d.ts +22 -0
  196. package/dist/declarations/src/react.d.ts +17 -0
  197. package/dist/declarations/src/shell.d.ts +99 -0
  198. package/dist/declarations/src/views.d.ts +152 -0
  199. package/dist/development-server.d.ts +121 -0
  200. package/dist/development-server.js +331 -0
  201. package/dist/emit/common.d.ts +103 -0
  202. package/dist/emit/common.js +170 -0
  203. package/dist/emit/html-source.d.ts +46 -0
  204. package/dist/emit/html-source.js +322 -0
  205. package/dist/emit/manifest.d.ts +138 -0
  206. package/dist/emit/manifest.js +74 -0
  207. package/dist/emit/react.d.ts +16 -0
  208. package/dist/emit/react.js +210 -0
  209. package/dist/emit/scratch.d.ts +40 -0
  210. package/dist/emit/scratch.js +116 -0
  211. package/dist/emit/source.d.ts +87 -0
  212. package/dist/emit/source.js +789 -0
  213. package/dist/emit/svelte.d.ts +9 -0
  214. package/dist/emit/svelte.js +177 -0
  215. package/dist/emit/vue.d.ts +2 -0
  216. package/dist/emit/vue.js +152 -0
  217. package/dist/enumerate.d.ts +2 -0
  218. package/dist/enumerate.js +162 -0
  219. package/dist/generate.d.ts +43 -0
  220. package/dist/generate.js +302 -0
  221. package/dist/html-stylesheet.d.ts +43 -0
  222. package/dist/html-stylesheet.js +145 -0
  223. package/dist/index.d.ts +18 -0
  224. package/dist/index.js +21 -0
  225. package/dist/landing.d.ts +16 -0
  226. package/dist/landing.js +45 -0
  227. package/dist/lib/exported-types.d.ts +42 -0
  228. package/dist/lib/exported-types.js +86 -0
  229. package/dist/lib/html-attributes.d.ts +2 -0
  230. package/dist/lib/html-attributes.js +111 -0
  231. package/dist/lib/html-warnings.d.ts +19 -0
  232. package/dist/lib/html-warnings.js +79 -0
  233. package/dist/lib/jsx-roots.d.ts +22 -0
  234. package/dist/lib/jsx-roots.js +243 -0
  235. package/dist/lib/module-of-source.d.ts +18 -0
  236. package/dist/lib/module-of-source.js +24 -0
  237. package/dist/lib/naming.d.ts +29 -0
  238. package/dist/lib/naming.js +56 -0
  239. package/dist/lib/parse-type.d.ts +32 -0
  240. package/dist/lib/parse-type.js +103 -0
  241. package/dist/lib/react-spelling.d.ts +68 -0
  242. package/dist/lib/react-spelling.js +197 -0
  243. package/dist/lib/scenario-story.d.ts +41 -0
  244. package/dist/lib/scenario-story.js +84 -0
  245. package/dist/lib/slot-fill.d.ts +15 -0
  246. package/dist/lib/slot-fill.js +92 -0
  247. package/dist/lib/template-files.d.ts +14 -0
  248. package/dist/lib/template-files.js +25 -0
  249. package/dist/lib/types.d.ts +741 -0
  250. package/dist/lib/types.js +13 -0
  251. package/dist/lib/void-elements.d.ts +7 -0
  252. package/dist/lib/void-elements.js +13 -0
  253. package/dist/load.d.ts +37 -0
  254. package/dist/load.js +82 -0
  255. package/dist/model.d.ts +44 -0
  256. package/dist/model.js +464 -0
  257. package/dist/options.d.ts +224 -0
  258. package/dist/options.js +223 -0
  259. package/dist/prop-types.d.ts +26 -0
  260. package/dist/prop-types.js +102 -0
  261. package/dist/props-from.d.ts +84 -0
  262. package/dist/props-from.js +510 -0
  263. package/dist/protocol.d.ts +541 -0
  264. package/dist/protocol.js +819 -0
  265. package/dist/react-view.d.ts +22 -0
  266. package/dist/react-view.js +36 -0
  267. package/dist/react.d.ts +17 -0
  268. package/dist/react.js +23 -0
  269. package/dist/sass-importers.d.ts +26 -0
  270. package/dist/sass-importers.js +32 -0
  271. package/dist/shell-acceptance.d.ts +21 -0
  272. package/dist/shell-acceptance.js +37 -0
  273. package/dist/shell-page.d.ts +36 -0
  274. package/dist/shell-page.js +90 -0
  275. package/dist/shell-peers.d.ts +38 -0
  276. package/dist/shell-peers.js +61 -0
  277. package/dist/shell.d.ts +99 -0
  278. package/dist/shell.js +52 -0
  279. package/dist/shells/charcell/page.d.ts +8 -0
  280. package/dist/shells/charcell/page.js +69 -0
  281. package/dist/story-source.d.ts +113 -0
  282. package/dist/story-source.js +271 -0
  283. package/dist/story.d.ts +5 -0
  284. package/dist/story.js +28 -0
  285. package/dist/testing.d.ts +218 -0
  286. package/dist/testing.js +284 -0
  287. package/dist/views.d.ts +152 -0
  288. package/dist/views.js +7 -0
  289. package/dist/vite-configuration.d.ts +114 -0
  290. package/dist/vite-configuration.js +578 -0
  291. package/package.json +123 -3
  292. package/src/build.ts +51 -0
  293. package/src/check.ts +1062 -0
  294. package/src/cli.ts +123 -0
  295. package/src/context.ts +1168 -0
  296. package/src/controller/catalog.ts +719 -0
  297. package/src/controller/create-preview-controller.ts +2683 -0
  298. package/src/controller/editor-tree.ts +530 -0
  299. package/src/controller/html-source.ts +114 -0
  300. package/src/controller/index.ts +105 -0
  301. package/src/controller/persistence.ts +403 -0
  302. package/src/controller/regeneration.ts +55 -0
  303. package/src/controller/source.ts +333 -0
  304. package/src/controller/store.ts +55 -0
  305. package/src/development-server.ts +442 -0
  306. package/src/emit/common.ts +201 -0
  307. package/src/emit/html-source.ts +402 -0
  308. package/src/emit/manifest.ts +241 -0
  309. package/src/emit/react.ts +263 -0
  310. package/src/emit/scratch.ts +175 -0
  311. package/src/emit/source.ts +1094 -0
  312. package/src/emit/svelte.ts +230 -0
  313. package/src/emit/vue.ts +194 -0
  314. package/src/enumerate.ts +220 -0
  315. package/src/generate.ts +443 -0
  316. package/src/html-stylesheet.ts +173 -0
  317. package/src/index.ts +60 -0
  318. package/src/landing.ts +58 -0
  319. package/src/lib/exported-types.ts +114 -0
  320. package/src/lib/html-attributes.ts +113 -0
  321. package/src/lib/html-warnings.ts +81 -0
  322. package/src/lib/jsx-roots.ts +238 -0
  323. package/src/lib/module-of-source.ts +26 -0
  324. package/src/lib/naming.ts +65 -0
  325. package/src/lib/parse-type.ts +143 -0
  326. package/src/lib/react-spelling.ts +235 -0
  327. package/src/lib/scenario-story.ts +97 -0
  328. package/src/lib/slot-fill.ts +102 -0
  329. package/src/lib/template-files.ts +31 -0
  330. package/src/lib/types.ts +778 -0
  331. package/src/lib/void-elements.ts +15 -0
  332. package/src/load.ts +144 -0
  333. package/src/model.ts +568 -0
  334. package/src/options.ts +435 -0
  335. package/src/prop-types.ts +133 -0
  336. package/src/props-from.ts +678 -0
  337. package/src/protocol.ts +1135 -0
  338. package/src/react-view.ts +45 -0
  339. package/src/react.ts +34 -0
  340. package/src/sass-importers.ts +45 -0
  341. package/src/shell-acceptance.ts +45 -0
  342. package/src/shell-page.ts +133 -0
  343. package/src/shell-peers.ts +70 -0
  344. package/src/shell.ts +194 -0
  345. package/src/shells/charcell/page.ts +82 -0
  346. package/src/story-source.ts +391 -0
  347. package/src/story.ts +42 -0
  348. package/src/testing.ts +497 -0
  349. package/src/views.ts +183 -0
  350. package/src/vite-configuration.ts +675 -0
@@ -0,0 +1,224 @@
1
+ /** An option's runtime value: a string (a choice) or a boolean. */
2
+ export type OptionValue = string | boolean;
3
+ /** One value a choice option offers. */
4
+ export interface OptionChoice {
5
+ value: string;
6
+ label: string;
7
+ }
8
+ /** What kind of value an option holds: one of its `values`, or a boolean. */
9
+ export type OptionKind = 'choice' | 'boolean';
10
+ /** The group of the kit's own settings, such as its theme: what sets up the
11
+ * kit as a whole rather than the setting a component is shown in. */
12
+ export declare const KIT_OPTION_GROUP = "kit";
13
+ /** The group of the options that set what a component is shown in, such as a
14
+ * color mode, a surface or the padding around it. An option without a group
15
+ * belongs to it. */
16
+ export declare const CONTEXT_OPTION_GROUP = "context";
17
+ /** The prefix of a shell option's id in the preview's state, address and
18
+ * storage: a shell's `mode` is `shell.mode`, so it cannot collide with a kit
19
+ * option of the same name. */
20
+ export declare const SHELL_OPTION_PREFIX = "shell.";
21
+ /** Which element an apply targets. `'root'` is the preview `<html>` (the
22
+ * default), `'body'` is `<body>`, and `{ ref }` is a named node in the
23
+ * kit's `mount` wrapper (resolved against the ref map). */
24
+ export type ApplyTarget = 'root' | 'body' | {
25
+ ref: string;
26
+ };
27
+ /** How an option affects the preview canvas. The union is open by design - a
28
+ * new strategy slots in without touching the registry. `root-attribute` /
29
+ * `class` / `css-var` may carry a `target` to hit a `mount` wrapper
30
+ * node instead of the document root. */
31
+ export type OptionApply =
32
+ /** Set `<attribute>="<value>"` on the target element (default the preview
33
+ * `<html>`); `false` or an empty value removes it. With `omitAtDefault`,
34
+ * the option's default value removes it too, for a kit whose default
35
+ * renders with no attribute, such as a default color mode. */
36
+ {
37
+ type: 'root-attribute';
38
+ attribute: string;
39
+ target?: ApplyTarget;
40
+ omitAtDefault?: boolean;
41
+ }
42
+ /** Swap the active theme stylesheet by value (`themes/<id>/theme.css`
43
+ * under the URL the preview is served from). */
44
+ | {
45
+ type: 'stylesheet';
46
+ }
47
+ /** Toggle `className` on the target by the value's truth; without
48
+ * `className`, set the value as the target's `data-<namePrefix>-preview-class`
49
+ * attribute for the kit's CSS to key off, `false` or an empty value removing
50
+ * it. `on` names `'root'` or `'body'`; `target` names either as well, or
51
+ * a wrapper node, and wins where both are given. */
52
+ | {
53
+ type: 'class';
54
+ on?: 'root' | 'body';
55
+ className?: string;
56
+ target?: ApplyTarget;
57
+ }
58
+ /** Set a CSS custom property to the value on the target element; `false` or
59
+ * an empty value removes it. */
60
+ | {
61
+ type: 'css-var';
62
+ var: string;
63
+ target?: ApplyTarget;
64
+ };
65
+ /**
66
+ * One preview option: what it means, never where or how it is shown. Its kind
67
+ * follows from its fields - an option with `values` is a choice among them
68
+ * with a string `default`, and one without is a boolean with a boolean
69
+ * `default` - and the preview's interface picks the widget for that kind.
70
+ */
71
+ export interface PreviewOption {
72
+ /** Stable key - the message payload key and the manifest per-story override key. */
73
+ id: string;
74
+ /** The option's name, as its control is labeled. */
75
+ label: string;
76
+ /** A longer description, such as a control's tooltip; markdown allowed. */
77
+ title?: string;
78
+ /** The values of a choice option. Omitted, the option is a boolean. */
79
+ values?: OptionChoice[];
80
+ /** The starting value: one of `values` for a choice, a boolean otherwise. */
81
+ default: OptionValue;
82
+ /** A free-form hint for where the option belongs: `'context'` (the
83
+ * default) for the setting a component is shown in, such as its color
84
+ * mode or the padding around it; `'kit'` for the kit's own settings, such
85
+ * as its theme; or a name of the kit's choosing for a set that belongs
86
+ * together, such as canvas settings. An interface places a group it does
87
+ * not know in a default place. */
88
+ group?: string;
89
+ /** `global` = one value for the whole session; `story` = a value per
90
+ * selected story, seeded from its story file, that lasts until another story
91
+ * is selected. */
92
+ scope: 'global' | 'story';
93
+ /** How the value hits the canvas. */
94
+ apply: OptionApply;
95
+ }
96
+ /**
97
+ * An option a shell declares for itself, such as its own color mode or
98
+ * density: a {@link PreviewOption} without `apply` or `scope`. Its value
99
+ * never reaches the kit's iframes; the shell reads it from the preview's
100
+ * state under the id {@link shellOptionId} gives it, and it is global.
101
+ */
102
+ export type PreviewShellOption = Omit<PreviewOption, 'apply' | 'scope'>;
103
+ /**
104
+ * The id a shell option has in the preview's state, address and storage.
105
+ *
106
+ * @param id - The option's id as the shell declares it.
107
+ * @returns The id prefixed with `shell.`.
108
+ * @example
109
+ * ```ts
110
+ * shellOptionId('mode'); // 'shell.mode'
111
+ * ```
112
+ */
113
+ export declare function shellOptionId(id: string): string;
114
+ /** The kit-authored canvas styling: what the preview page paints with. The
115
+ * preview's canvas stylesheet is a generic template over these values - the
116
+ * kit's token vocabulary lives HERE, never in the preview. Any wrapper
117
+ * geometry (surface fills, insets, padding) a kit wants lives in `extraCss`,
118
+ * keyed off the nodes it declares in `mount`. Values are raw CSS. */
119
+ export interface PreviewCanvasConfiguration {
120
+ /** Prefix for every preview-owned DOM name - injected element ids, the
121
+ * class-apply data attribute (`data-<prefix>-preview-class`). */
122
+ namePrefix: string;
123
+ /** Canvas page background, painted on `<body>`. Optional: a kit whose
124
+ * stylesheet already states its page canvas (the kit's own `html`/`body`
125
+ * rules, loaded with the theme) omits it, and the preview paints nothing -
126
+ * the preview document *is* the kit's page, and what the page is stays
127
+ * the kit's (and the theme's) call rather than a value restated here. */
128
+ pageBackground?: string;
129
+ /** Extra kit-authored CSS appended to the canvas stylesheet - where a kit
130
+ * styles its `mount` wrapper nodes and any option-driven geometry. */
131
+ extraCss?: string;
132
+ }
133
+ /** The canvas of a custom view's iframe, which shows a kit-authored view
134
+ * rather than a mounted component: no `mount` wrapper, so none of the
135
+ * component frame's geometry applies. A kit sets it as `viewCanvas`;
136
+ * without it a view gets `canvas.pageBackground` and nothing else. The
137
+ * name prefix stays `canvas.namePrefix`. Options still apply to a view,
138
+ * except one targeting a `mount` node by `ref`, which a view lacks. */
139
+ export interface PreviewViewCanvasConfiguration {
140
+ /** The view page's background, painted on `<body>`. */
141
+ pageBackground?: string;
142
+ /** Extra kit-authored CSS for the view page. */
143
+ extraCss?: string;
144
+ }
145
+ /** A node in a kit's `mount` wrapper tree - plain, framework-agnostic
146
+ * DOM rendered around the `#app` mount, identical across every preview iframe.
147
+ * The preview knows nothing of what these nodes mean; the kit styles them via
148
+ * `canvas.extraCss` and targets options at them by `ref`. */
149
+ export interface PreviewMountNode {
150
+ /** Element tag. Defaults to `'div'`. */
151
+ tag?: string;
152
+ /** Static attributes rendered on the element (e.g. a surface-cascade attribute). */
153
+ attributes?: Record<string, string>;
154
+ /** Static class names. */
155
+ classes?: string[];
156
+ /** Inline `style` text. */
157
+ style?: string;
158
+ /** Name for the ref map - the handle `apply.target = { ref }` resolves to,
159
+ * and how kit CSS and option targeting address this node. */
160
+ ref?: string;
161
+ /** Child nodes, rendered in order. */
162
+ children?: PreviewMountNode[];
163
+ /** Marks the node the `#app` mount is reparented into. Exactly one node in
164
+ * the tree sets this. */
165
+ mount?: boolean;
166
+ }
167
+ /**
168
+ * The kind of an option: a choice when it has `values`, a boolean otherwise.
169
+ *
170
+ * @param option - The option.
171
+ * @returns `'choice'` or `'boolean'`.
172
+ * @example
173
+ * ```ts
174
+ * optionKind({ values: [{ value: 'light', label: 'light' }] }); // 'choice'
175
+ * optionKind({}); // 'boolean'
176
+ * ```
177
+ */
178
+ export declare function optionKind(option: Pick<PreviewOption, 'values'>): OptionKind;
179
+ /**
180
+ * The group an option belongs to: its `group`, or `'context'` without one.
181
+ *
182
+ * @param option - The option.
183
+ * @returns The group name.
184
+ * @example
185
+ * ```ts
186
+ * optionGroup({ group: 'kit' }); // 'kit'
187
+ * optionGroup({}); // 'context'
188
+ * ```
189
+ */
190
+ export declare function optionGroup(option: Pick<PreviewOption, 'group'>): string;
191
+ /**
192
+ * Whether `value` is a value `option` can hold: one of its values for a
193
+ * choice, a boolean for a boolean.
194
+ *
195
+ * @param option - The option.
196
+ * @param value - The candidate value.
197
+ * @returns Whether the option accepts it.
198
+ */
199
+ export declare function acceptsOptionValue(option: Pick<PreviewOption, 'values'>, value: unknown): value is OptionValue;
200
+ /**
201
+ * The problems with a kit's options, each naming the option: a missing or
202
+ * repeated id, a scope other than `global` or `story`, an option whose
203
+ * kind is ambiguous - a choice needs `values` and a string `default` among
204
+ * them, a boolean no `values` and a boolean `default` - and a key the
205
+ * option, one of its values or its `apply` does not take. Empty when every
206
+ * option is sound.
207
+ *
208
+ * @param options - The preview block's `options`.
209
+ * @returns One message per problem.
210
+ */
211
+ export declare function optionProblems(options: unknown): string[];
212
+ /** The option registry keyed by id - O(1) lookup when applying a payload. */
213
+ export declare function optionsById(options: PreviewOption[]): Record<string, PreviewOption>;
214
+ /** Default values for the options in a scope (or all scopes). */
215
+ export declare function optionDefaults(options: Array<Pick<PreviewOption, 'id' | 'default' | 'scope'>>, scope?: 'global' | 'story'): Record<string, OptionValue>;
216
+ /**
217
+ * The served URL of a theme's stylesheet (the generator copies it there).
218
+ *
219
+ * @param themeId - The theme's id.
220
+ * @param baseUrl - The URL the preview is served under, ending in `/`; the
221
+ * root of the origin, `/`, by default.
222
+ * @returns The stylesheet's URL, such as `/themes/light/theme.css`.
223
+ */
224
+ export declare function themeHref(themeId: string, baseUrl?: string): string;