forgebook 0.3.3 → 0.4.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 (690) hide show
  1. package/README.md +914 -72
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +175 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +57 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +90 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +196 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +297 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +29 -5
  187. package/dist/src/addressArgs.js +58 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +100 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +66 -184
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +30 -12
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PropFields.d.ts +3 -1
  307. package/dist/src/shell/PropFields.js +9 -6
  308. package/dist/src/shell/PropRows.d.ts +23 -2
  309. package/dist/src/shell/PropRows.js +58 -19
  310. package/dist/src/shell/PropsTab.d.ts +12 -5
  311. package/dist/src/shell/PropsTab.js +9 -21
  312. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  313. package/dist/src/shell/RefStoryPage.js +123 -0
  314. package/dist/src/shell/SearchPanel.js +51 -24
  315. package/dist/src/shell/Shell.d.ts +18 -0
  316. package/dist/src/shell/Shell.js +137 -22
  317. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  318. package/dist/src/shell/ShortcutHelp.js +66 -0
  319. package/dist/src/shell/Sidebar.d.ts +17 -4
  320. package/dist/src/shell/Sidebar.js +92 -41
  321. package/dist/src/shell/SidebarDocs.js +2 -2
  322. package/dist/src/shell/SidebarEntries.js +5 -3
  323. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  324. package/dist/src/shell/SidebarHandle.js +4 -4
  325. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  326. package/dist/src/shell/SidebarRefs.js +99 -0
  327. package/dist/src/shell/SidebarSearch.js +37 -9
  328. package/dist/src/shell/SignatureReference.js +3 -1
  329. package/dist/src/shell/Stage.d.ts +10 -2
  330. package/dist/src/shell/Stage.js +29 -49
  331. package/dist/src/shell/StatusBadges.d.ts +54 -0
  332. package/dist/src/shell/StatusBadges.js +77 -0
  333. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  334. package/dist/src/shell/StoryCodeBlock.js +7 -6
  335. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  336. package/dist/src/shell/SwitchGallery.js +17 -0
  337. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  338. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  339. package/dist/src/shell/TagFilter.d.ts +24 -0
  340. package/dist/src/shell/TagFilter.js +45 -0
  341. package/dist/src/shell/TagViews.d.ts +39 -0
  342. package/dist/src/shell/TagViews.js +20 -0
  343. package/dist/src/shell/Toolbar.d.ts +4 -1
  344. package/dist/src/shell/Toolbar.js +17 -7
  345. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  346. package/dist/src/shell/ToolbarControl.js +23 -6
  347. package/dist/src/shell/ViewMenuPanel.js +6 -1
  348. package/dist/src/shell/argChecks.d.ts +22 -0
  349. package/dist/src/shell/argChecks.js +20 -0
  350. package/dist/src/shell/asideStory.js +7 -2
  351. package/dist/src/shell/audienceSections.css +9 -9
  352. package/dist/src/shell/catalogueContext.d.ts +1 -1
  353. package/dist/src/shell/catalogueContext.js +6 -1
  354. package/dist/src/shell/codeSpans.d.ts +27 -0
  355. package/dist/src/shell/codeSpans.js +76 -0
  356. package/dist/src/shell/compareVariants.d.ts +4 -2
  357. package/dist/src/shell/compareVariants.js +16 -8
  358. package/dist/src/shell/composition.d.ts +23 -0
  359. package/dist/src/shell/composition.js +26 -0
  360. package/dist/src/shell/controlCycle.d.ts +1 -1
  361. package/dist/src/shell/controlCycle.js +3 -2
  362. package/dist/src/shell/customControls.d.ts +55 -0
  363. package/dist/src/shell/customControls.js +70 -0
  364. package/dist/src/shell/docPage.css +22 -22
  365. package/dist/src/shell/dockTabs.d.ts +19 -3
  366. package/dist/src/shell/dockTabs.js +28 -20
  367. package/dist/src/shell/embed.css +7 -7
  368. package/dist/src/shell/framesOrigin.d.ts +7 -0
  369. package/dist/src/shell/framesOrigin.js +1 -1
  370. package/dist/src/shell/galleryPlace.d.ts +20 -0
  371. package/dist/src/shell/galleryPlace.js +26 -0
  372. package/dist/src/shell/icons.d.ts +1 -0
  373. package/dist/src/shell/icons.js +1 -0
  374. package/dist/src/shell/keyboard.d.ts +14 -12
  375. package/dist/src/shell/keyboard.js +21 -6
  376. package/dist/src/shell/laterStrings.d.ts +29 -0
  377. package/dist/src/shell/laterStrings.js +42 -3
  378. package/dist/src/shell/mountShell.js +3 -0
  379. package/dist/src/shell/pageStrings.d.ts +4 -0
  380. package/dist/src/shell/pageStrings.js +4 -0
  381. package/dist/src/shell/pageTagView.d.ts +18 -0
  382. package/dist/src/shell/pageTagView.js +10 -0
  383. package/dist/src/shell/playMemory.d.ts +14 -0
  384. package/dist/src/shell/playMemory.js +8 -0
  385. package/dist/src/shell/propNotes.d.ts +23 -0
  386. package/dist/src/shell/propNotes.js +37 -0
  387. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  388. package/dist/src/shell/refIndexLoad.js +38 -0
  389. package/dist/src/shell/refParts.d.ts +34 -0
  390. package/dist/src/shell/refParts.js +9 -0
  391. package/dist/src/shell/refStory.css +21 -0
  392. package/dist/src/shell/refStrings.d.ts +13 -0
  393. package/dist/src/shell/refStrings.js +21 -0
  394. package/dist/src/shell/search.css +11 -11
  395. package/dist/src/shell/shell.css +348 -168
  396. package/dist/src/shell/shellScheme.js +2 -2
  397. package/dist/src/shell/shortcutHelp.css +64 -0
  398. package/dist/src/shell/stageArgs.d.ts +53 -0
  399. package/dist/src/shell/stageArgs.js +64 -0
  400. package/dist/src/shell/statusBadges.css +51 -0
  401. package/dist/src/shell/strings.d.ts +7 -16
  402. package/dist/src/shell/strings.js +12 -17
  403. package/dist/src/shell/switchGallery.css +104 -0
  404. package/dist/src/shell/tagFilter.css +46 -0
  405. package/dist/src/shell/tagView.d.ts +20 -0
  406. package/dist/src/shell/tagView.js +10 -0
  407. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  408. package/dist/src/shell/useAddressArgs.js +56 -11
  409. package/dist/src/shell/useControlKeys.js +2 -2
  410. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  411. package/dist/src/shell/useEditedProblems.js +40 -0
  412. package/dist/src/shell/useFrameMessages.js +3 -0
  413. package/dist/src/shell/useListedTree.d.ts +13 -0
  414. package/dist/src/shell/useListedTree.js +32 -0
  415. package/dist/src/shell/usePageFrames.js +2 -2
  416. package/dist/src/shell/usePopover.d.ts +5 -0
  417. package/dist/src/shell/usePopover.js +7 -1
  418. package/dist/src/shell/useRefIndex.d.ts +22 -0
  419. package/dist/src/shell/useRefIndex.js +36 -0
  420. package/dist/src/shell/useScrollStops.d.ts +20 -0
  421. package/dist/src/shell/useScrollStops.js +41 -0
  422. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  423. package/dist/src/shell/useShortcutHelp.js +32 -0
  424. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  425. package/dist/src/shell/useSidebarOverlay.js +12 -4
  426. package/dist/src/shell/useStoryCode.d.ts +2 -1
  427. package/dist/src/shell/useStoryCode.js +12 -7
  428. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  429. package/dist/src/shell/useToolbarLayout.js +2 -2
  430. package/dist/src/shell/useWorstCase.d.ts +8 -2
  431. package/dist/src/shell/useWorstCase.js +2 -2
  432. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  433. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  434. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  435. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  436. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  437. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  438. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  439. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  440. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  441. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  442. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  443. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  444. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  445. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  446. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  447. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  448. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  449. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  450. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  451. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  452. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  453. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  454. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  455. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  456. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  457. package/dist/src/shell/worstArgs.d.ts +8 -5
  458. package/dist/src/shell/worstArgs.js +14 -7
  459. package/dist/src/shellTheme.d.ts +1 -1
  460. package/dist/src/shellTheme.js +15 -1
  461. package/dist/src/shellTheme.types.d.ts +4 -0
  462. package/dist/src/shellWord.d.ts +12 -0
  463. package/dist/src/shellWord.js +15 -0
  464. package/dist/src/sourceFiles.js +2 -1
  465. package/dist/src/storyArgTypes.d.ts +57 -0
  466. package/dist/src/storyArgTypes.js +195 -0
  467. package/dist/src/storyBackground.js +14 -3
  468. package/dist/src/storyCheck.d.ts +85 -3
  469. package/dist/src/storyCheck.js +23 -1
  470. package/dist/src/storyCodeText.d.ts +46 -0
  471. package/dist/src/storyCodeText.js +27 -0
  472. package/dist/src/storyControls.d.ts +100 -0
  473. package/dist/src/storyControls.js +100 -0
  474. package/dist/src/storyStatuses.d.ts +55 -0
  475. package/dist/src/storyStatuses.js +104 -0
  476. package/dist/src/storyTagNames.d.ts +25 -0
  477. package/dist/src/storyTagNames.js +25 -0
  478. package/dist/src/storyTags.d.ts +29 -0
  479. package/dist/src/storyTags.js +85 -0
  480. package/dist/src/storyTree.d.ts +13 -0
  481. package/dist/src/storyTree.js +24 -4
  482. package/dist/src/storybookArgs.d.ts +24 -0
  483. package/dist/src/storybookArgs.js +185 -0
  484. package/dist/src/switches.d.ts +66 -3
  485. package/dist/src/switches.js +42 -1
  486. package/dist/src/valueSchema.d.ts +28 -0
  487. package/dist/src/valueSchema.js +196 -0
  488. package/dist/src/valueShape.d.ts +94 -0
  489. package/dist/src/valueShape.js +25 -0
  490. package/dist/src/viewState.d.ts +8 -3
  491. package/dist/src/viewState.js +27 -10
  492. package/dist/src/vite/adapter.d.ts +40 -2
  493. package/dist/src/vite/adapter.js +1 -0
  494. package/dist/src/vite/agent.types.d.ts +347 -7
  495. package/dist/src/vite/agentApi.d.ts +23 -0
  496. package/dist/src/vite/agentApi.js +90 -17
  497. package/dist/src/vite/agentIndex.d.ts +0 -2
  498. package/dist/src/vite/agentIndex.js +5 -6
  499. package/dist/src/vite/agentRoutes.d.ts +20 -1
  500. package/dist/src/vite/agentRoutes.js +106 -65
  501. package/dist/src/vite/agentStatuses.d.ts +42 -0
  502. package/dist/src/vite/agentStatuses.js +67 -0
  503. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  504. package/dist/src/vite/agentStoryCode.js +38 -0
  505. package/dist/src/vite/agentVisibility.d.ts +47 -0
  506. package/dist/src/vite/agentVisibility.js +174 -0
  507. package/dist/src/vite/appAudit.d.ts +134 -0
  508. package/dist/src/vite/appAudit.js +333 -0
  509. package/dist/src/vite/appBuildOption.d.ts +53 -0
  510. package/dist/src/vite/appBuildOption.js +55 -0
  511. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  512. package/dist/src/vite/appTokenFiles.js +433 -0
  513. package/dist/src/vite/appTokens.d.ts +23 -0
  514. package/dist/src/vite/appTokens.js +275 -0
  515. package/dist/src/vite/builtTexts.d.ts +10 -0
  516. package/dist/src/vite/builtTexts.js +59 -22
  517. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  518. package/dist/src/vite/catalogueConfig.js +15 -3
  519. package/dist/src/vite/changeCoverage.d.ts +74 -0
  520. package/dist/src/vite/changeCoverage.js +120 -0
  521. package/dist/src/vite/changedRoute.d.ts +30 -0
  522. package/dist/src/vite/changedRoute.js +197 -0
  523. package/dist/src/vite/checkCode.d.ts +105 -3
  524. package/dist/src/vite/checkCode.js +323 -36
  525. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  526. package/dist/src/vite/checkoutWatch.js +287 -0
  527. package/dist/src/vite/closeWatch.d.ts +8 -0
  528. package/dist/src/vite/closeWatch.js +1 -1
  529. package/dist/src/vite/componentCache.d.ts +8 -0
  530. package/dist/src/vite/componentCache.js +66 -0
  531. package/dist/src/vite/componentGraph.d.ts +71 -0
  532. package/dist/src/vite/componentGraph.js +133 -0
  533. package/dist/src/vite/componentRules.d.ts +33 -0
  534. package/dist/src/vite/componentRules.js +105 -0
  535. package/dist/src/vite/componentScan.d.ts +69 -0
  536. package/dist/src/vite/componentScan.js +418 -0
  537. package/dist/src/vite/compositionCheck.d.ts +15 -0
  538. package/dist/src/vite/compositionCheck.js +243 -0
  539. package/dist/src/vite/config.d.ts +32 -1
  540. package/dist/src/vite/configFile.d.ts +14 -2
  541. package/dist/src/vite/configFile.js +124 -40
  542. package/dist/src/vite/configKeys.d.ts +15 -0
  543. package/dist/src/vite/configKeys.js +171 -0
  544. package/dist/src/vite/configLoadError.d.ts +23 -0
  545. package/dist/src/vite/configLoadError.js +71 -0
  546. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  547. package/dist/src/vite/cssDeclarations.js +290 -0
  548. package/dist/src/vite/cssImports.d.ts +14 -0
  549. package/dist/src/vite/cssImports.js +48 -0
  550. package/dist/src/vite/cssReferences.d.ts +54 -0
  551. package/dist/src/vite/cssReferences.js +157 -0
  552. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  553. package/dist/src/vite/cssTokenValues.js +233 -0
  554. package/dist/src/vite/designTokens.d.ts +24 -0
  555. package/dist/src/vite/designTokens.js +5 -1
  556. package/dist/src/vite/docsExtractor.d.ts +9 -3
  557. package/dist/src/vite/docsExtractor.js +11 -3
  558. package/dist/src/vite/docsProgram.d.ts +17 -4
  559. package/dist/src/vite/docsProgram.js +52 -11
  560. package/dist/src/vite/docsWorker.js +7 -2
  561. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  562. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  563. package/dist/src/vite/fileImports.d.ts +17 -0
  564. package/dist/src/vite/fileImports.js +57 -0
  565. package/dist/src/vite/findComponent.d.ts +10 -2
  566. package/dist/src/vite/findComponent.js +27 -22
  567. package/dist/src/vite/findRoute.js +3 -2
  568. package/dist/src/vite/forcedStates.d.ts +9 -2
  569. package/dist/src/vite/forcedStates.js +12 -3
  570. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  571. package/dist/src/vite/forgebookPlugin.js +52 -72
  572. package/dist/src/vite/frameErrors.d.ts +19 -0
  573. package/dist/src/vite/frameErrors.js +70 -0
  574. package/dist/src/vite/framesServer.d.ts +12 -0
  575. package/dist/src/vite/framesServer.js +21 -4
  576. package/dist/src/vite/functionComponentDocs.js +81 -12
  577. package/dist/src/vite/generatedModules.js +4 -2
  578. package/dist/src/vite/gitChange.d.ts +38 -5
  579. package/dist/src/vite/gitChange.js +71 -11
  580. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  581. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  582. package/dist/src/vite/hotSnippets.d.ts +38 -14
  583. package/dist/src/vite/hotSnippets.js +137 -39
  584. package/dist/src/vite/importedNames.d.ts +37 -0
  585. package/dist/src/vite/importedNames.js +138 -0
  586. package/dist/src/vite/indexFields.d.ts +6 -0
  587. package/dist/src/vite/indexFields.js +21 -0
  588. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  589. package/dist/src/vite/indexStoryFile.js +22 -157
  590. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  591. package/dist/src/vite/jsxCallSites.js +200 -0
  592. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  593. package/dist/src/vite/jsxInScripts.js +138 -0
  594. package/dist/src/vite/jsxTree.d.ts +20 -0
  595. package/dist/src/vite/jsxTree.js +163 -0
  596. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  597. package/dist/src/vite/lineAndColumn.js +18 -0
  598. package/dist/src/vite/lookAlikes.d.ts +65 -0
  599. package/dist/src/vite/lookAlikes.js +228 -0
  600. package/dist/src/vite/nearestToken.d.ts +17 -0
  601. package/dist/src/vite/nearestToken.js +9 -2
  602. package/dist/src/vite/packageEntries.d.ts +42 -0
  603. package/dist/src/vite/packageEntries.js +127 -0
  604. package/dist/src/vite/pages.d.ts +9 -1
  605. package/dist/src/vite/pages.js +108 -4
  606. package/dist/src/vite/pluginConfig.js +4 -0
  607. package/dist/src/vite/pluginIds.d.ts +2 -0
  608. package/dist/src/vite/pluginIds.js +5 -1
  609. package/dist/src/vite/pluginModules.d.ts +81 -11
  610. package/dist/src/vite/pluginModules.js +109 -21
  611. package/dist/src/vite/prebundled.d.ts +57 -15
  612. package/dist/src/vite/prebundled.js +80 -0
  613. package/dist/src/vite/previewTags.d.ts +25 -0
  614. package/dist/src/vite/previewTags.js +56 -0
  615. package/dist/src/vite/projectFiles.d.ts +54 -0
  616. package/dist/src/vite/projectFiles.js +116 -0
  617. package/dist/src/vite/projectPostcss.d.ts +70 -0
  618. package/dist/src/vite/projectPostcss.js +250 -0
  619. package/dist/src/vite/propDocs.d.ts +12 -0
  620. package/dist/src/vite/propDocs.js +130 -58
  621. package/dist/src/vite/propKind.d.ts +40 -0
  622. package/dist/src/vite/propKind.js +71 -0
  623. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  624. package/dist/src/vite/propTypeNotes.js +51 -0
  625. package/dist/src/vite/publishedExports.d.ts +27 -0
  626. package/dist/src/vite/publishedExports.js +298 -0
  627. package/dist/src/vite/realFolder.d.ts +6 -0
  628. package/dist/src/vite/realFolder.js +25 -0
  629. package/dist/src/vite/refsConfig.d.ts +39 -0
  630. package/dist/src/vite/refsConfig.js +54 -0
  631. package/dist/src/vite/reuseCheck.d.ts +45 -0
  632. package/dist/src/vite/reuseCheck.js +260 -0
  633. package/dist/src/vite/runningVersions.d.ts +33 -0
  634. package/dist/src/vite/runningVersions.js +25 -0
  635. package/dist/src/vite/scriptProblems.d.ts +60 -0
  636. package/dist/src/vite/scriptProblems.js +155 -0
  637. package/dist/src/vite/searchModule.js +3 -2
  638. package/dist/src/vite/searchRoute.js +4 -2
  639. package/dist/src/vite/shapeDocs.d.ts +36 -0
  640. package/dist/src/vite/shapeDocs.js +177 -0
  641. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  642. package/dist/src/vite/singleFileComponent.js +83 -0
  643. package/dist/src/vite/sourceText.d.ts +34 -0
  644. package/dist/src/vite/sourceText.js +72 -0
  645. package/dist/src/vite/sourceTokens.d.ts +7 -0
  646. package/dist/src/vite/sourceTokens.js +7 -2
  647. package/dist/src/vite/stackLines.d.ts +49 -0
  648. package/dist/src/vite/stackLines.js +96 -0
  649. package/dist/src/vite/storyCode.d.ts +22 -7
  650. package/dist/src/vite/storyCode.js +263 -37
  651. package/dist/src/vite/storyCoverage.d.ts +48 -0
  652. package/dist/src/vite/storyCoverage.js +179 -0
  653. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  654. package/dist/src/vite/storyFilesModule.js +105 -15
  655. package/dist/src/vite/storyPatterns.d.ts +31 -0
  656. package/dist/src/vite/storyPatterns.js +140 -5
  657. package/dist/src/vite/storyReach.d.ts +10 -2
  658. package/dist/src/vite/storyReach.js +15 -11
  659. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  660. package/dist/src/vite/storyTopLevel.js +146 -0
  661. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  662. package/dist/src/vite/storylessRoutes.js +210 -19
  663. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  664. package/dist/src/vite/switchValuesCheck.js +164 -0
  665. package/dist/src/vite/switchesDocument.d.ts +15 -0
  666. package/dist/src/vite/switchesDocument.js +47 -0
  667. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  668. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  669. package/dist/src/vite/textImports.d.ts +15 -0
  670. package/dist/src/vite/textImports.js +58 -0
  671. package/dist/src/vite/textModules.d.ts +6 -5
  672. package/dist/src/vite/textModules.js +13 -8
  673. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  674. package/dist/src/vite/tokenAnswers.js +11 -7
  675. package/dist/src/vite/typeParameters.d.ts +83 -0
  676. package/dist/src/vite/typeParameters.js +270 -0
  677. package/dist/src/vite/unionProps.d.ts +37 -0
  678. package/dist/src/vite/unionProps.js +121 -0
  679. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  680. package/dist/src/vite/unresolvedTokens.js +193 -0
  681. package/dist/src/vite/usageGraph.js +10 -52
  682. package/dist/src/vite/usageGuidance.d.ts +9 -2
  683. package/dist/src/vite/usageGuidance.js +36 -8
  684. package/dist/src/vite/usageImports.d.ts +35 -0
  685. package/dist/src/vite/usageImports.js +280 -0
  686. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  687. package/dist/src/vite/visibilityRoute.js +320 -0
  688. package/dist/src/worstCase.d.ts +2 -0
  689. package/dist/src/worstCase.js +2 -0
  690. package/package.json +28 -8
@@ -5,6 +5,18 @@
5
5
  --forgebook-radius-control-small: 6px;
6
6
  --forgebook-radius-control: 7px;
7
7
  --forgebook-radius-card: 12px;
8
+ --forgebook-focus-edge: inset 0 0 0 1px var(--forgebook-accent);
9
+ --forgebook-focus-halo: color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
10
+ --forgebook-text-display: 700 1.375rem/1.2 var(--forgebook-font-sans);
11
+ --forgebook-text-card-title: 600 0.875rem/1.3 var(--forgebook-font-sans);
12
+ --forgebook-text-body: 400 0.8125rem/1.4 var(--forgebook-font-sans);
13
+ --forgebook-text-row-label: 500 0.8125rem/1.35 var(--forgebook-font-sans);
14
+ --forgebook-text-row-compact: 400 0.78125rem/1.4 var(--forgebook-font-sans);
15
+ --forgebook-text-control: 500 0.75rem/1.3 var(--forgebook-font-sans);
16
+ --forgebook-text-caption: 400 0.6875rem/1.35 var(--forgebook-font-sans);
17
+ --forgebook-text-label: 600 0.6875rem/1.3 var(--forgebook-font-sans);
18
+ --forgebook-text-mono: 400 0.71875rem/1.4 var(--forgebook-font-mono);
19
+ --forgebook-text-mono-small: 400 0.6875rem/1.6 var(--forgebook-font-mono);
8
20
  --forgebook-window: #f6f6f8;
9
21
  --forgebook-sidebar: #ebebef;
10
22
  --forgebook-surface: #fff;
@@ -19,6 +31,8 @@
19
31
  --forgebook-accent-text: #0059d2;
20
32
  --forgebook-on-accent: #fff;
21
33
  --forgebook-danger-text: #bc1f16;
34
+ --forgebook-caution-text: #935200;
35
+ --forgebook-positive-text: #077229;
22
36
  --forgebook-code-keyword: #7036c4;
23
37
  --forgebook-code-type: #0059d2;
24
38
  --forgebook-code-string: #077229;
@@ -59,7 +73,7 @@
59
73
  .forgebook-matrix__corner,
60
74
  .forgebook-matrix__name {
61
75
  padding: 0.5rem 0.75rem;
62
- font: 400 0.6875rem/1.6 var(--forgebook-font-mono);
76
+ font: var(--forgebook-text-mono-small);
63
77
  text-align: start;
64
78
  white-space: nowrap;
65
79
  opacity: 0.7;
@@ -68,9 +82,28 @@
68
82
  padding: 0.75rem;
69
83
  vertical-align: middle;
70
84
  }
85
+ .forgebook-frame-pending {
86
+ margin: 0;
87
+ padding: 0.5rem 0.75rem;
88
+ font: var(--forgebook-text-mono-small);
89
+ color: #fff;
90
+ background: #8a1c1c;
91
+ }
71
92
  .forgebook-frame-error {
93
+ --forgebook-focus-edge: inset 0 0 0 1px var(--forgebook-accent);
94
+ --forgebook-focus-halo: color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
95
+ --forgebook-text-display: 700 1.375rem/1.2 var(--forgebook-font-sans);
96
+ --forgebook-text-card-title: 600 0.875rem/1.3 var(--forgebook-font-sans);
97
+ --forgebook-text-body: 400 0.8125rem/1.4 var(--forgebook-font-sans);
98
+ --forgebook-text-row-label: 500 0.8125rem/1.35 var(--forgebook-font-sans);
99
+ --forgebook-text-row-compact: 400 0.78125rem/1.4 var(--forgebook-font-sans);
100
+ --forgebook-text-control: 500 0.75rem/1.3 var(--forgebook-font-sans);
101
+ --forgebook-text-caption: 400 0.6875rem/1.35 var(--forgebook-font-sans);
102
+ --forgebook-text-label: 600 0.6875rem/1.3 var(--forgebook-font-sans);
103
+ --forgebook-text-mono: 400 0.71875rem/1.4 var(--forgebook-font-mono);
104
+ --forgebook-text-mono-small: 400 0.6875rem/1.6 var(--forgebook-font-mono);
72
105
  margin: 1.5rem;
73
- font: 400 0.8125rem/1.4 var(--forgebook-font-sans);
106
+ font: var(--forgebook-text-body);
74
107
  color: var(--forgebook-danger-text);
75
108
  }
76
109
  .forgebook-frame-error__message {
@@ -80,7 +113,7 @@
80
113
  .forgebook-frame-error__stack {
81
114
  margin: 0.75rem 0 0;
82
115
  overflow-x: auto;
83
- font: 400 0.6875rem/1.6 var(--forgebook-font-mono);
116
+ font: var(--forgebook-text-mono-small);
84
117
  color: var(--forgebook-text-secondary);
85
118
  white-space: pre;
86
119
  }
@@ -3,7 +3,22 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- /** `ready` once the story rendered and its play function is over, `error` when it could not render. */
6
+ /**
7
+ * `ready` once the story rendered, what it waits for came and its play function is over; `error` when it could not
8
+ * render; `pending` when the frame gave up waiting, or cannot tell, so what it shows was not seen in its final state: a
9
+ * check reads that as not verified, never as passed.
10
+ */
7
11
  export declare const STATUS_ATTRIBUTE = "data-forgebook-status";
12
+ /** The root's attribute that says why the status is `pending`, in a sentence a person reads. */
13
+ export declare const PENDING_REASON_ATTRIBUTE = "data-forgebook-pending-reason";
14
+ /**
15
+ * The root's attribute set on a story that says it stays in a loading state (`parameters.suspense.expected`): the frame
16
+ * did not wait for it, and a check says so rather than let a preview turn the wait off unseen.
17
+ */
18
+ export declare const NOT_AWAITED_ATTRIBUTE = "data-forgebook-not-awaited";
8
19
  /** The root's attribute set once the frame's code runs; the page's guard against code that fails earlier reads it. */
9
20
  export declare const FRAME_STARTED_ATTRIBUTE = "data-forgebook-started";
21
+ /** The class of the text saying why a frame's story could not be drawn: what a check reports as the reason. */
22
+ export declare const ERROR_MESSAGE_CLASS = "forgebook-frame-error__message";
23
+ /** The class of a thrown error's stack under its message: the dev server's answer rewrites it in the lines as written. */
24
+ export declare const ERROR_STACK_CLASS = "forgebook-frame-error__stack";
@@ -3,7 +3,22 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- /** `ready` once the story rendered and its play function is over, `error` when it could not render. */
6
+ /**
7
+ * `ready` once the story rendered, what it waits for came and its play function is over; `error` when it could not
8
+ * render; `pending` when the frame gave up waiting, or cannot tell, so what it shows was not seen in its final state: a
9
+ * check reads that as not verified, never as passed.
10
+ */
7
11
  export const STATUS_ATTRIBUTE = "data-forgebook-status";
12
+ /** The root's attribute that says why the status is `pending`, in a sentence a person reads. */
13
+ export const PENDING_REASON_ATTRIBUTE = "data-forgebook-pending-reason";
14
+ /**
15
+ * The root's attribute set on a story that says it stays in a loading state (`parameters.suspense.expected`): the frame
16
+ * did not wait for it, and a check says so rather than let a preview turn the wait off unseen.
17
+ */
18
+ export const NOT_AWAITED_ATTRIBUTE = "data-forgebook-not-awaited";
8
19
  /** The root's attribute set once the frame's code runs; the page's guard against code that fails earlier reads it. */
9
20
  export const FRAME_STARTED_ATTRIBUTE = "data-forgebook-started";
21
+ /** The class of the text saying why a frame's story could not be drawn: what a check reports as the reason. */
22
+ export const ERROR_MESSAGE_CLASS = "forgebook-frame-error__message";
23
+ /** The class of a thrown error's stack under its message: the dev server's answer rewrites it in the lines as written. */
24
+ export const ERROR_STACK_CLASS = "forgebook-frame-error__stack";
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * @module
6
6
  */
7
- import { switchValueOf, switchWithRole } from "../switches.js";
7
+ import { shownSwitches, switchValueOf, switchWithRole } from "../switches.js";
8
8
  import { schemeOf } from "../viewState.js";
9
9
  import { backdropSheet } from "./backdropPictures.js";
10
10
  /** The id of the style sheet that draws the backdrop. */
@@ -96,12 +96,13 @@ const applySwitch = (root, each, value) => {
96
96
  * @param catalogue - the catalogue's switches and backdrops.
97
97
  */
98
98
  export const applyView = (root, view, catalogue) => {
99
+ const shown = shownSwitches(view.switches, catalogue.switches);
99
100
  for (const each of catalogue.switches)
100
- applySwitch(root, each, view.switches[each.id]);
101
+ applySwitch(root, each, shown[each.id]);
101
102
  // a language read right to left draws the story right to left; leaving it gives the root its own direction back,
102
103
  // unless a switch writes `dir` itself (the direction switch, applied above)
103
104
  const language = switchWithRole(catalogue.switches, "language");
104
- const isRightToLeft = language !== undefined && switchValueOf(language, view.switches[language.id])?.isRightToLeft === true;
105
+ const isRightToLeft = language !== undefined && switchValueOf(language, shown[language.id])?.isRightToLeft === true;
105
106
  const isDirWritten = catalogue.switches.some((each) => each.apply.kind === "attribute" && each.apply.name === "dir");
106
107
  if (isRightToLeft)
107
108
  root.setAttribute("dir", "rtl");
@@ -5,7 +5,7 @@
5
5
  * @remarks
6
6
  * One document per story: the style sheets of the Styles setting, the switches on the root and anything the
7
7
  * story mounts on `body` stay in this document. The tests open the same address and wait for `data-forgebook-status`
8
- * on the root (`ready` or `error`), never for a delay. A Live story's clock runs from its start, or stays held there when
8
+ * on the root (`ready`, `error` or `pending`), never for a delay. A Live story's clock runs from its start, or stays held there when
9
9
  * the address says so (`clock=held`, what the tests open). The framework is the renderer the framework package
10
10
  * passes (`renderer.ts`); nothing here depends on one.
11
11
  *
@@ -19,6 +19,7 @@ import { type ViewSwitch } from "../switches.ts";
19
19
  import type { PlayToolsLoader } from "./playStory.ts";
20
20
  import { type FramePlugin } from "./pluginFrames.ts";
21
21
  import type { FrameRenderer } from "./renderer.ts";
22
+ import type { ValueSheets } from "./valueSheets.ts";
22
23
  /** What an app passes to the frame. */
23
24
  export type FrameConfig = {
24
25
  /** The framework that draws the stories (`@forgebook/react` passes its own). */
@@ -36,6 +37,11 @@ export type FrameConfig = {
36
37
  readonly previews?: readonly unknown[];
37
38
  /** The switches of the toolbar and the View menu, as the shell's configuration gives them; the theme and contrast by default. */
38
39
  readonly switches?: readonly ViewSwitch[];
40
+ /**
41
+ * The address of each switch value's own style sheet, by `<switch id>=<value>`; none when no value has one. The
42
+ * generated frame gives addresses the configuration's check allowed; the page checks nothing itself.
43
+ */
44
+ readonly valueSheets?: ValueSheets;
39
45
  /** The catalogue's lists (its backgrounds, text sizes, grid step, accessibility rules…); the defaults when none. */
40
46
  readonly lists?: CatalogueLists;
41
47
  /** Loads the play tools, when the project installs Testing Library (the generated frame passes it then). */
@@ -5,7 +5,7 @@
5
5
  * @remarks
6
6
  * One document per story: the style sheets of the Styles setting, the switches on the root and anything the
7
7
  * story mounts on `body` stay in this document. The tests open the same address and wait for `data-forgebook-status`
8
- * on the root (`ready` or `error`), never for a delay. A Live story's clock runs from its start, or stays held there when
8
+ * on the root (`ready`, `error` or `pending`), never for a delay. A Live story's clock runs from its start, or stays held there when
9
9
  * the address says so (`clock=held`, what the tests open). The framework is the renderer the framework package
10
10
  * passes (`renderer.ts`); nothing here depends on one.
11
11
  *
@@ -13,28 +13,31 @@
13
13
  */
14
14
  import "./frame.css";
15
15
  import { storyTextOf } from "@forgebook/story-format/texts";
16
- import { actionNames, excludedControls, panelArgTypesOf } from "../argTypes.js";
16
+ import { bundlerErrorLines } from "../bundlerErrors.js";
17
17
  import { catalogueSettings } from "../catalogue.js";
18
18
  import { SAME_ORIGIN } from "../frameOrigins.js";
19
19
  import { PREVIEWS_EVENT, previewsRenewalOf, STORY_FILE_EVENT, successionOf } from "../hotModules.js";
20
20
  import { shownLanguage } from "../languages.js";
21
- import { LIVE_ERROR_EVENT } from "../liveErrors.js";
22
- import { detailOf, previewValue } from "../messages.js";
23
- import { panelArgsOf, storyArgsOf } from "../namedValues.js";
21
+ import { isMappedStackAnswer, LIVE_ERROR_EVENT, MAPPED_STACK_EVENT } from "../liveErrors.js";
24
22
  import { applySafeArea } from "../safeAreaParameter.js";
25
23
  import { sourceFiles } from "../sourceFiles.js";
24
+ import { actionNames, excludedControls, panelArgTypesOf } from "../storyArgTypes.js";
26
25
  import { isClockHeldIn } from "../storyClock.js";
27
26
  import { fixedViewOf, NOT_FIXED, withFixed } from "../storyGlobals.js";
28
27
  import { shownTexts, storyTextKeysOf, withStoryTexts } from "../storyTexts.js";
29
28
  import { findStory, storyTree } from "../storyTree.js";
30
29
  import { catalogueSwitches } from "../switches.js";
31
30
  import { codeGlobalsOf, frameAddress, isSameLiveView, languageOf, liveView, parseView } from "../viewState.js";
31
+ import { detailOf, previewValue } from "./callValues.js";
32
+ import { followCanvasScheme } from "./canvasScheme.js";
32
33
  import { followTouch } from "./followTouch.js";
33
34
  import { storyFrameClock } from "./frameClock.js";
34
- import { FRAME_STARTED_ATTRIBUTE, STATUS_ATTRIBUTE } from "./frameStatus.js";
35
+ import { ERROR_MESSAGE_CLASS, ERROR_STACK_CLASS, FRAME_STARTED_ATTRIBUTE, NOT_AWAITED_ATTRIBUTE, PENDING_REASON_ATTRIBUTE, STATUS_ATTRIBUTE } from "./frameStatus.js";
35
36
  import { applyView, loadSheets, viewSheets } from "./frameView.js";
37
+ import { panelArgsOf, storyArgsOf } from "./panelValues.js";
36
38
  import { startPluginFrames } from "./pluginFrames.js";
37
39
  import { shellChannel } from "./shellChannel.js";
40
+ import { checkForShell } from "./shellCheck.js";
38
41
  import { spillOutline } from "./spillOutline.js";
39
42
  import { clearRetry, isStaleModuleError, markRetry, sessionStorageOf } from "./staleModule.js";
40
43
  import { mergedPreviews, readPreview, readStory, startingGlobals } from "./storyModule.js";
@@ -48,11 +51,60 @@ import { runStory } from "./storyRun.js";
48
51
  const tellDevServer = (report) => {
49
52
  import.meta.hot?.send(LIVE_ERROR_EVENT, report);
50
53
  };
51
- // a story that threw is gone from its frame, so a hot update has nothing to update: the fix shows only in a new page
54
+ // the browser writes a stack in the lines of the code Vite served, and the dev server answers with the lines as written
55
+ import.meta.hot?.on(MAPPED_STACK_EVENT, (answer) => {
56
+ if (!isMappedStackAnswer(answer))
57
+ return;
58
+ for (const shown of document.querySelectorAll(`.${ERROR_STACK_CLASS}`))
59
+ if (shown.textContent === answer.sent)
60
+ shown.textContent = answer.stack;
61
+ });
62
+ // a story that threw is gone from its frame, so a hot update has nothing to update: the fix shows only in a new page; a
63
+ // story the frame gave up on keeps saying so until a new page waits for it again
52
64
  import.meta.hot?.on("vite:afterUpdate", () => {
53
- if (document.documentElement.getAttribute(STATUS_ATTRIBUTE) === "error")
65
+ const status = document.documentElement.getAttribute(STATUS_ATTRIBUTE);
66
+ if (status === "error" || status === "pending")
54
67
  window.location.reload();
55
68
  });
69
+ /**
70
+ * Why the dev server last failed to serve a module, and what to do when it says so: of a module it failed to serve, a
71
+ * browser says only that the import failed, and the reason reaches the page on the dev server's own channel.
72
+ */
73
+ let servedError;
74
+ let followServedError;
75
+ import.meta.hot?.on("vite:error", ({ err }) => {
76
+ // the first since this page loaded: what its own import asked for, not what another frame's asked for later
77
+ servedError ??= bundlerErrorLines(err.message, err)[0];
78
+ followServedError?.();
79
+ followServedError = undefined;
80
+ });
81
+ /**
82
+ * What shows the sheets of a frame's values; none for a catalogue with none, which so loads no code for them.
83
+ *
84
+ * @param valueSheets - each value's sheet, when the catalogue has any.
85
+ * @param sheets - the frame's Styles setting.
86
+ * @param switches - the catalogue's switches.
87
+ * @param onFailed - told a sheet that did not load: the story is drawn without it.
88
+ */
89
+ const valueSheetsShower = async (valueSheets, sheets, switches, onFailed) => {
90
+ if (valueSheets === undefined)
91
+ return undefined;
92
+ const { valueSheetUrls, valueSheetsIn } = await import("./valueSheets.js");
93
+ const show = valueSheetsIn(document, onFailed);
94
+ return (values) => show(valueSheetUrls(values, sheets, valueSheets, switches));
95
+ };
96
+ /**
97
+ * Fails a frame whose story did not load, with the dev server's reason when the import only says it failed, as soon as
98
+ * the reason arrives: it may come after the failed import.
99
+ *
100
+ * @param message - the error's message.
101
+ * @param fail - shows a reason in the frame.
102
+ */
103
+ const failedToLoad = (message, fail) => {
104
+ if (isStaleModuleError(message))
105
+ followServedError = () => fail(servedError ?? message);
106
+ fail(isStaleModuleError(message) ? (servedError ?? message) : message);
107
+ };
56
108
  /**
57
109
  * Does what a message of the shell asks of the rendered story; the view's live part is applied apart, before the story
58
110
  * loads.
@@ -60,11 +112,13 @@ import.meta.hot?.on("vite:afterUpdate", () => {
60
112
  * @param message - the message.
61
113
  * @param controls - the rendered story's controls.
62
114
  * @param storyId - the story's id, for the answers.
115
+ * @param pendingReason - why the story was not seen in its final state, if so: a check of what it shows now would pass
116
+ * on a fallback, so it answers this instead.
63
117
  * @param rules - the catalogue's accessibility rules, for a check; none when it checks no accessibility.
64
118
  * @param axeUrl - the address of axe's script, for a check.
65
119
  * @param tellShell - tells the shell the check's result.
66
120
  */
67
- const answerShell = (message, controls, storyId, rules, axeUrl, tellShell) => {
121
+ const answerShell = (message, controls, storyId, pendingReason, rules, axeUrl, tellShell) => {
68
122
  if (message.type === "forgebook:replay")
69
123
  void controls.replay();
70
124
  else if (message.type === "forgebook:args")
@@ -73,29 +127,51 @@ const answerShell = (message, controls, storyId, rules, axeUrl, tellShell) => {
73
127
  controls.setEvents(message.names);
74
128
  else if (message.type === "forgebook:matrix")
75
129
  controls.setMatrix(message.matrix ?? undefined);
76
- else if (message.type === "forgebook:play-again")
77
- controls.playAgain();
130
+ else if (message.type === "forgebook:play-step")
131
+ controls.stepPlay(message.command);
78
132
  else if (message.type === "forgebook:clock")
79
133
  controls.setClock(message.state);
80
134
  else if (message.type === "forgebook:clock-restart")
81
135
  controls.restartClock();
82
- else if (message.type === "forgebook:check") {
83
- // loaded on the first check: a frame that is never checked, or one of a catalogue that checks nothing, never
84
- // fetches the code that loads axe
85
- const checked = rules === undefined
86
- ? Promise.reject(new Error("The catalogue checks no accessibility (a11y: false)"))
87
- : import("./checkStory.js").then((module) => module.checkStory(document, rules, axeUrl));
88
- checked
89
- .then((violations) => tellShell({ type: "forgebook:checked", storyId, violations }))
90
- .catch((error) => tellShell({
91
- type: "forgebook:check-error",
92
- storyId,
93
- message: error instanceof Error ? error.message : String(error)
94
- }));
95
- }
136
+ else if (message.type === "forgebook:check")
137
+ checkForShell(storyId, pendingReason, rules, axeUrl, tellShell);
138
+ };
139
+ /**
140
+ * Says on the page that the frame gave up on what the story loads: a person looking at the story, or at its picture,
141
+ * must not take the fallback for the story. Out of the story's own element, so the story is laid out as it was.
142
+ *
143
+ * @param reason - why.
144
+ */
145
+ const showPending = (reason) => {
146
+ const notice = document.createElement("p");
147
+ notice.className = "forgebook-frame-pending";
148
+ notice.setAttribute("role", "status");
149
+ notice.textContent = `Not verified: ${reason}`;
150
+ document.body.prepend(notice);
151
+ };
152
+ /**
153
+ * Says how a story ended on the frame's root and on its page.
154
+ *
155
+ * @param outcome - how it ended; an error that came during the wait stands, and this leaves it there.
156
+ * @param storyId - the story's id, for the dev server.
157
+ * @param isNotAwaited - whether the story said not to wait for what it loads, which a check reports.
158
+ * @returns why it was not seen in its final state, if so.
159
+ */
160
+ const showOutcome = (outcome, storyId, isNotAwaited) => {
161
+ if (outcome.status === "error")
162
+ return undefined;
163
+ if (isNotAwaited)
164
+ document.documentElement.setAttribute(NOT_AWAITED_ATTRIBUTE, "");
165
+ document.documentElement.setAttribute(STATUS_ATTRIBUTE, outcome.status);
166
+ if (outcome.status === "ready")
167
+ return undefined;
168
+ document.documentElement.setAttribute(PENDING_REASON_ATTRIBUTE, outcome.reason);
169
+ showPending(outcome.reason);
170
+ tellDevServer({ kind: "render", storyId, view: window.location.search, message: outcome.reason });
171
+ return outcome.reason;
96
172
  };
97
- /** The play tools a project installed, for a story that uses them. */
98
- const playToolsOf = ({ playTools }) => playTools === undefined ? {} : { playTools };
173
+ /** The play tools a project installed, and whether the frame's address lets its story play when it opens. */
174
+ const playOptions = ({ playTools }, playsOnOpen) => playTools === undefined ? { playsOnOpen } : { playTools, playsOnOpen };
99
175
  /**
100
176
  * Shows the story the address names in the given element.
101
177
  *
@@ -113,7 +189,9 @@ export const mountFrame = async (container, config) => {
113
189
  // the previews' modules: an edit of one (or of what it imports) brings its successor
114
190
  let previews = config.previews ?? [];
115
191
  let preview = mergedPreviews(previews.map(readPreview));
116
- const view = parseView(window.location.search, catalogue);
192
+ // a frame runs its play unless its own address says otherwise, whatever the catalogue's readers start with: tests and
193
+ // tools open frames with no word, and a new address written below must not add one
194
+ const view = parseView(window.location.search, { ...catalogue, readerPlay: "on" });
117
195
  const shell = shellChannel(config.frames ?? SAME_ORIGIN, window);
118
196
  const tellShell = shell.tell;
119
197
  applyView(document.documentElement, view, catalogue);
@@ -136,17 +214,19 @@ export const mountFrame = async (container, config) => {
136
214
  tellShell({ type: "forgebook:size", storyId, height });
137
215
  };
138
216
  new ResizeObserver(reportSize).observe(document.body);
139
- const reportError = (message) => {
217
+ const reportScheme = followCanvasScheme(document, window, storyId, tellShell);
218
+ const reportError = (message, stack) => {
140
219
  document.documentElement.setAttribute(STATUS_ATTRIBUTE, "error");
141
220
  tellShell({ type: "forgebook:error", storyId, message });
142
- tellDevServer({ kind: "render", storyId, view: window.location.search, message });
221
+ const report = { kind: "render", storyId, view: window.location.search, message };
222
+ tellDevServer(stack === undefined ? report : { ...report, stack });
143
223
  };
144
224
  const fail = (message) => {
145
225
  const box = document.createElement("div");
146
226
  box.className = "forgebook-frame-error";
147
227
  box.setAttribute("role", "alert");
148
228
  const text = document.createElement("p");
149
- text.className = "forgebook-frame-error__message";
229
+ text.className = ERROR_MESSAGE_CLASS;
150
230
  text.textContent = message;
151
231
  box.append(text);
152
232
  container.replaceChildren(box);
@@ -165,6 +245,11 @@ export const mountFrame = async (container, config) => {
165
245
  .then(({ applyTools }) => applyTools(document, latestTools, catalogue.gridStep))
166
246
  .catch((error) => reportError(error instanceof Error ? error.message : String(error)));
167
247
  };
248
+ // what shows the sheets of the values drawn, for a catalogue with any; set once the source's are placed
249
+ let showValueSheets;
250
+ // the view asked for while its sheets load: the next message is compared with it, or going back would stop short of
251
+ // overtaking it, and the sheets would then draw a view the reader already left
252
+ let askedView;
168
253
  shell.listen((message) => {
169
254
  if (message.type === "forgebook:tools")
170
255
  showTools(message.tools);
@@ -174,15 +259,29 @@ export const mountFrame = async (container, config) => {
174
259
  return;
175
260
  const shown = withFixed(message.view, fixed);
176
261
  // the same view again draws nothing: a story's state, and the time its draw takes, are not the shell's to spend
177
- if (changeShown !== undefined &&
178
- shownView !== undefined &&
179
- isSameLiveView(withFixed(shownView, fixed), shown))
262
+ const latest = askedView ?? shownView;
263
+ if (changeShown !== undefined && latest !== undefined && isSameLiveView(withFixed(latest, fixed), shown))
180
264
  return;
181
- applyView(document.documentElement, shown, catalogue);
182
- changeShown?.(message.view);
183
- shownView = changeShown === undefined ? undefined : message.view;
184
- const address = frameAddress(window.location.pathname, storyId, { ...view, ...message.view }, switches);
185
- window.history.replaceState(null, "", address);
265
+ askedView = message.view;
266
+ const showLive = () => {
267
+ applyView(document.documentElement, shown, catalogue);
268
+ changeShown?.(message.view);
269
+ shownView = changeShown === undefined ? undefined : message.view;
270
+ askedView = undefined;
271
+ const address = frameAddress(window.location.pathname, storyId, { ...view, ...message.view }, switches);
272
+ window.history.replaceState(null, "", address);
273
+ };
274
+ // the root changes with the sheet that draws it; a later view overtakes this one
275
+ if (showValueSheets === undefined)
276
+ showLive();
277
+ else {
278
+ showValueSheets(shown.switches)
279
+ .then((isLast) => {
280
+ if (isLast)
281
+ showLive();
282
+ })
283
+ .catch((error) => reportError(error instanceof Error ? error.message : String(error)));
284
+ }
186
285
  });
187
286
  // until the story runs, or when it cannot, an edit of a file the frame loaded loads the page again: there is no story
188
287
  // drawn to renew in place, and a story file that failed to load keeps no other way to show its fix
@@ -210,6 +309,8 @@ export const mountFrame = async (container, config) => {
210
309
  await source.setup?.();
211
310
  await preview.setup?.();
212
311
  await loadSheets(document, viewSheets(source.sheets, view));
312
+ showValueSheets = await valueSheetsShower(config.valueSheets, view.sheets, switches, reportError);
313
+ await showValueSheets?.(view.switches);
213
314
  // the story file's exports: an edit of the file hands them on with its successor's
214
315
  let shownFile = await load();
215
316
  const first = readStory(shownFile, location.story.exportName, preview);
@@ -220,12 +321,15 @@ export const mountFrame = async (container, config) => {
220
321
  const plugins = startPluginFrames(config.plugins, storyId, tellShell);
221
322
  let story = first;
222
323
  fixed = fixedViewOf(story.globals, story.parameters, catalogue);
324
+ await showValueSheets?.(withFixed(view, fixed).switches);
223
325
  applyView(document.documentElement, withFixed(view, fixed), catalogue);
224
326
  let controls;
327
+ // why the story was not seen in its final state: a check of what it shows would pass on a fallback
328
+ let pendingReason;
225
329
  const clock = storyFrameClock(story.clockStart, isClockHeldIn(window.location.search));
226
330
  shell.listen((message) => {
227
331
  if (controls !== undefined)
228
- answerShell(message, controls, storyId, catalogue.a11y, config.axeUrl, tellShell);
332
+ answerShell(message, controls, storyId, pendingReason, catalogue.a11y, config.axeUrl, tellShell);
229
333
  });
230
334
  // the language's texts, and the switches the story reads (the language's provider reads its id among them); a
231
335
  // language the source gives as a loader is loaded as it is shown
@@ -262,7 +366,7 @@ export const mountFrame = async (container, config) => {
262
366
  container,
263
367
  story,
264
368
  identity: { id: storyId, name: location.story.name, title: location.component.title },
265
- ...playToolsOf(config),
369
+ ...playOptions(config, view.play === "on"),
266
370
  pluginSetups: plugins.setups,
267
371
  renderer: config.renderer,
268
372
  clock,
@@ -270,14 +374,17 @@ export const mountFrame = async (container, config) => {
270
374
  decorators: [...preview.decorators, ...plugins.decorators],
271
375
  ...shown,
272
376
  resolveArgs: (args) => storyArgsOf(args, source.namedValues),
273
- onControlsReady: (next) => {
377
+ onControlsReady: (next, outcome) => {
274
378
  controls = next;
275
379
  clearRetry(sessionStorageOf(window), window.location.href);
276
380
  // the height first: the shell sizes the frame to the drawn story before anything reads it as ready, instead of
277
381
  // waiting on the resize observer, which may report after the ready status
278
382
  reportSize();
279
- document.documentElement.setAttribute(STATUS_ATTRIBUTE, "ready");
280
- tellReady();
383
+ reportScheme();
384
+ pendingReason = showOutcome(outcome, storyId, story.suspense.isExpected);
385
+ // the shell keeps an error it was told, and would read this as the story being fine again
386
+ if (outcome.status !== "error")
387
+ tellReady();
281
388
  changeShown = (live) => {
282
389
  shownCount += 1;
283
390
  const count = shownCount;
@@ -296,7 +403,7 @@ export const mountFrame = async (container, config) => {
296
403
  });
297
404
  };
298
405
  },
299
- onError: reportError,
406
+ onError: (message, stack) => reportError(message, stack),
300
407
  onTrace: (trace) => {
301
408
  tellShell({ type: "forgebook:play", storyId, trace });
302
409
  if (trace.status === "failed")
@@ -370,6 +477,6 @@ export const mountFrame = async (container, config) => {
370
477
  window.location.reload();
371
478
  return;
372
479
  }
373
- fail(message);
480
+ failedToLoad(message, fail);
374
481
  }
375
482
  };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A story's values as they cross to the panel, and back: its own value found by name among the source's named values, and
3
+ * a name the panel sent turned back into the value for the story. Read in the frame.
4
+ *
5
+ * @remarks
6
+ * A component or a function cannot cross between the shell and a frame; its name can, and each side holds the same source.
7
+ * Pure.
8
+ *
9
+ * @module
10
+ */
11
+ import { type NamedArg, type PanelArgs } from "../messages.ts";
12
+ import { type NamedValues } from "../namedValues.ts";
13
+ /**
14
+ * The name of a value among the named ones, when it is one of them.
15
+ *
16
+ * @param value - a story's own arg.
17
+ * @param namedValues - the source's named values.
18
+ */
19
+ export declare const nameOf: (value: unknown, namedValues: NamedValues) => NamedArg | undefined;
20
+ /**
21
+ * A story's own args as the panel can show them: plain data as it is, a named value by its name at any depth; an arg
22
+ * with anything else in it (an element, a function, a date) is left out whole.
23
+ *
24
+ * @param args - the story's args.
25
+ * @param namedValues - the source's named values; none by default.
26
+ */
27
+ export declare const panelArgsOf: (args: Readonly<Record<string, unknown>>, namedValues?: NamedValues) => PanelArgs;
28
+ /**
29
+ * The panel's values as the story takes them: a name turned back into its value, a name the source no longer offers
30
+ * left out so the story keeps its own, and the panel's "no value" as `undefined` over the story's own.
31
+ *
32
+ * @param args - the panel's values.
33
+ * @param namedValues - the source's named values; none by default.
34
+ */
35
+ export declare const storyArgsOf: (args: PanelArgs, namedValues?: NamedValues) => Readonly<Record<string, unknown>>;