forgebook 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (690) hide show
  1. package/README.md +914 -72
  2. package/dist/bin/forgebook/agentClient.d.ts +2 -1
  3. package/dist/bin/forgebook/agentClient.js +13 -6
  4. package/dist/bin/forgebook/agentGuide.d.ts +59 -0
  5. package/dist/bin/forgebook/agentGuide.js +203 -0
  6. package/dist/bin/forgebook/agentLoopCommands.mjs +22 -42
  7. package/dist/bin/forgebook/agentSetup/agentFiles.d.ts +55 -0
  8. package/dist/bin/forgebook/agentSetup/agentFiles.js +319 -0
  9. package/dist/bin/forgebook/agentSetup/assistantHooks.d.ts +71 -0
  10. package/dist/bin/forgebook/agentSetup/assistantHooks.js +125 -0
  11. package/dist/bin/forgebook/agentSetup/ciWorkflow.d.ts +23 -0
  12. package/dist/bin/forgebook/agentSetup/ciWorkflow.js +55 -0
  13. package/dist/bin/forgebook/agentSetup/drawCandidates.d.ts +25 -0
  14. package/dist/bin/forgebook/agentSetup/drawCandidates.js +116 -0
  15. package/dist/bin/forgebook/agentSetup/drawDiagnosis.d.ts +28 -0
  16. package/dist/bin/forgebook/agentSetup/drawDiagnosis.js +134 -0
  17. package/dist/bin/forgebook/agentSetup/drawRun.d.ts +91 -0
  18. package/dist/bin/forgebook/agentSetup/drawRun.js +353 -0
  19. package/dist/bin/forgebook/agentSetup/hookNames.d.ts +7 -0
  20. package/dist/bin/forgebook/agentSetup/hookNames.js +7 -0
  21. package/dist/bin/forgebook/agentSetup/initAgentSteps.d.ts +48 -0
  22. package/dist/bin/forgebook/agentSetup/initAgentSteps.js +104 -0
  23. package/dist/bin/forgebook/agentSetup/liftedProviders.d.ts +17 -0
  24. package/dist/bin/forgebook/agentSetup/liftedProviders.js +186 -0
  25. package/dist/bin/forgebook/agentSetup/projectRunner.d.ts +46 -0
  26. package/dist/bin/forgebook/agentSetup/projectRunner.js +85 -0
  27. package/dist/bin/forgebook/agentSetup/stopHook.d.ts +65 -0
  28. package/dist/bin/forgebook/agentSetup/stopHook.js +202 -0
  29. package/dist/bin/forgebook/agentSetup/uniformPicture.d.ts +7 -0
  30. package/dist/bin/forgebook/agentSetup/uniformPicture.js +98 -0
  31. package/dist/bin/forgebook/agentSetupCommands.d.mts +14 -0
  32. package/dist/bin/forgebook/agentSetupCommands.mjs +98 -0
  33. package/dist/bin/forgebook/agentText.d.ts +23 -3
  34. package/dist/bin/forgebook/agentText.js +175 -28
  35. package/dist/bin/forgebook/agents.md +20 -191
  36. package/dist/bin/forgebook/agentsText.js +2 -1
  37. package/dist/bin/forgebook/appBuild/appBuild.d.ts +59 -0
  38. package/dist/bin/forgebook/appBuild/appBuild.js +213 -0
  39. package/dist/bin/forgebook/appBuild/appViteConfig.d.ts +96 -0
  40. package/dist/bin/forgebook/appBuild/appViteConfig.js +320 -0
  41. package/dist/bin/forgebook/appBuild/tsconfigPaths.d.ts +14 -0
  42. package/dist/bin/forgebook/appBuild/tsconfigPaths.js +80 -0
  43. package/dist/bin/forgebook/auditCommand.d.mts +8 -0
  44. package/dist/bin/forgebook/auditCommand.mjs +75 -0
  45. package/dist/bin/forgebook/auditRun.d.ts +95 -0
  46. package/dist/bin/forgebook/auditRun.js +270 -0
  47. package/dist/bin/forgebook/browserRun.d.ts +21 -0
  48. package/dist/bin/forgebook/browserRun.js +57 -0
  49. package/dist/bin/forgebook/buildFailure.d.ts +7 -0
  50. package/dist/bin/forgebook/buildFailure.js +47 -0
  51. package/dist/bin/forgebook/buildWatch.d.ts +52 -0
  52. package/dist/bin/forgebook/buildWatch.js +137 -0
  53. package/dist/bin/forgebook/builtCatalogue.js +9 -5
  54. package/dist/bin/forgebook/catalogueCommands.d.ts +9 -0
  55. package/dist/bin/forgebook/catalogueCommands.js +23 -0
  56. package/dist/bin/forgebook/catalogueVite.d.ts +5 -1
  57. package/dist/bin/forgebook/catalogueVite.js +14 -6
  58. package/dist/bin/forgebook/commandCacheClaim.d.ts +18 -0
  59. package/dist/bin/forgebook/commandCacheClaim.js +170 -0
  60. package/dist/bin/forgebook/commandServer.d.ts +8 -0
  61. package/dist/bin/forgebook/commandServer.js +61 -13
  62. package/dist/bin/forgebook/forgebookCommands.mjs +105 -28
  63. package/dist/bin/forgebook/graphCommand.d.mts +8 -0
  64. package/dist/bin/forgebook/graphCommand.mjs +84 -0
  65. package/dist/bin/forgebook/guide/commands.md +57 -0
  66. package/dist/bin/forgebook/guide/devices.md +17 -0
  67. package/dist/bin/forgebook/guide/docs-pages.md +13 -0
  68. package/dist/bin/forgebook/guide/frameworks/angular.md +22 -0
  69. package/dist/bin/forgebook/guide/frameworks/html.md +22 -0
  70. package/dist/bin/forgebook/guide/frameworks/nextjs.md +23 -0
  71. package/dist/bin/forgebook/guide/frameworks/nuxt.md +22 -0
  72. package/dist/bin/forgebook/guide/frameworks/preact.md +16 -0
  73. package/dist/bin/forgebook/guide/frameworks/react-native-web.md +21 -0
  74. package/dist/bin/forgebook/guide/frameworks/react.md +16 -0
  75. package/dist/bin/forgebook/guide/frameworks/solid.md +18 -0
  76. package/dist/bin/forgebook/guide/frameworks/svelte.md +18 -0
  77. package/dist/bin/forgebook/guide/frameworks/sveltekit.md +23 -0
  78. package/dist/bin/forgebook/guide/frameworks/vue.md +18 -0
  79. package/dist/bin/forgebook/guide/frameworks/web-components.md +21 -0
  80. package/dist/bin/forgebook/guide/links.md +29 -0
  81. package/dist/bin/forgebook/guide/setup.md +23 -0
  82. package/dist/bin/forgebook/guide/stories.md +90 -0
  83. package/dist/bin/forgebook/guide/switches.md +43 -0
  84. package/dist/bin/forgebook/guideCommand.d.mts +13 -0
  85. package/dist/bin/forgebook/guideCommand.mjs +37 -0
  86. package/dist/bin/forgebook/importers/storybook.d.ts +21 -0
  87. package/dist/bin/forgebook/importers/storybook.js +11 -5
  88. package/dist/bin/forgebook/importers/storybookFrameworks.js +1 -1
  89. package/dist/bin/forgebook/initCommands.d.mts +11 -0
  90. package/dist/bin/forgebook/initCommands.mjs +51 -78
  91. package/dist/bin/forgebook/initConfig.d.ts +5 -3
  92. package/dist/bin/forgebook/initConfig.js +6 -3
  93. package/dist/bin/forgebook/initInstall.d.ts +15 -0
  94. package/dist/bin/forgebook/initInstall.js +77 -0
  95. package/dist/bin/forgebook/initPrint.d.ts +9 -0
  96. package/dist/bin/forgebook/initPrint.js +60 -0
  97. package/dist/bin/forgebook/initRefusals.d.ts +45 -0
  98. package/dist/bin/forgebook/initRefusals.js +91 -0
  99. package/dist/bin/forgebook/initRun.d.ts +28 -0
  100. package/dist/bin/forgebook/initRun.js +311 -0
  101. package/dist/bin/forgebook/mcpCommand.mjs +38 -4
  102. package/dist/bin/forgebook/mcpGraph.d.ts +13 -0
  103. package/dist/bin/forgebook/mcpGraph.js +24 -0
  104. package/dist/bin/forgebook/mcpTokens.d.ts +14 -0
  105. package/dist/bin/forgebook/mcpTokens.js +58 -0
  106. package/dist/bin/forgebook/mcpToolParts.d.ts +7 -0
  107. package/dist/bin/forgebook/mcpToolParts.js +10 -0
  108. package/dist/bin/forgebook/mcpTools.d.ts +13 -6
  109. package/dist/bin/forgebook/mcpTools.js +57 -90
  110. package/dist/bin/forgebook/mcpVerify.d.ts +16 -0
  111. package/dist/bin/forgebook/mcpVerify.js +36 -0
  112. package/dist/bin/forgebook/migrate/codemods.d.ts +11 -0
  113. package/dist/bin/forgebook/migrate/codemods.js +61 -0
  114. package/dist/bin/forgebook/migrate/migrate.types.d.ts +117 -0
  115. package/dist/bin/forgebook/migrate/migrate.types.js +5 -0
  116. package/dist/bin/forgebook/migrate/migrateCommand.d.mts +8 -0
  117. package/dist/bin/forgebook/migrate/migrateCommand.mjs +76 -0
  118. package/dist/bin/forgebook/migrate/migrateRun.d.ts +61 -0
  119. package/dist/bin/forgebook/migrate/migrateRun.js +210 -0
  120. package/dist/bin/forgebook/migrate/migrateText.d.ts +12 -0
  121. package/dist/bin/forgebook/migrate/migrateText.js +30 -0
  122. package/dist/bin/forgebook/migrate/migrateWrite.d.ts +27 -0
  123. package/dist/bin/forgebook/migrate/migrateWrite.js +66 -0
  124. package/dist/bin/forgebook/migrate/objectEdits.d.ts +70 -0
  125. package/dist/bin/forgebook/migrate/objectEdits.js +241 -0
  126. package/dist/bin/forgebook/migrate/playOnInBuilds.d.ts +3 -0
  127. package/dist/bin/forgebook/migrate/playOnInBuilds.js +86 -0
  128. package/dist/bin/forgebook/migrate/propGroupStrings.d.ts +5 -0
  129. package/dist/bin/forgebook/migrate/propGroupStrings.js +81 -0
  130. package/dist/bin/forgebook/newProject/newProject.d.ts +39 -0
  131. package/dist/bin/forgebook/newProject/newProject.js +180 -0
  132. package/dist/bin/forgebook/newProject/newProject.types.d.ts +97 -0
  133. package/dist/bin/forgebook/newProject/newProject.types.js +6 -0
  134. package/dist/bin/forgebook/newProject/packageManagers.d.ts +51 -0
  135. package/dist/bin/forgebook/newProject/packageManagers.js +121 -0
  136. package/dist/bin/forgebook/newProject/projectEntries.d.ts +62 -0
  137. package/dist/bin/forgebook/newProject/projectEntries.js +191 -0
  138. package/dist/bin/forgebook/newProject/projectFrameworks.d.ts +57 -0
  139. package/dist/bin/forgebook/newProject/projectFrameworks.js +148 -0
  140. package/dist/bin/forgebook/newProject/projectLook.d.ts +23 -0
  141. package/dist/bin/forgebook/newProject/projectLook.js +293 -0
  142. package/dist/bin/forgebook/newProject/projectPackages.d.ts +66 -0
  143. package/dist/bin/forgebook/newProject/projectPackages.js +178 -0
  144. package/dist/bin/forgebook/newRepair.d.ts +45 -0
  145. package/dist/bin/forgebook/newRepair.js +157 -0
  146. package/dist/bin/forgebook/newRepairRun.d.ts +69 -0
  147. package/dist/bin/forgebook/newRepairRun.js +148 -0
  148. package/dist/bin/forgebook/newStories.d.ts +23 -1
  149. package/dist/bin/forgebook/newStories.js +101 -11
  150. package/dist/bin/forgebook/newStoriesFile.d.ts +20 -1
  151. package/dist/bin/forgebook/newStoriesFile.js +43 -4
  152. package/dist/bin/forgebook/prebundleRun.d.ts +3 -1
  153. package/dist/bin/forgebook/prebundleRun.js +28 -8
  154. package/dist/bin/forgebook/proofCommand.d.mts +15 -0
  155. package/dist/bin/forgebook/proofCommand.mjs +212 -0
  156. package/dist/bin/forgebook/proofRun.d.ts +63 -0
  157. package/dist/bin/forgebook/proofRun.js +412 -0
  158. package/dist/bin/forgebook/proofText.d.ts +36 -0
  159. package/dist/bin/forgebook/proofText.js +131 -0
  160. package/dist/bin/forgebook/proofWorkflow.d.ts +29 -0
  161. package/dist/bin/forgebook/proofWorkflow.js +205 -0
  162. package/dist/bin/forgebook/setArgsTool.d.ts +8 -0
  163. package/dist/bin/forgebook/setArgsTool.js +70 -0
  164. package/dist/bin/forgebook/storyCheckCommands.mjs +42 -3
  165. package/dist/bin/forgebook/storyCheckRun.d.ts +50 -0
  166. package/dist/bin/forgebook/storyCheckRun.js +83 -9
  167. package/dist/bin/forgebook/storyFileIds.d.ts +15 -0
  168. package/dist/bin/forgebook/storyFileIds.js +14 -0
  169. package/dist/bin/forgebook/stressCases.d.ts +31 -0
  170. package/dist/bin/forgebook/stressCases.js +79 -0
  171. package/dist/bin/forgebook/stressRun.d.ts +12 -0
  172. package/dist/bin/forgebook/stressRun.js +61 -0
  173. package/dist/bin/forgebook/stressText.d.ts +27 -0
  174. package/dist/bin/forgebook/stressText.js +46 -0
  175. package/dist/bin/forgebook/verifyBase.d.ts +45 -0
  176. package/dist/bin/forgebook/verifyBase.js +196 -0
  177. package/dist/bin/forgebook/verifyCommand.d.mts +13 -0
  178. package/dist/bin/forgebook/verifyCommand.mjs +125 -0
  179. package/dist/bin/forgebook/verifyRun.d.ts +63 -0
  180. package/dist/bin/forgebook/verifyRun.js +108 -0
  181. package/dist/bin/forgebook/verifyVerdict.d.ts +40 -0
  182. package/dist/bin/forgebook/verifyVerdict.js +297 -0
  183. package/dist/bin/forgebook/workflowActions.d.ts +23 -0
  184. package/dist/bin/forgebook/workflowActions.js +23 -0
  185. package/dist/bin/forgebook-docs/catalogueMarkdown.js +12 -1
  186. package/dist/src/addressArgs.d.ts +29 -5
  187. package/dist/src/addressArgs.js +58 -16
  188. package/dist/src/addressArgsParam.d.ts +54 -0
  189. package/dist/src/addressArgsParam.js +51 -0
  190. package/dist/src/addressTexts.d.ts +14 -0
  191. package/dist/src/addressTexts.js +28 -21
  192. package/dist/src/agentIndexFile.d.ts +11 -0
  193. package/dist/src/agentIndexFile.js +11 -0
  194. package/dist/src/argConditions.d.ts +52 -0
  195. package/dist/src/argConditions.js +80 -0
  196. package/dist/src/argControl.d.ts +100 -0
  197. package/dist/src/argControl.js +0 -0
  198. package/dist/src/argExpression.d.ts +21 -0
  199. package/dist/src/argExpression.js +30 -0
  200. package/dist/src/argTypes.d.ts +40 -51
  201. package/dist/src/argTypes.js +66 -184
  202. package/dist/src/argsProps.d.ts +3 -3
  203. package/dist/src/argsProps.js +11 -5
  204. package/dist/src/bundlerErrors.d.ts +29 -0
  205. package/dist/src/bundlerErrors.js +49 -0
  206. package/dist/src/catalogue.d.ts +31 -0
  207. package/dist/src/catalogue.js +13 -2
  208. package/dist/src/catalogueRefs.d.ts +75 -0
  209. package/dist/src/catalogueRefs.js +122 -0
  210. package/dist/src/componentDocs.d.ts +71 -0
  211. package/dist/src/componentDocs.js +15 -2
  212. package/dist/src/frame/callValues.d.ts +19 -0
  213. package/dist/src/frame/callValues.js +58 -0
  214. package/dist/src/frame/canvasScheme.d.ts +33 -0
  215. package/dist/src/frame/canvasScheme.js +67 -0
  216. package/dist/src/frame/frame.css +36 -3
  217. package/dist/src/frame/frameStatus.d.ts +16 -1
  218. package/dist/src/frame/frameStatus.js +16 -1
  219. package/dist/src/frame/frameView.js +4 -3
  220. package/dist/src/frame/mountFrame.d.ts +7 -1
  221. package/dist/src/frame/mountFrame.js +153 -46
  222. package/dist/src/frame/panelValues.d.ts +35 -0
  223. package/dist/src/frame/panelValues.js +127 -0
  224. package/dist/src/frame/playActions.d.ts +39 -0
  225. package/dist/src/frame/playActions.js +98 -0
  226. package/dist/src/frame/playStepper.d.ts +28 -0
  227. package/dist/src/frame/playStepper.js +38 -0
  228. package/dist/src/frame/playStory.d.ts +9 -1
  229. package/dist/src/frame/playStory.js +49 -3
  230. package/dist/src/frame/renderer.d.ts +34 -1
  231. package/dist/src/frame/renderer.js +24 -0
  232. package/dist/src/frame/shellChannel.d.ts +1 -1
  233. package/dist/src/frame/shellChannel.js +1 -1
  234. package/dist/src/frame/shellCheck.d.ts +17 -0
  235. package/dist/src/frame/shellCheck.js +25 -0
  236. package/dist/src/frame/shellMessageCheck.d.ts +7 -0
  237. package/dist/src/frame/shellMessageCheck.js +53 -0
  238. package/dist/src/frame/storyContent.d.ts +50 -0
  239. package/dist/src/frame/storyContent.js +73 -0
  240. package/dist/src/frame/storyModule.d.ts +9 -0
  241. package/dist/src/frame/storyModule.js +20 -2
  242. package/dist/src/frame/storyRun.d.ts +15 -7
  243. package/dist/src/frame/storyRun.js +64 -15
  244. package/dist/src/frame/valueSheets.d.ts +35 -0
  245. package/dist/src/frame/valueSheets.js +99 -0
  246. package/dist/src/hotModules.d.ts +20 -0
  247. package/dist/src/hotModules.js +23 -0
  248. package/dist/src/jsxCode.d.ts +1 -14
  249. package/dist/src/jsxCode.js +46 -10
  250. package/dist/src/liveErrors.d.ts +30 -4
  251. package/dist/src/liveErrors.js +18 -3
  252. package/dist/src/messages.d.ts +77 -27
  253. package/dist/src/messages.js +58 -100
  254. package/dist/src/namedValues.d.ts +2 -26
  255. package/dist/src/namedValues.js +0 -47
  256. package/dist/src/pageConfig.d.ts +2 -0
  257. package/dist/src/playTrace.d.ts +19 -2
  258. package/dist/src/playTrace.js +10 -5
  259. package/dist/src/plugin.d.ts +10 -3
  260. package/dist/src/previewRelay.js +9 -1
  261. package/dist/src/printable.d.ts +12 -0
  262. package/dist/src/printable.js +22 -0
  263. package/dist/src/propsSignature.d.ts +37 -0
  264. package/dist/src/propsSignature.js +40 -0
  265. package/dist/src/search.d.ts +41 -5
  266. package/dist/src/search.js +93 -23
  267. package/dist/src/searchMatch.d.ts +4 -1
  268. package/dist/src/searchMatch.js +26 -5
  269. package/dist/src/searchTypos.d.ts +88 -0
  270. package/dist/src/searchTypos.js +178 -0
  271. package/dist/src/shapeValues.d.ts +86 -0
  272. package/dist/src/shapeValues.js +295 -0
  273. package/dist/src/shell/ApiReference.js +6 -3
  274. package/dist/src/shell/ApiTableBox.d.ts +15 -0
  275. package/dist/src/shell/ApiTableBox.js +11 -0
  276. package/dist/src/shell/AppearanceMenu.d.ts +4 -1
  277. package/dist/src/shell/AppearanceMenu.js +9 -6
  278. package/dist/src/shell/CodeTab.d.ts +3 -2
  279. package/dist/src/shell/CodeTab.js +3 -2
  280. package/dist/src/shell/CodeText.d.ts +1 -1
  281. package/dist/src/shell/CodeText.js +2 -3
  282. package/dist/src/shell/CompareGrid.js +1 -1
  283. package/dist/src/shell/ComponentPage.d.ts +1 -1
  284. package/dist/src/shell/ComponentPage.js +5 -1
  285. package/dist/src/shell/CustomControl.d.ts +34 -0
  286. package/dist/src/shell/CustomControl.js +132 -0
  287. package/dist/src/shell/DocContainers.js +1 -1
  288. package/dist/src/shell/DocPage.js +2 -2
  289. package/dist/src/shell/DroppedArgsList.d.ts +2 -2
  290. package/dist/src/shell/DroppedArgsList.js +1 -1
  291. package/dist/src/shell/EmbedPage.js +30 -12
  292. package/dist/src/shell/Example.d.ts +5 -1
  293. package/dist/src/shell/Example.js +16 -8
  294. package/dist/src/shell/FrameView.d.ts +6 -3
  295. package/dist/src/shell/FrameView.js +2 -2
  296. package/dist/src/shell/HomePage.d.ts +3 -1
  297. package/dist/src/shell/HomePage.js +16 -6
  298. package/dist/src/shell/InfoTip.js +2 -2
  299. package/dist/src/shell/InteractionsTab.d.ts +11 -4
  300. package/dist/src/shell/InteractionsTab.js +18 -2
  301. package/dist/src/shell/LazyPage.js +1 -1
  302. package/dist/src/shell/PackageHtml.js +3 -1
  303. package/dist/src/shell/PinnedControl.js +14 -62
  304. package/dist/src/shell/PinnedControlMenu.d.ts +44 -0
  305. package/dist/src/shell/PinnedControlMenu.js +72 -0
  306. package/dist/src/shell/PropFields.d.ts +3 -1
  307. package/dist/src/shell/PropFields.js +9 -6
  308. package/dist/src/shell/PropRows.d.ts +23 -2
  309. package/dist/src/shell/PropRows.js +58 -19
  310. package/dist/src/shell/PropsTab.d.ts +12 -5
  311. package/dist/src/shell/PropsTab.js +9 -21
  312. package/dist/src/shell/RefStoryPage.d.ts +33 -0
  313. package/dist/src/shell/RefStoryPage.js +123 -0
  314. package/dist/src/shell/SearchPanel.js +51 -24
  315. package/dist/src/shell/Shell.d.ts +18 -0
  316. package/dist/src/shell/Shell.js +137 -22
  317. package/dist/src/shell/ShortcutHelp.d.ts +22 -0
  318. package/dist/src/shell/ShortcutHelp.js +66 -0
  319. package/dist/src/shell/Sidebar.d.ts +17 -4
  320. package/dist/src/shell/Sidebar.js +92 -41
  321. package/dist/src/shell/SidebarDocs.js +2 -2
  322. package/dist/src/shell/SidebarEntries.js +5 -3
  323. package/dist/src/shell/SidebarHandle.d.ts +3 -5
  324. package/dist/src/shell/SidebarHandle.js +4 -4
  325. package/dist/src/shell/SidebarRefs.d.ts +39 -0
  326. package/dist/src/shell/SidebarRefs.js +99 -0
  327. package/dist/src/shell/SidebarSearch.js +37 -9
  328. package/dist/src/shell/SignatureReference.js +3 -1
  329. package/dist/src/shell/Stage.d.ts +10 -2
  330. package/dist/src/shell/Stage.js +29 -49
  331. package/dist/src/shell/StatusBadges.d.ts +54 -0
  332. package/dist/src/shell/StatusBadges.js +77 -0
  333. package/dist/src/shell/StoryCodeBlock.d.ts +8 -19
  334. package/dist/src/shell/StoryCodeBlock.js +7 -6
  335. package/dist/src/shell/SwitchGallery.d.ts +36 -0
  336. package/dist/src/shell/SwitchGallery.js +17 -0
  337. package/dist/src/shell/SwitchGalleryPanel.d.ts +37 -0
  338. package/dist/src/shell/SwitchGalleryPanel.js +99 -0
  339. package/dist/src/shell/TagFilter.d.ts +24 -0
  340. package/dist/src/shell/TagFilter.js +45 -0
  341. package/dist/src/shell/TagViews.d.ts +39 -0
  342. package/dist/src/shell/TagViews.js +20 -0
  343. package/dist/src/shell/Toolbar.d.ts +4 -1
  344. package/dist/src/shell/Toolbar.js +17 -7
  345. package/dist/src/shell/ToolbarControl.d.ts +3 -0
  346. package/dist/src/shell/ToolbarControl.js +23 -6
  347. package/dist/src/shell/ViewMenuPanel.js +6 -1
  348. package/dist/src/shell/argChecks.d.ts +22 -0
  349. package/dist/src/shell/argChecks.js +20 -0
  350. package/dist/src/shell/asideStory.js +7 -2
  351. package/dist/src/shell/audienceSections.css +9 -9
  352. package/dist/src/shell/catalogueContext.d.ts +1 -1
  353. package/dist/src/shell/catalogueContext.js +6 -1
  354. package/dist/src/shell/codeSpans.d.ts +27 -0
  355. package/dist/src/shell/codeSpans.js +76 -0
  356. package/dist/src/shell/compareVariants.d.ts +4 -2
  357. package/dist/src/shell/compareVariants.js +16 -8
  358. package/dist/src/shell/composition.d.ts +23 -0
  359. package/dist/src/shell/composition.js +26 -0
  360. package/dist/src/shell/controlCycle.d.ts +1 -1
  361. package/dist/src/shell/controlCycle.js +3 -2
  362. package/dist/src/shell/customControls.d.ts +55 -0
  363. package/dist/src/shell/customControls.js +70 -0
  364. package/dist/src/shell/docPage.css +22 -22
  365. package/dist/src/shell/dockTabs.d.ts +19 -3
  366. package/dist/src/shell/dockTabs.js +28 -20
  367. package/dist/src/shell/embed.css +7 -7
  368. package/dist/src/shell/framesOrigin.d.ts +7 -0
  369. package/dist/src/shell/framesOrigin.js +1 -1
  370. package/dist/src/shell/galleryPlace.d.ts +20 -0
  371. package/dist/src/shell/galleryPlace.js +26 -0
  372. package/dist/src/shell/icons.d.ts +1 -0
  373. package/dist/src/shell/icons.js +1 -0
  374. package/dist/src/shell/keyboard.d.ts +14 -12
  375. package/dist/src/shell/keyboard.js +21 -6
  376. package/dist/src/shell/laterStrings.d.ts +29 -0
  377. package/dist/src/shell/laterStrings.js +42 -3
  378. package/dist/src/shell/mountShell.js +3 -0
  379. package/dist/src/shell/pageStrings.d.ts +4 -0
  380. package/dist/src/shell/pageStrings.js +4 -0
  381. package/dist/src/shell/pageTagView.d.ts +18 -0
  382. package/dist/src/shell/pageTagView.js +10 -0
  383. package/dist/src/shell/playMemory.d.ts +14 -0
  384. package/dist/src/shell/playMemory.js +8 -0
  385. package/dist/src/shell/propNotes.d.ts +23 -0
  386. package/dist/src/shell/propNotes.js +37 -0
  387. package/dist/src/shell/refIndexLoad.d.ts +17 -0
  388. package/dist/src/shell/refIndexLoad.js +38 -0
  389. package/dist/src/shell/refParts.d.ts +34 -0
  390. package/dist/src/shell/refParts.js +9 -0
  391. package/dist/src/shell/refStory.css +21 -0
  392. package/dist/src/shell/refStrings.d.ts +13 -0
  393. package/dist/src/shell/refStrings.js +21 -0
  394. package/dist/src/shell/search.css +11 -11
  395. package/dist/src/shell/shell.css +348 -168
  396. package/dist/src/shell/shellScheme.js +2 -2
  397. package/dist/src/shell/shortcutHelp.css +64 -0
  398. package/dist/src/shell/stageArgs.d.ts +53 -0
  399. package/dist/src/shell/stageArgs.js +64 -0
  400. package/dist/src/shell/statusBadges.css +51 -0
  401. package/dist/src/shell/strings.d.ts +7 -16
  402. package/dist/src/shell/strings.js +12 -17
  403. package/dist/src/shell/switchGallery.css +104 -0
  404. package/dist/src/shell/tagFilter.css +46 -0
  405. package/dist/src/shell/tagView.d.ts +20 -0
  406. package/dist/src/shell/tagView.js +10 -0
  407. package/dist/src/shell/useAddressArgs.d.ts +9 -0
  408. package/dist/src/shell/useAddressArgs.js +56 -11
  409. package/dist/src/shell/useControlKeys.js +2 -2
  410. package/dist/src/shell/useEditedProblems.d.ts +6 -0
  411. package/dist/src/shell/useEditedProblems.js +40 -0
  412. package/dist/src/shell/useFrameMessages.js +3 -0
  413. package/dist/src/shell/useListedTree.d.ts +13 -0
  414. package/dist/src/shell/useListedTree.js +32 -0
  415. package/dist/src/shell/usePageFrames.js +2 -2
  416. package/dist/src/shell/usePopover.d.ts +5 -0
  417. package/dist/src/shell/usePopover.js +7 -1
  418. package/dist/src/shell/useRefIndex.d.ts +22 -0
  419. package/dist/src/shell/useRefIndex.js +36 -0
  420. package/dist/src/shell/useScrollStops.d.ts +20 -0
  421. package/dist/src/shell/useScrollStops.js +41 -0
  422. package/dist/src/shell/useShortcutHelp.d.ts +18 -0
  423. package/dist/src/shell/useShortcutHelp.js +32 -0
  424. package/dist/src/shell/useSidebarOverlay.d.ts +2 -1
  425. package/dist/src/shell/useSidebarOverlay.js +12 -4
  426. package/dist/src/shell/useStoryCode.d.ts +2 -1
  427. package/dist/src/shell/useStoryCode.js +12 -7
  428. package/dist/src/shell/useToolbarLayout.d.ts +5 -1
  429. package/dist/src/shell/useToolbarLayout.js +2 -2
  430. package/dist/src/shell/useWorstCase.d.ts +8 -2
  431. package/dist/src/shell/useWorstCase.js +2 -2
  432. package/dist/src/shell/valueEditors/FileEditor.d.ts +28 -0
  433. package/dist/src/shell/valueEditors/FileEditor.js +66 -0
  434. package/dist/src/shell/valueEditors/JsonEditor.d.ts +14 -0
  435. package/dist/src/shell/valueEditors/JsonEditor.js +53 -0
  436. package/dist/src/shell/valueEditors/ListEditor.d.ts +24 -0
  437. package/dist/src/shell/valueEditors/ListEditor.js +82 -0
  438. package/dist/src/shell/valueEditors/ObjectEditor.d.ts +32 -0
  439. package/dist/src/shell/valueEditors/ObjectEditor.js +70 -0
  440. package/dist/src/shell/valueEditors/PropEditor.d.ts +37 -0
  441. package/dist/src/shell/valueEditors/PropEditor.js +53 -0
  442. package/dist/src/shell/valueEditors/RecordEditor.d.ts +20 -0
  443. package/dist/src/shell/valueEditors/RecordEditor.js +84 -0
  444. package/dist/src/shell/valueEditors/SearchSelect.d.ts +42 -0
  445. package/dist/src/shell/valueEditors/SearchSelect.js +80 -0
  446. package/dist/src/shell/valueEditors/TokenEditor.d.ts +49 -0
  447. package/dist/src/shell/valueEditors/TokenEditor.js +74 -0
  448. package/dist/src/shell/valueEditors/UnionEditor.d.ts +20 -0
  449. package/dist/src/shell/valueEditors/UnionEditor.js +64 -0
  450. package/dist/src/shell/valueEditors/ValueField.d.ts +15 -0
  451. package/dist/src/shell/valueEditors/ValueField.js +147 -0
  452. package/dist/src/shell/valueEditors/editorStrings.d.ts +56 -0
  453. package/dist/src/shell/valueEditors/editorStrings.js +66 -0
  454. package/dist/src/shell/valueEditors/fieldTypes.d.ts +31 -0
  455. package/dist/src/shell/valueEditors/fieldTypes.js +0 -0
  456. package/dist/src/shell/valueEditors/valueEditors.css +153 -0
  457. package/dist/src/shell/worstArgs.d.ts +8 -5
  458. package/dist/src/shell/worstArgs.js +14 -7
  459. package/dist/src/shellTheme.d.ts +1 -1
  460. package/dist/src/shellTheme.js +15 -1
  461. package/dist/src/shellTheme.types.d.ts +4 -0
  462. package/dist/src/shellWord.d.ts +12 -0
  463. package/dist/src/shellWord.js +15 -0
  464. package/dist/src/sourceFiles.js +2 -1
  465. package/dist/src/storyArgTypes.d.ts +57 -0
  466. package/dist/src/storyArgTypes.js +195 -0
  467. package/dist/src/storyBackground.js +14 -3
  468. package/dist/src/storyCheck.d.ts +85 -3
  469. package/dist/src/storyCheck.js +23 -1
  470. package/dist/src/storyCodeText.d.ts +46 -0
  471. package/dist/src/storyCodeText.js +27 -0
  472. package/dist/src/storyControls.d.ts +100 -0
  473. package/dist/src/storyControls.js +100 -0
  474. package/dist/src/storyStatuses.d.ts +55 -0
  475. package/dist/src/storyStatuses.js +104 -0
  476. package/dist/src/storyTagNames.d.ts +25 -0
  477. package/dist/src/storyTagNames.js +25 -0
  478. package/dist/src/storyTags.d.ts +29 -0
  479. package/dist/src/storyTags.js +85 -0
  480. package/dist/src/storyTree.d.ts +13 -0
  481. package/dist/src/storyTree.js +24 -4
  482. package/dist/src/storybookArgs.d.ts +24 -0
  483. package/dist/src/storybookArgs.js +185 -0
  484. package/dist/src/switches.d.ts +66 -3
  485. package/dist/src/switches.js +42 -1
  486. package/dist/src/valueSchema.d.ts +28 -0
  487. package/dist/src/valueSchema.js +196 -0
  488. package/dist/src/valueShape.d.ts +94 -0
  489. package/dist/src/valueShape.js +25 -0
  490. package/dist/src/viewState.d.ts +8 -3
  491. package/dist/src/viewState.js +27 -10
  492. package/dist/src/vite/adapter.d.ts +40 -2
  493. package/dist/src/vite/adapter.js +1 -0
  494. package/dist/src/vite/agent.types.d.ts +347 -7
  495. package/dist/src/vite/agentApi.d.ts +23 -0
  496. package/dist/src/vite/agentApi.js +90 -17
  497. package/dist/src/vite/agentIndex.d.ts +0 -2
  498. package/dist/src/vite/agentIndex.js +5 -6
  499. package/dist/src/vite/agentRoutes.d.ts +20 -1
  500. package/dist/src/vite/agentRoutes.js +106 -65
  501. package/dist/src/vite/agentStatuses.d.ts +42 -0
  502. package/dist/src/vite/agentStatuses.js +67 -0
  503. package/dist/src/vite/agentStoryCode.d.ts +48 -0
  504. package/dist/src/vite/agentStoryCode.js +38 -0
  505. package/dist/src/vite/agentVisibility.d.ts +47 -0
  506. package/dist/src/vite/agentVisibility.js +174 -0
  507. package/dist/src/vite/appAudit.d.ts +134 -0
  508. package/dist/src/vite/appAudit.js +333 -0
  509. package/dist/src/vite/appBuildOption.d.ts +53 -0
  510. package/dist/src/vite/appBuildOption.js +55 -0
  511. package/dist/src/vite/appTokenFiles.d.ts +92 -0
  512. package/dist/src/vite/appTokenFiles.js +433 -0
  513. package/dist/src/vite/appTokens.d.ts +23 -0
  514. package/dist/src/vite/appTokens.js +275 -0
  515. package/dist/src/vite/builtTexts.d.ts +10 -0
  516. package/dist/src/vite/builtTexts.js +59 -22
  517. package/dist/src/vite/catalogueConfig.d.ts +3 -1
  518. package/dist/src/vite/catalogueConfig.js +15 -3
  519. package/dist/src/vite/changeCoverage.d.ts +74 -0
  520. package/dist/src/vite/changeCoverage.js +120 -0
  521. package/dist/src/vite/changedRoute.d.ts +30 -0
  522. package/dist/src/vite/changedRoute.js +197 -0
  523. package/dist/src/vite/checkCode.d.ts +105 -3
  524. package/dist/src/vite/checkCode.js +323 -36
  525. package/dist/src/vite/checkoutWatch.d.ts +97 -0
  526. package/dist/src/vite/checkoutWatch.js +287 -0
  527. package/dist/src/vite/closeWatch.d.ts +8 -0
  528. package/dist/src/vite/closeWatch.js +1 -1
  529. package/dist/src/vite/componentCache.d.ts +8 -0
  530. package/dist/src/vite/componentCache.js +66 -0
  531. package/dist/src/vite/componentGraph.d.ts +71 -0
  532. package/dist/src/vite/componentGraph.js +133 -0
  533. package/dist/src/vite/componentRules.d.ts +33 -0
  534. package/dist/src/vite/componentRules.js +105 -0
  535. package/dist/src/vite/componentScan.d.ts +69 -0
  536. package/dist/src/vite/componentScan.js +418 -0
  537. package/dist/src/vite/compositionCheck.d.ts +15 -0
  538. package/dist/src/vite/compositionCheck.js +243 -0
  539. package/dist/src/vite/config.d.ts +32 -1
  540. package/dist/src/vite/configFile.d.ts +14 -2
  541. package/dist/src/vite/configFile.js +124 -40
  542. package/dist/src/vite/configKeys.d.ts +15 -0
  543. package/dist/src/vite/configKeys.js +171 -0
  544. package/dist/src/vite/configLoadError.d.ts +23 -0
  545. package/dist/src/vite/configLoadError.js +71 -0
  546. package/dist/src/vite/cssDeclarations.d.ts +71 -0
  547. package/dist/src/vite/cssDeclarations.js +290 -0
  548. package/dist/src/vite/cssImports.d.ts +14 -0
  549. package/dist/src/vite/cssImports.js +48 -0
  550. package/dist/src/vite/cssReferences.d.ts +54 -0
  551. package/dist/src/vite/cssReferences.js +157 -0
  552. package/dist/src/vite/cssTokenValues.d.ts +50 -0
  553. package/dist/src/vite/cssTokenValues.js +233 -0
  554. package/dist/src/vite/designTokens.d.ts +24 -0
  555. package/dist/src/vite/designTokens.js +5 -1
  556. package/dist/src/vite/docsExtractor.d.ts +9 -3
  557. package/dist/src/vite/docsExtractor.js +11 -3
  558. package/dist/src/vite/docsProgram.d.ts +17 -4
  559. package/dist/src/vite/docsProgram.js +52 -11
  560. package/dist/src/vite/docsWorker.js +7 -2
  561. package/dist/src/vite/emptyStoryGlobs.d.ts +41 -0
  562. package/dist/src/vite/emptyStoryGlobs.js +52 -0
  563. package/dist/src/vite/fileImports.d.ts +17 -0
  564. package/dist/src/vite/fileImports.js +57 -0
  565. package/dist/src/vite/findComponent.d.ts +10 -2
  566. package/dist/src/vite/findComponent.js +27 -22
  567. package/dist/src/vite/findRoute.js +3 -2
  568. package/dist/src/vite/forcedStates.d.ts +9 -2
  569. package/dist/src/vite/forcedStates.js +12 -3
  570. package/dist/src/vite/forgebookPlugin.d.ts +2 -0
  571. package/dist/src/vite/forgebookPlugin.js +52 -72
  572. package/dist/src/vite/frameErrors.d.ts +19 -0
  573. package/dist/src/vite/frameErrors.js +70 -0
  574. package/dist/src/vite/framesServer.d.ts +12 -0
  575. package/dist/src/vite/framesServer.js +21 -4
  576. package/dist/src/vite/functionComponentDocs.js +81 -12
  577. package/dist/src/vite/generatedModules.js +4 -2
  578. package/dist/src/vite/gitChange.d.ts +38 -5
  579. package/dist/src/vite/gitChange.js +71 -11
  580. package/dist/src/vite/hiddenStoryFiles.d.ts +23 -0
  581. package/dist/src/vite/hiddenStoryFiles.js +107 -0
  582. package/dist/src/vite/hotSnippets.d.ts +38 -14
  583. package/dist/src/vite/hotSnippets.js +137 -39
  584. package/dist/src/vite/importedNames.d.ts +37 -0
  585. package/dist/src/vite/importedNames.js +138 -0
  586. package/dist/src/vite/indexFields.d.ts +6 -0
  587. package/dist/src/vite/indexFields.js +21 -0
  588. package/dist/src/vite/indexStoryFile.d.ts +8 -1
  589. package/dist/src/vite/indexStoryFile.js +22 -157
  590. package/dist/src/vite/jsxCallSites.d.ts +33 -0
  591. package/dist/src/vite/jsxCallSites.js +200 -0
  592. package/dist/src/vite/jsxInScripts.d.ts +67 -0
  593. package/dist/src/vite/jsxInScripts.js +138 -0
  594. package/dist/src/vite/jsxTree.d.ts +20 -0
  595. package/dist/src/vite/jsxTree.js +163 -0
  596. package/dist/src/vite/lineAndColumn.d.ts +13 -0
  597. package/dist/src/vite/lineAndColumn.js +18 -0
  598. package/dist/src/vite/lookAlikes.d.ts +65 -0
  599. package/dist/src/vite/lookAlikes.js +228 -0
  600. package/dist/src/vite/nearestToken.d.ts +17 -0
  601. package/dist/src/vite/nearestToken.js +9 -2
  602. package/dist/src/vite/packageEntries.d.ts +42 -0
  603. package/dist/src/vite/packageEntries.js +127 -0
  604. package/dist/src/vite/pages.d.ts +9 -1
  605. package/dist/src/vite/pages.js +108 -4
  606. package/dist/src/vite/pluginConfig.js +4 -0
  607. package/dist/src/vite/pluginIds.d.ts +2 -0
  608. package/dist/src/vite/pluginIds.js +5 -1
  609. package/dist/src/vite/pluginModules.d.ts +81 -11
  610. package/dist/src/vite/pluginModules.js +109 -21
  611. package/dist/src/vite/prebundled.d.ts +57 -15
  612. package/dist/src/vite/prebundled.js +80 -0
  613. package/dist/src/vite/previewTags.d.ts +25 -0
  614. package/dist/src/vite/previewTags.js +56 -0
  615. package/dist/src/vite/projectFiles.d.ts +54 -0
  616. package/dist/src/vite/projectFiles.js +116 -0
  617. package/dist/src/vite/projectPostcss.d.ts +70 -0
  618. package/dist/src/vite/projectPostcss.js +250 -0
  619. package/dist/src/vite/propDocs.d.ts +12 -0
  620. package/dist/src/vite/propDocs.js +130 -58
  621. package/dist/src/vite/propKind.d.ts +40 -0
  622. package/dist/src/vite/propKind.js +71 -0
  623. package/dist/src/vite/propTypeNotes.d.ts +22 -0
  624. package/dist/src/vite/propTypeNotes.js +51 -0
  625. package/dist/src/vite/publishedExports.d.ts +27 -0
  626. package/dist/src/vite/publishedExports.js +298 -0
  627. package/dist/src/vite/realFolder.d.ts +6 -0
  628. package/dist/src/vite/realFolder.js +25 -0
  629. package/dist/src/vite/refsConfig.d.ts +39 -0
  630. package/dist/src/vite/refsConfig.js +54 -0
  631. package/dist/src/vite/reuseCheck.d.ts +45 -0
  632. package/dist/src/vite/reuseCheck.js +260 -0
  633. package/dist/src/vite/runningVersions.d.ts +33 -0
  634. package/dist/src/vite/runningVersions.js +25 -0
  635. package/dist/src/vite/scriptProblems.d.ts +60 -0
  636. package/dist/src/vite/scriptProblems.js +155 -0
  637. package/dist/src/vite/searchModule.js +3 -2
  638. package/dist/src/vite/searchRoute.js +4 -2
  639. package/dist/src/vite/shapeDocs.d.ts +36 -0
  640. package/dist/src/vite/shapeDocs.js +177 -0
  641. package/dist/src/vite/singleFileComponent.d.ts +17 -0
  642. package/dist/src/vite/singleFileComponent.js +83 -0
  643. package/dist/src/vite/sourceText.d.ts +34 -0
  644. package/dist/src/vite/sourceText.js +72 -0
  645. package/dist/src/vite/sourceTokens.d.ts +7 -0
  646. package/dist/src/vite/sourceTokens.js +7 -2
  647. package/dist/src/vite/stackLines.d.ts +49 -0
  648. package/dist/src/vite/stackLines.js +96 -0
  649. package/dist/src/vite/storyCode.d.ts +22 -7
  650. package/dist/src/vite/storyCode.js +263 -37
  651. package/dist/src/vite/storyCoverage.d.ts +48 -0
  652. package/dist/src/vite/storyCoverage.js +179 -0
  653. package/dist/src/vite/storyFilesModule.d.ts +48 -3
  654. package/dist/src/vite/storyFilesModule.js +105 -15
  655. package/dist/src/vite/storyPatterns.d.ts +31 -0
  656. package/dist/src/vite/storyPatterns.js +140 -5
  657. package/dist/src/vite/storyReach.d.ts +10 -2
  658. package/dist/src/vite/storyReach.js +15 -11
  659. package/dist/src/vite/storyTopLevel.d.ts +51 -0
  660. package/dist/src/vite/storyTopLevel.js +146 -0
  661. package/dist/src/vite/storylessRoutes.d.ts +4 -3
  662. package/dist/src/vite/storylessRoutes.js +210 -19
  663. package/dist/src/vite/switchValuesCheck.d.ts +19 -0
  664. package/dist/src/vite/switchValuesCheck.js +164 -0
  665. package/dist/src/vite/switchesDocument.d.ts +15 -0
  666. package/dist/src/vite/switchesDocument.js +47 -0
  667. package/dist/src/vite/tailwindConfigTokens.d.ts +41 -0
  668. package/dist/src/vite/tailwindConfigTokens.js +306 -0
  669. package/dist/src/vite/textImports.d.ts +15 -0
  670. package/dist/src/vite/textImports.js +58 -0
  671. package/dist/src/vite/textModules.d.ts +6 -5
  672. package/dist/src/vite/textModules.js +13 -8
  673. package/dist/src/vite/tokenAnswers.d.ts +6 -2
  674. package/dist/src/vite/tokenAnswers.js +11 -7
  675. package/dist/src/vite/typeParameters.d.ts +83 -0
  676. package/dist/src/vite/typeParameters.js +270 -0
  677. package/dist/src/vite/unionProps.d.ts +37 -0
  678. package/dist/src/vite/unionProps.js +121 -0
  679. package/dist/src/vite/unresolvedTokens.d.ts +20 -0
  680. package/dist/src/vite/unresolvedTokens.js +193 -0
  681. package/dist/src/vite/usageGraph.js +10 -52
  682. package/dist/src/vite/usageGuidance.d.ts +9 -2
  683. package/dist/src/vite/usageGuidance.js +36 -8
  684. package/dist/src/vite/usageImports.d.ts +35 -0
  685. package/dist/src/vite/usageImports.js +280 -0
  686. package/dist/src/vite/visibilityRoute.d.ts +16 -0
  687. package/dist/src/vite/visibilityRoute.js +320 -0
  688. package/dist/src/worstCase.d.ts +2 -0
  689. package/dist/src/worstCase.js +2 -0
  690. package/package.json +28 -8
@@ -4,12 +4,13 @@
4
4
  *
5
5
  * @remarks
6
6
  * Pure. A control its toolbar control leaves disabled is left as it is here too: a switch or a background the story
7
- * fixes (or a width), and a control the compare view draws side by side.
7
+ * fixes (or a width), a switch another switch's value implies, and a control the compare view draws side by side.
8
8
  *
9
9
  * @module
10
10
  */
11
11
  import { AUDIENCE_IDS } from "../audiences.js";
12
12
  import { cycledValue, switchValues } from "../controlKeys.js";
13
+ import { impliedSwitches } from "../switches.js";
13
14
  import { isComparing, PLAIN_BACKDROP, SHEETS_CHOICES } from "../viewState.js";
14
15
  import { withSwitch } from "./switchView.js";
15
16
  /**
@@ -52,7 +53,7 @@ export const cycledView = (view, id, step, catalogue, fixed, isStoryPage) => {
52
53
  return undefined;
53
54
  const each = catalogue.switches.find((candidate) => candidate.id === id);
54
55
  if (each !== undefined) {
55
- if (fixed.switches[id] !== undefined)
56
+ if (fixed.switches[id] !== undefined || impliedSwitches(view.switches, catalogue.switches).has(id))
56
57
  return undefined;
57
58
  const current = view.switches[id] ?? each.default;
58
59
  return withSwitch(view, each, cycledValue(switchValues(each), current, step));
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The custom controls of a catalogue, as the shell loads them: a module's check on arrival, and the check of a value before
3
+ * it reaches the story. Loaded with the first story that names such a control, so a catalogue with none never asks for it.
4
+ *
5
+ * @remarks
6
+ * A module is the catalogue's own code, run with a plugin's trust, and it can be wrong in every way: named by no one, gone,
7
+ * throwing as it loads, exporting something else. Each ends in a sentence beside the field; none reaches the panel as an
8
+ * exception.
9
+ *
10
+ * @module
11
+ */
12
+ import type { ArgControlModule } from "../argControl.ts";
13
+ import type { ArgValue } from "../messages.ts";
14
+ /** The texts of the custom controls' host. */
15
+ export declare const CONTROL_STRINGS: {
16
+ controlUnknown: (name: string) => string;
17
+ controlFailed: (name: string, reason: string) => string;
18
+ controlMalformed: (name: string) => string;
19
+ controlThrew: (name: string, reason: string) => string;
20
+ controlValue: (name: string, reason: string) => string;
21
+ controlUnsafe: string;
22
+ };
23
+ /** A catalogue's custom controls: how to load each, by name. */
24
+ export type ArgControlLoaders = Readonly<Record<string, () => Promise<unknown>>>;
25
+ /** A control as loading it ended. */
26
+ export type LoadedControl = {
27
+ readonly status: "ready";
28
+ readonly module: ArgControlModule;
29
+ } | {
30
+ readonly status: "failed";
31
+ readonly message: string;
32
+ };
33
+ /**
34
+ * A control, loaded.
35
+ *
36
+ * @param name - its name.
37
+ * @param loaders - the catalogue's custom controls.
38
+ */
39
+ export declare const loadControl: (name: string, loaders: ArgControlLoaders) => Promise<LoadedControl>;
40
+ /**
41
+ * What is wrong with a value for a control: its schema's word, or that it holds what would run if a component spread it on
42
+ * an element, which no schema's author is asked to think of.
43
+ *
44
+ * @param module - the control's module.
45
+ * @param value - the value.
46
+ * @returns the sentence; none when it fits.
47
+ */
48
+ export declare const controlValueProblem: (module: ArgControlModule, value: ArgValue) => string | undefined;
49
+ /**
50
+ * The checks of a story's custom controls, by name; a control that cannot load has none, which refuses its values.
51
+ *
52
+ * @param names - the controls the story names.
53
+ * @param loaders - the catalogue's custom controls.
54
+ */
55
+ export declare const customChecksOf: (names: readonly string[], loaders: ArgControlLoaders) => Promise<Readonly<Record<string, (value: ArgValue) => string | undefined>>>;
@@ -0,0 +1,70 @@
1
+ import { holdsUnsafePart } from "../shapeValues.js";
2
+ import { isValueSchema, schemaProblem } from "../valueSchema.js";
3
+ import { lateStrings } from "./strings.js";
4
+ /** The texts of the custom controls' host. */
5
+ export const CONTROL_STRINGS = lateStrings({
6
+ controlUnknown: (name) => `No control is registered as "${name}": add it to argControls in forgebook.config`,
7
+ controlFailed: (name, reason) => `The control "${name}" could not be loaded: ${reason}`,
8
+ controlMalformed: (name) => `The control "${name}" must export mount, a function, and schema, of JSON Schema's keywords Forgebook reads`,
9
+ controlThrew: (name, reason) => `The control "${name}" failed: ${reason}`,
10
+ controlValue: (name, reason) => `The control "${name}" was given a value it refuses: ${reason}`,
11
+ controlUnsafe: "It holds what a link may not give"
12
+ });
13
+ /** Whether a value is a plain object with a function `mount`. */
14
+ const isControlModule = (value) => typeof value === "object" &&
15
+ value !== null &&
16
+ "mount" in value &&
17
+ typeof value.mount === "function" &&
18
+ "schema" in value &&
19
+ isValueSchema(value.schema);
20
+ /** Each control's load, kept: every field and check of a page share one. */
21
+ const loads = new Map();
22
+ /** Loads one control's module, once, and reads what it exports. */
23
+ const readControl = async (name, load) => {
24
+ try {
25
+ const module = await load();
26
+ return isControlModule(module)
27
+ ? { status: "ready", module }
28
+ : { status: "failed", message: CONTROL_STRINGS.controlMalformed(name) };
29
+ }
30
+ catch (error) {
31
+ const reason = error instanceof Error ? error.message : String(error);
32
+ return { status: "failed", message: CONTROL_STRINGS.controlFailed(name, reason) };
33
+ }
34
+ };
35
+ /**
36
+ * A control, loaded.
37
+ *
38
+ * @param name - its name.
39
+ * @param loaders - the catalogue's custom controls.
40
+ */
41
+ export const loadControl = (name, loaders) => {
42
+ const load = Object.hasOwn(loaders, name) ? loaders[name] : undefined;
43
+ if (load === undefined)
44
+ return Promise.resolve({ status: "failed", message: CONTROL_STRINGS.controlUnknown(name) });
45
+ const started = loads.get(load) ?? readControl(name, load);
46
+ loads.set(load, started);
47
+ return started;
48
+ };
49
+ /**
50
+ * What is wrong with a value for a control: its schema's word, or that it holds what would run if a component spread it on
51
+ * an element, which no schema's author is asked to think of.
52
+ *
53
+ * @param module - the control's module.
54
+ * @param value - the value.
55
+ * @returns the sentence; none when it fits.
56
+ */
57
+ export const controlValueProblem = (module, value) => schemaProblem(module.schema, value) ??
58
+ (holdsUnsafePart(value, true) ? CONTROL_STRINGS.controlUnsafe : undefined);
59
+ /**
60
+ * The checks of a story's custom controls, by name; a control that cannot load has none, which refuses its values.
61
+ *
62
+ * @param names - the controls the story names.
63
+ * @param loaders - the catalogue's custom controls.
64
+ */
65
+ export const customChecksOf = async (names, loaders) => {
66
+ const controls = await Promise.all(names.map(async (name) => [name, await loadControl(name, loaders)]));
67
+ return Object.fromEntries(controls.flatMap(([name, control]) => control.status === "ready"
68
+ ? [[name, (value) => controlValueProblem(control.module, value)]]
69
+ : []));
70
+ };
@@ -92,9 +92,9 @@
92
92
  opacity: 1;
93
93
  }
94
94
  .forgebook-anchor:focus-visible {
95
- outline: 2px solid color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
95
+ outline: 2px solid var(--forgebook-focus-halo);
96
96
  outline-offset: 0;
97
- box-shadow: inset 0 0 0 1px var(--forgebook-accent);
97
+ box-shadow: var(--forgebook-focus-edge);
98
98
  }
99
99
  .forgebook-docs__code {
100
100
  position: relative;
@@ -118,7 +118,7 @@
118
118
  margin: 0;
119
119
  padding: 0.5rem 1rem;
120
120
  box-shadow: inset 0 -1px 0 var(--forgebook-separator);
121
- font: 400 0.6875rem/1.6 var(--forgebook-font-mono);
121
+ font: var(--forgebook-text-mono-small);
122
122
  color: var(--forgebook-text-secondary);
123
123
  padding-inline-end: 5rem;
124
124
  overflow: hidden;
@@ -194,7 +194,7 @@
194
194
  }
195
195
  .forgebook-aside__title {
196
196
  margin: 0;
197
- font: 500 0.8125rem/1.35 var(--forgebook-font-sans);
197
+ font: var(--forgebook-text-row-label);
198
198
  font-weight: 600;
199
199
  color: var(--forgebook-tone);
200
200
  }
@@ -217,7 +217,7 @@
217
217
  border-radius: var(--forgebook-radius-control-small) var(--forgebook-radius-control-small) 0 0;
218
218
  background: none;
219
219
  box-shadow: inset 0 -2px 0 transparent;
220
- font: 500 0.8125rem/1.35 var(--forgebook-font-sans);
220
+ font: var(--forgebook-text-row-label);
221
221
  color: var(--forgebook-text-secondary);
222
222
  cursor: pointer;
223
223
  transition: color 150ms ease-out, box-shadow 150ms ease-out;
@@ -230,9 +230,9 @@
230
230
  box-shadow: inset 0 -2px 0 var(--forgebook-accent);
231
231
  }
232
232
  .forgebook-tabs__tab:focus-visible {
233
- outline: 2px solid color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
233
+ outline: 2px solid var(--forgebook-focus-halo);
234
234
  outline-offset: -2px;
235
- box-shadow: inset 0 0 0 1px var(--forgebook-accent);
235
+ box-shadow: var(--forgebook-focus-edge);
236
236
  }
237
237
  .forgebook-tabs__panel {
238
238
  display: grid;
@@ -273,7 +273,7 @@
273
273
  border-radius: 50%;
274
274
  background: var(--forgebook-surface);
275
275
  box-shadow: inset 0 0 0 1px var(--forgebook-edge);
276
- font: 500 0.8125rem/1.35 var(--forgebook-font-sans);
276
+ font: var(--forgebook-text-row-label);
277
277
  font-weight: 600;
278
278
  color: var(--forgebook-text-secondary);
279
279
  }
@@ -311,7 +311,7 @@
311
311
  align-items: center;
312
312
  gap: 0.25rem;
313
313
  margin: 0;
314
- font: 600 0.875rem/1.3 var(--forgebook-font-sans);
314
+ font: var(--forgebook-text-card-title);
315
315
  }
316
316
  .forgebook-card--link {
317
317
  text-decoration: none;
@@ -324,12 +324,12 @@
324
324
  box-shadow: 0 0 0 1px var(--forgebook-card-edge-hover), 0 4px 14px var(--forgebook-shadow-lift);
325
325
  }
326
326
  .forgebook-card--link:focus-visible {
327
- outline: 2px solid color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
327
+ outline: 2px solid var(--forgebook-focus-halo);
328
328
  outline-offset: 0;
329
- box-shadow: inset 0 0 0 1px var(--forgebook-accent), 0 0 0 1px var(--forgebook-card-edge), 0 1px 3px var(--forgebook-shadow-soft);
329
+ box-shadow: var(--forgebook-focus-edge), 0 0 0 1px var(--forgebook-card-edge), 0 1px 3px var(--forgebook-shadow-soft);
330
330
  }
331
331
  .forgebook-card__description {
332
- font: 400 0.8125rem/1.4 var(--forgebook-font-sans);
332
+ font: var(--forgebook-text-body);
333
333
  color: var(--forgebook-text-secondary);
334
334
  }
335
335
  .forgebook-docs__foot {
@@ -357,24 +357,24 @@
357
357
  box-shadow: 0 0 0 1px var(--forgebook-card-edge-hover), 0 4px 14px var(--forgebook-shadow-lift);
358
358
  }
359
359
  .forgebook-docs__around:focus-visible {
360
- outline: 2px solid color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
360
+ outline: 2px solid var(--forgebook-focus-halo);
361
361
  outline-offset: 0;
362
- box-shadow: inset 0 0 0 1px var(--forgebook-accent), 0 0 0 1px var(--forgebook-card-edge), 0 1px 3px var(--forgebook-shadow-soft);
362
+ box-shadow: var(--forgebook-focus-edge), 0 0 0 1px var(--forgebook-card-edge), 0 1px 3px var(--forgebook-shadow-soft);
363
363
  }
364
364
  .forgebook-docs__around-label {
365
- font: 400 0.6875rem/1.35 var(--forgebook-font-sans);
365
+ font: var(--forgebook-text-caption);
366
366
  color: var(--forgebook-text-tertiary);
367
367
  }
368
368
  .forgebook-docs__around-name {
369
369
  display: inline-flex;
370
370
  align-items: center;
371
371
  gap: 0.25rem;
372
- font: 500 0.8125rem/1.35 var(--forgebook-font-sans);
372
+ font: var(--forgebook-text-row-label);
373
373
  color: var(--forgebook-accent-text);
374
374
  }
375
375
  .forgebook-contents__title {
376
376
  margin: 0;
377
- font: 600 0.6875rem/1.3 var(--forgebook-font-sans);
377
+ font: var(--forgebook-text-label);
378
378
  color: var(--forgebook-text-tertiary);
379
379
  }
380
380
  .forgebook-contents__list {
@@ -392,7 +392,7 @@
392
392
  padding: 0.25rem 0.5rem;
393
393
  border-radius: var(--forgebook-radius-control-small);
394
394
  box-shadow: inset 2px 0 0 transparent;
395
- font: 400 0.78125rem/1.4 var(--forgebook-font-sans);
395
+ font: var(--forgebook-text-row-compact);
396
396
  color: var(--forgebook-text-secondary);
397
397
  text-decoration: none;
398
398
  transition: color 150ms ease-out, background-color 150ms ease-out;
@@ -406,9 +406,9 @@
406
406
  font-weight: 500;
407
407
  }
408
408
  .forgebook-contents__link:focus-visible {
409
- outline: 2px solid color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
409
+ outline: 2px solid var(--forgebook-focus-halo);
410
410
  outline-offset: -2px;
411
- box-shadow: inset 0 0 0 1px var(--forgebook-accent);
411
+ box-shadow: var(--forgebook-focus-edge);
412
412
  }
413
413
  .forgebook-contents--column {
414
414
  position: sticky;
@@ -433,9 +433,9 @@
433
433
  border-radius: var(--forgebook-radius-control-small);
434
434
  }
435
435
  .forgebook-contents--fold > summary:focus-visible {
436
- outline: 2px solid color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
436
+ outline: 2px solid var(--forgebook-focus-halo);
437
437
  outline-offset: 0;
438
- box-shadow: inset 0 0 0 1px var(--forgebook-accent);
438
+ box-shadow: var(--forgebook-focus-edge);
439
439
  }
440
440
  .forgebook-contents--fold > nav {
441
441
  margin-top: 0.5rem;
@@ -13,11 +13,13 @@
13
13
  import type { StoryControlsSetting, StoryFileCode } from "@forgebook/story-format/source";
14
14
  import { type PanelArgTypes } from "../argTypes.ts";
15
15
  import { type ComponentDocs } from "../componentDocs.ts";
16
- import type { ArgValue, PanelArgs } from "../messages.ts";
16
+ import type { ArgValue, PanelArgs, PlayStepCommand } from "../messages.ts";
17
17
  import type { NamedValues } from "../namedValues.ts";
18
18
  import type { PlayTrace } from "../playTrace.ts";
19
19
  import type { TreeStory } from "../storyTree.ts";
20
+ import type { ViewState } from "../viewState.ts";
20
21
  import type { CheckState } from "./A11yTab.tsx";
22
+ import type { ArgControlLoaders } from "./customControls.ts";
21
23
  import type { DockTab } from "./Dock.tsx";
22
24
  import type { TextArgNote } from "./PropRows.tsx";
23
25
  import type { EventCall } from "./useFrameMessages.ts";
@@ -44,6 +46,16 @@ export type DockTabsInput = {
44
46
  readonly actions: readonly string[];
45
47
  /** The values of the moment: the story's args with the panel's over them. */
46
48
  readonly values: PanelArgs;
49
+ /** The panel's own values, for what can go back to the story's. */
50
+ readonly panelArgs: PanelArgs;
51
+ /** The story's own args, for a control no type describes. */
52
+ readonly storyArgs: PanelArgs;
53
+ /** Loads the catalogue's design tokens; none when it has none. */
54
+ readonly loadTokens: (() => Promise<unknown>) | undefined;
55
+ /** Loads each custom control the catalogue registers, by name; none when it registers none. */
56
+ readonly argControls?: ArgControlLoaders | undefined;
57
+ /** The switches' values of the moment, for the args whose `argTypes.if` reads a global. */
58
+ readonly globals: Readonly<Record<string, unknown>>;
47
59
  /** Called with a changed value; `undefined` removes the panel's value. */
48
60
  readonly onValueChange: (name: string, value: ArgValue | undefined) => void;
49
61
  /** Removes every value the panel set. */
@@ -62,8 +74,12 @@ export type DockTabsInput = {
62
74
  readonly onClearCalls: () => void;
63
75
  /** The play function's trace; none for a story without a play (or before it ran). */
64
76
  readonly trace: PlayTrace | undefined;
65
- /** Runs the play again. */
66
- readonly onPlayAgain: () => void;
77
+ /** Runs the play again, or steps through it. */
78
+ readonly onPlayStep: (command: PlayStepCommand) => void;
79
+ /** The view, whose play switch the Interactions tab shows. */
80
+ readonly view: ViewState;
81
+ /** Changes the view. */
82
+ readonly onViewChange: (view: ViewState) => void;
67
83
  /** The accessibility check. */
68
84
  readonly check: CheckState;
69
85
  /** Runs it; none when it cannot run. */
@@ -1,12 +1,14 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { isArgShown } from "../argConditions.js";
2
3
  import { panelProps } from "../argTypes.js";
3
4
  import { codeNameOf } from "../componentDocs.js";
4
5
  import { lazyModule } from "./lazyModule.js";
5
6
  import { LazyTab } from "./lazyTab.js";
6
7
  import { PropsTab } from "./PropsTab.js";
7
- import { SignatureReference } from "./SignatureReference.js";
8
8
  import { STRINGS } from "./strings.js";
9
9
  import { a11yHint, interactionsHint, styleHooks } from "./tabSummaries.js";
10
+ /** The Signature tab's reference, loaded when a story about logic first shows it. */
11
+ const SIGNATURE_TAB = lazyModule(() => import("./SignatureReference.js").then((module) => module.SignatureReference));
10
12
  /** The Events tab, its module, loaded when the tab is first chosen. */
11
13
  const EVENTS_TAB = lazyModule(() => import("./EventsTab.js").then((module) => module.EventsTab));
12
14
  /** The Interactions tab, its module, loaded when the tab is first chosen. */
@@ -25,15 +27,20 @@ const notice = (text, isProblem) => (_jsx("p", { className: isProblem ? "forgebo
25
27
  * @param input - what the tabs are built from.
26
28
  * @param props - the props, from the types with the `argTypes` laid over them.
27
29
  */
28
- const propsTab = (input, props) => props.some((prop) => prop.kind !== "event")
29
- ? [
30
- {
31
- id: "props",
32
- label: STRINGS.tabs.props,
33
- content: (_jsx(PropsTab, { props: props, values: input.values, controls: input.controls, onValueChange: input.onValueChange, onReset: input.onReset, worstCase: input.worstCase, namedValues: input.namedValues, textArgs: input.textArgs, componentGroups: input.propGroups, requiredFirst: input.story.requiredFirst }))
34
- }
35
- ]
36
- : [];
30
+ const propsTab = (input, all) => {
31
+ // the condition is the moment's, so it is tested here and not where the props are declared: a value set while an arg
32
+ // is hidden, from the address or the story, is still the story's
33
+ const props = all.filter((prop) => isArgShown(input.argTypes[prop.name]?.if, input.values, input.globals));
34
+ return props.some((prop) => prop.kind !== "event")
35
+ ? [
36
+ {
37
+ id: "props",
38
+ label: STRINGS.tabs.props,
39
+ content: (_jsx(PropsTab, { props: props, values: input.values, panelArgs: input.panelArgs, loadTokens: input.loadTokens, argControls: input.argControls, controls: input.controls, onValueChange: input.onValueChange, onReset: input.onReset, worstCase: input.worstCase, namedValues: input.namedValues, textArgs: input.textArgs, componentGroups: input.propGroups, requiredFirst: input.story.requiredFirst }))
40
+ }
41
+ ]
42
+ : [];
43
+ };
37
44
  /**
38
45
  * The events the Events tab lists: the component's, then the story's actions its types do not name.
39
46
  *
@@ -72,9 +79,9 @@ const docsTabs = (input) => {
72
79
  // a story without a component (a render of its own) still has the args its `argTypes` name
73
80
  if (docs.status === "none") {
74
81
  return [
75
- ...propsTab(input, panelProps([], input.argTypes)),
82
+ ...propsTab(input, panelProps([], input.argTypes, input.storyArgs)),
76
83
  ...eventsTab(input, eventsOf([], input.actions)),
77
- ...(input.trace === undefined ? [] : [interactionsTab(input.trace, input.onPlayAgain)])
84
+ ...(input.trace === undefined ? [] : [interactionsTab(input.trace, input)])
78
85
  ];
79
86
  }
80
87
  // the docs' place while they load or fail: the tab the story opens on once they are read
@@ -83,7 +90,7 @@ const docsTabs = (input) => {
83
90
  : { id: "props", label: STRINGS.tabs.props };
84
91
  // the play's trace comes from the frame, not from the docs: a first read of a project's docs can take seconds, and a
85
92
  // play that finished meanwhile is shown without waiting for them, or when they fail
86
- const played = input.trace === undefined ? [] : [interactionsTab(input.trace, input.onPlayAgain)];
93
+ const played = input.trace === undefined ? [] : [interactionsTab(input.trace, input)];
87
94
  if (docs.status === "loading")
88
95
  return [{ ...docsTab, content: notice(STRINGS.docsLoading, false) }, ...played];
89
96
  if (docs.status === "error") {
@@ -94,10 +101,10 @@ const docsTabs = (input) => {
94
101
  if (input.story.isLogic)
95
102
  return logicTabs(input, component);
96
103
  const tabs = [];
97
- tabs.push(...propsTab(input, panelProps(component.props, input.argTypes)));
104
+ tabs.push(...propsTab(input, panelProps(component.props, input.argTypes, input.storyArgs)));
98
105
  tabs.push(...eventsTab(input, events));
99
106
  if (input.trace !== undefined)
100
- tabs.push(interactionsTab(input.trace, input.onPlayAgain));
107
+ tabs.push(interactionsTab(input.trace, input));
101
108
  if (component.parts.length > 0 || styleHooks(component).length > 0) {
102
109
  tabs.push({
103
110
  id: "parts",
@@ -122,19 +129,19 @@ const logicTabs = (input, component) => {
122
129
  tabs.push({
123
130
  id: "signature",
124
131
  label: STRINGS.tabs.signature,
125
- content: (_jsx("div", { className: "forgebook-signature-tab", children: _jsx(SignatureReference, { name: component.name, signature: component.signature }) }))
132
+ content: (_jsx("div", { className: "forgebook-signature-tab", children: _jsx(LazyTab, { module: SIGNATURE_TAB, tabProps: { name: component.name, signature: component.signature } }) }))
126
133
  });
127
134
  }
128
135
  if (input.trace !== undefined)
129
- tabs.push(interactionsTab(input.trace, input.onPlayAgain));
136
+ tabs.push(interactionsTab(input.trace, input));
130
137
  return tabs;
131
138
  };
132
139
  /** The Interactions tab of a story whose play ran. */
133
- const interactionsTab = (trace, onPlayAgain) => ({
140
+ const interactionsTab = (trace, { onPlayStep, view, onViewChange }) => ({
134
141
  id: "play",
135
142
  label: STRINGS.tabs.play,
136
143
  hint: interactionsHint(trace),
137
- content: _jsx(LazyTab, { module: INTERACTIONS_TAB, tabProps: { trace, onPlayAgain } })
144
+ content: _jsx(LazyTab, { module: INTERACTIONS_TAB, tabProps: { trace, onPlayStep, view, onViewChange } })
138
145
  });
139
146
  /** The Code tab, when the story file has code: loading, loaded, or failed to load. */
140
147
  const codeTabs = (input) => {
@@ -160,7 +167,8 @@ const codeTabs = (input) => {
160
167
  code: code.value,
161
168
  exportName: input.story.exportName,
162
169
  componentName: docs.status === "ready" ? codeNameOf(docs.value) : input.componentName,
163
- args: input.values
170
+ args: input.values,
171
+ edited: Object.keys(input.panelArgs)
164
172
  } }))
165
173
  }
166
174
  ];
@@ -10,7 +10,7 @@
10
10
  .forgebook-embed__message {
11
11
  margin: 0;
12
12
  padding: 1rem;
13
- font: 400 0.8125rem/1.4 var(--forgebook-font-sans);
13
+ font: var(--forgebook-text-body);
14
14
  color: var(--forgebook-text-secondary);
15
15
  }
16
16
  .forgebook-embed__message[data-failed] {
@@ -30,7 +30,7 @@
30
30
  }
31
31
  .forgebook-embed-panel__hint {
32
32
  margin: 0;
33
- font: 400 0.6875rem/1.35 var(--forgebook-font-sans);
33
+ font: var(--forgebook-text-caption);
34
34
  color: var(--forgebook-text-secondary);
35
35
  }
36
36
  .forgebook-embed-panel__hint[data-warning] {
@@ -44,7 +44,7 @@
44
44
  }
45
45
  .forgebook-embed-field__label {
46
46
  grid-column: 1/-1;
47
- font: 500 0.75rem/1.3 var(--forgebook-font-sans);
47
+ font: var(--forgebook-text-control);
48
48
  color: var(--forgebook-text-secondary);
49
49
  }
50
50
  .forgebook-embed-field__value {
@@ -54,21 +54,21 @@
54
54
  padding: 0.375rem 0.5rem;
55
55
  border: 0;
56
56
  border-radius: var(--forgebook-radius-control);
57
- font: 400 0.6875rem/1.6 var(--forgebook-font-mono);
57
+ font: var(--forgebook-text-mono-small);
58
58
  color: var(--forgebook-text);
59
59
  background: var(--forgebook-fill-quiet);
60
60
  box-shadow: inset 0 0 0 1px var(--forgebook-edge-field);
61
61
  }
62
62
  .forgebook-embed-field__value:focus-visible {
63
- outline: 2px solid color-mix(in srgb, var(--forgebook-accent) 35%, transparent);
63
+ outline: 2px solid var(--forgebook-focus-halo);
64
64
  outline-offset: 0;
65
- box-shadow: inset 0 0 0 1px var(--forgebook-accent);
65
+ box-shadow: var(--forgebook-focus-edge);
66
66
  }
67
67
  .forgebook-embed-panel__follow {
68
68
  display: flex;
69
69
  gap: 0.5rem;
70
70
  align-items: center;
71
- font: 500 0.75rem/1.3 var(--forgebook-font-sans);
71
+ font: var(--forgebook-text-control);
72
72
  color: var(--forgebook-text);
73
73
  }
74
74
  }
@@ -12,6 +12,13 @@ export declare const framesOrigin: () => string;
12
12
  * @param event - the message's event.
13
13
  */
14
14
  export declare const isFromFrames: (event: MessageEvent) => boolean;
15
+ /**
16
+ * What a story's frame may do, as a sandbox: everything a page does but navigate the catalogue's tab, which a story's
17
+ * link could otherwise send to any address. The frames keep their own origin (`allow-same-origin`): it is not the
18
+ * catalogue's, so the pair gives the story nothing of the catalogue's. Frames on the catalogue's own origin get none:
19
+ * there the pair would let a story lift its own sandbox, and browsers warn of it.
20
+ */
21
+ export declare const FRAME_SANDBOX: string;
15
22
  /** What a story's frame element is given, wherever the shell draws one. */
16
23
  export type StoryFrameAttributes = {
17
24
  /** The browser features it may use. */
@@ -51,7 +51,7 @@ const FRAME_PERMISSIONS = [
51
51
  * catalogue's, so the pair gives the story nothing of the catalogue's. Frames on the catalogue's own origin get none:
52
52
  * there the pair would let a story lift its own sandbox, and browsers warn of it.
53
53
  */
54
- const FRAME_SANDBOX = [
54
+ export const FRAME_SANDBOX = [
55
55
  "allow-scripts",
56
56
  "allow-same-origin",
57
57
  "allow-forms",
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Where a gallery's menu sits: under its button, or over it when only there it fits, always inside the window. Pure.
3
+ *
4
+ * @module
5
+ */
6
+ /**
7
+ * The menu's place, in CSS px from the window's corner.
8
+ *
9
+ * @param button - the button's box.
10
+ * @param panel - the menu's size.
11
+ * @param room - the window's size.
12
+ * @returns where its top and left corner go.
13
+ */
14
+ export declare const galleryPlace: (button: Pick<DOMRect, "top" | "bottom" | "left">, panel: Pick<DOMRect, "width" | "height">, room: {
15
+ readonly width: number;
16
+ readonly height: number;
17
+ }) => {
18
+ readonly top: number;
19
+ readonly left: number;
20
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Where a gallery's menu sits: under its button, or over it when only there it fits, always inside the window. Pure.
3
+ *
4
+ * @module
5
+ */
6
+ /** The room kept between the menu and its button or the window's edge, in CSS px. */
7
+ const GAP = 6;
8
+ /**
9
+ * The menu's place, in CSS px from the window's corner.
10
+ *
11
+ * @param button - the button's box.
12
+ * @param panel - the menu's size.
13
+ * @param room - the window's size.
14
+ * @returns where its top and left corner go.
15
+ */
16
+ export const galleryPlace = (button, panel, room) => {
17
+ const below = button.bottom + GAP;
18
+ const above = button.top - GAP - panel.height;
19
+ const isBelowFit = below + panel.height <= room.height - GAP;
20
+ const top = isBelowFit || above < GAP ? below : above;
21
+ return {
22
+ // a menu taller than the room on both sides starts as high as it can and scrolls
23
+ top: Math.max(GAP, Math.min(top, room.height - GAP - panel.height)),
24
+ left: Math.max(GAP, Math.min(button.left, room.width - GAP - panel.width))
25
+ };
26
+ };
@@ -31,6 +31,7 @@ declare const PATHS: {
31
31
  readonly turn: "M2.5 9.5h7a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1ZM12 12.5a2.5 2.5 0 0 0 2.5-2.5V8.5M13.5 10l1-1.5 1 1.5";
32
32
  readonly device: "M5.5 1.5h5a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-11a1 1 0 0 1 1-1ZM7.25 3.5h1.5";
33
33
  readonly plus: "M8 3.5v9M3.5 8h9";
34
+ readonly noValue: "M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2ZM3.8 3.8l8.4 8.4";
34
35
  readonly minus: "M3.5 8h9";
35
36
  readonly hash: "M6 2.5 5 13.5M11 2.5l-1 11M3 6h10.5M2.5 10H13";
36
37
  readonly check: "m3.5 8.5 3 3 6-7";
@@ -26,6 +26,7 @@ const PATHS = {
26
26
  turn: "M2.5 9.5h7a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1ZM12 12.5a2.5 2.5 0 0 0 2.5-2.5V8.5M13.5 10l1-1.5 1 1.5",
27
27
  device: "M5.5 1.5h5a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-11a1 1 0 0 1 1-1ZM7.25 3.5h1.5",
28
28
  plus: "M8 3.5v9M3.5 8h9",
29
+ noValue: "M8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2ZM3.8 3.8l8.4 8.4",
29
30
  minus: "M3.5 8h9",
30
31
  hash: "M6 2.5 5 13.5M11 2.5l-1 11M3 6h10.5M2.5 10H13",
31
32
  check: "m3.5 8.5 3 3 6-7",
@@ -1,20 +1,22 @@
1
+ /** Where this browser keeps the reader's choice: a person's habit, the same in every catalogue of an origin. */
2
+ export declare const SINGLE_KEYS_STORED = "forgebook-single-keys";
1
3
  /**
2
- * The shell's keys: `/` goes to the search, `[` and `]` open the previous and the next story in the sidebar's order.
3
- * A key typed into a field, or with a modifier, is the field's or the browser's.
4
+ * Whether a key event happens while the user types: in a field that takes text, a select or editable content, or in a
5
+ * custom element (a catalogue's control, a plugin's panel), whose keys are its own whatever it draws. A toolbar's segment
6
+ * (a radio) or a toggle keeps the page's keys, so they work right after a press on one.
4
7
  *
5
- * @remarks
6
- * The keys work while the shell has the focus; a frame keeps its own keys, so a story's keyboard behaviour is never
7
- * taken over. Pure, apart from reading the event's target.
8
- *
9
- * @module
8
+ * @param target - the event's target.
10
9
  */
10
+ export declare const isTyping: (target: EventTarget | null) => boolean;
11
+ /** What a key without a modifier reads of its event. */
12
+ export type SingleKeyEvent = Pick<KeyboardEvent, "target"> & Partial<Pick<KeyboardEvent, "composedPath">>;
11
13
  /**
12
- * Whether a key event happens while the user types: in a field that takes text, a select or editable content. A
13
- * toolbar's segment (a radio) or a toggle keeps the page's keys, so they work right after a press on one.
14
+ * Whether a key without a modifier is the shell's: the reader left them on and nothing is typed into. The whole path of
15
+ * the event is read: from inside a shadow root it names only the host, and a custom element keeps what is pressed in it.
14
16
  *
15
- * @param target - the event's target.
17
+ * @param event - the key's event.
16
18
  */
17
- export declare const isTyping: (target: EventTarget | null) => boolean;
19
+ export declare const isSingleKeyFree: (event: SingleKeyEvent) => boolean;
18
20
  /** The move a key asks for in the list of stories. */
19
21
  export type StoryStep = -1 | 1;
20
22
  /**
@@ -22,7 +24,7 @@ export type StoryStep = -1 | 1;
22
24
  *
23
25
  * @param event - the key, its modifiers and its target.
24
26
  */
25
- export declare const storyStep: (event: Pick<KeyboardEvent, "key" | "metaKey" | "ctrlKey" | "altKey" | "target">) => StoryStep | undefined;
27
+ export declare const storyStep: (event: Pick<KeyboardEvent, "key" | "metaKey" | "ctrlKey" | "altKey"> & SingleKeyEvent) => StoryStep | undefined;
26
28
  /**
27
29
  * The id a step leads to: the neighbour of the current story, or the first (or last) story from a page that is not
28
30
  * a story's; none past either end.