forgebook 0.3.3 → 0.4.1

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 (713) hide show
  1. package/README.md +994 -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 +182 -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 +62 -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 +95 -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 +204 -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 +323 -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 +148 -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 +69 -185
  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 +83 -0
  211. package/dist/src/componentDocs.js +20 -3
  212. package/dist/src/controlCode.d.ts +27 -0
  213. package/dist/src/controlCode.js +41 -0
  214. package/dist/src/frame/callValues.d.ts +19 -0
  215. package/dist/src/frame/callValues.js +58 -0
  216. package/dist/src/frame/canvasScheme.d.ts +33 -0
  217. package/dist/src/frame/canvasScheme.js +67 -0
  218. package/dist/src/frame/controlValues.d.ts +39 -0
  219. package/dist/src/frame/controlValues.js +143 -0
  220. package/dist/src/frame/frame.css +36 -3
  221. package/dist/src/frame/frameStatus.d.ts +16 -1
  222. package/dist/src/frame/frameStatus.js +16 -1
  223. package/dist/src/frame/frameView.js +4 -3
  224. package/dist/src/frame/mountFrame.d.ts +10 -1
  225. package/dist/src/frame/mountFrame.js +160 -55
  226. package/dist/src/frame/panelControls.d.ts +67 -0
  227. package/dist/src/frame/panelControls.js +110 -0
  228. package/dist/src/frame/panelValues.d.ts +35 -0
  229. package/dist/src/frame/panelValues.js +127 -0
  230. package/dist/src/frame/playActions.d.ts +39 -0
  231. package/dist/src/frame/playActions.js +98 -0
  232. package/dist/src/frame/playStepper.d.ts +28 -0
  233. package/dist/src/frame/playStepper.js +38 -0
  234. package/dist/src/frame/playStory.d.ts +9 -1
  235. package/dist/src/frame/playStory.js +49 -3
  236. package/dist/src/frame/renderer.d.ts +34 -1
  237. package/dist/src/frame/renderer.js +24 -0
  238. package/dist/src/frame/shellChannel.d.ts +1 -1
  239. package/dist/src/frame/shellChannel.js +1 -1
  240. package/dist/src/frame/shellCheck.d.ts +17 -0
  241. package/dist/src/frame/shellCheck.js +25 -0
  242. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  243. package/dist/src/frame/shellMessageCheck.js +53 -0
  244. package/dist/src/frame/storyContent.d.ts +50 -0
  245. package/dist/src/frame/storyContent.js +73 -0
  246. package/dist/src/frame/storyModule.d.ts +9 -0
  247. package/dist/src/frame/storyModule.js +20 -2
  248. package/dist/src/frame/storyRun.d.ts +15 -7
  249. package/dist/src/frame/storyRun.js +64 -15
  250. package/dist/src/frame/valueSheets.d.ts +35 -0
  251. package/dist/src/frame/valueSheets.js +99 -0
  252. package/dist/src/hotModules.d.ts +20 -0
  253. package/dist/src/hotModules.js +23 -0
  254. package/dist/src/jsxCode.d.ts +1 -14
  255. package/dist/src/jsxCode.js +46 -10
  256. package/dist/src/liveErrors.d.ts +30 -4
  257. package/dist/src/liveErrors.js +18 -3
  258. package/dist/src/messages.d.ts +77 -27
  259. package/dist/src/messages.js +58 -100
  260. package/dist/src/namedValues.d.ts +2 -26
  261. package/dist/src/namedValues.js +0 -47
  262. package/dist/src/pageConfig.d.ts +2 -0
  263. package/dist/src/playTrace.d.ts +19 -2
  264. package/dist/src/playTrace.js +10 -5
  265. package/dist/src/plugin.d.ts +10 -3
  266. package/dist/src/previewRelay.js +9 -1
  267. package/dist/src/printable.d.ts +12 -0
  268. package/dist/src/printable.js +22 -0
  269. package/dist/src/propsSignature.d.ts +37 -0
  270. package/dist/src/propsSignature.js +40 -0
  271. package/dist/src/search.d.ts +41 -5
  272. package/dist/src/search.js +93 -23
  273. package/dist/src/searchMatch.d.ts +4 -1
  274. package/dist/src/searchMatch.js +26 -5
  275. package/dist/src/searchTypos.d.ts +88 -0
  276. package/dist/src/searchTypos.js +178 -0
  277. package/dist/src/shapeValues.d.ts +86 -0
  278. package/dist/src/shapeValues.js +295 -0
  279. package/dist/src/shell/ApiReference.js +6 -3
  280. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  281. package/dist/src/shell/ApiTableBox.js +11 -0
  282. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  283. package/dist/src/shell/AppearanceMenu.js +9 -6
  284. package/dist/src/shell/AuthoredHome.js +3 -1
  285. package/dist/src/shell/CodeTab.d.ts +12 -6
  286. package/dist/src/shell/CodeTab.js +47 -3
  287. package/dist/src/shell/CodeText.d.ts +1 -1
  288. package/dist/src/shell/CodeText.js +2 -3
  289. package/dist/src/shell/CompareGrid.js +1 -1
  290. package/dist/src/shell/ComponentPage.d.ts +6 -6
  291. package/dist/src/shell/ComponentPage.js +8 -2
  292. package/dist/src/shell/CustomControl.d.ts +34 -0
  293. package/dist/src/shell/CustomControl.js +125 -0
  294. package/dist/src/shell/DocContainers.js +1 -1
  295. package/dist/src/shell/DocPage.js +2 -2
  296. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  297. package/dist/src/shell/DroppedArgsList.js +1 -1
  298. package/dist/src/shell/EmbedPage.js +30 -12
  299. package/dist/src/shell/Example.d.ts +5 -1
  300. package/dist/src/shell/Example.js +16 -8
  301. package/dist/src/shell/FrameView.d.ts +6 -3
  302. package/dist/src/shell/FrameView.js +2 -2
  303. package/dist/src/shell/HomePage.d.ts +3 -1
  304. package/dist/src/shell/HomePage.js +18 -6
  305. package/dist/src/shell/InfoTip.js +2 -2
  306. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  307. package/dist/src/shell/InteractionsTab.js +18 -2
  308. package/dist/src/shell/LazyPage.js +1 -1
  309. package/dist/src/shell/PackageHtml.js +3 -1
  310. package/dist/src/shell/PageWidth.d.ts +29 -0
  311. package/dist/src/shell/PageWidth.js +18 -0
  312. package/dist/src/shell/PinnedControl.js +14 -62
  313. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  314. package/dist/src/shell/PinnedControlMenu.js +72 -0
  315. package/dist/src/shell/PropFields.d.ts +3 -1
  316. package/dist/src/shell/PropFields.js +9 -6
  317. package/dist/src/shell/PropRows.d.ts +22 -11
  318. package/dist/src/shell/PropRows.js +62 -24
  319. package/dist/src/shell/PropsTab.d.ts +12 -5
  320. package/dist/src/shell/PropsTab.js +9 -22
  321. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  322. package/dist/src/shell/RefStoryPage.js +123 -0
  323. package/dist/src/shell/SearchPanel.js +51 -24
  324. package/dist/src/shell/Shell.d.ts +18 -0
  325. package/dist/src/shell/Shell.js +141 -23
  326. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  327. package/dist/src/shell/ShortcutHelp.js +66 -0
  328. package/dist/src/shell/Sidebar.d.ts +17 -4
  329. package/dist/src/shell/Sidebar.js +92 -41
  330. package/dist/src/shell/SidebarDocs.js +2 -2
  331. package/dist/src/shell/SidebarEntries.js +5 -3
  332. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  333. package/dist/src/shell/SidebarHandle.js +4 -4
  334. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  335. package/dist/src/shell/SidebarRefs.js +99 -0
  336. package/dist/src/shell/SidebarSearch.js +37 -9
  337. package/dist/src/shell/SignatureReference.js +3 -1
  338. package/dist/src/shell/Stage.d.ts +10 -2
  339. package/dist/src/shell/Stage.js +29 -49
  340. package/dist/src/shell/StatusBadges.d.ts +54 -0
  341. package/dist/src/shell/StatusBadges.js +77 -0
  342. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  343. package/dist/src/shell/StoryCodeBlock.js +7 -6
  344. package/dist/src/shell/StoryPicker.d.ts +4 -2
  345. package/dist/src/shell/StoryPicker.js +3 -3
  346. package/dist/src/shell/Switch.d.ts +29 -0
  347. package/dist/src/shell/Switch.js +11 -0
  348. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  349. package/dist/src/shell/SwitchGallery.js +17 -0
  350. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  351. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  352. package/dist/src/shell/TagFilter.d.ts +24 -0
  353. package/dist/src/shell/TagFilter.js +45 -0
  354. package/dist/src/shell/TagViews.d.ts +39 -0
  355. package/dist/src/shell/TagViews.js +20 -0
  356. package/dist/src/shell/Toolbar.d.ts +4 -1
  357. package/dist/src/shell/Toolbar.js +17 -7
  358. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  359. package/dist/src/shell/ToolbarControl.js +23 -6
  360. package/dist/src/shell/ViewMenuPanel.js +6 -1
  361. package/dist/src/shell/argChecks.d.ts +22 -0
  362. package/dist/src/shell/argChecks.js +20 -0
  363. package/dist/src/shell/asideStory.js +7 -2
  364. package/dist/src/shell/audienceSections.css +9 -9
  365. package/dist/src/shell/catalogueContext.d.ts +1 -1
  366. package/dist/src/shell/catalogueContext.js +6 -1
  367. package/dist/src/shell/codeSpans.d.ts +27 -0
  368. package/dist/src/shell/codeSpans.js +76 -0
  369. package/dist/src/shell/compareVariants.d.ts +4 -2
  370. package/dist/src/shell/compareVariants.js +16 -8
  371. package/dist/src/shell/composition.d.ts +23 -0
  372. package/dist/src/shell/composition.js +26 -0
  373. package/dist/src/shell/controlCycle.d.ts +1 -1
  374. package/dist/src/shell/controlCycle.js +3 -2
  375. package/dist/src/shell/customControls.d.ts +62 -0
  376. package/dist/src/shell/customControls.js +81 -0
  377. package/dist/src/shell/docPage.css +22 -22
  378. package/dist/src/shell/dockTabs.d.ts +19 -3
  379. package/dist/src/shell/dockTabs.js +29 -20
  380. package/dist/src/shell/embed.css +7 -7
  381. package/dist/src/shell/frameOrder.d.ts +35 -0
  382. package/dist/src/shell/frameOrder.js +45 -0
  383. package/dist/src/shell/framesOrigin.d.ts +7 -0
  384. package/dist/src/shell/framesOrigin.js +1 -1
  385. package/dist/src/shell/galleryPlace.d.ts +20 -0
  386. package/dist/src/shell/galleryPlace.js +26 -0
  387. package/dist/src/shell/icons.d.ts +1 -0
  388. package/dist/src/shell/icons.js +1 -0
  389. package/dist/src/shell/keyboard.d.ts +14 -12
  390. package/dist/src/shell/keyboard.js +21 -6
  391. package/dist/src/shell/laterStrings.d.ts +30 -0
  392. package/dist/src/shell/laterStrings.js +43 -3
  393. package/dist/src/shell/mountShell.js +3 -0
  394. package/dist/src/shell/pageStrings.d.ts +4 -0
  395. package/dist/src/shell/pageStrings.js +4 -0
  396. package/dist/src/shell/pageTagView.d.ts +18 -0
  397. package/dist/src/shell/pageTagView.js +10 -0
  398. package/dist/src/shell/playMemory.d.ts +14 -0
  399. package/dist/src/shell/playMemory.js +8 -0
  400. package/dist/src/shell/propNotes.d.ts +23 -0
  401. package/dist/src/shell/propNotes.js +37 -0
  402. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  403. package/dist/src/shell/refIndexLoad.js +38 -0
  404. package/dist/src/shell/refParts.d.ts +34 -0
  405. package/dist/src/shell/refParts.js +9 -0
  406. package/dist/src/shell/refStory.css +21 -0
  407. package/dist/src/shell/refStrings.d.ts +13 -0
  408. package/dist/src/shell/refStrings.js +21 -0
  409. package/dist/src/shell/search.css +11 -11
  410. package/dist/src/shell/shell.css +376 -169
  411. package/dist/src/shell/shellScheme.js +2 -2
  412. package/dist/src/shell/shortcutHelp.css +64 -0
  413. package/dist/src/shell/stageArgs.d.ts +53 -0
  414. package/dist/src/shell/stageArgs.js +64 -0
  415. package/dist/src/shell/statusBadges.css +51 -0
  416. package/dist/src/shell/strings.d.ts +7 -16
  417. package/dist/src/shell/strings.js +12 -17
  418. package/dist/src/shell/switchGallery.css +104 -0
  419. package/dist/src/shell/tagFilter.css +46 -0
  420. package/dist/src/shell/tagView.d.ts +20 -0
  421. package/dist/src/shell/tagView.js +10 -0
  422. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  423. package/dist/src/shell/useAddressArgs.js +56 -11
  424. package/dist/src/shell/useControlKeys.js +2 -2
  425. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  426. package/dist/src/shell/useEditedProblems.js +40 -0
  427. package/dist/src/shell/useFrameMessages.js +3 -0
  428. package/dist/src/shell/useFrameQueue.d.ts +8 -3
  429. package/dist/src/shell/useFrameQueue.js +42 -12
  430. package/dist/src/shell/useListedTree.d.ts +13 -0
  431. package/dist/src/shell/useListedTree.js +32 -0
  432. package/dist/src/shell/usePageFrames.js +2 -2
  433. package/dist/src/shell/usePopover.d.ts +5 -0
  434. package/dist/src/shell/usePopover.js +7 -1
  435. package/dist/src/shell/useRefIndex.d.ts +22 -0
  436. package/dist/src/shell/useRefIndex.js +36 -0
  437. package/dist/src/shell/useScrollSettled.d.ts +18 -0
  438. package/dist/src/shell/useScrollSettled.js +56 -0
  439. package/dist/src/shell/useScrollStops.d.ts +20 -0
  440. package/dist/src/shell/useScrollStops.js +41 -0
  441. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  442. package/dist/src/shell/useShortcutHelp.js +32 -0
  443. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  444. package/dist/src/shell/useSidebarOverlay.js +12 -4
  445. package/dist/src/shell/useStoryCode.d.ts +2 -1
  446. package/dist/src/shell/useStoryCode.js +12 -7
  447. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  448. package/dist/src/shell/useToolbarLayout.js +2 -2
  449. package/dist/src/shell/useWorstCase.d.ts +8 -2
  450. package/dist/src/shell/useWorstCase.js +2 -2
  451. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  452. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  453. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  454. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  455. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  456. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  457. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  458. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  459. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  460. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  461. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  462. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  463. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  464. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  465. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  466. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  467. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  468. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  469. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  470. package/dist/src/shell/valueEditors/ValueField.js +148 -0
  471. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  472. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  473. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  474. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  475. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  476. package/dist/src/shell/worstArgs.d.ts +8 -5
  477. package/dist/src/shell/worstArgs.js +14 -7
  478. package/dist/src/shellTheme.d.ts +1 -1
  479. package/dist/src/shellTheme.js +15 -1
  480. package/dist/src/shellTheme.types.d.ts +4 -0
  481. package/dist/src/shellWord.d.ts +12 -0
  482. package/dist/src/shellWord.js +15 -0
  483. package/dist/src/sourceFiles.js +2 -1
  484. package/dist/src/storyArgTypes.d.ts +57 -0
  485. package/dist/src/storyArgTypes.js +195 -0
  486. package/dist/src/storyBackground.js +14 -3
  487. package/dist/src/storyCheck.d.ts +99 -3
  488. package/dist/src/storyCheck.js +39 -1
  489. package/dist/src/storyCodeText.d.ts +52 -0
  490. package/dist/src/storyCodeText.js +30 -0
  491. package/dist/src/storyControls.d.ts +103 -0
  492. package/dist/src/storyControls.js +100 -0
  493. package/dist/src/storyStatuses.d.ts +55 -0
  494. package/dist/src/storyStatuses.js +104 -0
  495. package/dist/src/storyTagNames.d.ts +25 -0
  496. package/dist/src/storyTagNames.js +25 -0
  497. package/dist/src/storyTags.d.ts +29 -0
  498. package/dist/src/storyTags.js +85 -0
  499. package/dist/src/storyTree.d.ts +13 -0
  500. package/dist/src/storyTree.js +24 -4
  501. package/dist/src/storybookArgs.d.ts +24 -0
  502. package/dist/src/storybookArgs.js +185 -0
  503. package/dist/src/switches.d.ts +66 -3
  504. package/dist/src/switches.js +42 -1
  505. package/dist/src/valueSchema.d.ts +28 -0
  506. package/dist/src/valueSchema.js +196 -0
  507. package/dist/src/valueShape.d.ts +94 -0
  508. package/dist/src/valueShape.js +25 -0
  509. package/dist/src/viewState.d.ts +8 -3
  510. package/dist/src/viewState.js +27 -10
  511. package/dist/src/vite/adapter.d.ts +40 -2
  512. package/dist/src/vite/adapter.js +1 -0
  513. package/dist/src/vite/agent.types.d.ts +354 -7
  514. package/dist/src/vite/agentApi.d.ts +23 -0
  515. package/dist/src/vite/agentApi.js +90 -17
  516. package/dist/src/vite/agentIndex.d.ts +0 -2
  517. package/dist/src/vite/agentIndex.js +5 -6
  518. package/dist/src/vite/agentRoutes.d.ts +20 -1
  519. package/dist/src/vite/agentRoutes.js +135 -66
  520. package/dist/src/vite/agentStatuses.d.ts +42 -0
  521. package/dist/src/vite/agentStatuses.js +67 -0
  522. package/dist/src/vite/agentStoryCode.d.ts +51 -0
  523. package/dist/src/vite/agentStoryCode.js +44 -0
  524. package/dist/src/vite/agentVisibility.d.ts +47 -0
  525. package/dist/src/vite/agentVisibility.js +174 -0
  526. package/dist/src/vite/appAudit.d.ts +134 -0
  527. package/dist/src/vite/appAudit.js +333 -0
  528. package/dist/src/vite/appBuildOption.d.ts +53 -0
  529. package/dist/src/vite/appBuildOption.js +55 -0
  530. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  531. package/dist/src/vite/appTokenFiles.js +433 -0
  532. package/dist/src/vite/appTokens.d.ts +23 -0
  533. package/dist/src/vite/appTokens.js +275 -0
  534. package/dist/src/vite/argControlsConfig.d.ts +30 -0
  535. package/dist/src/vite/argControlsConfig.js +176 -0
  536. package/dist/src/vite/builtTexts.d.ts +10 -0
  537. package/dist/src/vite/builtTexts.js +59 -22
  538. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  539. package/dist/src/vite/catalogueConfig.js +21 -4
  540. package/dist/src/vite/changeCoverage.d.ts +74 -0
  541. package/dist/src/vite/changeCoverage.js +120 -0
  542. package/dist/src/vite/changedRoute.d.ts +30 -0
  543. package/dist/src/vite/changedRoute.js +197 -0
  544. package/dist/src/vite/checkCode.d.ts +105 -3
  545. package/dist/src/vite/checkCode.js +323 -36
  546. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  547. package/dist/src/vite/checkoutWatch.js +287 -0
  548. package/dist/src/vite/closeWatch.d.ts +8 -0
  549. package/dist/src/vite/closeWatch.js +1 -1
  550. package/dist/src/vite/componentCache.d.ts +8 -0
  551. package/dist/src/vite/componentCache.js +66 -0
  552. package/dist/src/vite/componentGraph.d.ts +71 -0
  553. package/dist/src/vite/componentGraph.js +133 -0
  554. package/dist/src/vite/componentRules.d.ts +33 -0
  555. package/dist/src/vite/componentRules.js +105 -0
  556. package/dist/src/vite/componentScan.d.ts +69 -0
  557. package/dist/src/vite/componentScan.js +418 -0
  558. package/dist/src/vite/compositionCheck.d.ts +15 -0
  559. package/dist/src/vite/compositionCheck.js +243 -0
  560. package/dist/src/vite/config.d.ts +67 -1
  561. package/dist/src/vite/configFile.d.ts +15 -2
  562. package/dist/src/vite/configFile.js +109 -40
  563. package/dist/src/vite/configKeys.d.ts +15 -0
  564. package/dist/src/vite/configKeys.js +172 -0
  565. package/dist/src/vite/configLoadError.d.ts +23 -0
  566. package/dist/src/vite/configLoadError.js +71 -0
  567. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  568. package/dist/src/vite/cssDeclarations.js +290 -0
  569. package/dist/src/vite/cssImports.d.ts +14 -0
  570. package/dist/src/vite/cssImports.js +48 -0
  571. package/dist/src/vite/cssReferences.d.ts +54 -0
  572. package/dist/src/vite/cssReferences.js +157 -0
  573. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  574. package/dist/src/vite/cssTokenValues.js +233 -0
  575. package/dist/src/vite/designTokens.d.ts +24 -0
  576. package/dist/src/vite/designTokens.js +5 -1
  577. package/dist/src/vite/docsExtractor.d.ts +9 -3
  578. package/dist/src/vite/docsExtractor.js +11 -3
  579. package/dist/src/vite/docsProgram.d.ts +17 -4
  580. package/dist/src/vite/docsProgram.js +52 -11
  581. package/dist/src/vite/docsWorker.js +7 -2
  582. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  583. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  584. package/dist/src/vite/fileImports.d.ts +17 -0
  585. package/dist/src/vite/fileImports.js +57 -0
  586. package/dist/src/vite/findComponent.d.ts +10 -2
  587. package/dist/src/vite/findComponent.js +27 -22
  588. package/dist/src/vite/findRoute.js +3 -2
  589. package/dist/src/vite/forcedStates.d.ts +9 -2
  590. package/dist/src/vite/forcedStates.js +12 -3
  591. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  592. package/dist/src/vite/forgebookPlugin.js +55 -73
  593. package/dist/src/vite/frameErrors.d.ts +19 -0
  594. package/dist/src/vite/frameErrors.js +70 -0
  595. package/dist/src/vite/framesServer.d.ts +12 -0
  596. package/dist/src/vite/framesServer.js +21 -4
  597. package/dist/src/vite/functionComponentDocs.js +81 -12
  598. package/dist/src/vite/generatedModules.js +4 -2
  599. package/dist/src/vite/gitChange.d.ts +38 -5
  600. package/dist/src/vite/gitChange.js +71 -11
  601. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  602. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  603. package/dist/src/vite/hotSnippets.d.ts +38 -14
  604. package/dist/src/vite/hotSnippets.js +137 -39
  605. package/dist/src/vite/importedNames.d.ts +37 -0
  606. package/dist/src/vite/importedNames.js +138 -0
  607. package/dist/src/vite/indexFields.d.ts +6 -0
  608. package/dist/src/vite/indexFields.js +21 -0
  609. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  610. package/dist/src/vite/indexStoryFile.js +22 -157
  611. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  612. package/dist/src/vite/jsxCallSites.js +200 -0
  613. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  614. package/dist/src/vite/jsxInScripts.js +138 -0
  615. package/dist/src/vite/jsxTree.d.ts +20 -0
  616. package/dist/src/vite/jsxTree.js +163 -0
  617. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  618. package/dist/src/vite/lineAndColumn.js +18 -0
  619. package/dist/src/vite/lookAlikes.d.ts +65 -0
  620. package/dist/src/vite/lookAlikes.js +228 -0
  621. package/dist/src/vite/nearestToken.d.ts +17 -0
  622. package/dist/src/vite/nearestToken.js +9 -2
  623. package/dist/src/vite/packageEntries.d.ts +42 -0
  624. package/dist/src/vite/packageEntries.js +127 -0
  625. package/dist/src/vite/pages.d.ts +9 -1
  626. package/dist/src/vite/pages.js +119 -4
  627. package/dist/src/vite/pluginConfig.js +4 -0
  628. package/dist/src/vite/pluginIds.d.ts +2 -0
  629. package/dist/src/vite/pluginIds.js +5 -1
  630. package/dist/src/vite/pluginModules.d.ts +81 -11
  631. package/dist/src/vite/pluginModules.js +109 -21
  632. package/dist/src/vite/prebundled.d.ts +57 -15
  633. package/dist/src/vite/prebundled.js +80 -0
  634. package/dist/src/vite/previewTags.d.ts +25 -0
  635. package/dist/src/vite/previewTags.js +56 -0
  636. package/dist/src/vite/projectFiles.d.ts +54 -0
  637. package/dist/src/vite/projectFiles.js +116 -0
  638. package/dist/src/vite/projectPostcss.d.ts +70 -0
  639. package/dist/src/vite/projectPostcss.js +250 -0
  640. package/dist/src/vite/propDocs.d.ts +12 -0
  641. package/dist/src/vite/propDocs.js +187 -60
  642. package/dist/src/vite/propKind.d.ts +40 -0
  643. package/dist/src/vite/propKind.js +71 -0
  644. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  645. package/dist/src/vite/propTypeNotes.js +51 -0
  646. package/dist/src/vite/publishedExports.d.ts +27 -0
  647. package/dist/src/vite/publishedExports.js +298 -0
  648. package/dist/src/vite/realFolder.d.ts +6 -0
  649. package/dist/src/vite/realFolder.js +25 -0
  650. package/dist/src/vite/refsConfig.d.ts +39 -0
  651. package/dist/src/vite/refsConfig.js +54 -0
  652. package/dist/src/vite/reuseCheck.d.ts +45 -0
  653. package/dist/src/vite/reuseCheck.js +260 -0
  654. package/dist/src/vite/runningVersions.d.ts +33 -0
  655. package/dist/src/vite/runningVersions.js +25 -0
  656. package/dist/src/vite/scriptProblems.d.ts +60 -0
  657. package/dist/src/vite/scriptProblems.js +155 -0
  658. package/dist/src/vite/searchModule.js +3 -2
  659. package/dist/src/vite/searchRoute.js +4 -2
  660. package/dist/src/vite/shapeDocs.d.ts +36 -0
  661. package/dist/src/vite/shapeDocs.js +177 -0
  662. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  663. package/dist/src/vite/singleFileComponent.js +83 -0
  664. package/dist/src/vite/sourceText.d.ts +34 -0
  665. package/dist/src/vite/sourceText.js +72 -0
  666. package/dist/src/vite/sourceTokens.d.ts +7 -0
  667. package/dist/src/vite/sourceTokens.js +7 -2
  668. package/dist/src/vite/stackLines.d.ts +49 -0
  669. package/dist/src/vite/stackLines.js +96 -0
  670. package/dist/src/vite/storyCode.d.ts +22 -7
  671. package/dist/src/vite/storyCode.js +263 -37
  672. package/dist/src/vite/storyCoverage.d.ts +48 -0
  673. package/dist/src/vite/storyCoverage.js +179 -0
  674. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  675. package/dist/src/vite/storyFilesModule.js +105 -15
  676. package/dist/src/vite/storyPatterns.d.ts +31 -0
  677. package/dist/src/vite/storyPatterns.js +140 -5
  678. package/dist/src/vite/storyReach.d.ts +10 -2
  679. package/dist/src/vite/storyReach.js +15 -11
  680. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  681. package/dist/src/vite/storyTopLevel.js +146 -0
  682. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  683. package/dist/src/vite/storylessRoutes.js +210 -19
  684. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  685. package/dist/src/vite/switchValuesCheck.js +164 -0
  686. package/dist/src/vite/switchesDocument.d.ts +15 -0
  687. package/dist/src/vite/switchesDocument.js +47 -0
  688. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  689. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  690. package/dist/src/vite/textImports.d.ts +15 -0
  691. package/dist/src/vite/textImports.js +58 -0
  692. package/dist/src/vite/textModules.d.ts +6 -5
  693. package/dist/src/vite/textModules.js +13 -8
  694. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  695. package/dist/src/vite/tokenAnswers.js +11 -7
  696. package/dist/src/vite/typeParameters.d.ts +83 -0
  697. package/dist/src/vite/typeParameters.js +270 -0
  698. package/dist/src/vite/typedControls.d.ts +31 -0
  699. package/dist/src/vite/typedControls.js +66 -0
  700. package/dist/src/vite/unionProps.d.ts +37 -0
  701. package/dist/src/vite/unionProps.js +121 -0
  702. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  703. package/dist/src/vite/unresolvedTokens.js +193 -0
  704. package/dist/src/vite/usageGraph.js +10 -52
  705. package/dist/src/vite/usageGuidance.d.ts +9 -2
  706. package/dist/src/vite/usageGuidance.js +36 -8
  707. package/dist/src/vite/usageImports.d.ts +35 -0
  708. package/dist/src/vite/usageImports.js +280 -0
  709. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  710. package/dist/src/vite/visibilityRoute.js +320 -0
  711. package/dist/src/worstCase.d.ts +2 -0
  712. package/dist/src/worstCase.js +2 -0
  713. package/package.json +28 -8
@@ -1,12 +1,27 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { lazy, Suspense, useEffect, useId, useRef, useState } from "react";
2
+ import { useEffect, useId, useRef, useState } from "react";
3
3
  import { Icon } from "./icons.js";
4
- import { isTyping } from "./keyboard.js";
4
+ import { isSingleKeyFree } from "./keyboard.js";
5
+ import { LazyView, lazyModule } from "./lazyModule.js";
5
6
  import { STRINGS } from "./strings.js";
6
- /** The results, loaded on first use: most visits never search. */
7
- const SearchPanel = lazy(() => import("./SearchPanel.js").then((module) => ({ default: module.SearchPanel }),
8
- // a chunk gone after a new deployment must not take the page with it: the field simply finds nothing more
9
- () => ({ default: () => null })));
7
+ /**
8
+ * The results, loaded on first use: most visits never search. Not through `Suspense`, which holds what it reveals back
9
+ * for 300 ms after its fallback, and that wait would be the first search's (`lazyModule.tsx`).
10
+ */
11
+ const SEARCH_PANEL = lazyModule(() => import("./SearchPanel.js").then((module) => module.SearchPanel));
12
+ /**
13
+ * Fetches the results' code when the pointer comes to the field, ahead of a press: the list then draws with the first
14
+ * letter typed, where it would otherwise wait for its code. A failure is the field's to report when it is used.
15
+ */
16
+ const preloadPanel = () => {
17
+ if (SEARCH_PANEL.loaded !== undefined)
18
+ return;
19
+ SEARCH_PANEL.load()
20
+ .then((panel) => {
21
+ SEARCH_PANEL.loaded = panel;
22
+ })
23
+ .catch(() => undefined);
24
+ };
10
25
  /**
11
26
  * The search field.
12
27
  *
@@ -44,7 +59,7 @@ export const SidebarSearch = ({ query, onQueryChange, onFilterReady, tree, sourc
44
59
  // a hidden sidebar leaves the key to the page
45
60
  if (!isSidebarOpen)
46
61
  return;
47
- if (event.key !== "/" || event.metaKey || event.ctrlKey || event.altKey || isTyping(event.target))
62
+ if (event.key !== "/" || event.metaKey || event.ctrlKey || event.altKey || !isSingleKeyFree(event))
48
63
  return;
49
64
  event.preventDefault();
50
65
  inputRef.current?.focus();
@@ -57,7 +72,7 @@ export const SidebarSearch = ({ query, onQueryChange, onFilterReady, tree, sourc
57
72
  onOpenResult(target);
58
73
  inputRef.current?.blur();
59
74
  };
60
- return (_jsxs(_Fragment, { children: [_jsxs("label", { className: "forgebook-search", children: [_jsx(Icon, { name: "search", size: 14 }), _jsx("input", { type: "search", ref: inputRef, value: query, "aria-controls": isListOpen ? listId : undefined, "aria-activedescendant": activeId, onFocus: () => {
75
+ return (_jsxs(_Fragment, { children: [_jsxs("label", { className: "forgebook-search", onPointerEnter: preloadPanel, children: [_jsx(Icon, { name: "search", size: 14 }), _jsx("input", { type: "search", ref: inputRef, value: query, "aria-controls": isListOpen ? listId : undefined, "aria-activedescendant": activeId, onFocus: () => {
61
76
  setIsUsed(true);
62
77
  setIsListOpen(true);
63
78
  }, onBlur: () => setIsListOpen(false), onKeyDown: (event) => {
@@ -84,5 +99,18 @@ export const SidebarSearch = ({ query, onQueryChange, onFilterReady, tree, sourc
84
99
  } }), query === "" ? (_jsx("kbd", { className: "forgebook-search__key", children: "/" })) : (_jsx("button", { type: "button", className: "forgebook-search__clear", "aria-label": STRINGS.clearSearch, title: STRINGS.clearSearch, onClick: () => {
85
100
  onQueryChange("");
86
101
  inputRef.current?.focus();
87
- }, children: _jsx(Icon, { name: "close", size: 10 }) }))] }), isUsed ? (_jsx(Suspense, { fallback: null, children: _jsx(SearchPanel, { id: listId, tree: tree, sources: sources, query: query, isOpen: isListOpen, field: inputRef, sidebarWidth: sidebarWidth, onFilterReady: onFilterReady, hrefOf: searchHref, onOpen: openResult, onActiveChange: setActiveId, keysRef: keysRef }) })) : null] }));
102
+ }, children: _jsx(Icon, { name: "close", size: 10 }) }))] }), isUsed ? (_jsx(LazyView, { module: SEARCH_PANEL, props: {
103
+ id: listId,
104
+ tree,
105
+ sources,
106
+ query,
107
+ isOpen: isListOpen,
108
+ field: inputRef,
109
+ sidebarWidth,
110
+ onFilterReady,
111
+ hrefOf: searchHref,
112
+ onOpen: openResult,
113
+ onActiveChange: setActiveId,
114
+ keysRef
115
+ }, loading: null, failed: () => null })) : null] }));
88
116
  };
@@ -1,6 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { ApiTableBox } from "./ApiTableBox.js";
2
3
  import { Code } from "./Code.js";
3
4
  import { CodeText } from "./CodeText.js";
5
+ import { LATER_STRINGS } from "./laterStrings.js";
4
6
  import { STRINGS } from "./strings.js";
5
7
  /**
6
8
  * The type parameters as the call writes them: `<TValue>`, or nothing.
@@ -22,4 +24,4 @@ export const callText = (name, signature) => `${name}${typeParametersText(signat
22
24
  *
23
25
  * @param props - the function's name and signature.
24
26
  */
25
- export const SignatureReference = ({ name, signature }) => (_jsxs("div", { className: "forgebook-signature", children: [_jsx("pre", { className: "forgebook-signature__call", children: _jsx(Code, { text: callText(name, signature), names: signature.parameters.map((parameter) => parameter.name) }) }), signature.parameters.length === 0 ? (_jsx("p", { className: "forgebook-tab-note", children: STRINGS.signatureNone })) : (_jsx("div", { className: "forgebook-api", children: _jsxs("table", { className: "forgebook-api__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: STRINGS.signatureParameter }), _jsx("th", { scope: "col", children: STRINGS.apiType }), _jsx("th", { scope: "col", children: STRINGS.apiWhat })] }) }), _jsx("tbody", { children: signature.parameters.map((parameter) => (_jsxs("tr", { "data-prop": parameter.name, children: [_jsxs("th", { scope: "row", children: [_jsxs("code", { className: "forgebook-api__name", children: [parameter.isRest ? "..." : "", parameter.name] }), parameter.isOptional || parameter.isRest ? null : (_jsx("span", { className: "forgebook-prop__required", title: STRINGS.required, children: "*" }))] }), _jsx("td", { className: "forgebook-api__type", children: _jsx(Code, { text: parameter.type, names: [] }) }), _jsx("td", { children: _jsx(CodeText, { text: parameter.description }) })] }, parameter.name))) })] }) })), _jsx("h3", { className: "forgebook-signature__returns", children: STRINGS.signatureReturns }), _jsxs("p", { children: [_jsx("code", { className: "forgebook-inline-code", children: signature.returns }), signature.returnsDescription === "" ? null : (_jsxs(_Fragment, { children: [" ", _jsx(CodeText, { text: signature.returnsDescription })] }))] })] }));
27
+ export const SignatureReference = ({ name, signature }) => (_jsxs("div", { className: "forgebook-signature", children: [_jsx("pre", { className: "forgebook-signature__call", children: _jsx(Code, { text: callText(name, signature), names: signature.parameters.map((parameter) => parameter.name) }) }), signature.parameters.length === 0 ? (_jsx("p", { className: "forgebook-tab-note", children: LATER_STRINGS.signatureNone })) : (_jsx(ApiTableBox, { children: _jsxs("table", { className: "forgebook-api__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: LATER_STRINGS.signatureParameter }), _jsx("th", { scope: "col", children: LATER_STRINGS.apiType }), _jsx("th", { scope: "col", children: LATER_STRINGS.apiWhat })] }) }), _jsx("tbody", { children: signature.parameters.map((parameter) => (_jsxs("tr", { "data-prop": parameter.name, children: [_jsxs("th", { scope: "row", children: [_jsxs("code", { className: "forgebook-api__name", children: [parameter.isRest ? "..." : "", parameter.name] }), parameter.isOptional || parameter.isRest ? null : (_jsx("span", { className: "forgebook-prop__required", title: STRINGS.required, children: "*" }))] }), _jsx("td", { className: "forgebook-api__type", children: _jsx(Code, { text: parameter.type, names: [] }) }), _jsx("td", { children: _jsx(CodeText, { text: parameter.description }) })] }, parameter.name))) })] }) })), _jsx("h3", { className: "forgebook-signature__returns", children: LATER_STRINGS.signatureReturns }), _jsxs("p", { children: [_jsx("code", { className: "forgebook-inline-code", children: signature.returns }), signature.returnsDescription === "" ? null : (_jsxs(_Fragment, { children: [" ", _jsx(CodeText, { text: signature.returnsDescription })] }))] })] }));
@@ -11,11 +11,13 @@
11
11
  * @module
12
12
  */
13
13
  import { type ReactNode } from "react";
14
- import { type PanelArgs } from "../messages.ts";
14
+ import type { AddressLink } from "../addressArgsParam.ts";
15
+ import type { PanelArgs } from "../messages.ts";
15
16
  import type { NamedValues } from "../namedValues.ts";
16
17
  import { type FixedView } from "../storyGlobals.ts";
17
18
  import type { TreeComponent, TreeStory } from "../storyTree.ts";
18
19
  import { type ViewState } from "../viewState.ts";
20
+ import type { ArgControlLoaders } from "./customControls.ts";
19
21
  import type { ShellPlugin } from "./pluginTabs.tsx";
20
22
  import { type PageScroll } from "./useScrollMemory.ts";
21
23
  /** The stage's props. */
@@ -30,11 +32,17 @@ export type StageProps = {
30
32
  readonly onViewChange: (view: ViewState) => void;
31
33
  /** Called with what a story fixes of the view, once its frame read it, for the toolbar to show. */
32
34
  readonly onFixedChange: (storyId: string, fixed: FixedView) => void;
35
+ /** Loads the catalogue's design tokens; none when it has none. */
36
+ readonly loadTokens?: (() => Promise<unknown>) | undefined;
37
+ /** Loads each custom control the catalogue registers, by name; none when it registers none. */
38
+ readonly argControls?: ArgControlLoaders | undefined;
33
39
  /**
34
40
  * The values set in the Props tab, over the story's own args (kept in the address): as the address names them, so
35
41
  * unchecked; the stage hands the frames only those the story declares.
36
42
  */
37
43
  readonly panelArgs: PanelArgs;
44
+ /** What else the address says of the values: how to type them, and which could not be read. */
45
+ readonly addressLink: AddressLink | undefined;
38
46
  /** Called with the panel's changed values. */
39
47
  readonly onPanelArgsChange: (args: PanelArgs) => void;
40
48
  /** The matrix's axes (kept in the address): the rows' prop, then the columns'; empty draws the story alone. */
@@ -70,4 +78,4 @@ export type StageProps = {
70
78
  *
71
79
  * @param props - the component, the story, the view, the panel's values, the frame page and the loaders.
72
80
  */
73
- export declare const Stage: ({ component, story, view: ownView, onViewChange: onOwnViewChange, onFixedChange, panelArgs, onPanelArgsChange, matrixAxes, onMatrixAxesChange, frameUrl, plugins, loadCode, loadDocs, namedValues, header, onShownWidthChange, measuredHeight, backgroundOf, scroll }: StageProps) => ReactNode;
81
+ export declare const Stage: ({ component, story, view: ownView, onViewChange: onOwnViewChange, onFixedChange, loadTokens, argControls, panelArgs, addressLink, onPanelArgsChange, matrixAxes, onMatrixAxesChange, frameUrl, plugins, loadCode, loadDocs, namedValues, header, onShownWidthChange, measuredHeight, backgroundOf, scroll }: StageProps) => ReactNode;
@@ -15,9 +15,9 @@ import { useEffect, useMemo, useRef, useState } from "react";
15
15
  import { checkedArgsMessage } from "../addressArgs.js";
16
16
  import { panelProps, settableProps } from "../argTypes.js";
17
17
  import { matrixOf, matrixProps } from "../matrix.js";
18
- import { panelArgsParam } from "../messages.js";
19
18
  import { withFixed, withOwnFixed } from "../storyGlobals.js";
20
- import { frameAddress, isComparing, liveView, schemeOf, viewParams } from "../viewState.js";
19
+ import { shownSwitches } from "../switches.js";
20
+ import { frameAddress, isComparing, liveView, schemeOf } from "../viewState.js";
21
21
  import { useStoryClockControls } from "./ClockControls.js";
22
22
  import { useCatalogue } from "./catalogueContext.js";
23
23
  import { DeviceSlot, deviceAddress, isWaitingForDevice, roomSizing, useInkScheme, useStageDevice } from "./DeviceSlot.js";
@@ -31,6 +31,7 @@ import { StageCompare } from "./StageCompare.js";
31
31
  import { StageTools } from "./StageTools.js";
32
32
  import { StageViewport } from "./StageViewport.js";
33
33
  import { StoryBar } from "./StoryBar.js";
34
+ import { embedHeight, embedQuery, takesArgs, usePanelValues } from "./stageArgs.js";
34
35
  import { STRINGS } from "./strings.js";
35
36
  import { useAddressArgs } from "./useAddressArgs.js";
36
37
  import { useFrameMessages } from "./useFrameMessages.js";
@@ -53,42 +54,16 @@ const widthSetter = (fixed, view, onViewChange) => fixed.width === undefined ? (
53
54
  const INITIAL_FRAME_HEIGHT = 240;
54
55
  /** The most calls the Events tab keeps. */
55
56
  const MAX_CALLS = 50;
56
- /**
57
- * Whether a story's args change what it draws: not for a story of fixed examples, nor for one about logic, whose scene
58
- * takes none.
59
- *
60
- * @param story - the story.
61
- */
62
- const takesArgs = (story) => !story.isLogic && (story.controls === "all" || story.controls.length > 0);
63
- /**
64
- * What an embed of the story keeps of the page: its view and the values set in the panel. An embed draws no device
65
- * frame, so the device chosen is left out: the embed is the story at the width its iframe gives it.
66
- *
67
- * @param view - the reader's view, without what the story fixes, which the story fixes again.
68
- * @param panelArgs - the values set in the panel.
69
- * @param switches - the catalogue's switches.
70
- */
71
- const embedQuery = (view, panelArgs, switches) => {
72
- const params = viewParams({ ...view, device: "auto", orientation: "auto" }, switches);
73
- const args = panelArgsParam(panelArgs);
74
- if (args !== "")
75
- params.set("args", args);
76
- return params.toString();
77
- };
78
- /**
79
- * The height an embed's iframe starts at: as tall as the frame is on the stage.
80
- *
81
- * @param view - the view, with the height set on the stage.
82
- * @param contentHeight - the story's content, in CSS px.
83
- * @param story - the story, with the height its scene declares.
84
- */
85
- const embedHeight = (view, contentHeight, story) => view.height === "auto" ? Math.max(contentHeight, story.height ?? 0) : view.height;
57
+ /** No args of the story's own, as one value: what is computed from them is kept while it stays the same. */
58
+ const NO_OWN_ARGS = {};
59
+ /** A story's own args, as its frame reported them; none before it did. */
60
+ const ownArgsOf = (reported, storyId) => reported.get(storyId) ?? NO_OWN_ARGS;
86
61
  /**
87
62
  * The stage.
88
63
  *
89
64
  * @param props - the component, the story, the view, the panel's values, the frame page and the loaders.
90
65
  */
91
- export const Stage = ({ component, story, view: ownView, onViewChange: onOwnViewChange, onFixedChange, panelArgs, onPanelArgsChange, matrixAxes, onMatrixAxesChange, frameUrl, plugins, loadCode, loadDocs, namedValues, header, onShownWidthChange, measuredHeight, backgroundOf, scroll }) => {
66
+ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnViewChange, onFixedChange, loadTokens, argControls, panelArgs, addressLink, onPanelArgsChange, matrixAxes, onMatrixAxesChange, frameUrl, plugins, loadCode, loadDocs, namedValues, header, onShownWidthChange, measuredHeight, backgroundOf, scroll }) => {
92
67
  const frameRef = useRef(null);
93
68
  const storyRef = useRef(null);
94
69
  const code = useStoryCode(loadCode);
@@ -123,7 +98,9 @@ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnView
123
98
  null, [docs, matrixAxes, story.isLogic]);
124
99
  // the address's values reach the frames only once checked against what the story declares
125
100
  const addressArgs = useAddressArgs({
101
+ argControls,
126
102
  panelArgs,
103
+ link: addressLink,
127
104
  docs,
128
105
  storyArgs: storyArgs.get(story.id),
129
106
  argTypes: panel.argTypes,
@@ -132,16 +109,20 @@ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnView
132
109
  frames: storyRef
133
110
  });
134
111
  const acceptedArgs = addressArgs.accepted;
135
- const values = { ...storyArgs.get(story.id), ...acceptedArgs };
112
+ const ownArgs = ownArgsOf(storyArgs, story.id);
113
+ const panelValues = usePanelValues(acceptedArgs, ownArgs, onPanelArgsChange);
114
+ const { values } = panelValues;
136
115
  const settable = useMemo(() => docs.status === "ready"
137
- ? settableProps(panelProps(docs.value.props, panel.argTypes), panel.controls, namedValues ?? {})
138
- : [], [docs, panel.argTypes, panel.controls, namedValues]);
116
+ ? settableProps(panelProps(docs.value.props, panel.argTypes, ownArgs), panel.controls, namedValues ?? {})
117
+ : [], [docs, panel.argTypes, panel.controls, namedValues, ownArgs]);
139
118
  const worstCase = useWorstCase({
140
119
  storyRef,
141
120
  storyId: story.id,
142
121
  settable,
143
122
  values,
144
123
  panelArgs: acceptedArgs,
124
+ namedValues,
125
+ worstOfShape: addressArgs.worstOfShape,
145
126
  onPanelArgsChange
146
127
  });
147
128
  const clockControls = useStoryClockControls(frameRef, story.id);
@@ -188,11 +169,6 @@ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnView
188
169
  // the docs may arrive after the frames: they learn the events then
189
170
  useEffect(() => tellFrames(storyRef.current, { type: "forgebook:events", names: eventNames }), [eventNames]);
190
171
  useEffect(() => tellFrames(storyRef.current, { type: "forgebook:matrix", matrix }), [matrix]);
191
- // a change starts from the values the story takes: one the address named and the story does not is let go
192
- const changeValue = (name, value) => {
193
- const { [name]: _removed, ...rest } = acceptedArgs;
194
- onPanelArgsChange(value === undefined ? rest : { ...rest, [name]: value });
195
- };
196
172
  const replay = () => {
197
173
  const message = { type: "forgebook:replay" };
198
174
  frameRef.current?.contentWindow?.postMessage(message, framesOrigin());
@@ -205,7 +181,7 @@ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnView
205
181
  // among them) is sent live
206
182
  // a device sets the story's width and height in place of the stage's own, and its story area is the toolbar's width
207
183
  const { shown, framed } = useStageDevice(view, story.device, onShownWidthChange);
208
- const address = deviceAddress(frameAddress(frameUrl, story.id, useLoadedView(`${story.id}|${view.sheets}`, view), switches), framed);
184
+ const address = deviceAddress(frameAddress(frameUrl, story.id, useLoadedView(`${story.id}|${view.sheets}|${view.play}`, view), switches), framed);
209
185
  useLiveView(storyRef, view, !isComparing(view));
210
186
  useScrollMemory(storyRef, scroll);
211
187
  const ink = useInkScheme(schemeOf(view, switches));
@@ -244,7 +220,12 @@ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnView
244
220
  controls: panel.controls,
245
221
  actions: panel.actions,
246
222
  values,
247
- onValueChange: changeValue,
223
+ panelArgs: acceptedArgs,
224
+ storyArgs: ownArgs,
225
+ loadTokens,
226
+ argControls,
227
+ globals: shownSwitches(view.switches, switches),
228
+ onValueChange: panelValues.change,
248
229
  onReset: () => onPanelArgsChange({}),
249
230
  worstCase: worstCase.state,
250
231
  namedValues,
@@ -256,17 +237,16 @@ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnView
256
237
  calls: calls.filter((call) => call.storyId === story.id),
257
238
  onClearCalls: () => setCalls([]),
258
239
  trace: isComparing(view) ? undefined : traces.get(story.id),
259
- onPlayAgain: () => {
260
- const message = { type: "forgebook:play-again" };
261
- frameRef.current?.contentWindow?.postMessage(message, framesOrigin());
262
- },
240
+ view,
241
+ onViewChange,
242
+ onPlayStep: (command) => tellFrames(storyRef.current, { type: "forgebook:play-step", command }),
263
243
  check: storyCheck.check,
264
244
  onCheck: isComparing(view) ? undefined : storyCheck.run,
265
245
  pluginTabs
266
246
  }).filter((tab) => catalogue.tabs.includes(tab.id));
267
247
  return (_jsxs("div", { className: "forgebook-workspace", children: [header, _jsxs("div", { className: "forgebook-story-pane", children: [_jsx("div", { ref: storyRef, className: "forgebook-scroll", children: _jsxs("section", { className: "forgebook-story", "aria-label": STRINGS.storyLabel, children: [_jsx(StoryBar, { story: story, axisProps: axisProps, matrixAxes: matrixAxes, onMatrixAxesChange: onMatrixAxesChange, onReplay: canReplay ? replay : undefined, clockControls: hasClock ? clockControls : undefined, frameAddress: frameAddress(frameUrl, story.id, view, switches), embed: {
268
248
  title,
269
- query: embedQuery(ownView, panelArgs, switches),
249
+ query: embedQuery(ownView, acceptedArgs, switches),
270
250
  height: embedHeight(view, reportedHeight ?? lastHeight, story)
271
251
  } }), _jsx(DroppedArgsNote, { dropped: addressArgs.dropped, onRemove: () => onPanelArgsChange(acceptedArgs) }), isComparing(view) ? (_jsx(StageCompare, { story: story, title: title, view: view, frameUrl: frameUrl, framed: framed, heights: heights, settled: settled, fallbackHeight: lastHeight, backgroundOf: backgroundOf })) : (_jsx(StageViewport, { zoom: view.zoom, ...roomSizing(framed, {
272
252
  width: view.width,
@@ -275,5 +255,5 @@ export const Stage = ({ component, story, view: ownView, onViewChange: onOwnView
275
255
  background: backgroundOf(view),
276
256
  height: view.height,
277
257
  onHeightChange: (height) => onViewChange({ ...view, height })
278
- }), children: (fixedHeight) => (_jsx(DeviceSlot, { framed: framed, scheme: ink, background: backgroundOf(view), children: isWaitingForDevice(shown, framed) ? null : (_jsx(FrameView, { ref: frameRef, title: title, address: address, heights: heights, settled: settled, fallbackHeight: measuredHeight ?? lastHeight, sceneHeight: story.height, fixedHeight: framed?.area.height ?? fixedHeight }, story.id)) })) }))] }) }), isComparing(view) ? null : (_jsx(StageTools, { zoom: view.zoom, onZoomChange: (zoom) => onViewChange({ ...view, zoom }), tools: view.tools, onToolsChange: (tools) => onViewChange({ ...view, tools }) }))] }), view.isPanelOpen ? (_jsx(Dock, { tabs: tabs, activeTab: view.panelTab, onTabChange: (panelTab) => onViewChange({ ...view, panelTab }), onClose: () => onViewChange({ ...view, isPanelOpen: false }) })) : null] }));
258
+ }), children: (fixedHeight) => (_jsx(DeviceSlot, { framed: framed, scheme: ink, background: backgroundOf(view), children: isWaitingForDevice(shown, framed) ? null : (_jsx(FrameView, { frame: frameRef, title: title, address: address, heights: heights, settled: settled, fallbackHeight: measuredHeight ?? lastHeight, sceneHeight: story.height, fixedHeight: framed?.area.height ?? fixedHeight }, story.id)) })) }))] }) }), isComparing(view) ? null : (_jsx(StageTools, { zoom: view.zoom, onZoomChange: (zoom) => onViewChange({ ...view, zoom }), tools: view.tools, onToolsChange: (tools) => onViewChange({ ...view, tools }) }))] }), view.isPanelOpen ? (_jsx(Dock, { tabs: tabs, activeTab: view.panelTab, onTabChange: (panelTab) => onViewChange({ ...view, panelTab }), onClose: () => onViewChange({ ...view, isPanelOpen: false }) })) : null] }));
279
259
  };
@@ -0,0 +1,54 @@
1
+ /**
2
+ * The statuses' badges: in a component's entry of the sidebar, at the top of its page, beside a story's example that
3
+ * holds a status of its own, and in the tag filter's list.
4
+ * Loaded with the tag filter (`TagViews.tsx`), only for a catalogue whose stories have tags.
5
+ *
6
+ * @remarks
7
+ * A badge says its status in words, so its colour is never the only sign; a hidden word before the badges tells a
8
+ * screen reader what they are. A page whose component is `@deprecated` in its TSDoc shows the `deprecated` badge even
9
+ * when its meta has no such tag, with the TSDoc's reason in its tooltip, so the page never says less than the docs.
10
+ *
11
+ * @module
12
+ */
13
+ import { type ReactNode } from "react";
14
+ import { type CatalogueStatus } from "../storyStatuses.ts";
15
+ import type { TreeComponent } from "../storyTree.ts";
16
+ import "./statusBadges.scss";
17
+ /**
18
+ * A status's text: the catalogue's label, else Forgebook's word for a default status, else its tag.
19
+ *
20
+ * @param status - the status.
21
+ */
22
+ export declare const statusLabel: (status: CatalogueStatus) => string;
23
+ /**
24
+ * One badge.
25
+ *
26
+ * @param props - the status, and the tooltip it carries when there is more to say.
27
+ */
28
+ export declare const StatusBadge: ({ status, hint }: {
29
+ readonly status: CatalogueStatus;
30
+ readonly hint?: string | undefined;
31
+ }) => ReactNode;
32
+ /**
33
+ * The catalogue's statuses, their defaults filled in, once per declaration.
34
+ */
35
+ export declare const useStatuses: () => readonly CatalogueStatus[];
36
+ /**
37
+ * The badges of the statuses a list of tags holds; nothing for none.
38
+ *
39
+ * @param props - the tags, and the row's class.
40
+ */
41
+ export declare const StatusBadges: ({ tags, className }: {
42
+ readonly tags: readonly string[];
43
+ readonly className: string;
44
+ }) => ReactNode;
45
+ /**
46
+ * The badges at the top of a component's page: its meta's statuses, and `deprecated` when its TSDoc says so, with the
47
+ * TSDoc's reason in that badge's tooltip.
48
+ *
49
+ * @param props - the component and its docs loader.
50
+ */
51
+ export declare const ComponentBadges: ({ component, loadDocs }: {
52
+ readonly component: TreeComponent;
53
+ readonly loadDocs: (() => Promise<unknown>) | undefined;
54
+ }) => ReactNode;
@@ -0,0 +1,77 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * The statuses' badges: in a component's entry of the sidebar, at the top of its page, beside a story's example that
4
+ * holds a status of its own, and in the tag filter's list.
5
+ * Loaded with the tag filter (`TagViews.tsx`), only for a catalogue whose stories have tags.
6
+ *
7
+ * @remarks
8
+ * A badge says its status in words, so its colour is never the only sign; a hidden word before the badges tells a
9
+ * screen reader what they are. A page whose component is `@deprecated` in its TSDoc shows the `deprecated` badge even
10
+ * when its meta has no such tag, with the TSDoc's reason in its tooltip, so the page never says less than the docs.
11
+ *
12
+ * @module
13
+ */
14
+ import { useMemo } from "react";
15
+ import { catalogueStatuses, DEPRECATED_STATUS, statusesOf } from "../storyStatuses.js";
16
+ import "./statusBadges.css";
17
+ import { useCatalogue } from "./catalogueContext.js";
18
+ import { textsOfGroup } from "./strings.js";
19
+ import { useComponentDocs } from "./useComponentDocs.js";
20
+ /** The badges' texts, as shown: Forgebook's, with the catalogue's replacements (`strings: { "statuses.review": … }`). */
21
+ const STATUS_TEXTS = textsOfGroup("statuses", {
22
+ status: "Status",
23
+ review: "Review",
24
+ experimental: "Experimental",
25
+ deprecated: "Deprecated",
26
+ fromDocs: (reason) => `Deprecated in its TSDoc: ${reason}`
27
+ });
28
+ /**
29
+ * A status's text: the catalogue's label, else Forgebook's word for a default status, else its tag.
30
+ *
31
+ * @param status - the status.
32
+ */
33
+ export const statusLabel = (status) => {
34
+ if (status.label !== undefined)
35
+ return status.label;
36
+ if (status.id === "review" || status.id === "experimental" || status.id === "deprecated")
37
+ return STATUS_TEXTS[status.id];
38
+ return status.id;
39
+ };
40
+ /**
41
+ * One badge.
42
+ *
43
+ * @param props - the status, and the tooltip it carries when there is more to say.
44
+ */
45
+ export const StatusBadge = ({ status, hint }) => (_jsx("span", { className: "forgebook-status", "data-tone": status.tone, title: hint ?? statusLabel(status), children: statusLabel(status) }));
46
+ /**
47
+ * A row of badges, with the hidden word that says what they are; nothing for none.
48
+ *
49
+ * @param props - the statuses, the tooltip of each by id, and the row's class.
50
+ */
51
+ const Badges = ({ statuses, hints, className }) => statuses.length === 0 ? null : (_jsxs("span", { className: className, children: [_jsxs("span", { className: "forgebook-visually-hidden", children: [STATUS_TEXTS.status, ": "] }), statuses.map((status) => (_jsx(StatusBadge, { status: status, hint: hints?.[status.id] }, status.id)))] }));
52
+ /**
53
+ * The catalogue's statuses, their defaults filled in, once per declaration.
54
+ */
55
+ export const useStatuses = () => {
56
+ const { statuses } = useCatalogue();
57
+ return useMemo(() => catalogueStatuses(statuses), [statuses]);
58
+ };
59
+ /**
60
+ * The badges of the statuses a list of tags holds; nothing for none.
61
+ *
62
+ * @param props - the tags, and the row's class.
63
+ */
64
+ export const StatusBadges = ({ tags, className }) => _jsx(Badges, { className: className, statuses: statusesOf(tags, useStatuses()) });
65
+ /**
66
+ * The badges at the top of a component's page: its meta's statuses, and `deprecated` when its TSDoc says so, with the
67
+ * TSDoc's reason in that badge's tooltip.
68
+ *
69
+ * @param props - the component and its docs loader.
70
+ */
71
+ export const ComponentBadges = ({ component, loadDocs }) => {
72
+ const statuses = useStatuses();
73
+ const docs = useComponentDocs(loadDocs);
74
+ const reason = docs.status === "ready" ? docs.value.guidance?.deprecated : undefined;
75
+ const { tags } = component;
76
+ return (_jsx(Badges, { className: "forgebook-status-badges forgebook-status-badges--page", statuses: statusesOf(reason === undefined ? tags : [...tags, DEPRECATED_STATUS], statuses), hints: reason === undefined ? {} : { [DEPRECATED_STATUS]: STATUS_TEXTS.fromDocs(reason) } }));
77
+ };
@@ -1,31 +1,20 @@
1
1
  /**
2
2
  * A story's code, as the panel's Code tab and the component page show it: its `render` as written, coloured by the
3
- * plugin, or, for a story drawn from its args, the component in the framework's code with the values of the moment.
3
+ * plugin, or, for a story drawn from its args, the component in the framework's code with the args its file writes as
4
+ * code (functions, elements) as written and the values of the moment for the rest.
5
+ *
6
+ * @see `../storyCodeText.ts` for the text.
4
7
  *
5
8
  * @module
6
9
  */
7
- import type { StoryFileCode } from "@forgebook/story-format/source";
8
10
  import type { ReactNode } from "react";
9
- import type { StoryCodeWriter } from "../frame/renderer.ts";
10
- import type { PanelArgs } from "../messages.ts";
11
- /** Which story's code, and the values its JSX is drawn from when it has no `render`. */
12
- export type StoryCodeSource = {
13
- /** The story file's code. */
14
- readonly code: StoryFileCode;
15
- /** The story's export name. */
16
- readonly exportName: string;
17
- /** The component's name as code writes it (`codeNameOf`), for the code of a story drawn from its args. */
18
- readonly componentName: string;
19
- /** The values of the moment: the story's args, with the panel's over them on the story page. */
20
- readonly args: PanelArgs;
21
- };
11
+ import { type StoryCodeSource } from "../storyCodeText.ts";
22
12
  /**
23
- * The story's code as text, as copied.
13
+ * Whether the story has a `render` of its own, shown as written.
24
14
  *
25
- * @param source - the file's code, the story, the component's name and the args.
26
- * @param write - the framework's code writer, for a story drawn from its args.
15
+ * @param source - the file's code and the story.
27
16
  */
28
- export declare const storyCodeText: ({ code, exportName, componentName, args }: StoryCodeSource, write: StoryCodeWriter) => string;
17
+ export declare const hasRenderCode: (source: StoryCodeSource) => boolean;
29
18
  /**
30
19
  * The story's code, coloured.
31
20
  *
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { renderCodeOf, storyCodeText, writtenArgsOf } from "../storyCodeText.js";
2
3
  import { Code } from "./Code.js";
3
4
  import { useCodeWriter } from "./codeWriter.js";
4
5
  /**
5
- * The story's code as text, as copied.
6
+ * Whether the story has a `render` of its own, shown as written.
6
7
  *
7
- * @param source - the file's code, the story, the component's name and the args.
8
- * @param write - the framework's code writer, for a story drawn from its args.
8
+ * @param source - the file's code and the story.
9
9
  */
10
- export const storyCodeText = ({ code, exportName, componentName, args }, write) => code[exportName]?.text ?? write(componentName, args);
10
+ export const hasRenderCode = (source) => renderCodeOf(source) !== undefined;
11
11
  /**
12
12
  * The story's code, coloured.
13
13
  *
@@ -15,12 +15,13 @@ export const storyCodeText = ({ code, exportName, componentName, args }, write)
15
15
  */
16
16
  export const StoryCodeBlock = (source) => {
17
17
  const write = useCodeWriter();
18
- const render = source.code[source.exportName];
18
+ const render = renderCodeOf(source);
19
19
  if (render !== undefined) {
20
20
  // biome-ignore lint/style/useNamingConvention: React's own name for markup set as HTML
21
21
  const markup = { __html: render.html };
22
22
  return (_jsx("pre", { className: "forgebook-code-block", children: _jsx("code", { className: "forgebook-code", dangerouslySetInnerHTML: markup }) }));
23
23
  }
24
24
  // the attributes' names are names, not types: only the component's name is coloured as one
25
- return (_jsx("pre", { className: "forgebook-code-block", children: _jsx(Code, { text: storyCodeText(source, write), names: Object.keys(source.args) }) }));
25
+ const names = [...Object.keys(source.args), ...Object.keys(writtenArgsOf(source))];
26
+ return (_jsx("pre", { className: "forgebook-code-block", children: _jsx(Code, { text: storyCodeText(source, write), names: names }) }));
26
27
  };
@@ -16,10 +16,12 @@ export type StoryPickerProps = {
16
16
  readonly onOpenComponent: () => void;
17
17
  /** Opens a story's page. */
18
18
  readonly onOpenStory: (story: TreeStory) => void;
19
+ /** What sits beside the select, at the header's end: the page width's button. */
20
+ readonly children?: ReactNode;
19
21
  };
20
22
  /**
21
23
  * The picker of a component's stories.
22
24
  *
23
- * @param props - the component, the shown story and how to open a page.
25
+ * @param props - the component, the shown story, how to open a page, and what sits beside the select.
24
26
  */
25
- export declare const StoryPicker: ({ component, currentStoryId, onOpenComponent, onOpenStory }: StoryPickerProps) => ReactNode;
27
+ export declare const StoryPicker: ({ component, currentStoryId, onOpenComponent, onOpenStory, children }: StoryPickerProps) => ReactNode;
@@ -15,9 +15,9 @@ const ALL = "";
15
15
  /**
16
16
  * The picker of a component's stories.
17
17
  *
18
- * @param props - the component, the shown story and how to open a page.
18
+ * @param props - the component, the shown story, how to open a page, and what sits beside the select.
19
19
  */
20
- export const StoryPicker = ({ component, currentStoryId, onOpenComponent, onOpenStory }) => {
20
+ export const StoryPicker = ({ component, currentStoryId, onOpenComponent, onOpenStory, children }) => {
21
21
  const id = useId();
22
22
  const { storyGroups } = useCatalogue();
23
23
  const sections = groupedStories(component.stories, storyGroups.map((group) => group.id));
@@ -27,5 +27,5 @@ export const StoryPicker = ({ component, currentStoryId, onOpenComponent, onOpen
27
27
  onOpenComponent();
28
28
  else
29
29
  onOpenStory(chosen);
30
- }, children: [_jsx("option", { value: ALL, children: STRINGS.allStories(component.stories.length) }), sections.map((section) => section.group === undefined ? (section.stories.map((story) => (_jsx("option", { value: story.id, children: story.name }, story.id)))) : (_jsx("optgroup", { label: groupLabel(storyGroups, section.group), children: section.stories.map((story) => (_jsx("option", { value: story.id, children: story.name }, story.id))) }, section.group)))] })] }));
30
+ }, children: [_jsx("option", { value: ALL, children: STRINGS.allStories(component.stories.length) }), sections.map((section) => section.group === undefined ? (section.stories.map((story) => (_jsx("option", { value: story.id, children: story.name }, story.id)))) : (_jsx("optgroup", { label: groupLabel(storyGroups, section.group), children: section.stories.map((story) => (_jsx("option", { value: story.id, children: story.name }, story.id))) }, section.group)))] }), children] }));
31
31
  };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * A boolean's switch, in the Props tab's fields and in the nested fields of the value editors.
3
+ *
4
+ * @remarks
5
+ * A native checkbox drawn as a switch (`role="switch"`, `.forgebook-switch`): it keeps Space, the label and the
6
+ * disabled state of a checkbox, and Enter turns it as well, as a switch's button would.
7
+ *
8
+ * @module
9
+ */
10
+ import type { ReactNode } from "react";
11
+ /** What a switch shows and calls. */
12
+ export type SwitchProps = {
13
+ /** Its accessible name. */
14
+ readonly label: string;
15
+ /** Whether it is on. */
16
+ readonly isOn: boolean;
17
+ /** The id of the text that describes it, when there is one. */
18
+ readonly describedBy?: string | undefined;
19
+ /** Whether it cannot be turned: a value the type fixes. */
20
+ readonly disabled?: boolean | undefined;
21
+ /** Called with the new state. */
22
+ readonly onChange: (isOn: boolean) => void;
23
+ };
24
+ /**
25
+ * The switch.
26
+ *
27
+ * @param props - its name, state and setter.
28
+ */
29
+ export declare const Switch: ({ label, isOn, describedBy, disabled, onChange }: SwitchProps) => ReactNode;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * The switch.
4
+ *
5
+ * @param props - its name, state and setter.
6
+ */
7
+ export const Switch = ({ label, isOn, describedBy, disabled, onChange }) => (_jsx("input", { type: "checkbox", role: "switch", className: "forgebook-switch", "aria-label": label, "aria-checked": isOn, "aria-describedby": describedBy, checked: isOn, disabled: disabled, onChange: (event) => onChange(event.target.checked), onKeyDown: (event) => {
8
+ // a click turns it as Space does, through its change
9
+ if (event.key === "Enter")
10
+ event.currentTarget.click();
11
+ } }));
@@ -0,0 +1,36 @@
1
+ /**
2
+ * A switch offered as a gallery (`control: "gallery"`): a button naming the value shown, which opens a menu of the
3
+ * values with their previews.
4
+ *
5
+ * @remarks
6
+ * Only the button is on the first screen: the menu's code, its styles and the previews themselves load when it first
7
+ * opens (`SwitchGalleryPanel.tsx`), so a catalogue pays for its gallery only when a reader asks for it.
8
+ *
9
+ * @module
10
+ */
11
+ import type { ReactNode } from "react";
12
+ import { type ViewSwitch } from "../switches.ts";
13
+ import type { SwitchPreviews } from "./SwitchGalleryPanel.tsx";
14
+ /** A gallery's props. */
15
+ export type SwitchGalleryProps = {
16
+ /** The switch. */
17
+ readonly each: ViewSwitch;
18
+ /** Whether it sits on the toolbar, after its name, or in a row of the View menu, whose row names it. */
19
+ readonly isOnBar: boolean;
20
+ /** The value shown. */
21
+ readonly value: string;
22
+ /** Called with the chosen value. */
23
+ readonly onValueChange: (value: string) => void;
24
+ /** Whether it is off. */
25
+ readonly isDisabled: boolean;
26
+ /** Why it is off, as its tooltip. */
27
+ readonly disabledNote: string | undefined;
28
+ /** Loads the catalogue's previews; none when it gives none. */
29
+ readonly loadPreviews: (() => Promise<SwitchPreviews>) | undefined;
30
+ };
31
+ /**
32
+ * A gallery's button, and its menu once open.
33
+ *
34
+ * @param props - the switch, the value shown and its setter.
35
+ */
36
+ export declare const SwitchGallery: ({ each, isOnBar, value, onValueChange, isDisabled, disabledNote, loadPreviews }: SwitchGalleryProps) => ReactNode;