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
@@ -0,0 +1,39 @@
1
+ /**
2
+ * What a story's tags draw, as one chunk loaded the first time one of them is drawn (`tagView.tsx`): the tag filter and
3
+ * the statuses' badges, which share their reading of the catalogue's statuses.
4
+ *
5
+ * @module
6
+ */
7
+ import type { ReactNode } from "react";
8
+ import type { TreeComponent, TreeStory } from "../storyTree.ts";
9
+ import { type TagFilterProps } from "./TagFilter.tsx";
10
+ /** One place the tags draw in, and what it reads. */
11
+ export type TagViewProps = ({
12
+ /** The sidebar's tag filter. */
13
+ readonly place: "filter";
14
+ } & TagFilterProps) | {
15
+ /** A component's entry in the sidebar: its meta's statuses. */
16
+ readonly place: "entry";
17
+ /** The component. */
18
+ readonly component: TreeComponent;
19
+ } | {
20
+ /** The top of a component's page: its meta's statuses, and `deprecated` when its TSDoc says so. */
21
+ readonly place: "page";
22
+ /** The component. */
23
+ readonly component: TreeComponent;
24
+ /** Loads its docs; none when the source has none for its file. */
25
+ readonly loadDocs: (() => Promise<unknown>) | undefined;
26
+ } | {
27
+ /** A story's example on its component's page: the statuses it holds that its component's meta does not. */
28
+ readonly place: "story";
29
+ /** The story. */
30
+ readonly story: TreeStory;
31
+ /** Its component. */
32
+ readonly component: TreeComponent;
33
+ };
34
+ /**
35
+ * What the tags draw in a place.
36
+ *
37
+ * @param props - the place, and what it reads.
38
+ */
39
+ export declare const TagView: (props: TagViewProps) => ReactNode;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ComponentBadges, StatusBadges } from "./StatusBadges.js";
3
+ import { TagFilter } from "./TagFilter.js";
4
+ /**
5
+ * What the tags draw in a place.
6
+ *
7
+ * @param props - the place, and what it reads.
8
+ */
9
+ export const TagView = (props) => {
10
+ switch (props.place) {
11
+ case "filter":
12
+ return _jsx(TagFilter, { tree: props.tree, tags: props.tags, onTagsChange: props.onTagsChange });
13
+ case "entry":
14
+ return _jsx(StatusBadges, { tags: props.component.tags, className: "forgebook-status-badges" });
15
+ case "page":
16
+ return _jsx(ComponentBadges, { component: props.component, loadDocs: props.loadDocs });
17
+ case "story":
18
+ return (_jsx(StatusBadges, { tags: props.story.tags.filter((tag) => !props.component.tags.includes(tag)), className: "forgebook-status-badges forgebook-status-badges--story" }));
19
+ }
20
+ };
@@ -13,6 +13,7 @@ import { type ReactNode, type Ref } from "react";
13
13
  import { type DeviceDefault } from "../deviceView.ts";
14
14
  import { type FixedView } from "../storyGlobals.ts";
15
15
  import { type ViewState } from "../viewState.ts";
16
+ import type { ControlContext } from "./ToolbarControl.tsx";
16
17
  /** The toolbar's props. */
17
18
  export type ToolbarProps = {
18
19
  /** The view. */
@@ -35,6 +36,8 @@ export type ToolbarProps = {
35
36
  readonly isLogic?: boolean;
36
37
  /** The page's default device: the shown story's, or the catalogue's on a component's page; none by default. */
37
38
  readonly deviceDefault?: DeviceDefault;
39
+ /** Loads the catalogue's previews for a gallery; none when it gives none. */
40
+ readonly loadSwitchPreviews?: ControlContext["loadSwitchPreviews"];
38
41
  };
39
42
  /**
40
43
  * The button that shows the hidden sidebar, at the toolbar's start; the home's bar holds only it.
@@ -49,4 +52,4 @@ export declare const ShowSidebarButton: ({ onShowSidebar, showSidebarRef }: Pick
49
52
  *
50
53
  * @param props - the view, its setter, the page shown and the story's width.
51
54
  */
52
- export declare const Toolbar: ({ view: ownView, onViewChange: onOwnViewChange, isStoryPage, isComponentPage, onShowSidebar, showSidebarRef, shownWidth, fixed, isLogic, deviceDefault }: ToolbarProps) => ReactNode;
55
+ export declare const Toolbar: ({ view: ownView, onViewChange: onOwnViewChange, isStoryPage, isComponentPage, onShowSidebar, showSidebarRef, shownWidth, fixed, isLogic, deviceDefault, loadSwitchPreviews }: ToolbarProps) => ReactNode;
@@ -13,7 +13,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import { useId, useRef } from "react";
14
14
  import { NO_DEVICE } from "../deviceView.js";
15
15
  import { NOT_FIXED, withFixed, withOwnFixed } from "../storyGlobals.js";
16
- import { switchWithRole } from "../switches.js";
16
+ import { impliedSwitches, switchWithRole } from "../switches.js";
17
17
  import { hasViewChanges, isComparing } from "../viewState.js";
18
18
  import { useCatalogue } from "./catalogueContext.js";
19
19
  import { Icon } from "./icons.js";
@@ -58,14 +58,15 @@ const compareChoices = (catalogue) => {
58
58
  * @param props - the view, its setter, and whether the page compares at all.
59
59
  */
60
60
  const CompareMenu = ({ view, onViewChange, isDisabled, fixed = NOT_FIXED }) => {
61
- const { isOpen, isDrawn, setIsOpen, buttonRef, panelRef, panelId } = usePopover();
61
+ const { isOpen, isDrawn, setIsOpen, closeAfterChoice, buttonRef, panelRef, panelId } = usePopover();
62
62
  const catalogue = useCatalogue();
63
63
  const name = useId();
64
64
  return (_jsxs("div", { className: "forgebook-view-menu", children: [_jsxs("button", { ref: buttonRef, type: "button", className: "forgebook-button", title: STRINGS.compare, "aria-pressed": isComparing(view), "aria-expanded": isOpen, "aria-controls": panelId, disabled: isDisabled, onClick: (event) => setIsOpen(!isOpen, event), children: [_jsx(Icon, { name: "compare", size: 14 }), _jsx("span", { className: "forgebook-button__label", children: STRINGS.compare }), _jsx(Icon, { name: "chevronDown", size: 12 })] }), isDrawn ? (_jsx("div", { ref: panelRef, id: panelId, className: "forgebook-popover forgebook-popover--end", role: "dialog", "aria-label": STRINGS.compare, children: _jsxs("fieldset", { className: "forgebook-choices", children: [_jsx("legend", { className: "forgebook-visually-hidden", children: STRINGS.compare }), compareChoices(catalogue).map((choice) => (_jsxs("label", { className: "forgebook-choice", children: [_jsx("input", { type: "radio", name: name,
65
- // a switch the story fixes would draw the same story in every cell
66
- disabled: choice.axes.some((axis) => fixed.switches[axis] !== undefined), checked: view.compare.join(",") === choice.axes.join(","), onChange: () => {
65
+ // a switch the story fixes, or another switch's value implies, would draw the same in every cell
66
+ disabled: choice.axes.some((axis) => fixed.switches[axis] !== undefined ||
67
+ impliedSwitches(view.switches, catalogue.switches).has(axis)), checked: view.compare.join(",") === choice.axes.join(","), onChange: () => {
67
68
  onViewChange({ ...view, compare: choice.axes });
68
- setIsOpen(false);
69
+ closeAfterChoice();
69
70
  } }), choice.label] }, choice.axes.join(","))))] }) })) : null] }));
70
71
  };
71
72
  /**
@@ -79,13 +80,22 @@ export const ShowSidebarButton = ({ onShowSidebar, showSidebarRef }) => (_jsx("b
79
80
  *
80
81
  * @param props - the view, its setter, the page shown and the story's width.
81
82
  */
82
- export const Toolbar = ({ view: ownView, onViewChange: onOwnViewChange, isStoryPage = true, isComponentPage = false, onShowSidebar, showSidebarRef, shownWidth, fixed = NOT_FIXED, isLogic = false, deviceDefault = NO_DEVICE }) => {
83
+ export const Toolbar = ({ view: ownView, onViewChange: onOwnViewChange, isStoryPage = true, isComponentPage = false, onShowSidebar, showSidebarRef, shownWidth, fixed = NOT_FIXED, isLogic = false, deviceDefault = NO_DEVICE, loadSwitchPreviews }) => {
83
84
  const layout = useToolbarLayout();
84
85
  const catalogue = useCatalogue();
85
86
  // the story's fixed values are shown, and a change of anything else keeps the user's own in the address
86
87
  const view = withFixed(ownView, fixed);
87
88
  const onViewChange = (changed) => onOwnViewChange(withOwnFixed(changed, ownView, fixed));
88
- const context = { view, onViewChange, isStoryPage, isComponentPage, fixed, shownWidth, deviceDefault };
89
+ const context = {
90
+ view,
91
+ onViewChange,
92
+ isStoryPage,
93
+ isComponentPage,
94
+ fixed,
95
+ shownWidth,
96
+ deviceDefault,
97
+ loadSwitchPreviews
98
+ };
89
99
  useControlKeys({ keys: layout.keys, view, onViewChange, fixed, isStoryPage, isComponentPage });
90
100
  const pinnedRef = useRef(null);
91
101
  // a page about logic puts away the pinned controls that only change looks: the View menu then counts them
@@ -15,6 +15,7 @@ import { type DeviceDefault } from "../deviceView.ts";
15
15
  import type { FixedView } from "../storyGlobals.ts";
16
16
  import type { ToolbarControl as Control } from "../toolbarLayout.ts";
17
17
  import { type ViewState } from "../viewState.ts";
18
+ import type { SwitchPreviews } from "./SwitchGalleryPanel.tsx";
18
19
  /** Where a control is drawn: on the toolbar, or in a row of the View menu. */
19
20
  export type ControlForm = "bar" | "row";
20
21
  /** What every control reads and sets. */
@@ -33,6 +34,8 @@ export type ControlContext = {
33
34
  readonly shownWidth: number | undefined;
34
35
  /** The page's default device: the shown story's, or the catalogue's on a component's page. */
35
36
  readonly deviceDefault: DeviceDefault;
37
+ /** Loads the catalogue's previews for a gallery; none when it gives none. */
38
+ readonly loadSwitchPreviews: (() => Promise<SwitchPreviews>) | undefined;
36
39
  };
37
40
  /**
38
41
  * One control, drawn for where it sits.
@@ -14,15 +14,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  import { useId } from "react";
15
15
  import { AUDIENCE_IDS } from "../audiences.js";
16
16
  import { DEVICE_PARAMETER, shownDevice } from "../deviceView.js";
17
- import { switchControl } from "../switches.js";
17
+ import { impliedSwitches, switchControl } from "../switches.js";
18
18
  import { isComparing, PLAIN_BACKDROP, SHEETS_CHOICES } from "../viewState.js";
19
19
  import { useCatalogue } from "./catalogueContext.js";
20
20
  import { DeviceControl } from "./DeviceControl.js";
21
21
  import { Icon } from "./icons.js";
22
+ import { LazyView, lazyModule } from "./lazyModule.js";
22
23
  import { Segmented } from "./Segmented.js";
23
24
  import { STRINGS } from "./strings.js";
24
25
  import { switchValueIn, withSwitch } from "./switchView.js";
25
26
  import { WidthField } from "./WidthField.js";
27
+ /** A switch's gallery, loaded with the first catalogue's switch that has one: most catalogues have none. */
28
+ const SWITCH_GALLERY = lazyModule(() => import("./SwitchGallery.js").then((module) => module.SwitchGallery));
26
29
  /** The icon of each scheme a colour scheme switch's values draw in. */
27
30
  const SCHEME_ICONS = {
28
31
  light: "sun",
@@ -69,14 +72,28 @@ const FormChoice = ({ form, isList, ...choice }) => {
69
72
  *
70
73
  * @param props - the switch, its form, and what every control shares.
71
74
  */
72
- const SwitchControl = ({ each, form, view, onViewChange, isStoryPage, fixed }) => {
75
+ const SwitchControl = ({ each, form, view, onViewChange, isStoryPage, fixed, loadSwitchPreviews }) => {
76
+ const { switches } = useCatalogue();
77
+ const implied = impliedSwitches(view.switches, switches).get(each.id);
73
78
  const isFixed = fixed.switches[each.id] !== undefined;
74
- const isDisabled = (isStoryPage && view.compare.includes(each.id)) || isFixed;
75
- const disabledNote = isFixed ? STRINGS.setByStory : undefined;
76
- const value = switchValueIn(view, each);
79
+ const isDisabled = (isStoryPage && view.compare.includes(each.id)) || isFixed || implied !== undefined;
80
+ const storyNote = isFixed ? STRINGS.setByStory : undefined;
81
+ const disabledNote = implied === undefined ? storyNote : STRINGS.setBy.replace("{value}", implied.by.label);
82
+ const value = implied?.value ?? switchValueIn(view, each);
77
83
  const choose = (chosen) => onViewChange(withSwitch(view, each, chosen));
78
84
  const more = each.values.find((option) => option.isMore === true);
79
85
  const standard = each.values.find((option) => option.isMore !== true);
86
+ if (switchControl(each) === "gallery") {
87
+ return (_jsx(LazyView, { module: SWITCH_GALLERY, props: {
88
+ each,
89
+ isOnBar: form === "bar",
90
+ value,
91
+ onValueChange: choose,
92
+ isDisabled,
93
+ disabledNote,
94
+ loadPreviews: loadSwitchPreviews
95
+ }, loading: null, failed: (message) => (_jsx("p", { className: "forgebook-problems", role: "alert", children: message })) }));
96
+ }
80
97
  if (form === "bar" && each.role === "colorScheme") {
81
98
  return (_jsx(Segmented, { label: each.label, isDisabled: isDisabled, disabledNote: disabledNote, options: each.values.map((option) => ({
82
99
  value: option.value,
@@ -85,7 +102,7 @@ const SwitchControl = ({ each, form, view, onViewChange, isStoryPage, fixed }) =
85
102
  })), value: value, onValueChange: choose }));
86
103
  }
87
104
  if (form === "bar" && each.role === "contrast" && more !== undefined && standard !== undefined) {
88
- return (_jsxs("button", { type: "button", className: "forgebook-button", title: isFixed ? STRINGS.setByStory : each.label, "aria-pressed": value === more.value, disabled: isDisabled, onClick: () => choose(value === more.value ? standard.value : more.value), children: [_jsx(Icon, { name: "contrast", size: 14 }), _jsx("span", { className: "forgebook-button__label", children: each.label })] }));
105
+ return (_jsxs("button", { type: "button", className: "forgebook-button", title: disabledNote ?? each.label, "aria-pressed": value === more.value, disabled: isDisabled, onClick: () => choose(value === more.value ? standard.value : more.value), children: [_jsx(Icon, { name: "contrast", size: 14 }), _jsx("span", { className: "forgebook-button__label", children: each.label })] }));
89
106
  }
90
107
  return (_jsx(FormChoice, { form: form, isList: switchControl(each) === "list", label: each.label, options: each.values.map((option) => ({ value: option.value, label: option.label })), value: value, onValueChange: choose, isDisabled: isDisabled, disabledNote: disabledNote }));
91
108
  };
@@ -20,6 +20,7 @@ import { controlLabel } from "./controlLabel.js";
20
20
  import { Icon } from "./icons.js";
21
21
  import { LATER_STRINGS } from "./laterStrings.js";
22
22
  import { NamedViews } from "./NamedViews.js";
23
+ import { rememberPlay } from "./playMemory.js";
23
24
  /** How long the rows take to move out of a dragged row's way, in ms: the shell's `$duration-quick`. */
24
25
  const SHIFT_MS = 150;
25
26
  /** How they move: the shell's `$ease-out`, decelerating. */
@@ -195,5 +196,9 @@ export const ViewMenuPanel = ({ layout, ownView, movedIds, ids, drawControl, ...
195
196
  window.addEventListener("pointerup", drop);
196
197
  window.addEventListener("pointercancel", drop);
197
198
  };
198
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "forgebook-popover__body", children: [_jsx(NamedViews, { view: context.view, ownView: ownView, onViewChange: context.onViewChange }), _jsx("ol", { ref: listRef, className: "forgebook-arrange-list", "data-dragging": draggedId === undefined ? undefined : "", children: shown.map((each, index) => (_jsx(ControlRow, { each: each, index: index, count: shown.length, isDragged: each.control.id === draggedId, isMoved: movedIds.includes(each.control.id), isChanged: hasViewChanges(ownView, switches, [each.control.id], catalogue.audience), layout: layout, hintId: hintId, onGrab: grab, onAnnounce: setAnnounced, drawControl: drawControl }, each.control.id))) }), _jsx("span", { id: hintId, className: "forgebook-visually-hidden", children: LATER_STRINGS.moveControlHint }), _jsx("span", { className: "forgebook-visually-hidden", "aria-live": "polite", children: announced }), _jsx(HiddenControls, { hidden: hidden, layout: layout, drawControl: drawControl }), _jsxs("label", { className: "forgebook-wrap-choice", children: [_jsx("input", { type: "checkbox", role: "switch", "aria-checked": layout.isWrapped, className: "forgebook-switch", checked: layout.isWrapped, onChange: (event) => layout.setIsWrapped(event.currentTarget.checked) }), LATER_STRINGS.wrapToolbar] })] }), _jsxs("div", { className: "forgebook-popover__foot", children: [_jsx("button", { type: "button", className: "forgebook-text-button", onClick: () => context.onViewChange(withDefaults(context.view, switches, ids, catalogue.audience)), children: LATER_STRINGS.resetView }), _jsx("button", { type: "button", className: "forgebook-text-button", title: LATER_STRINGS.toolbarInBrowser, disabled: !layout.isArranged, onClick: layout.reset, children: LATER_STRINGS.resetToolbar }), _jsx("span", { className: "forgebook-popover__note", children: LATER_STRINGS.viewInAddress })] })] }));
199
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "forgebook-popover__body", children: [_jsx(NamedViews, { view: context.view, ownView: ownView, onViewChange: context.onViewChange }), _jsx("ol", { ref: listRef, className: "forgebook-arrange-list", "data-dragging": draggedId === undefined ? undefined : "", children: shown.map((each, index) => (_jsx(ControlRow, { each: each, index: index, count: shown.length, isDragged: each.control.id === draggedId, isMoved: movedIds.includes(each.control.id), isChanged: hasViewChanges(ownView, switches, [each.control.id], catalogue.audience), layout: layout, hintId: hintId, onGrab: grab, onAnnounce: setAnnounced, drawControl: drawControl }, each.control.id))) }), _jsx("span", { id: hintId, className: "forgebook-visually-hidden", children: LATER_STRINGS.moveControlHint }), _jsx("span", { className: "forgebook-visually-hidden", "aria-live": "polite", children: announced }), _jsx(HiddenControls, { hidden: hidden, layout: layout, drawControl: drawControl }), _jsxs("label", { className: "forgebook-wrap-choice", children: [_jsx("input", { type: "checkbox", role: "switch", "aria-checked": layout.isWrapped, className: "forgebook-switch", checked: layout.isWrapped, onChange: (event) => layout.setIsWrapped(event.currentTarget.checked) }), LATER_STRINGS.wrapToolbar] }), _jsxs("label", { className: "forgebook-wrap-choice", children: [_jsx("input", { type: "checkbox", role: "switch", "aria-checked": context.view.play === "on", className: "forgebook-switch", checked: context.view.play === "on", onChange: (event) => {
200
+ const play = event.currentTarget.checked ? "on" : "off";
201
+ rememberPlay(catalogue, play);
202
+ context.onViewChange({ ...context.view, play });
203
+ } }), LATER_STRINGS.playOnOpen] })] }), _jsxs("div", { className: "forgebook-popover__foot", children: [_jsx("button", { type: "button", className: "forgebook-text-button", onClick: () => context.onViewChange(withDefaults(context.view, switches, ids, catalogue.audience)), children: LATER_STRINGS.resetView }), _jsx("button", { type: "button", className: "forgebook-text-button", title: LATER_STRINGS.toolbarInBrowser, disabled: !layout.isArranged, onClick: layout.reset, children: LATER_STRINGS.resetToolbar }), _jsx("span", { className: "forgebook-popover__note", children: LATER_STRINGS.viewInAddress })] })] }));
199
204
  };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * What `checkedAddressArgs` needs for a story's structured values, loaded with the first story that has one: what reads a
3
+ * shape, the worst case of one, and the schemas of the custom controls it names. A catalogue of plain props never asks for
4
+ * this; one with no custom control never loads theirs.
5
+ *
6
+ * @module
7
+ */
8
+ import type { ArgChecks } from "../addressArgs.ts";
9
+ import { worstOfShape } from "../shapeValues.ts";
10
+ import type { ArgControlLoaders } from "./customControls.ts";
11
+ /** What the stage holds of it. */
12
+ export type LoadedChecks = ArgChecks & {
13
+ /** A shape's worst value. */
14
+ readonly worstOfShape: typeof worstOfShape;
15
+ };
16
+ /**
17
+ * The checks for a story.
18
+ *
19
+ * @param names - the custom controls it names.
20
+ * @param loaders - the catalogue's custom controls.
21
+ */
22
+ export declare const loadedChecks: (names: readonly string[], loaders: ArgControlLoaders) => Promise<LoadedChecks>;
@@ -0,0 +1,20 @@
1
+ import { isFileList, isValueOfShape, worstOfShape } from "../shapeValues.js";
2
+ /**
3
+ * The checks for a story.
4
+ *
5
+ * @param names - the custom controls it names.
6
+ * @param loaders - the catalogue's custom controls.
7
+ */
8
+ export const loadedChecks = async (names, loaders) => {
9
+ const checks = { isFileList, isValueOfShape, worstOfShape };
10
+ if (names.length === 0)
11
+ return checks;
12
+ try {
13
+ const { customChecksOf } = await import("./customControls.js");
14
+ return { ...checks, custom: await customChecksOf(names, loaders) };
15
+ }
16
+ catch {
17
+ // a page left open across a new build: a control that cannot load refuses its values, as one that fails does
18
+ return checks;
19
+ }
20
+ };
@@ -29,7 +29,8 @@ export const showAsideStory = (target, title, aside) => {
29
29
  frame.setAttribute("sandbox", sandbox);
30
30
  frame.setAttribute(FRAME_ASIDE_ATTRIBUTE, "");
31
31
  // a width set on the stage holds as far as the room allows
32
- frame.style.cssText = "display:block;max-width:100%;height:100%;margin-inline:auto;border:0";
32
+ frame.style.cssText =
33
+ "display:block;max-width:100%;height:100%;margin-inline:auto;border:0;color-scheme:light";
33
34
  frame.style.width = aside.width === "fill" ? "100%" : `${aside.width}px`;
34
35
  if (aside.background !== undefined)
35
36
  target.style.backgroundColor = aside.background;
@@ -40,7 +41,11 @@ export const showAsideStory = (target, title, aside) => {
40
41
  const story = frame.contentWindow;
41
42
  if (!isFromFrames(event) || event.source !== story || story === null)
42
43
  return;
43
- if (!isFrameMessage(event.data) || event.data.type !== "forgebook:ready")
44
+ if (!isFrameMessage(event.data))
45
+ return;
46
+ if (event.data.type === "forgebook:scheme")
47
+ frame.style.colorScheme = event.data.scheme;
48
+ if (event.data.type !== "forgebook:ready")
44
49
  return;
45
50
  isReady = true;
46
51
  if (args !== undefined)
@@ -8,11 +8,11 @@
8
8
  display: grid;
9
9
  align-content: start;
10
10
  gap: 0.5rem;
11
- font: 400 0.8125rem/1.4 var(--forgebook-font-sans);
11
+ font: var(--forgebook-text-body);
12
12
  }
13
13
  .forgebook-guidance__list h3 {
14
14
  margin: 0;
15
- font: 600 0.6875rem/1.3 var(--forgebook-font-sans);
15
+ font: var(--forgebook-text-label);
16
16
  color: var(--forgebook-text-tertiary);
17
17
  }
18
18
  .forgebook-guidance__list ul {
@@ -23,7 +23,7 @@
23
23
  }
24
24
  .forgebook-guidance__deprecated {
25
25
  margin: 0;
26
- font: 400 0.8125rem/1.4 var(--forgebook-font-sans);
26
+ font: var(--forgebook-text-body);
27
27
  }
28
28
  .forgebook-about-pages {
29
29
  display: grid;
@@ -31,21 +31,21 @@
31
31
  margin: 0;
32
32
  padding: 0;
33
33
  list-style: none;
34
- font: 400 0.8125rem/1.4 var(--forgebook-font-sans);
34
+ font: var(--forgebook-text-body);
35
35
  }
36
36
  .forgebook-about-pages li {
37
37
  display: grid;
38
38
  gap: 0.25rem;
39
39
  }
40
40
  .forgebook-about-pages__description {
41
- font: 400 0.6875rem/1.35 var(--forgebook-font-sans);
41
+ font: var(--forgebook-text-caption);
42
42
  color: var(--forgebook-text-secondary);
43
43
  }
44
44
  .forgebook-token {
45
45
  display: flex;
46
46
  align-items: center;
47
47
  gap: 0.5rem;
48
- font: 400 0.71875rem/1.4 var(--forgebook-font-mono);
48
+ font: var(--forgebook-text-mono);
49
49
  }
50
50
  .forgebook-token__swatch {
51
51
  flex: none;
@@ -57,7 +57,7 @@
57
57
  .forgebook-tokens__others {
58
58
  display: grid;
59
59
  gap: 0.5rem;
60
- font: 400 0.6875rem/1.35 var(--forgebook-font-sans);
60
+ font: var(--forgebook-text-caption);
61
61
  color: var(--forgebook-text-secondary);
62
62
  }
63
63
  .forgebook-tokens__others > summary {
@@ -72,12 +72,12 @@
72
72
  }
73
73
  .forgebook-coverage__summary {
74
74
  margin: 0;
75
- font: 400 0.8125rem/1.4 var(--forgebook-font-sans);
75
+ font: var(--forgebook-text-body);
76
76
  color: var(--forgebook-text-secondary);
77
77
  }
78
78
  .forgebook-coverage__progress {
79
79
  margin: 0;
80
- font: 400 0.6875rem/1.35 var(--forgebook-font-sans);
80
+ font: var(--forgebook-text-caption);
81
81
  color: var(--forgebook-text-tertiary);
82
82
  }
83
83
  .forgebook-coverage__progress:empty {
@@ -25,4 +25,4 @@ export declare const useConfiguredCatalogue: ({ title, switches, languages, list
25
25
  readonly languages?: readonly StoryLanguage[];
26
26
  readonly lists?: CatalogueLists;
27
27
  readonly plugins?: readonly ShellPlugin[];
28
- }) => CatalogueSettings;
28
+ }, readStored?: (key: string) => string | null) => CatalogueSettings;
@@ -14,4 +14,9 @@ export const NO_PLUGINS = [];
14
14
  *
15
15
  * @param config - its name, its switches, its languages, its lists and its plugins (whose tabs it may turn off).
16
16
  */
17
- export const useConfiguredCatalogue = ({ title, switches, languages = NO_LANGUAGES, lists, plugins = NO_PLUGINS }) => useMemo(() => catalogueSettings(title, catalogueSwitches(switches, languages, lists?.controls), lists, plugins.flatMap((plugin) => plugin.tabs.map((tab) => tab.id))), [title, switches, languages, lists, plugins]);
17
+ export const useConfiguredCatalogue = ({ title, switches, languages = NO_LANGUAGES, lists, plugins = NO_PLUGINS }, readStored) => useMemo(() => {
18
+ const settings = catalogueSettings(title, catalogueSwitches(switches, languages, lists?.controls), lists, plugins.flatMap((plugin) => plugin.tabs.map((tab) => tab.id)));
19
+ // a reader's choice stands in for the catalogue's default on their own pages; an address that names one comes first
20
+ const remembered = readStored?.(`${settings.id}:play`);
21
+ return remembered === "on" || remembered === "off" ? { ...settings, readerPlay: remembered } : settings;
22
+ }, [title, switches, languages, lists, plugins, readStored]);
@@ -0,0 +1,27 @@
1
+ /**
2
+ * A sentence's code spans, read as CommonMark reads them: a run of backticks opens a span that the next run of the same
3
+ * length closes, so a span holding a backtick is written with a longer run of them. Used by `CodeText.tsx`, and by
4
+ * what writes a sentence around a type that may hold backticks (a template literal type).
5
+ *
6
+ * @module
7
+ */
8
+ /** One piece of a sentence: text, or code. */
9
+ export type SentencePiece = {
10
+ /** The piece's text, a code span's without its backticks. */
11
+ readonly text: string;
12
+ /** Whether it is code. */
13
+ readonly isCode: boolean;
14
+ };
15
+ /**
16
+ * A sentence split into text and code spans. A run of backticks no run of the same length closes stays text.
17
+ *
18
+ * @param sentence - the sentence.
19
+ */
20
+ export declare const sentencePieces: (sentence: string) => SentencePiece[];
21
+ /**
22
+ * A text written as one code span, whatever backticks it holds: a run longer than any inside, with a space each side
23
+ * when the text starts or ends with a backtick.
24
+ *
25
+ * @param text - the code.
26
+ */
27
+ export declare const codeSpan: (text: string) => string;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * A sentence's code spans, read as CommonMark reads them: a run of backticks opens a span that the next run of the same
3
+ * length closes, so a span holding a backtick is written with a longer run of them. Used by `CodeText.tsx`, and by
4
+ * what writes a sentence around a type that may hold backticks (a template literal type).
5
+ *
6
+ * @module
7
+ */
8
+ /** A code span's text as CommonMark trims it: one space each side, when both are there and it is not only spaces. */
9
+ const trimmedSpan = (text) => text.length >= 2 && text.startsWith(" ") && text.endsWith(" ") && text.trim() !== ""
10
+ ? text.slice(1, -1)
11
+ : text;
12
+ /**
13
+ * A sentence split into text and code spans. A run of backticks no run of the same length closes stays text.
14
+ *
15
+ * @param sentence - the sentence.
16
+ */
17
+ export const sentencePieces = (sentence) => {
18
+ const pieces = [];
19
+ let text = "";
20
+ let at = 0;
21
+ while (at < sentence.length) {
22
+ const open = sentence.indexOf("`", at);
23
+ if (open === -1)
24
+ break;
25
+ let length = 1;
26
+ while (sentence[open + length] === "`")
27
+ length += 1;
28
+ const close = closingRun(sentence, open + length, length);
29
+ if (close === -1) {
30
+ text += sentence.slice(at, open + length);
31
+ at = open + length;
32
+ continue;
33
+ }
34
+ text += sentence.slice(at, open);
35
+ if (text !== "")
36
+ pieces.push({ text, isCode: false });
37
+ text = "";
38
+ pieces.push({ text: trimmedSpan(sentence.slice(open + length, close)), isCode: true });
39
+ at = close + length;
40
+ }
41
+ text += sentence.slice(at);
42
+ if (text !== "")
43
+ pieces.push({ text, isCode: false });
44
+ return pieces;
45
+ };
46
+ /**
47
+ * Where the run of exactly `length` backticks that closes a span starts, or -1.
48
+ *
49
+ * @param sentence - the sentence.
50
+ * @param from - where the span's text starts.
51
+ * @param length - the opening run's length.
52
+ */
53
+ const closingRun = (sentence, from, length) => {
54
+ let at = sentence.indexOf("`", from);
55
+ while (at !== -1) {
56
+ let run = 1;
57
+ while (sentence[at + run] === "`")
58
+ run += 1;
59
+ if (run === length)
60
+ return at;
61
+ at = sentence.indexOf("`", at + run);
62
+ }
63
+ return -1;
64
+ };
65
+ /**
66
+ * A text written as one code span, whatever backticks it holds: a run longer than any inside, with a space each side
67
+ * when the text starts or ends with a backtick.
68
+ *
69
+ * @param text - the code.
70
+ */
71
+ export const codeSpan = (text) => {
72
+ const longest = Math.max(0, ...(text.match(/`+/g) ?? []).map((run) => run.length));
73
+ const fence = "`".repeat(longest + 1);
74
+ const padding = text.startsWith("`") || text.endsWith("`") ? " " : "";
75
+ return `${fence}${padding}${text}${padding}${fence}`;
76
+ };
@@ -6,7 +6,8 @@
6
6
  * Every value of a switch is drawn, its default too, so the frames show where the story starts; only the colour
7
7
  * scheme's system value is left out, since it draws as light or as dark, one of the others. A value that writes
8
8
  * nothing on the root (`isUnset`: the stories' own text, left to right, the mouse) is a value like the rest. In a pair, a cell's label leaves out the second switch's default (`Light`, `Light · More contrast`), so the familiar
9
- * value reads alone. Pure.
9
+ * value reads alone. A cell another switch's value contradicts is left out (a look drawn only for dark, at light): it
10
+ * would draw the same as the cell of the implied value, under a name that is not what it shows. Pure.
10
11
  *
11
12
  * @module
12
13
  */
@@ -31,5 +32,6 @@ export type CompareVariant = {
31
32
  *
32
33
  * @param axes - the compared axes.
33
34
  * @param catalogue - the catalogue's switches and text sizes.
35
+ * @param view - the stage's view, whose other switches may imply a compared one.
34
36
  */
35
- export declare const compareVariants: (axes: CompareAxes, catalogue: CompareCatalogue) => CompareVariant[];
37
+ export declare const compareVariants: (axes: CompareAxes, catalogue: CompareCatalogue, view: ViewState) => CompareVariant[];
@@ -6,10 +6,12 @@
6
6
  * Every value of a switch is drawn, its default too, so the frames show where the story starts; only the colour
7
7
  * scheme's system value is left out, since it draws as light or as dark, one of the others. A value that writes
8
8
  * nothing on the root (`isUnset`: the stories' own text, left to right, the mouse) is a value like the rest. In a pair, a cell's label leaves out the second switch's default (`Light`, `Light · More contrast`), so the familiar
9
- * value reads alone. Pure.
9
+ * value reads alone. A cell another switch's value contradicts is left out (a look drawn only for dark, at light): it
10
+ * would draw the same as the cell of the implied value, under a name that is not what it shows. Pure.
10
11
  *
11
12
  * @module
12
13
  */
14
+ import { shownSwitches } from "../switches.js";
13
15
  import { SHEETS_CHOICES } from "../viewState.js";
14
16
  import { LATER_STRINGS } from "./laterStrings.js";
15
17
  import { STRINGS } from "./strings.js";
@@ -54,16 +56,22 @@ const axisVariants = (axis, catalogue) => {
54
56
  *
55
57
  * @param axes - the compared axes.
56
58
  * @param catalogue - the catalogue's switches and text sizes.
59
+ * @param view - the stage's view, whose other switches may imply a compared one.
57
60
  */
58
- export const compareVariants = (axes, catalogue) => {
61
+ export const compareVariants = (axes, catalogue, view) => {
59
62
  const [first, second] = axes;
60
63
  if (first === undefined)
61
64
  return [];
62
65
  const firsts = axisVariants(first, catalogue);
63
- if (second === undefined)
64
- return firsts;
65
- return axisVariants(second, catalogue).flatMap((outer) => firsts.map((inner) => ({
66
- label: LATER_STRINGS.compareCell(outer.isDefault ? [inner.label] : [inner.label, outer.label]),
67
- viewOf: (view) => outer.viewOf(inner.viewOf(view))
68
- })));
66
+ const cells = second === undefined
67
+ ? firsts
68
+ : axisVariants(second, catalogue).flatMap((outer) => firsts.map((inner) => ({
69
+ label: LATER_STRINGS.compareCell(outer.isDefault ? [inner.label] : [inner.label, outer.label]),
70
+ viewOf: (stage) => outer.viewOf(inner.viewOf(stage))
71
+ })));
72
+ return cells.filter((cell) => {
73
+ const { switches } = cell.viewOf(view);
74
+ const shown = shownSwitches(switches, catalogue.switches);
75
+ return axes.every((axis) => shown[axis] === switches[axis]);
76
+ });
69
77
  };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Whether this catalogue composes others (`refs`): a constant the plugin writes into the build (`define`), so a
3
+ * catalogue that composes none has every part of composition removed from its shell, and its first load carries none of
4
+ * it. And the composed catalogues themselves, set by `mountShell` behind that constant: a page holds one shell, so they
5
+ * are a fact of the page, as the frames' origin is, and a shell that composes none keeps not even their name.
6
+ *
7
+ * @remarks
8
+ * Read as a value that may be missing, so a shell bundled by something other than Forgebook's plugin (a test) runs with
9
+ * composition off rather than failing on a name nobody defined.
10
+ *
11
+ * @module
12
+ */
13
+ import type { ShellRefs } from "./refParts.tsx";
14
+ /** Whether this catalogue composes others. */
15
+ export declare const HAS_REFS: boolean;
16
+ /**
17
+ * Sets the composed catalogues, before the shell renders.
18
+ *
19
+ * @param refs - the composed catalogues, if the generated page gives any.
20
+ */
21
+ export declare const setShellRefs: (refs: ShellRefs | undefined) => void;
22
+ /** The composed catalogues; none until `mountShell` set them, or for a catalogue that composes none. */
23
+ export declare const shellRefs: () => ShellRefs | undefined;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Whether this catalogue composes others (`refs`): a constant the plugin writes into the build (`define`), so a
3
+ * catalogue that composes none has every part of composition removed from its shell, and its first load carries none of
4
+ * it. And the composed catalogues themselves, set by `mountShell` behind that constant: a page holds one shell, so they
5
+ * are a fact of the page, as the frames' origin is, and a shell that composes none keeps not even their name.
6
+ *
7
+ * @remarks
8
+ * Read as a value that may be missing, so a shell bundled by something other than Forgebook's plugin (a test) runs with
9
+ * composition off rather than failing on a name nobody defined.
10
+ *
11
+ * @module
12
+ */
13
+ /** Whether this catalogue composes others. */
14
+ export const HAS_REFS = typeof __FORGEBOOK_REFS__ !== "undefined" && __FORGEBOOK_REFS__ === true;
15
+ /** The composed catalogues, once `mountShell` set them. */
16
+ let pageRefs;
17
+ /**
18
+ * Sets the composed catalogues, before the shell renders.
19
+ *
20
+ * @param refs - the composed catalogues, if the generated page gives any.
21
+ */
22
+ export const setShellRefs = (refs) => {
23
+ pageRefs = refs;
24
+ };
25
+ /** The composed catalogues; none until `mountShell` set them, or for a catalogue that composes none. */
26
+ export const shellRefs = () => pageRefs;
@@ -4,7 +4,7 @@
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
  */