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
@@ -0,0 +1,44 @@
1
+ /**
2
+ * A pinned control's small menu, opened by a right-click or the keyboard's menu key: take it off the toolbar, hide it in
3
+ * the View menu or show it there again.
4
+ *
5
+ * @remarks
6
+ * Loaded the first time one opens (`PinnedControl.tsx`): the control is on the first screen, and few readers ever ask for
7
+ * its menu.
8
+ *
9
+ * @module
10
+ */
11
+ import { type ReactNode } from "react";
12
+ import type { ToolbarLayout } from "./useToolbarLayout.ts";
13
+ /** Where the menu opens, in the window's px. */
14
+ export type MenuPoint = {
15
+ /** From the window's left. */
16
+ readonly x: number;
17
+ /** From the window's top. */
18
+ readonly y: number;
19
+ };
20
+ /** The menu's props. */
21
+ export type ControlMenuProps = {
22
+ /** The control's id. */
23
+ readonly id: string;
24
+ /**
25
+ * The control's name. Given rather than read here: a module the page also imports would be taken into a chunk of its
26
+ * own, and the first load would grow by more than this menu saves.
27
+ */
28
+ readonly label: string;
29
+ /** Whether it takes no row in the View menu. */
30
+ readonly isHidden: boolean;
31
+ /** Where the menu opens. */
32
+ readonly at: MenuPoint;
33
+ /** The toolbar's arrangement, which its choices change. */
34
+ readonly layout: ToolbarLayout;
35
+ /** Called when it closes. */
36
+ readonly onClose: () => void;
37
+ };
38
+ /**
39
+ * The control's menu: its two choices as menu items, the first focused, the arrow keys between them; closed by a
40
+ * choice, a press outside or Escape, the focus going back where it was.
41
+ *
42
+ * @param props - the control, where the menu opens, what its choices do, and what closing it does.
43
+ */
44
+ export declare const ControlMenu: ({ id, label, isHidden, at, layout, onClose }: ControlMenuProps) => ReactNode;
@@ -0,0 +1,72 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * A pinned control's small menu, opened by a right-click or the keyboard's menu key: take it off the toolbar, hide it in
4
+ * the View menu or show it there again.
5
+ *
6
+ * @remarks
7
+ * Loaded the first time one opens (`PinnedControl.tsx`): the control is on the first screen, and few readers ever ask for
8
+ * its menu.
9
+ *
10
+ * @module
11
+ */
12
+ import { useEffect, useLayoutEffect, useRef } from "react";
13
+ import { LATER_STRINGS } from "./laterStrings.js";
14
+ /** The room the menu keeps from the window's edges, in CSS px. */
15
+ const EDGE_PX = 8;
16
+ /**
17
+ * The control's menu: its two choices as menu items, the first focused, the arrow keys between them; closed by a
18
+ * choice, a press outside or Escape, the focus going back where it was.
19
+ *
20
+ * @param props - the control, where the menu opens, what its choices do, and what closing it does.
21
+ */
22
+ export const ControlMenu = ({ id, label, isHidden, at, layout, onClose }) => {
23
+ const menuRef = useRef(null);
24
+ // the menu stays inside the window: opened near its right or lower edge, it moves back by what would run past
25
+ useLayoutEffect(() => {
26
+ const menu = menuRef.current;
27
+ if (menu === null)
28
+ return;
29
+ const box = menu.getBoundingClientRect();
30
+ menu.style.left = `${Math.max(EDGE_PX, Math.min(at.x, window.innerWidth - box.width - EDGE_PX))}px`;
31
+ menu.style.top = `${Math.max(EDGE_PX, Math.min(at.y, window.innerHeight - box.height - EDGE_PX))}px`;
32
+ }, [at]);
33
+ useEffect(() => {
34
+ const before = document.activeElement;
35
+ menuRef.current?.querySelector("[role=menuitem]")?.focus();
36
+ const close = (event) => {
37
+ const isOutside = event instanceof PointerEvent &&
38
+ !(event.target instanceof Node && menuRef.current?.contains(event.target));
39
+ const isEscape = event instanceof KeyboardEvent && event.key === "Escape";
40
+ if (!isOutside && !isEscape)
41
+ return;
42
+ onClose();
43
+ if (isEscape && before instanceof HTMLElement)
44
+ before.focus();
45
+ };
46
+ document.addEventListener("pointerdown", close);
47
+ document.addEventListener("keydown", close);
48
+ return () => {
49
+ document.removeEventListener("pointerdown", close);
50
+ document.removeEventListener("keydown", close);
51
+ };
52
+ }, [onClose]);
53
+ const step = (event) => {
54
+ if (event.key !== "ArrowDown" && event.key !== "ArrowUp")
55
+ return;
56
+ event.preventDefault();
57
+ const items = [...(menuRef.current?.querySelectorAll("[role=menuitem]") ?? [])];
58
+ const focused = document.activeElement;
59
+ const index = focused instanceof HTMLButtonElement ? items.indexOf(focused) : -1;
60
+ const next = (index + (event.key === "ArrowDown" ? 1 : -1) + items.length) % items.length;
61
+ items[next]?.focus();
62
+ };
63
+ const unpin = () => {
64
+ onClose();
65
+ layout.pin(id, false);
66
+ };
67
+ const toggleHidden = () => {
68
+ onClose();
69
+ layout.hide(id, !isHidden);
70
+ };
71
+ return (_jsxs("div", { ref: menuRef, className: "forgebook-context-menu", role: "menu", "aria-label": LATER_STRINGS.controlMenu(label), style: { left: at.x, top: at.y }, onKeyDown: step, children: [_jsx("button", { type: "button", role: "menuitem", className: "forgebook-context-menu__item", onClick: unpin, children: LATER_STRINGS.unpinControl }), _jsx("button", { type: "button", role: "menuitem", className: "forgebook-context-menu__item", onClick: toggleHidden, children: isHidden ? LATER_STRINGS.showInView : LATER_STRINGS.hideInView })] }));
72
+ };
@@ -7,10 +7,12 @@
7
7
  import type { ReactNode } from "react";
8
8
  import type { PanelProp } from "../argTypes.ts";
9
9
  import { type ArgValue } from "../messages.ts";
10
- /** Called with a changed value; `undefined` removes the panel's value. */
10
+ /** Called with a changed value; `undefined` removes the panel's value, `UNSET_ARG` leaves the prop with none. */
11
11
  export type OnValueChange = (name: string, value: ArgValue | undefined) => void;
12
12
  /** A value as a text field shows it: texts and numbers as they are, anything else empty. */
13
13
  export declare const textOf: (value: ArgValue | undefined) => string;
14
+ /** The most options a native list holds before the panel offers a search among them. */
15
+ export declare const MOST_PLAIN_OPTIONS = 12;
14
16
  /**
15
17
  * A choice's control: buttons side by side for `radio` or a few short values, a list for `select` or otherwise, and
16
18
  * a multiple choice for `check` and `multi-select`.
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { isChoiceList } from "../messages.js";
2
+ import { isChoiceList, UNSET_ARG } from "../messages.js";
3
3
  import { Segmented } from "./Segmented.js";
4
4
  import { STRINGS } from "./strings.js";
5
5
  /** A value as a text field shows it: texts and numbers as they are, anything else empty. */
@@ -16,8 +16,10 @@ const dateFieldOf = (value) => {
16
16
  const local = new Date(value - date.getTimezoneOffset() * 60_000);
17
17
  return local.toISOString().slice(0, 16);
18
18
  };
19
- /** The value of the choice that leaves a prop to the story: no choice of a component is an empty text. */
19
+ /** The value of the choice that leaves a prop without one: no choice of a component is an empty text. */
20
20
  const UNSET = "";
21
+ /** The most options a native list holds before the panel offers a search among them. */
22
+ export const MOST_PLAIN_OPTIONS = 12;
21
23
  /** The most choices shown as buttons, and the longest label; past either, a list. */
22
24
  const FEW_CHOICES = { count: 4, length: 10 };
23
25
  /** Whether a choice's values fit side by side as buttons. */
@@ -52,11 +54,11 @@ export const ChoiceControl = ({ prop, value, descriptionId, onValueChange }) =>
52
54
  return (_jsx(Segmented, { label: prop.label ?? prop.name, options: [
53
55
  { value: UNSET, label: unsetLabel },
54
56
  ...choices.map((choice) => ({ value: choice, label: choiceLabel(prop, choice) }))
55
- ], value: choiceOf(value) ?? UNSET, onValueChange: (chosen) => onValueChange(prop.name, chosen === UNSET ? undefined : chosen) }));
57
+ ], value: choiceOf(value) ?? UNSET, onValueChange: (chosen) => onValueChange(prop.name, chosen === UNSET ? UNSET_ARG : chosen) }));
56
58
  }
57
59
  return (_jsxs("select", { "aria-label": prop.label ?? prop.name, "aria-describedby": descriptionId, value: textOf(value), onChange: (event) => {
58
60
  const chosen = choices.find((choice) => String(choice) === event.target.value);
59
- onValueChange(prop.name, chosen);
61
+ onValueChange(prop.name, chosen ?? UNSET_ARG);
60
62
  }, children: [_jsx("option", { value: "", children: unsetLabel }), choices.map((choice) => (_jsx("option", { value: String(choice), children: choiceLabel(prop, choice) }, String(choice))))] }));
61
63
  };
62
64
  /** A field for a number, a range or a date, as its `argTypes` say; a date's value is ms since the Unix epoch. */
@@ -66,7 +68,7 @@ export const NumberField = ({ prop, value, descriptionId, onValueChange }) => {
66
68
  return (_jsx("input", { type: "datetime-local", "aria-label": label, "aria-describedby": descriptionId, value: dateFieldOf(value), onChange: (event) => {
67
69
  const time = event.target.valueAsNumber;
68
70
  // the field's own value is in UTC: read back in the browser's time zone, as it was shown
69
- const local = Number.isNaN(time) ? undefined : time + new Date(time).getTimezoneOffset() * 60_000;
71
+ const local = Number.isNaN(time) ? UNSET_ARG : time + new Date(time).getTimezoneOffset() * 60_000;
70
72
  onValueChange(prop.name, local);
71
73
  } }));
72
74
  }
@@ -75,6 +77,7 @@ export const NumberField = ({ prop, value, descriptionId, onValueChange }) => {
75
77
  ...(prop.max === undefined ? {} : { max: prop.max }),
76
78
  ...(prop.step === undefined ? {} : { step: prop.step })
77
79
  };
78
- const change = (text) => onValueChange(prop.name, text === "" ? undefined : Number(text));
80
+ // a number has no empty value, so a cleared field leaves the prop with none
81
+ const change = (text) => onValueChange(prop.name, text === "" ? UNSET_ARG : Number(text));
79
82
  return (_jsxs(_Fragment, { children: [prop.control === "range" ? (_jsx("input", { type: "range", "aria-label": label, "aria-describedby": descriptionId, ...bounds, value: typeof value === "number" ? value : (prop.min ?? 0), onChange: (event) => change(event.target.value) })) : null, _jsx("input", { type: "number", "aria-label": prop.control === "range" ? STRINGS.rangeValue(label) : label, "aria-describedby": descriptionId, ...bounds, value: textOf(value), onChange: (event) => change(event.target.value) })] }));
80
83
  };
@@ -1,12 +1,14 @@
1
1
  /**
2
2
  * One prop of the Props tab as it is drawn: its head (its name, whether it is required, its group in the "Required"
3
- * group, its type), then its control, its toggle, or its description for reading.
3
+ * group, its type), then its control, or its description for reading.
4
4
  *
5
5
  * @module
6
6
  */
7
7
  import { type ReactNode } from "react";
8
8
  import { type PanelProp } from "../argTypes.ts";
9
9
  import { type ArgValue } from "../messages.ts";
10
+ import type { NamedValues } from "../namedValues.ts";
11
+ import type { ArgControlLoaders } from "./customControls.ts";
10
12
  import { type OnValueChange } from "./PropFields.tsx";
11
13
  /** A prop the story gives a text by its key (`storyText("key")`): the key, and whether the panel wrote over it. */
12
14
  export type TextArgNote = {
@@ -15,26 +17,35 @@ export type TextArgNote = {
15
17
  /** Whether the panel holds a value of its own for the prop. */
16
18
  readonly isChanged: boolean;
17
19
  };
18
- /** One adjustable prop with its control. */
19
- export declare const PropControl: ({ prop, showsGroup, value, named, textArg, onValueChange }: {
20
+ /** What a field says of its value, and the two ways back from it. */
21
+ export type FieldState = {
22
+ /** The value shown: the story's own, or the panel's over it. */
23
+ readonly value: ArgValue | undefined;
24
+ /** The panel's own value; none when the story's own is shown. */
25
+ readonly panelValue: ArgValue | undefined;
26
+ /** Called with a changed value. */
27
+ readonly onValueChange: OnValueChange;
28
+ };
29
+ /** One adjustable prop with its control: a boolean's is a switch. */
30
+ export declare const PropControl: ({ prop, showsGroup, value, panelValue, named, namedValues, loadTokens, argControls, textArg, onValueChange }: {
20
31
  readonly prop: PanelProp;
21
32
  /** Whether it names its group: in the "Required" group. */
22
33
  readonly showsGroup: boolean;
23
34
  readonly value: ArgValue | undefined;
35
+ /** The panel's own value; none when the story's own is shown. */
36
+ readonly panelValue: ArgValue | undefined;
24
37
  /** The values the source names for the prop's type, when it names some. */
25
38
  readonly named: Readonly<Record<string, unknown>> | undefined;
39
+ /** The source's named values, for the parts of a value they fill. */
40
+ readonly namedValues: NamedValues;
41
+ /** Loads the catalogue's design tokens; none when it has none. */
42
+ readonly loadTokens: (() => Promise<unknown>) | undefined;
43
+ /** Loads each custom control the catalogue registers, by name; none when it registers none. */
44
+ readonly argControls?: ArgControlLoaders | undefined;
26
45
  /** Where the story's text for the prop comes from, when the story names one by its key. */
27
46
  readonly textArg: TextArgNote | undefined;
28
47
  readonly onValueChange: OnValueChange;
29
48
  }) => ReactNode;
30
- /** A toggle: its name in a compact checkbox, its description as the tooltip and for screen readers. */
31
- export declare const Toggle: ({ prop, showsGroup, value, onValueChange }: {
32
- readonly prop: PanelProp;
33
- /** Whether it names its group: in the "Required" group. */
34
- readonly showsGroup: boolean;
35
- readonly value: ArgValue | undefined;
36
- readonly onValueChange: OnValueChange;
37
- }) => ReactNode;
38
49
  /** A prop the panel cannot set: its name, its type and its description, for reading; its group when asked. */
39
50
  export declare const ReadOnlyProp: ({ prop, showsGroup }: {
40
51
  readonly prop: PanelProp;
@@ -1,25 +1,48 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /**
3
3
  * One prop of the Props tab as it is drawn: its head (its name, whether it is required, its group in the "Required"
4
- * group, its type), then its control, its toggle, or its description for reading.
4
+ * group, its type), then its control, or its description for reading.
5
5
  *
6
6
  * @module
7
7
  */
8
8
  import { useId } from "react";
9
9
  import { isColorProp } from "../argTypes.js";
10
- import { isNamedArg } from "../messages.js";
11
- import { ChoiceControl, NumberField, textOf } from "./PropFields.js";
10
+ import { isUnsetArg, UNSET_ARG } from "../messages.js";
11
+ import { Icon } from "./icons.js";
12
+ import { LazyView, lazyModule } from "./lazyModule.js";
13
+ import { ChoiceControl, MOST_PLAIN_OPTIONS, NumberField, textOf } from "./PropFields.js";
14
+ import { Switch } from "./Switch.js";
12
15
  import { STRINGS } from "./strings.js";
16
+ /** The editors a catalogue's plain props never load: nested fields, a searchable list, the tokens, the files. */
17
+ const PROP_EDITOR = lazyModule(() => import("./valueEditors/PropEditor.js").then((module) => module.PropEditor));
13
18
  /** A CSS colour as the colour picker takes it (`#rrggbb`), or black when the value is not one. */
14
19
  const pickerColor = (value) => typeof value === "string" && /^#[0-9a-f]{6}$/i.test(value) ? value : "#000000";
15
20
  /** A prop's group, beside its name in the "Required" group, which gathers props of every group. */
16
21
  const GroupName = ({ prop, showsGroup }) => showsGroup && prop.group !== undefined ? _jsx("span", { className: "forgebook-prop__group", children: prop.group }) : null;
17
22
  /**
18
- * A prop's name, whether it is required, its group when asked, and its type (whole in the tooltip when it is cut).
23
+ * The way back from a prop's value: to no value at all, and to the story's own, each offered only when it changes
24
+ * something.
19
25
  *
20
- * @param props - the prop, and whether it names its group.
26
+ * @param props - the prop and its state.
21
27
  */
22
- const PropHead = ({ prop, showsGroup }) => (_jsxs("div", { className: "forgebook-prop__head", children: [_jsxs("code", { className: "forgebook-prop__name", children: [prop.label ?? prop.name, prop.isRequired ? (_jsx("span", { className: "forgebook-prop__required", title: STRINGS.required, children: "*" })) : null] }), _jsx(GroupName, { prop: prop, showsGroup: showsGroup }), _jsx("code", { className: "forgebook-prop__type", title: prop.type, children: prop.type })] }));
28
+ const FieldActions = ({ prop, value, panelValue, onValueChange }) => {
29
+ const label = prop.label ?? prop.name;
30
+ const action = (text, icon, next) => (_jsx("button", { type: "button", className: "forgebook-prop__action", "aria-label": text, title: text, onClick: () => onValueChange(prop.name, next), children: _jsx(Icon, { name: icon, size: 12 }) }));
31
+ return (_jsxs("span", { className: "forgebook-prop__actions", children: [value === undefined ? null : action(STRINGS.unsetProp(label), "noValue", UNSET_ARG), panelValue === undefined ? null : action(STRINGS.resetProp(label), "replay", undefined)] }));
32
+ };
33
+ /** What a prop's value is when its field alone cannot say: no value over the story's own, or an empty text. */
34
+ const stateNote = (state) => {
35
+ if (isUnsetArg(state.panelValue))
36
+ return STRINGS.stateUnset;
37
+ return state.value === "" ? STRINGS.stateEmpty : undefined;
38
+ };
39
+ /**
40
+ * A prop's name, whether it is required, its group when asked, its type (whole in the tooltip when it is cut), what its
41
+ * value is and the ways back from it.
42
+ *
43
+ * @param props - the prop, whether it names its group, and its state.
44
+ */
45
+ const PropHead = ({ prop, showsGroup, state }) => (_jsxs("div", { className: "forgebook-prop__head", children: [_jsxs("code", { className: "forgebook-prop__name", children: [prop.label ?? prop.name, prop.isRequired ? (_jsx("span", { className: "forgebook-prop__required", title: STRINGS.required, children: "*" })) : null] }), _jsx(GroupName, { prop: prop, showsGroup: showsGroup }), _jsx("code", { className: "forgebook-prop__type", title: prop.type, children: prop.type }), state === undefined ? null : (_jsxs(_Fragment, { children: [stateNote(state) === undefined ? null : (_jsx("span", { className: "forgebook-prop__state", children: stateNote(state) })), _jsx(FieldActions, { prop: prop, ...state })] }))] }));
23
46
  /** A prop's description and default, under its control. */
24
47
  const PropNote = ({ id, prop }) => prop.description === "" && prop.defaultValue === undefined ? null : (_jsxs("p", { id: id, className: "forgebook-prop__description", children: [prop.description, prop.defaultValue === undefined ? null : (_jsxs(_Fragment, { children: [prop.description === "" ? null : " ", STRINGS.defaultIs, " ", _jsx("code", { children: prop.defaultValue })] }))] }));
25
48
  /**
@@ -29,32 +52,47 @@ const PropNote = ({ id, prop }) => prop.description === "" && prop.defaultValue
29
52
  * @param props - the note, the prop's name and the value setter.
30
53
  */
31
54
  const TextArgLine = ({ note, name, onValueChange }) => (_jsxs("p", { className: "forgebook-prop__text-arg", children: [STRINGS.fromTexts, " ", _jsx("code", { children: note.key }), note.isChanged ? (_jsx("button", { type: "button", className: "forgebook-text-button", onClick: () => onValueChange(name, undefined), children: STRINGS.backToText })) : null] }));
32
- /** One adjustable prop with its control. */
33
- export const PropControl = ({ prop, showsGroup, value, named, textArg, onValueChange }) => {
55
+ /** Whether a prop is drawn by the editors that load on use, not by the first screen's fields. */
56
+ const usesEditors = (prop, named) => named !== undefined ||
57
+ prop.shape !== undefined ||
58
+ prop.customControl !== undefined ||
59
+ prop.control === "token" ||
60
+ prop.control === "file" ||
61
+ (prop.kind === "choice" &&
62
+ (prop.control === undefined || prop.control === "select") &&
63
+ (prop.choices?.length ?? 0) > MOST_PLAIN_OPTIONS);
64
+ /** One adjustable prop with its control: a boolean's is a switch. */
65
+ export const PropControl = ({ prop, showsGroup, value, panelValue, named, namedValues, loadTokens, argControls, textArg, onValueChange }) => {
34
66
  // the description is shown under the control and named by it, so the control's name is the prop alone
35
67
  const descriptionId = useId();
36
68
  const label = prop.label ?? prop.name;
37
- if (named !== undefined) {
38
- return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup }), _jsxs("select", { "aria-label": label, "aria-describedby": descriptionId, value: isNamedArg(value) ? value.named : "", onChange: (event) => {
39
- const chosen = event.target.value;
40
- onValueChange(prop.name, chosen === "" ? undefined : { of: prop.type, named: chosen });
41
- }, children: [_jsx("option", { value: "", children: STRINGS.unset }), Object.keys(named).map((name) => (_jsx("option", { value: name, children: name }, name)))] }), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
69
+ const state = { value, panelValue, onValueChange };
70
+ if (prop.kind === "toggle") {
71
+ return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup, state: state }), _jsx("div", { className: "forgebook-prop__field", children: _jsx(Switch, { label: label, isOn: value === true, describedBy: descriptionId, onChange: (isOn) => onValueChange(prop.name, isOn) }) }), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
72
+ }
73
+ if (usesEditors(prop, named)) {
74
+ const editorProps = {
75
+ prop,
76
+ value,
77
+ descriptionId,
78
+ namedValues,
79
+ loadTokens,
80
+ argControls,
81
+ onValueChange
82
+ };
83
+ const isWide = (prop.shape !== undefined || prop.customControl !== undefined) && named === undefined;
84
+ return (_jsxs("div", { className: "forgebook-prop", "data-wide": isWide || undefined, children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup, state: state }), _jsx(LazyView, { module: PROP_EDITOR, props: editorProps, loading: null, failed: (message) => (_jsx("p", { className: "forgebook-prop__description", role: "alert", children: message })) }), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
42
85
  }
43
86
  if (prop.kind === "choice") {
44
- return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup }), _jsx(ChoiceControl, { prop: prop, value: value, descriptionId: descriptionId, onValueChange: onValueChange }), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
87
+ return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup, state: state }), _jsx(ChoiceControl, { prop: prop, value: value, descriptionId: descriptionId, onValueChange: onValueChange }), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
45
88
  }
46
89
  if (prop.kind === "number") {
47
- return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup }), _jsx("div", { className: "forgebook-prop__field", children: _jsx(NumberField, { prop: prop, value: value, descriptionId: descriptionId, onValueChange: onValueChange }) }), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
90
+ return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup, state: state }), _jsx("div", { className: "forgebook-prop__field", children: _jsx(NumberField, { prop: prop, value: value, descriptionId: descriptionId, onValueChange: onValueChange }) }), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
48
91
  }
49
- return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup }), _jsxs("div", { className: "forgebook-prop__field", children: [_jsx("input", { type: "text", "aria-label": label, "aria-describedby": descriptionId, value: textOf(value), onChange: (event) => {
50
- const text = event.target.value;
51
- onValueChange(prop.name, text === "" ? undefined : text);
52
- } }), isColorProp(prop) ? (_jsx("input", { type: "color", className: "forgebook-prop__color", "aria-label": STRINGS.pickColor(label), value: pickerColor(value), onChange: (event) => onValueChange(prop.name, event.target.value) })) : null] }), textArg === undefined ? null : (_jsx(TextArgLine, { note: textArg, name: prop.name, onValueChange: onValueChange })), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
53
- };
54
- /** A toggle: its name in a compact checkbox, its description as the tooltip and for screen readers. */
55
- export const Toggle = ({ prop, showsGroup, value, onValueChange }) => {
56
- const descriptionId = useId();
57
- return (_jsxs("label", { className: "forgebook-toggle", title: prop.description, children: [_jsx("input", { type: "checkbox", "aria-label": prop.label ?? prop.name, checked: value === true, "aria-describedby": descriptionId, onChange: (event) => onValueChange(prop.name, event.target.checked) }), _jsx("code", { children: prop.label ?? prop.name }), _jsx(GroupName, { prop: prop, showsGroup: showsGroup }), _jsx("span", { id: descriptionId, className: "forgebook-visually-hidden", children: prop.description })] }));
92
+ // a text with a line break keeps it: an `<input>` would drop it, from the field and from the link
93
+ const isMultiline = prop.control === "textarea" || (typeof value === "string" && value.includes("\n"));
94
+ const TextControl = isMultiline ? "textarea" : "input";
95
+ return (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup, state: state }), _jsxs("div", { className: "forgebook-prop__field", children: [_jsx(TextControl, { "aria-label": label, "aria-describedby": descriptionId, ...(isMultiline ? { rows: 4 } : { type: "text" }), value: textOf(value), onChange: (event) => onValueChange(prop.name, event.target.value) }), isColorProp(prop) ? (_jsx("input", { type: "color", className: "forgebook-prop__color", "aria-label": STRINGS.pickColor(label), value: pickerColor(value), onChange: (event) => onValueChange(prop.name, event.target.value) })) : null] }), textArg === undefined ? null : (_jsx(TextArgLine, { note: textArg, name: prop.name, onValueChange: onValueChange })), _jsx(PropNote, { id: descriptionId, prop: prop })] }));
58
96
  };
59
97
  /** A prop the panel cannot set: its name, its type and its description, for reading; its group when asked. */
60
98
  export const ReadOnlyProp = ({ prop, showsGroup }) => (_jsxs("div", { className: "forgebook-prop", children: [_jsx(PropHead, { prop: prop, showsGroup: showsGroup }), _jsx("p", { className: "forgebook-prop__description", children: prop.description })] }));
@@ -1,16 +1,16 @@
1
1
  /**
2
- * The panel's Props tab: the props the story lets the panel set, grouped by control (choices, text and numbers,
3
- * toggles), each with its description and default, then the props it cannot set. A story of fixed examples sets none:
2
+ * The panel's Props tab: the props the story lets the panel set, in the order the source declares them whatever their
3
+ * control, each with its description and default, then the props it cannot set. A story of fixed examples sets none:
4
4
  * the tab says so and lists every prop for reading. The props come with the story's `argTypes` laid over them
5
5
  * (`argTypes.ts`): a control they name (a list, buttons, checkboxes, a range, a colour, a date) wins over the one
6
6
  * the prop's type gives.
7
7
  *
8
8
  * @remarks
9
9
  * Props whose TSDoc names a group (`@group Selection`) are listed under its name after the others, as the API reference
10
- * lists them (`propGroups.ts`): each group's controls, its toggles, then its props the panel cannot set. Each starts
10
+ * lists them (`propGroups.ts`): each group's controls, then its props the panel cannot set. Each starts
11
11
  * open, and a reader may fold it away. A component whose props name no group shows the tab as it always was.
12
12
  *
13
- * The required props come first among each kind of control and in each group, or in one "Required" group before the
13
+ * The required props come first among the others and in each group, or in one "Required" group before the
14
14
  * others, each naming its group, as the story, its component, the catalogue and the reader's switch at the top of the
15
15
  * tab say (`useRequiredFirst.ts`).
16
16
  *
@@ -22,6 +22,7 @@ import type { ReactNode } from "react";
22
22
  import { type PanelProp } from "../argTypes.ts";
23
23
  import type { ArgValue, PanelArgs } from "../messages.ts";
24
24
  import type { NamedValues } from "../namedValues.ts";
25
+ import type { ArgControlLoaders } from "./customControls.ts";
25
26
  import { type TextArgNote } from "./PropRows.tsx";
26
27
  import type { WorstCaseState } from "./worstArgs.ts";
27
28
  /** The tab's props. */
@@ -30,6 +31,12 @@ export type PropsTabProps = {
30
31
  readonly props: readonly PanelProp[];
31
32
  /** The values shown: the story's args with the panel's changes. */
32
33
  readonly values: PanelArgs;
34
+ /** The panel's own values, for what can go back to the story's. */
35
+ readonly panelArgs: PanelArgs;
36
+ /** Loads the catalogue's design tokens; none when it has none. */
37
+ readonly loadTokens?: (() => Promise<unknown>) | undefined;
38
+ /** Loads each custom control the catalogue registers, by name; none when it registers none. */
39
+ readonly argControls?: ArgControlLoaders | undefined;
33
40
  /** The props the story lets the panel set. */
34
41
  readonly controls: StoryControlsSetting;
35
42
  /** Called with a changed value; `undefined` removes the panel's value. */
@@ -58,4 +65,4 @@ export type PropsTabProps = {
58
65
  *
59
66
  * @param props - the props, the values, which props the story lets the panel set, and the setters.
60
67
  */
61
- export declare const PropsTab: ({ props, values, controls, onValueChange, onReset, worstCase, namedValues, textArgs, componentGroups, requiredFirst }: PropsTabProps) => ReactNode;
68
+ export declare const PropsTab: ({ props, values, panelArgs, loadTokens, argControls, controls, onValueChange, onReset, worstCase, namedValues, textArgs, componentGroups, requiredFirst }: PropsTabProps) => ReactNode;
@@ -3,7 +3,7 @@ import { isNamedProp, settableProps } from "../argTypes.js";
3
3
  import { canOrderRequired, laidOutProps, propGroupOrder } from "../propGroups.js";
4
4
  import { useCatalogue } from "./catalogueContext.js";
5
5
  import { Icon } from "./icons.js";
6
- import { PropControl, ReadOnlyProp, Toggle } from "./PropRows.js";
6
+ import { PropControl, ReadOnlyProp } from "./PropRows.js";
7
7
  import { RequiredFirstSwitch } from "./RequiredFirstSwitch.js";
8
8
  import { STRINGS } from "./strings.js";
9
9
  import { useRequiredFirst } from "./useRequiredFirst.js";
@@ -12,16 +12,15 @@ const NO_TEXT_ARGS = {};
12
12
  /** No group named first. */
13
13
  const NO_GROUPS = [];
14
14
  /**
15
- * A group the props' TSDoc names, under its name: its controls in the order of the props, its toggles, then the props
16
- * the panel cannot set. The "Required" group is drawn as one, each of its props naming its own group.
15
+ * A group the props' TSDoc names, under its name: its controls in the order of the props, then the props the panel
16
+ * cannot set. The "Required" group is drawn as one, each of its props naming its own group.
17
17
  *
18
18
  * @param props - the group's name and props, how each prop is drawn, and whether it is the "Required" group.
19
19
  */
20
- const NamedGroup = ({ name, props, isSettable, control, toggle, isRequired = false }) => {
21
- const controls = props.filter((prop) => isSettable(prop) && prop.kind !== "toggle");
22
- const toggles = props.filter((prop) => isSettable(prop) && prop.kind === "toggle");
20
+ const NamedGroup = ({ name, props, isSettable, field, isRequired = false }) => {
21
+ const settable = props.filter(isSettable);
23
22
  const others = props.filter((prop) => !isSettable(prop));
24
- return (_jsx("div", { className: "forgebook-prop-group", "data-required": isRequired || undefined, children: _jsxs("details", { className: "forgebook-fold", open: true, children: [_jsxs("summary", { className: "forgebook-fold__summary forgebook-prop-group__title", children: [_jsx(Icon, { name: "chevronRight", size: 12 }), _jsx("h3", { className: "forgebook-fold__name", children: name }), _jsx("span", { className: "forgebook-fold__count", children: STRINGS.propCount(props.length) })] }), _jsxs("div", { className: "forgebook-prop-group__body", children: [controls.length === 0 ? null : (_jsx("div", { className: "forgebook-prop-grid", children: controls.map((prop) => control(prop, isRequired)) })), toggles.length === 0 ? null : (_jsx("div", { className: "forgebook-toggles", children: toggles.map((prop) => toggle(prop, isRequired)) })), others.length === 0 ? null : (_jsx("div", { className: "forgebook-prop-grid", children: others.map((prop) => (_jsx(ReadOnlyProp, { prop: prop, showsGroup: isRequired }, prop.name))) }))] })] }) }));
23
+ return (_jsx("div", { className: "forgebook-prop-group", "data-required": isRequired || undefined, children: _jsxs("details", { className: "forgebook-fold", open: true, children: [_jsxs("summary", { className: "forgebook-fold__summary forgebook-prop-group__title", children: [_jsx(Icon, { name: "chevronRight", size: 12 }), _jsx("h3", { className: "forgebook-fold__name", children: name }), _jsx("span", { className: "forgebook-fold__count", children: STRINGS.propCount(props.length) })] }), _jsxs("div", { className: "forgebook-prop-group__body", children: [settable.length === 0 ? null : (_jsx("div", { className: "forgebook-prop-grid", children: settable.map((prop) => field(prop, isRequired)) })), others.length === 0 ? null : (_jsx("div", { className: "forgebook-prop-grid", children: others.map((prop) => (_jsx(ReadOnlyProp, { prop: prop, showsGroup: isRequired }, prop.name))) }))] })] }) }));
25
24
  };
26
25
  /**
27
26
  * The worst case's button, and once it is on, how many elements spill (the frame outlines them).
@@ -34,7 +33,7 @@ const WorstCaseControl = ({ worstCase }) => (_jsxs(_Fragment, { children: [_jsx(
34
33
  *
35
34
  * @param props - the props, the values, which props the story lets the panel set, and the setters.
36
35
  */
37
- export const PropsTab = ({ props, values, controls, onValueChange, onReset, worstCase, namedValues = {}, textArgs = NO_TEXT_ARGS, componentGroups = NO_GROUPS, requiredFirst }) => {
36
+ export const PropsTab = ({ props, values, panelArgs, loadTokens, argControls, controls, onValueChange, onReset, worstCase, namedValues = {}, textArgs = NO_TEXT_ARGS, componentGroups = NO_GROUPS, requiredFirst }) => {
38
37
  const catalogue = useCatalogue();
39
38
  const ordering = useRequiredFirst(requiredFirst);
40
39
  const isNamed = (prop) => isNamedProp(prop, namedValues);
@@ -45,20 +44,8 @@ export const PropsTab = ({ props, values, controls, onValueChange, onReset, wors
45
44
  // the props that name no group are drawn as the tab always drew them, by control, in the layout's order
46
45
  const ungrouped = propGroups.find((group) => group.name === undefined)?.props ?? [];
47
46
  const settable = ungrouped.filter(isSettable);
48
- const control = (prop, showsGroup) => (_jsx(PropControl, { prop: prop, showsGroup: showsGroup, value: values[prop.name], named: isNamed(prop) ? namedValues[prop.type] : undefined, textArg: textArgs[prop.name], onValueChange: onValueChange }, prop.name));
49
- const toggle = (prop, showsGroup) => (_jsx(Toggle, { prop: prop, showsGroup: showsGroup, value: values[prop.name], onValueChange: onValueChange }, prop.name));
50
- const groups = [
51
- {
52
- title: STRINGS.propGroups.choice,
53
- props: settable.filter((prop) => prop.kind === "choice" || isNamed(prop))
54
- },
55
- {
56
- title: STRINGS.propGroups.text,
57
- props: settable.filter((prop) => ["text", "number", "other"].includes(prop.kind) && !isNamed(prop))
58
- }
59
- ].filter((group) => group.props.length > 0);
60
- const toggles = settable.filter((prop) => prop.kind === "toggle");
47
+ const control = (prop, showsGroup) => (_jsx(PropControl, { prop: prop, showsGroup: showsGroup, value: values[prop.name], panelValue: panelArgs[prop.name], named: isNamed(prop) ? namedValues[prop.type] : undefined, namedValues: namedValues, loadTokens: loadTokens, argControls: argControls, textArg: textArgs[prop.name], onValueChange: onValueChange }, prop.name));
61
48
  const others = ungrouped.filter((prop) => !isSettable(prop));
62
49
  const hasControls = controls === "all" || controls.length > 0;
63
- return (_jsxs("div", { className: "forgebook-tab-props", children: [canOrderRequired(listed) ? (_jsx("div", { className: "forgebook-tab-head", children: _jsx(RequiredFirstSwitch, { state: ordering }) })) : null, hasControls ? null : _jsx("p", { className: "forgebook-tab-note", children: STRINGS.fixedExamples }), required.length === 0 ? null : (_jsx(NamedGroup, { name: STRINGS.required, props: required, isSettable: isSettable, control: control, toggle: toggle, isRequired: true })), groups.map((group) => (_jsxs("div", { className: "forgebook-prop-group", children: [_jsx("h3", { className: "forgebook-prop-group__title", children: group.title }), _jsx("div", { className: "forgebook-prop-grid", children: group.props.map((prop) => control(prop, false)) })] }, group.title))), toggles.length === 0 ? null : (_jsxs("div", { className: "forgebook-prop-group", children: [_jsx("h3", { className: "forgebook-prop-group__title", children: STRINGS.propGroups.toggle }), _jsx("div", { className: "forgebook-toggles", children: toggles.map((prop) => toggle(prop, false)) })] })), others.length === 0 ? null : (_jsxs("div", { className: "forgebook-prop-group", children: [_jsx("h3", { className: "forgebook-prop-group__title", children: hasControls ? STRINGS.otherProps : STRINGS.allProps }), _jsx("div", { className: "forgebook-prop-grid", children: others.map((prop) => (_jsx(ReadOnlyProp, { prop: prop, showsGroup: false }, prop.name))) })] })), propGroups.map((group) => group.name === undefined ? null : (_jsx(NamedGroup, { name: group.name, props: group.props, isSettable: isSettable, control: control, toggle: toggle }, group.name))), hasControls ? (_jsxs("div", { className: "forgebook-tab-foot", children: [_jsx("button", { type: "button", className: "forgebook-text-button", onClick: onReset, children: STRINGS.resetArgs }), worstCase?.canApply === true ? _jsx(WorstCaseControl, { worstCase: worstCase }) : null] })) : null] }));
50
+ return (_jsxs("div", { className: "forgebook-tab-props", children: [canOrderRequired(listed) ? (_jsx("div", { className: "forgebook-tab-head", children: _jsx(RequiredFirstSwitch, { state: ordering }) })) : null, hasControls ? null : _jsx("p", { className: "forgebook-tab-note", children: STRINGS.fixedExamples }), required.length === 0 ? null : (_jsx(NamedGroup, { name: STRINGS.required, props: required, isSettable: isSettable, field: control, isRequired: true })), settable.length === 0 ? null : (_jsx("div", { className: "forgebook-prop-group", children: _jsx("div", { className: "forgebook-prop-grid", children: settable.map((prop) => control(prop, false)) }) })), others.length === 0 ? null : (_jsxs("div", { className: "forgebook-prop-group", children: [_jsx("h3", { className: "forgebook-prop-group__title", children: hasControls ? STRINGS.otherProps : STRINGS.allProps }), _jsx("div", { className: "forgebook-prop-grid", children: others.map((prop) => (_jsx(ReadOnlyProp, { prop: prop, showsGroup: false }, prop.name))) })] })), propGroups.map((group) => group.name === undefined ? null : (_jsx(NamedGroup, { name: group.name, props: group.props, isSettable: isSettable, field: control }, group.name))), hasControls ? (_jsxs("div", { className: "forgebook-tab-foot", children: [_jsx("button", { type: "button", className: "forgebook-text-button", onClick: onReset, children: STRINGS.resetArgs }), worstCase?.canApply === true ? _jsx(WorstCaseControl, { worstCase: worstCase }) : null] })) : null] }));
64
51
  };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * A story of a composed catalogue (`refs`), shown read-only: its own catalogue's embed page in a frame, on that
3
+ * catalogue's origin, with this catalogue's switches. Loaded the first time one is opened.
4
+ *
5
+ * @remarks
6
+ * The embed page is the composed catalogue's own, so the story runs with its own preview, theme and frames, and this
7
+ * page runs none of its code: what crosses one way is the address (the story and the switches, which the embed reads as
8
+ * any address), the other way a height (`EmbedSizeMessage`), heard only from that frame's window and origin. A change of
9
+ * the toolbar's switches gives the frame a new address. Off this catalogue's origin the frame is sandboxed as a story's
10
+ * frame is, which keeps it from navigating this tab.
11
+ *
12
+ * @module
13
+ */
14
+ import "./refStory.scss";
15
+ import { type ReactNode } from "react";
16
+ import { type CatalogueRef } from "../catalogueRefs.ts";
17
+ /** The page's props. */
18
+ export type RefStoryPageProps = {
19
+ /** The composed catalogues of the configuration. */
20
+ readonly refs: readonly CatalogueRef[];
21
+ /** The id of the catalogue the address names. */
22
+ readonly refId: string;
23
+ /** The story's id in it. */
24
+ readonly storyId: string;
25
+ /** This catalogue's switches, by id, with the values the view gives them. */
26
+ readonly switches: Readonly<Record<string, string>>;
27
+ };
28
+ /**
29
+ * A story of a composed catalogue, read-only.
30
+ *
31
+ * @param props - the composed catalogues, the one and the story the address names, and the switches.
32
+ */
33
+ export declare const RefStoryPage: ({ refs, refId, storyId, switches }: RefStoryPageProps) => ReactNode;