forgebook 0.0.0-stage → 0.1.2
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.
- package/LICENSE +21 -0
- package/README.md +136 -2
- package/dist/bin/forgebook/catalogueVite.d.ts +16 -0
- package/dist/bin/forgebook/catalogueVite.d.ts.map +1 -0
- package/dist/bin/forgebook/catalogueVite.js +15 -0
- package/dist/bin/forgebook/catalogueVite.js.map +1 -0
- package/dist/bin/forgebook/forgebook.d.mts +3 -0
- package/dist/bin/forgebook/forgebook.d.mts.map +1 -0
- package/dist/bin/forgebook/forgebook.mjs +93 -0
- package/dist/bin/forgebook/forgebook.mjs.map +1 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts +90 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.js +1 -0
- package/dist/bin/forgebook-docs/catalogueDocs.types.js.map +1 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts +9 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js +132 -0
- package/dist/bin/forgebook-docs/catalogueMarkdown.js.map +1 -0
- package/dist/bin/forgebook-docs/collectDocs.d.ts +17 -0
- package/dist/bin/forgebook-docs/collectDocs.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/collectDocs.js +115 -0
- package/dist/bin/forgebook-docs/collectDocs.js.map +1 -0
- package/dist/bin/forgebook-docs/forgebook-docs.d.mts +3 -0
- package/dist/bin/forgebook-docs/forgebook-docs.d.mts.map +1 -0
- package/dist/bin/forgebook-docs/forgebook-docs.mjs +114 -0
- package/dist/bin/forgebook-docs/forgebook-docs.mjs.map +1 -0
- package/dist/bin/forgebook-docs/moduleDocs.d.ts +9 -0
- package/dist/bin/forgebook-docs/moduleDocs.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/moduleDocs.js +62 -0
- package/dist/bin/forgebook-docs/moduleDocs.js.map +1 -0
- package/dist/bin/forgebook-docs/sassDocs.d.ts +20 -0
- package/dist/bin/forgebook-docs/sassDocs.d.ts.map +1 -0
- package/dist/bin/forgebook-docs/sassDocs.js +77 -0
- package/dist/bin/forgebook-docs/sassDocs.js.map +1 -0
- package/dist/bin/forgebook-texts/forgebook-texts.d.mts +3 -0
- package/dist/bin/forgebook-texts/forgebook-texts.d.mts.map +1 -0
- package/dist/bin/forgebook-texts/forgebook-texts.mjs +94 -0
- package/dist/bin/forgebook-texts/forgebook-texts.mjs.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.d.ts +26 -0
- package/dist/bin/forgebook-texts/storyTextsReport.d.ts.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.js +35 -0
- package/dist/bin/forgebook-texts/storyTextsReport.js.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts +25 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.d.ts.map +1 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.js +7 -0
- package/dist/bin/forgebook-texts/storyTextsReport.types.js.map +1 -0
- package/dist/src/a11y.d.ts +28 -0
- package/dist/src/a11y.d.ts.map +1 -0
- package/dist/src/a11y.js +29 -0
- package/dist/src/a11y.js.map +1 -0
- package/dist/src/argTypes.d.ts +114 -0
- package/dist/src/argTypes.d.ts.map +1 -0
- package/dist/src/argTypes.js +254 -0
- package/dist/src/argTypes.js.map +1 -0
- package/dist/src/backdrops.d.ts +88 -0
- package/dist/src/backdrops.d.ts.map +1 -0
- package/dist/src/backdrops.js +202 -0
- package/dist/src/backdrops.js.map +1 -0
- package/dist/src/catalogue.d.ts +120 -0
- package/dist/src/catalogue.d.ts.map +1 -0
- package/dist/src/catalogue.js +80 -0
- package/dist/src/catalogue.js.map +1 -0
- package/dist/src/componentDocs.d.ts +98 -0
- package/dist/src/componentDocs.d.ts.map +1 -0
- package/dist/src/componentDocs.js +47 -0
- package/dist/src/componentDocs.js.map +1 -0
- package/dist/src/frame/checkStory.d.ts +20 -0
- package/dist/src/frame/checkStory.d.ts.map +1 -0
- package/dist/src/frame/checkStory.js +31 -0
- package/dist/src/frame/checkStory.js.map +1 -0
- package/dist/src/frame/frame.css +51 -0
- package/dist/src/frame/frameClock.d.ts +53 -0
- package/dist/src/frame/frameClock.d.ts.map +1 -0
- package/dist/src/frame/frameClock.js +80 -0
- package/dist/src/frame/frameClock.js.map +1 -0
- package/dist/src/frame/frameStatus.d.ts +8 -0
- package/dist/src/frame/frameStatus.d.ts.map +1 -0
- package/dist/src/frame/frameStatus.js +8 -0
- package/dist/src/frame/frameStatus.js.map +1 -0
- package/dist/src/frame/frameView.d.ts +33 -0
- package/dist/src/frame/frameView.d.ts.map +1 -0
- package/dist/src/frame/frameView.js +134 -0
- package/dist/src/frame/frameView.js.map +1 -0
- package/dist/src/frame/matrixLayout.d.ts +36 -0
- package/dist/src/frame/matrixLayout.d.ts.map +1 -0
- package/dist/src/frame/matrixLayout.js +87 -0
- package/dist/src/frame/matrixLayout.js.map +1 -0
- package/dist/src/frame/measureTools.d.ts +24 -0
- package/dist/src/frame/measureTools.d.ts.map +1 -0
- package/dist/src/frame/measureTools.js +141 -0
- package/dist/src/frame/measureTools.js.map +1 -0
- package/dist/src/frame/mountFrame.d.ts +47 -0
- package/dist/src/frame/mountFrame.d.ts.map +1 -0
- package/dist/src/frame/mountFrame.js +229 -0
- package/dist/src/frame/mountFrame.js.map +1 -0
- package/dist/src/frame/playStory.d.ts +40 -0
- package/dist/src/frame/playStory.d.ts.map +1 -0
- package/dist/src/frame/playStory.js +55 -0
- package/dist/src/frame/playStory.js.map +1 -0
- package/dist/src/frame/renderer.d.ts +85 -0
- package/dist/src/frame/renderer.d.ts.map +1 -0
- package/dist/src/frame/renderer.js +18 -0
- package/dist/src/frame/renderer.js.map +1 -0
- package/dist/src/frame/settle.d.ts +24 -0
- package/dist/src/frame/settle.d.ts.map +1 -0
- package/dist/src/frame/settle.js +25 -0
- package/dist/src/frame/settle.js.map +1 -0
- package/dist/src/frame/staleModule.d.ts +40 -0
- package/dist/src/frame/staleModule.d.ts.map +1 -0
- package/dist/src/frame/staleModule.js +74 -0
- package/dist/src/frame/staleModule.js.map +1 -0
- package/dist/src/frame/storyCanvas.d.ts +21 -0
- package/dist/src/frame/storyCanvas.d.ts.map +1 -0
- package/dist/src/frame/storyCanvas.js +30 -0
- package/dist/src/frame/storyCanvas.js.map +1 -0
- package/dist/src/frame/storyHooks.d.ts +31 -0
- package/dist/src/frame/storyHooks.d.ts.map +1 -0
- package/dist/src/frame/storyHooks.js +59 -0
- package/dist/src/frame/storyHooks.js.map +1 -0
- package/dist/src/frame/storyModule.d.ts +104 -0
- package/dist/src/frame/storyModule.d.ts.map +1 -0
- package/dist/src/frame/storyModule.js +205 -0
- package/dist/src/frame/storyModule.js.map +1 -0
- package/dist/src/frame/storyRun.d.ts +96 -0
- package/dist/src/frame/storyRun.d.ts.map +1 -0
- package/dist/src/frame/storyRun.js +318 -0
- package/dist/src/frame/storyRun.js.map +1 -0
- package/dist/src/languages.d.ts +15 -0
- package/dist/src/languages.d.ts.map +1 -0
- package/dist/src/languages.js +8 -0
- package/dist/src/languages.js.map +1 -0
- package/dist/src/matrix.d.ts +56 -0
- package/dist/src/matrix.d.ts.map +1 -0
- package/dist/src/matrix.js +61 -0
- package/dist/src/matrix.js.map +1 -0
- package/dist/src/messages.d.ts +203 -0
- package/dist/src/messages.d.ts.map +1 -0
- package/dist/src/messages.js +193 -0
- package/dist/src/messages.js.map +1 -0
- package/dist/src/namedValues.d.ts +38 -0
- package/dist/src/namedValues.d.ts.map +1 -0
- package/dist/src/namedValues.js +48 -0
- package/dist/src/namedValues.js.map +1 -0
- package/dist/src/pageConfig.d.ts +23 -0
- package/dist/src/pageConfig.d.ts.map +1 -0
- package/dist/src/pageConfig.js +1 -0
- package/dist/src/pageConfig.js.map +1 -0
- package/dist/src/playTrace.d.ts +41 -0
- package/dist/src/playTrace.d.ts.map +1 -0
- package/dist/src/playTrace.js +35 -0
- package/dist/src/playTrace.js.map +1 -0
- package/dist/src/shell/A11yTab.d.ts +44 -0
- package/dist/src/shell/A11yTab.d.ts.map +1 -0
- package/dist/src/shell/A11yTab.js +30 -0
- package/dist/src/shell/A11yTab.js.map +1 -0
- package/dist/src/shell/ApiReference.d.ts +18 -0
- package/dist/src/shell/ApiReference.d.ts.map +1 -0
- package/dist/src/shell/ApiReference.js +41 -0
- package/dist/src/shell/ApiReference.js.map +1 -0
- package/dist/src/shell/ClockControls.d.ts +43 -0
- package/dist/src/shell/ClockControls.d.ts.map +1 -0
- package/dist/src/shell/ClockControls.js +53 -0
- package/dist/src/shell/ClockControls.js.map +1 -0
- package/dist/src/shell/Code.d.ts +16 -0
- package/dist/src/shell/Code.d.ts.map +1 -0
- package/dist/src/shell/Code.js +9 -0
- package/dist/src/shell/Code.js.map +1 -0
- package/dist/src/shell/CodeTab.d.ts +17 -0
- package/dist/src/shell/CodeTab.d.ts.map +1 -0
- package/dist/src/shell/CodeTab.js +17 -0
- package/dist/src/shell/CodeTab.js.map +1 -0
- package/dist/src/shell/CodeText.d.ts +16 -0
- package/dist/src/shell/CodeText.d.ts.map +1 -0
- package/dist/src/shell/CodeText.js +10 -0
- package/dist/src/shell/CodeText.js.map +1 -0
- package/dist/src/shell/ComponentPage.d.ts +38 -0
- package/dist/src/shell/ComponentPage.d.ts.map +1 -0
- package/dist/src/shell/ComponentPage.js +146 -0
- package/dist/src/shell/ComponentPage.js.map +1 -0
- package/dist/src/shell/Dock.d.ts +42 -0
- package/dist/src/shell/Dock.d.ts.map +1 -0
- package/dist/src/shell/Dock.js +90 -0
- package/dist/src/shell/Dock.js.map +1 -0
- package/dist/src/shell/EventsTab.d.ts +25 -0
- package/dist/src/shell/EventsTab.d.ts.map +1 -0
- package/dist/src/shell/EventsTab.js +26 -0
- package/dist/src/shell/EventsTab.js.map +1 -0
- package/dist/src/shell/FrameView.d.ts +49 -0
- package/dist/src/shell/FrameView.d.ts.map +1 -0
- package/dist/src/shell/FrameView.js +29 -0
- package/dist/src/shell/FrameView.js.map +1 -0
- package/dist/src/shell/HomePage.d.ts +39 -0
- package/dist/src/shell/HomePage.d.ts.map +1 -0
- package/dist/src/shell/HomePage.js +85 -0
- package/dist/src/shell/HomePage.js.map +1 -0
- package/dist/src/shell/InteractionsTab.d.ts +28 -0
- package/dist/src/shell/InteractionsTab.d.ts.map +1 -0
- package/dist/src/shell/InteractionsTab.js +17 -0
- package/dist/src/shell/InteractionsTab.js.map +1 -0
- package/dist/src/shell/MatrixPicker.d.ts +24 -0
- package/dist/src/shell/MatrixPicker.d.ts.map +1 -0
- package/dist/src/shell/MatrixPicker.js +29 -0
- package/dist/src/shell/MatrixPicker.js.map +1 -0
- package/dist/src/shell/PackageHtml.d.ts +17 -0
- package/dist/src/shell/PackageHtml.d.ts.map +1 -0
- package/dist/src/shell/PackageHtml.js +13 -0
- package/dist/src/shell/PackageHtml.js.map +1 -0
- package/dist/src/shell/PartsTab.d.ts +23 -0
- package/dist/src/shell/PartsTab.d.ts.map +1 -0
- package/dist/src/shell/PartsTab.js +23 -0
- package/dist/src/shell/PartsTab.js.map +1 -0
- package/dist/src/shell/PropFields.d.ts +31 -0
- package/dist/src/shell/PropFields.d.ts.map +1 -0
- package/dist/src/shell/PropFields.js +81 -0
- package/dist/src/shell/PropFields.js.map +1 -0
- package/dist/src/shell/PropsTab.d.ts +45 -0
- package/dist/src/shell/PropsTab.d.ts.map +1 -0
- package/dist/src/shell/PropsTab.js +81 -0
- package/dist/src/shell/PropsTab.js.map +1 -0
- package/dist/src/shell/SchemeSwitches.d.ts +24 -0
- package/dist/src/shell/SchemeSwitches.d.ts.map +1 -0
- package/dist/src/shell/SchemeSwitches.js +36 -0
- package/dist/src/shell/SchemeSwitches.js.map +1 -0
- package/dist/src/shell/Segmented.d.ts +41 -0
- package/dist/src/shell/Segmented.d.ts.map +1 -0
- package/dist/src/shell/Segmented.js +19 -0
- package/dist/src/shell/Segmented.js.map +1 -0
- package/dist/src/shell/Shell.d.ts +49 -0
- package/dist/src/shell/Shell.d.ts.map +1 -0
- package/dist/src/shell/Shell.js +279 -0
- package/dist/src/shell/Shell.js.map +1 -0
- package/dist/src/shell/Sidebar.d.ts +52 -0
- package/dist/src/shell/Sidebar.d.ts.map +1 -0
- package/dist/src/shell/Sidebar.js +132 -0
- package/dist/src/shell/Sidebar.js.map +1 -0
- package/dist/src/shell/SidebarHandle.d.ts +29 -0
- package/dist/src/shell/SidebarHandle.d.ts.map +1 -0
- package/dist/src/shell/SidebarHandle.js +46 -0
- package/dist/src/shell/SidebarHandle.js.map +1 -0
- package/dist/src/shell/Stage.d.ts +68 -0
- package/dist/src/shell/Stage.d.ts.map +1 -0
- package/dist/src/shell/Stage.js +218 -0
- package/dist/src/shell/Stage.js.map +1 -0
- package/dist/src/shell/StageTools.d.ts +27 -0
- package/dist/src/shell/StageTools.d.ts.map +1 -0
- package/dist/src/shell/StageTools.js +34 -0
- package/dist/src/shell/StageTools.js.map +1 -0
- package/dist/src/shell/StageViewport.d.ts +46 -0
- package/dist/src/shell/StageViewport.d.ts.map +1 -0
- package/dist/src/shell/StageViewport.js +173 -0
- package/dist/src/shell/StageViewport.js.map +1 -0
- package/dist/src/shell/StoryCodeBlock.d.ts +35 -0
- package/dist/src/shell/StoryCodeBlock.d.ts.map +1 -0
- package/dist/src/shell/StoryCodeBlock.js +27 -0
- package/dist/src/shell/StoryCodeBlock.js.map +1 -0
- package/dist/src/shell/StoryPicker.d.ts +26 -0
- package/dist/src/shell/StoryPicker.d.ts.map +1 -0
- package/dist/src/shell/StoryPicker.js +32 -0
- package/dist/src/shell/StoryPicker.js.map +1 -0
- package/dist/src/shell/Toolbar.d.ts +40 -0
- package/dist/src/shell/Toolbar.d.ts.map +1 -0
- package/dist/src/shell/Toolbar.js +125 -0
- package/dist/src/shell/Toolbar.js.map +1 -0
- package/dist/src/shell/WidthField.d.ts +24 -0
- package/dist/src/shell/WidthField.d.ts.map +1 -0
- package/dist/src/shell/WidthField.js +40 -0
- package/dist/src/shell/WidthField.js.map +1 -0
- package/dist/src/shell/catalogueContext.d.ts +6 -0
- package/dist/src/shell/catalogueContext.d.ts.map +1 -0
- package/dist/src/shell/catalogueContext.js +14 -0
- package/dist/src/shell/catalogueContext.js.map +1 -0
- package/dist/src/shell/codeTokens.d.ts +23 -0
- package/dist/src/shell/codeTokens.d.ts.map +1 -0
- package/dist/src/shell/codeTokens.js +48 -0
- package/dist/src/shell/codeTokens.js.map +1 -0
- package/dist/src/shell/codeWriter.d.ts +6 -0
- package/dist/src/shell/codeWriter.d.ts.map +1 -0
- package/dist/src/shell/codeWriter.js +14 -0
- package/dist/src/shell/codeWriter.js.map +1 -0
- package/dist/src/shell/compareVariants.d.ts +35 -0
- package/dist/src/shell/compareVariants.d.ts.map +1 -0
- package/dist/src/shell/compareVariants.js +68 -0
- package/dist/src/shell/compareVariants.js.map +1 -0
- package/dist/src/shell/dockTabs.d.ts +63 -0
- package/dist/src/shell/dockTabs.d.ts.map +1 -0
- package/dist/src/shell/dockTabs.js +140 -0
- package/dist/src/shell/dockTabs.js.map +1 -0
- package/dist/src/shell/icons.d.ts +47 -0
- package/dist/src/shell/icons.d.ts.map +1 -0
- package/dist/src/shell/icons.js +36 -0
- package/dist/src/shell/icons.js.map +1 -0
- package/dist/src/shell/keyboard.d.ts +35 -0
- package/dist/src/shell/keyboard.d.ts.map +1 -0
- package/dist/src/shell/keyboard.js +51 -0
- package/dist/src/shell/keyboard.js.map +1 -0
- package/dist/src/shell/mountShell.d.ts +22 -0
- package/dist/src/shell/mountShell.d.ts.map +1 -0
- package/dist/src/shell/mountShell.js +39 -0
- package/dist/src/shell/mountShell.js.map +1 -0
- package/dist/src/shell/shell.css +1831 -0
- package/dist/src/shell/strings.d.ts +184 -0
- package/dist/src/shell/strings.d.ts.map +1 -0
- package/dist/src/shell/strings.js +188 -0
- package/dist/src/shell/strings.js.map +1 -0
- package/dist/src/shell/switchView.d.ts +23 -0
- package/dist/src/shell/switchView.d.ts.map +1 -0
- package/dist/src/shell/switchView.js +19 -0
- package/dist/src/shell/switchView.js.map +1 -0
- package/dist/src/shell/treeSearch.d.ts +35 -0
- package/dist/src/shell/treeSearch.d.ts.map +1 -0
- package/dist/src/shell/treeSearch.js +60 -0
- package/dist/src/shell/treeSearch.js.map +1 -0
- package/dist/src/shell/useComponentDocs.d.ts +16 -0
- package/dist/src/shell/useComponentDocs.d.ts.map +1 -0
- package/dist/src/shell/useComponentDocs.js +25 -0
- package/dist/src/shell/useComponentDocs.js.map +1 -0
- package/dist/src/shell/useCopy.d.ts +10 -0
- package/dist/src/shell/useCopy.d.ts.map +1 -0
- package/dist/src/shell/useCopy.js +23 -0
- package/dist/src/shell/useCopy.js.map +1 -0
- package/dist/src/shell/useFrameMessages.d.ts +54 -0
- package/dist/src/shell/useFrameMessages.d.ts.map +1 -0
- package/dist/src/shell/useFrameMessages.js +90 -0
- package/dist/src/shell/useFrameMessages.js.map +1 -0
- package/dist/src/shell/useFrameQueue.d.ts +29 -0
- package/dist/src/shell/useFrameQueue.d.ts.map +1 -0
- package/dist/src/shell/useFrameQueue.js +72 -0
- package/dist/src/shell/useFrameQueue.js.map +1 -0
- package/dist/src/shell/useLiveView.d.ts +29 -0
- package/dist/src/shell/useLiveView.d.ts.map +1 -0
- package/dist/src/shell/useLiveView.js +51 -0
- package/dist/src/shell/useLiveView.js.map +1 -0
- package/dist/src/shell/useLoaded.d.ts +20 -0
- package/dist/src/shell/useLoaded.d.ts.map +1 -0
- package/dist/src/shell/useLoaded.js +40 -0
- package/dist/src/shell/useLoaded.js.map +1 -0
- package/dist/src/shell/usePageDoc.d.ts +20 -0
- package/dist/src/shell/usePageDoc.d.ts.map +1 -0
- package/dist/src/shell/usePageDoc.js +21 -0
- package/dist/src/shell/usePageDoc.js.map +1 -0
- package/dist/src/shell/usePopover.d.ts +23 -0
- package/dist/src/shell/usePopover.d.ts.map +1 -0
- package/dist/src/shell/usePopover.js +39 -0
- package/dist/src/shell/usePopover.js.map +1 -0
- package/dist/src/shell/useRecentPages.d.ts +21 -0
- package/dist/src/shell/useRecentPages.d.ts.map +1 -0
- package/dist/src/shell/useRecentPages.js +62 -0
- package/dist/src/shell/useRecentPages.js.map +1 -0
- package/dist/src/shell/useScrollMemory.d.ts +40 -0
- package/dist/src/shell/useScrollMemory.d.ts.map +1 -0
- package/dist/src/shell/useScrollMemory.js +69 -0
- package/dist/src/shell/useScrollMemory.js.map +1 -0
- package/dist/src/shell/useSidebarLayout.d.ts +14 -0
- package/dist/src/shell/useSidebarLayout.d.ts.map +1 -0
- package/dist/src/shell/useSidebarLayout.js +19 -0
- package/dist/src/shell/useSidebarLayout.js.map +1 -0
- package/dist/src/shell/useStored.d.ts +11 -0
- package/dist/src/shell/useStored.d.ts.map +1 -0
- package/dist/src/shell/useStored.js +68 -0
- package/dist/src/shell/useStored.js.map +1 -0
- package/dist/src/shell/useStoryCode.d.ts +14 -0
- package/dist/src/shell/useStoryCode.d.ts.map +1 -0
- package/dist/src/shell/useStoryCode.js +29 -0
- package/dist/src/shell/useStoryCode.js.map +1 -0
- package/dist/src/shell/useStoryHeights.d.ts +9 -0
- package/dist/src/shell/useStoryHeights.d.ts.map +1 -0
- package/dist/src/shell/useStoryHeights.js +31 -0
- package/dist/src/shell/useStoryHeights.js.map +1 -0
- package/dist/src/shell/useStoryIdsElement.d.ts +7 -0
- package/dist/src/shell/useStoryIdsElement.d.ts.map +1 -0
- package/dist/src/shell/useStoryIdsElement.js +29 -0
- package/dist/src/shell/useStoryIdsElement.js.map +1 -0
- package/dist/src/shell/useStoryKeys.d.ts +11 -0
- package/dist/src/shell/useStoryKeys.d.ts.map +1 -0
- package/dist/src/shell/useStoryKeys.js +40 -0
- package/dist/src/shell/useStoryKeys.js.map +1 -0
- package/dist/src/shell/useSystemDark.d.ts +3 -0
- package/dist/src/shell/useSystemDark.d.ts.map +1 -0
- package/dist/src/shell/useSystemDark.js +19 -0
- package/dist/src/shell/useSystemDark.js.map +1 -0
- package/dist/src/sourceFiles.d.ts +18 -0
- package/dist/src/sourceFiles.d.ts.map +1 -0
- package/dist/src/sourceFiles.js +22 -0
- package/dist/src/sourceFiles.js.map +1 -0
- package/dist/src/storyBackground.d.ts +21 -0
- package/dist/src/storyBackground.d.ts.map +1 -0
- package/dist/src/storyBackground.js +27 -0
- package/dist/src/storyBackground.js.map +1 -0
- package/dist/src/storyClock.d.ts +62 -0
- package/dist/src/storyClock.d.ts.map +1 -0
- package/dist/src/storyClock.js +51 -0
- package/dist/src/storyClock.js.map +1 -0
- package/dist/src/storyGlobals.d.ts +60 -0
- package/dist/src/storyGlobals.d.ts.map +1 -0
- package/dist/src/storyGlobals.js +117 -0
- package/dist/src/storyGlobals.js.map +1 -0
- package/dist/src/storyHeights.d.ts +37 -0
- package/dist/src/storyHeights.d.ts.map +1 -0
- package/dist/src/storyHeights.js +53 -0
- package/dist/src/storyHeights.js.map +1 -0
- package/dist/src/storyIdsElement.d.ts +9 -0
- package/dist/src/storyIdsElement.d.ts.map +1 -0
- package/dist/src/storyIdsElement.js +9 -0
- package/dist/src/storyIdsElement.js.map +1 -0
- package/dist/src/storyTexts.d.ts +43 -0
- package/dist/src/storyTexts.d.ts.map +1 -0
- package/dist/src/storyTexts.js +71 -0
- package/dist/src/storyTexts.js.map +1 -0
- package/dist/src/storyTree.d.ts +215 -0
- package/dist/src/storyTree.d.ts.map +1 -0
- package/dist/src/storyTree.js +308 -0
- package/dist/src/storyTree.js.map +1 -0
- package/dist/src/switches.d.ts +156 -0
- package/dist/src/switches.d.ts.map +1 -0
- package/dist/src/switches.js +193 -0
- package/dist/src/switches.js.map +1 -0
- package/dist/src/viewState.d.ts +194 -0
- package/dist/src/viewState.d.ts.map +1 -0
- package/dist/src/viewState.js +303 -0
- package/dist/src/viewState.js.map +1 -0
- package/dist/src/vite/adapter.d.ts +70 -0
- package/dist/src/vite/adapter.d.ts.map +1 -0
- package/dist/src/vite/adapter.js +22 -0
- package/dist/src/vite/adapter.js.map +1 -0
- package/dist/src/vite/autoTitle.d.ts +28 -0
- package/dist/src/vite/autoTitle.d.ts.map +1 -0
- package/dist/src/vite/autoTitle.js +44 -0
- package/dist/src/vite/autoTitle.js.map +1 -0
- package/dist/src/vite/componentPage.d.ts +34 -0
- package/dist/src/vite/componentPage.d.ts.map +1 -0
- package/dist/src/vite/componentPage.js +94 -0
- package/dist/src/vite/componentPage.js.map +1 -0
- package/dist/src/vite/config.d.ts +72 -0
- package/dist/src/vite/config.d.ts.map +1 -0
- package/dist/src/vite/config.js +25 -0
- package/dist/src/vite/config.js.map +1 -0
- package/dist/src/vite/configFile.d.ts +76 -0
- package/dist/src/vite/configFile.d.ts.map +1 -0
- package/dist/src/vite/configFile.js +190 -0
- package/dist/src/vite/configFile.js.map +1 -0
- package/dist/src/vite/docsExtractor.d.ts +46 -0
- package/dist/src/vite/docsExtractor.d.ts.map +1 -0
- package/dist/src/vite/docsExtractor.js +88 -0
- package/dist/src/vite/docsExtractor.js.map +1 -0
- package/dist/src/vite/docsProgram.d.ts +42 -0
- package/dist/src/vite/docsProgram.d.ts.map +1 -0
- package/dist/src/vite/docsProgram.js +144 -0
- package/dist/src/vite/docsProgram.js.map +1 -0
- package/dist/src/vite/docsWorker.d.ts +2 -0
- package/dist/src/vite/docsWorker.d.ts.map +1 -0
- package/dist/src/vite/docsWorker.js +68 -0
- package/dist/src/vite/docsWorker.js.map +1 -0
- package/dist/src/vite/forcedStates.d.ts +27 -0
- package/dist/src/vite/forcedStates.d.ts.map +1 -0
- package/dist/src/vite/forcedStates.js +60 -0
- package/dist/src/vite/forcedStates.js.map +1 -0
- package/dist/src/vite/forgebookPlugin.d.ts +28 -0
- package/dist/src/vite/forgebookPlugin.d.ts.map +1 -0
- package/dist/src/vite/forgebookPlugin.js +375 -0
- package/dist/src/vite/forgebookPlugin.js.map +1 -0
- package/dist/src/vite/highlightCode.d.ts +16 -0
- package/dist/src/vite/highlightCode.d.ts.map +1 -0
- package/dist/src/vite/highlightCode.js +82 -0
- package/dist/src/vite/highlightCode.js.map +1 -0
- package/dist/src/vite/indexStoryFile.d.ts +35 -0
- package/dist/src/vite/indexStoryFile.d.ts.map +1 -0
- package/dist/src/vite/indexStoryFile.js +458 -0
- package/dist/src/vite/indexStoryFile.js.map +1 -0
- package/dist/src/vite/pages.d.ts +49 -0
- package/dist/src/vite/pages.d.ts.map +1 -0
- package/dist/src/vite/pages.js +171 -0
- package/dist/src/vite/pages.js.map +1 -0
- package/dist/src/vite/prebundled.d.ts +30 -0
- package/dist/src/vite/prebundled.d.ts.map +1 -0
- package/dist/src/vite/prebundled.js +81 -0
- package/dist/src/vite/prebundled.js.map +1 -0
- package/dist/src/vite/storyCode.d.ts +28 -0
- package/dist/src/vite/storyCode.d.ts.map +1 -0
- package/dist/src/vite/storyCode.js +80 -0
- package/dist/src/vite/storyCode.js.map +1 -0
- package/dist/src/vite/storyFilesModule.d.ts +17 -0
- package/dist/src/vite/storyFilesModule.d.ts.map +1 -0
- package/dist/src/vite/storyFilesModule.js +64 -0
- package/dist/src/vite/storyFilesModule.js.map +1 -0
- package/dist/src/vite/storyMeta.d.ts +34 -0
- package/dist/src/vite/storyMeta.d.ts.map +1 -0
- package/dist/src/vite/storyMeta.js +74 -0
- package/dist/src/vite/storyMeta.js.map +1 -0
- package/dist/src/vite/typeScriptPieces.d.ts +23 -0
- package/dist/src/vite/typeScriptPieces.d.ts.map +1 -0
- package/dist/src/vite/typeScriptPieces.js +236 -0
- package/dist/src/vite/typeScriptPieces.js.map +1 -0
- package/package.json +202 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ensiria
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,137 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Forgebook
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
See every component in every theme, contrast, language and width. Write CSF stories, run `forgebook dev`: one frame
|
|
4
|
+
per story, switches for theme, contrast, motion and language, and a props table from the components' types.
|
|
5
|
+
|
|
6
|
+
> **Status:** 0.x, early. Its author's design system runs on it; the API may still change between minor versions,
|
|
7
|
+
> and every change is in the
|
|
8
|
+
> [changelog](https://github.com/ensiria/forgebook/blob/develop/packages/forgebook/CHANGELOG.md).
|
|
9
|
+
|
|
10
|
+
**Requirements:** Node 22.18 or later · Vite 8 (the catalogue is built on it; other bundlers are not supported) · React 19 today, through
|
|
11
|
+
[`@forgebook/react`](https://www.npmjs.com/package/@forgebook/react); other frameworks plug in through the same
|
|
12
|
+
adapter (the catalogue's own interface is React either way) · npm, pnpm, yarn or bun ·
|
|
13
|
+
[MIT licence](https://github.com/ensiria/forgebook/blob/develop/packages/forgebook/LICENSE)
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
In a project with React and Vite, both packages: `forgebook` is the catalogue, `@forgebook/react` the adapter it draws
|
|
18
|
+
React components with.
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
npm install --save-dev forgebook @forgebook/react
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## A first catalogue
|
|
25
|
+
|
|
26
|
+
A component, with its props typed and documented:
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
// src/Badge.tsx
|
|
30
|
+
export type BadgeProps = {
|
|
31
|
+
/** The text. */
|
|
32
|
+
readonly label: string;
|
|
33
|
+
/** How it reads. @defaultValue "neutral" */
|
|
34
|
+
readonly tone?: "neutral" | "success" | "danger";
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/** A small label beside a title. */
|
|
38
|
+
export const Badge = ({ label, tone = "neutral" }: BadgeProps) => (
|
|
39
|
+
<span className={`badge badge--${tone}`}>{label}</span>
|
|
40
|
+
);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Its stories, in [CSF 3](https://storybook.js.org/docs/api/csf):
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
// src/Badge.stories.tsx
|
|
47
|
+
import type { Meta, Story } from "@forgebook/react";
|
|
48
|
+
|
|
49
|
+
import { Badge } from "./Badge";
|
|
50
|
+
|
|
51
|
+
export default { title: "Components/Badge", component: Badge } satisfies Meta<typeof Badge>;
|
|
52
|
+
|
|
53
|
+
/** The label as most pages use it. */
|
|
54
|
+
export const Default: Story<typeof Badge> = { args: { label: "New" } };
|
|
55
|
+
|
|
56
|
+
/** A success. */
|
|
57
|
+
export const Success: Story<typeof Badge> = { args: { label: "Paid", tone: "success" } };
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The catalogue's configuration, beside `package.json`:
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
// forgebook.config.ts
|
|
64
|
+
import { react } from "@forgebook/react/vite";
|
|
65
|
+
import { defineConfig } from "forgebook";
|
|
66
|
+
|
|
67
|
+
export default defineConfig({
|
|
68
|
+
framework: react(),
|
|
69
|
+
title: "My components",
|
|
70
|
+
stories: ["src/**/*.stories.tsx"]
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Then:
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
npx forgebook dev # the catalogue, live
|
|
78
|
+
npx forgebook build # static files in dist/, for any web server
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Badge's page shows its stories, each in its own frame, and an API table read from `BadgeProps`: `label` required,
|
|
82
|
+
`tone` with its three values and its default, each with its TSDoc.
|
|
83
|
+
|
|
84
|
+
## What a catalogue gives you
|
|
85
|
+
|
|
86
|
+
- **One frame per story**, so a story's styles and globals never leak into another, and its address opens it alone.
|
|
87
|
+
- **Switches** in the toolbar for theme, contrast and motion, and the languages you declare; a library adds its own
|
|
88
|
+
(density, brand) through a preset.
|
|
89
|
+
- **Widths** to draw a story at, and a **compare** view that draws the same story once per value of one or two
|
|
90
|
+
switches (every theme at both contrasts), per text size or per style sheet, side by side.
|
|
91
|
+
- **Props from the types**: the API table and the panel's controls come from the component's TypeScript props and
|
|
92
|
+
their TSDoc, nothing written twice.
|
|
93
|
+
- **Interaction states and motion**: `:hover`, `:active`, `:focus`, `:focus-visible` and `:focus-within` forced on a
|
|
94
|
+
story without a pointer; motion replayed on demand.
|
|
95
|
+
- **Packages as sources**: a library ships its stories (`StorySource`), and an app's catalogue lists them beside its
|
|
96
|
+
own, each with its name, logo and texts.
|
|
97
|
+
- **`CATALOG.md`** for coding agents: `forgebook-docs` writes one dense line per component, hook and helper of a
|
|
98
|
+
package, from its exports, their TSDoc and its stories.
|
|
99
|
+
- **Tests from the stories**, with [`@forgebook/testing`](https://www.npmjs.com/package/@forgebook/testing): every
|
|
100
|
+
story in the browser with axe, spills and overlays, screenshots, and every story rendered on the server.
|
|
101
|
+
|
|
102
|
+
It adds about a dozen packages to a React and Vite project.
|
|
103
|
+
|
|
104
|
+
## Coming from Storybook
|
|
105
|
+
|
|
106
|
+
Forgebook reads Storybook's story files as they are: CSF 3 and CSF 2 (`Template.bind({})`), titles of any depth and
|
|
107
|
+
titles from the file's path, `args` and `argTypes` (with their controls), actions from `fn()` or an `argTypes` action,
|
|
108
|
+
`play` with Testing Library (`@testing-library/dom` and `@testing-library/user-event`, optional peers), `loaders`,
|
|
109
|
+
`tags` (`!dev`, `!test`) and a story's `globals`.
|
|
110
|
+
|
|
111
|
+
It does not read MDX, doc blocks or addons. Actions are explicit only: an `on*` prop is not turned into an action by
|
|
112
|
+
its name.
|
|
113
|
+
|
|
114
|
+
## Commands
|
|
115
|
+
|
|
116
|
+
| Command | What it does |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `forgebook dev` / `forgebook build` | Runs the catalogue of `forgebook.config.ts`, or builds it into static files |
|
|
119
|
+
| `forgebook-docs` | Writes a package's `CATALOG.md` from its exports, their TSDoc and its stories |
|
|
120
|
+
| `forgebook-texts` | Checks a package's story texts and lists what each language still has to translate |
|
|
121
|
+
|
|
122
|
+
Each command prints its options with `--help`.
|
|
123
|
+
|
|
124
|
+
## Packages
|
|
125
|
+
|
|
126
|
+
| Package | What it is |
|
|
127
|
+
|---|---|
|
|
128
|
+
| `forgebook` | The catalogue: the shell, the frame, the Vite plugin, the commands |
|
|
129
|
+
| [`@forgebook/react`](https://www.npmjs.com/package/@forgebook/react) | React's story types, renderer and props reader |
|
|
130
|
+
| [`@forgebook/story-format`](https://www.npmjs.com/package/@forgebook/story-format) | The story format, for a library whose stories must not depend on a catalogue |
|
|
131
|
+
| [`@forgebook/testing`](https://www.npmjs.com/package/@forgebook/testing) | Tests generated from the stories |
|
|
132
|
+
|
|
133
|
+
## Contributing
|
|
134
|
+
|
|
135
|
+
Bugs, proposals and pull requests:
|
|
136
|
+
[CONTRIBUTING.md](https://github.com/ensiria/forgebook/blob/develop/CONTRIBUTING.md). Security problems:
|
|
137
|
+
[SECURITY.md](https://github.com/ensiria/forgebook/blob/develop/SECURITY.md).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Vite configuration the `forgebook` command runs a catalogue with: its folder as the root, Forgebook's plugin
|
|
3
|
+
* with the configuration already read, and the framework's own plugins.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { InlineConfig } from "vite";
|
|
8
|
+
import type { ResolvedConfig } from "../../src/vite/configFile.ts";
|
|
9
|
+
/**
|
|
10
|
+
* Vite's configuration for a catalogue.
|
|
11
|
+
*
|
|
12
|
+
* @param config - the catalogue's configuration, read.
|
|
13
|
+
* @param overrides - what the command sets (the port, the output folder).
|
|
14
|
+
*/
|
|
15
|
+
export declare const catalogueVite: (config: ResolvedConfig, overrides: InlineConfig) => Promise<InlineConfig>;
|
|
16
|
+
//# sourceMappingURL=catalogueVite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogueVite.d.ts","sourceRoot":"","sources":["../../../bin/forgebook/catalogueVite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,cAAc,EACtB,WAAW,YAAY,KACtB,OAAO,CAAC,YAAY,CAMrB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { forgebookPlugin } from "../../src/vite/forgebookPlugin.js";
|
|
2
|
+
/**
|
|
3
|
+
* Vite's configuration for a catalogue.
|
|
4
|
+
*
|
|
5
|
+
* @param config - the catalogue's configuration, read.
|
|
6
|
+
* @param overrides - what the command sets (the port, the output folder).
|
|
7
|
+
*/
|
|
8
|
+
export const catalogueVite = async (config, overrides) => ({
|
|
9
|
+
...overrides,
|
|
10
|
+
root: config.dir,
|
|
11
|
+
// the configuration file is Forgebook's: a vite.config beside it is not read
|
|
12
|
+
configFile: false,
|
|
13
|
+
plugins: [forgebookPlugin({ config }), ...((await config.framework.vitePlugins?.()) ?? [])]
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=catalogueVite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogueVite.js","sourceRoot":"","sources":["../../../bin/forgebook/catalogueVite.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,MAAsB,EACtB,SAAuB,EACA,EAAE,CAAC,CAAC;IAC3B,GAAG,SAAS;IACZ,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,6EAA6E;IAC7E,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;CAC5F,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forgebook.d.mts","sourceRoot":"","sources":["../../../bin/forgebook/forgebook.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* The `forgebook` command: runs a catalogue from its `forgebook.config.ts` (`dev`, the dev server) or builds it into
|
|
4
|
+
* static files (`build`), with no page or Vite configuration of the app's own.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { resolve } from "node:path";
|
|
9
|
+
import { defineScript, ScriptError } from "@ensiria/cli-kit/script";
|
|
10
|
+
import { build, createServer } from "vite";
|
|
11
|
+
import { CONFIG_FILES, findConfigFile, loadConfigFile } from "../../src/vite/configFile.js";
|
|
12
|
+
import { catalogueVite } from "./catalogueVite.js";
|
|
13
|
+
/** The command, as the hints print it. */
|
|
14
|
+
const COMMAND = "forgebook";
|
|
15
|
+
/**
|
|
16
|
+
* The catalogue's configuration: the file given, or the one in the folder the command runs in.
|
|
17
|
+
*
|
|
18
|
+
* @param file - the configuration file given; none to look in the current folder.
|
|
19
|
+
* @throws a `ScriptError` when there is none, or it cannot be used.
|
|
20
|
+
*/
|
|
21
|
+
const configOf = async (file) => {
|
|
22
|
+
const found = file === undefined ? findConfigFile(process.cwd()) : resolve(file);
|
|
23
|
+
if (found === undefined)
|
|
24
|
+
throw new ScriptError(`No ${CONFIG_FILES[0]} here`, {
|
|
25
|
+
hint: `Run ${COMMAND} in the catalogue's folder, or give --config`
|
|
26
|
+
});
|
|
27
|
+
try {
|
|
28
|
+
return await loadConfigFile(found);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new ScriptError(error instanceof Error ? error.message : String(error));
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
await defineScript({
|
|
35
|
+
name: "forgebook",
|
|
36
|
+
command: COMMAND,
|
|
37
|
+
summary: "Run a catalogue of stories from its forgebook.config.ts, or build it into static files.",
|
|
38
|
+
icon: "docs",
|
|
39
|
+
options: {
|
|
40
|
+
config: {
|
|
41
|
+
type: "string",
|
|
42
|
+
valueName: "file",
|
|
43
|
+
description: "The configuration file; forgebook.config.ts in the current folder by default."
|
|
44
|
+
},
|
|
45
|
+
port: {
|
|
46
|
+
type: "string",
|
|
47
|
+
valueName: "number",
|
|
48
|
+
description: "dev: the port to listen on; Vite's by default."
|
|
49
|
+
},
|
|
50
|
+
host: {
|
|
51
|
+
type: "string",
|
|
52
|
+
valueName: "address",
|
|
53
|
+
description: "dev: the address to listen on; localhost by default."
|
|
54
|
+
},
|
|
55
|
+
out: { type: "string", valueName: "folder", description: "build: the folder to write; dist by default." },
|
|
56
|
+
force: {
|
|
57
|
+
type: "boolean",
|
|
58
|
+
description: "dev: pre-bundle the dependencies again, ignoring Vite's cache (as a first start does)."
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
positionals: [{ name: "command", description: "What to do.", required: true, choices: ["dev", "build"] }],
|
|
62
|
+
examples: [
|
|
63
|
+
{ command: `${COMMAND} dev`, description: "Run the catalogue of the folder you are in." },
|
|
64
|
+
{ command: `${COMMAND} dev --port 6006`, description: "On a given port." },
|
|
65
|
+
{ command: `${COMMAND} build --out site`, description: "Build it into static files." }
|
|
66
|
+
],
|
|
67
|
+
run: async ({ args, options, log, onInterrupt }) => {
|
|
68
|
+
const config = await configOf(options.config);
|
|
69
|
+
if (args.command === "build") {
|
|
70
|
+
await build(await catalogueVite(config, { build: { outDir: resolve(config.dir, options.out ?? "dist") } }));
|
|
71
|
+
log.success(`${config.title} built`);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const port = options.port === undefined ? undefined : Number(options.port);
|
|
75
|
+
if (port !== undefined && !Number.isInteger(port))
|
|
76
|
+
throw new ScriptError(`--port ${options.port} is not a port`);
|
|
77
|
+
const server = await createServer(await catalogueVite(config, {
|
|
78
|
+
server: {
|
|
79
|
+
...(port === undefined ? {} : { port, strictPort: true }),
|
|
80
|
+
...(options.host === undefined ? {} : { host: options.host })
|
|
81
|
+
},
|
|
82
|
+
...(options.force === true ? { optimizeDeps: { force: true } } : {})
|
|
83
|
+
}));
|
|
84
|
+
await server.listen();
|
|
85
|
+
server.printUrls();
|
|
86
|
+
await new Promise((done) => {
|
|
87
|
+
onInterrupt(() => {
|
|
88
|
+
void server.close().then(done);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}).run();
|
|
93
|
+
//# sourceMappingURL=forgebook.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forgebook.mjs","sourceRoot":"","sources":["../../../bin/forgebook/forgebook.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The types of `forgebook-docs`: what it reads from a package, and its `--json` report.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { ComponentDocs } from "../../src/componentDocs.ts";
|
|
7
|
+
/** One exported function, value or type of a module. */
|
|
8
|
+
export type ExportDocs = {
|
|
9
|
+
/** The export's name. */
|
|
10
|
+
readonly name: string;
|
|
11
|
+
/** What it is. */
|
|
12
|
+
readonly kind: "function" | "value" | "type";
|
|
13
|
+
/** A function's parameter names (`?` when optional, `...` when rest). */
|
|
14
|
+
readonly parameters?: readonly string[];
|
|
15
|
+
/** The first paragraph of its TSDoc. */
|
|
16
|
+
readonly summary: string;
|
|
17
|
+
};
|
|
18
|
+
/** One exported module (a subpath that is not a component). */
|
|
19
|
+
export type ModuleDocs = {
|
|
20
|
+
/** The subpath (`./utils/cn`). */
|
|
21
|
+
readonly subpath: string;
|
|
22
|
+
/** Its exports, in the module's order. */
|
|
23
|
+
readonly exports: readonly ExportDocs[];
|
|
24
|
+
};
|
|
25
|
+
/** One mixin or function of a public Sass module. */
|
|
26
|
+
export type SassMemberDocs = {
|
|
27
|
+
/** A mixin or a function. */
|
|
28
|
+
readonly kind: "mixin" | "function";
|
|
29
|
+
/** Its name. */
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/** Its parameter names, without defaults (`$placement`). */
|
|
32
|
+
readonly parameters: readonly string[];
|
|
33
|
+
/** The first line of its `///` comment. */
|
|
34
|
+
readonly summary: string;
|
|
35
|
+
};
|
|
36
|
+
/** One public Sass module. */
|
|
37
|
+
export type SassModuleDocs = {
|
|
38
|
+
/** The subpath (`./scss/focus`). */
|
|
39
|
+
readonly subpath: string;
|
|
40
|
+
/** Its mixins and functions. */
|
|
41
|
+
readonly members: readonly SassMemberDocs[];
|
|
42
|
+
};
|
|
43
|
+
/** One published style sheet. */
|
|
44
|
+
export type StyleSheetDocs = {
|
|
45
|
+
/** The subpath (`./tokens.css`). */
|
|
46
|
+
readonly subpath: string;
|
|
47
|
+
/** The first sentence of its leading comment. */
|
|
48
|
+
readonly summary: string;
|
|
49
|
+
};
|
|
50
|
+
/** One component with stories. */
|
|
51
|
+
export type CatalogueComponent = {
|
|
52
|
+
/** Its stories' title (`Inputs/Selection/Select`). */
|
|
53
|
+
readonly title: string;
|
|
54
|
+
/** The subpath that exports it. */
|
|
55
|
+
readonly subpath: string;
|
|
56
|
+
/** Its docs. */
|
|
57
|
+
readonly docs: ComponentDocs;
|
|
58
|
+
/** Its stories' names. */
|
|
59
|
+
readonly stories: readonly string[];
|
|
60
|
+
};
|
|
61
|
+
/** Everything `CATALOG.md` lists. */
|
|
62
|
+
export type CatalogueData = {
|
|
63
|
+
/** The package's name (`@acme/ui`). */
|
|
64
|
+
readonly packageName: string;
|
|
65
|
+
/** The components with stories, by title. */
|
|
66
|
+
readonly components: readonly CatalogueComponent[];
|
|
67
|
+
/** The other exported modules. */
|
|
68
|
+
readonly modules: readonly ModuleDocs[];
|
|
69
|
+
/** The public Sass modules. */
|
|
70
|
+
readonly sassModules: readonly SassModuleDocs[];
|
|
71
|
+
/** The published style sheets. */
|
|
72
|
+
readonly styleSheets: readonly StyleSheetDocs[];
|
|
73
|
+
};
|
|
74
|
+
/** The `--json` document. */
|
|
75
|
+
export type CatalogueDocsReport = {
|
|
76
|
+
/** `written` / `up-to-date`, or `valid` with `--check`. */
|
|
77
|
+
readonly status: "written" | "up-to-date" | "valid";
|
|
78
|
+
/** The file, relative to the working directory. */
|
|
79
|
+
readonly file: string;
|
|
80
|
+
/** How many components, modules, Sass modules and style sheets it lists. */
|
|
81
|
+
readonly counts: {
|
|
82
|
+
readonly components: number;
|
|
83
|
+
readonly modules: number;
|
|
84
|
+
readonly sassModules: number;
|
|
85
|
+
readonly styleSheets: number;
|
|
86
|
+
};
|
|
87
|
+
/** Story files that could not be read, with why. */
|
|
88
|
+
readonly problems: readonly string[];
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=catalogueDocs.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogueDocs.types.d.ts","sourceRoot":"","sources":["../../../bin/forgebook-docs/catalogueDocs.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=catalogueDocs.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogueDocs.types.js","sourceRoot":"","sources":["../../../bin/forgebook-docs/catalogueDocs.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CatalogueData } from "./catalogueDocs.types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* The text of `CATALOG.md`.
|
|
4
|
+
*
|
|
5
|
+
* @param data - what the command read.
|
|
6
|
+
* @returns the Markdown, ending with a newline.
|
|
7
|
+
*/
|
|
8
|
+
export declare const catalogueMarkdown: (data: CatalogueData) => string;
|
|
9
|
+
//# sourceMappingURL=catalogueMarkdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogueMarkdown.d.ts","sourceRoot":"","sources":["../../../bin/forgebook-docs/catalogueMarkdown.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAsB,aAAa,EAA0B,MAAM,0BAA0B,CAAC;AAkG1G;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,aAAa,KAAG,MA6CvD,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/** The props whose keys are the parts. */
|
|
2
|
+
const PART_MAPS = ["classNames", "styles", "refs"];
|
|
3
|
+
/** A prop in short. */
|
|
4
|
+
const shortProp = (prop) => {
|
|
5
|
+
const required = prop.isRequired ? "!" : "";
|
|
6
|
+
switch (prop.kind) {
|
|
7
|
+
case "choice":
|
|
8
|
+
return `${prop.name}${required}=${(prop.choices ?? [])
|
|
9
|
+
.map((choice) => prop.defaultValue === JSON.stringify(choice) || prop.defaultValue === String(choice)
|
|
10
|
+
? `${choice}*`
|
|
11
|
+
: String(choice))
|
|
12
|
+
.join("|")}`;
|
|
13
|
+
case "event":
|
|
14
|
+
return `${prop.name}(${(prop.signature?.parameters ?? []).map((parameter) => parameter.name).join(", ")})`;
|
|
15
|
+
case "toggle":
|
|
16
|
+
return `${prop.name}${required}`;
|
|
17
|
+
default:
|
|
18
|
+
return `${prop.name}${required}:${prop.type}`;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
/** A sentence without its final full stop, so a line can go on after it. */
|
|
22
|
+
const sentence = (text) => text.replace(/\.$/, "");
|
|
23
|
+
/** The import of a subpath. */
|
|
24
|
+
const importOf = (packageName, subpath) => `${packageName}${subpath.slice(1)}`;
|
|
25
|
+
/** One component's line. */
|
|
26
|
+
const componentLine = (packageName, component) => {
|
|
27
|
+
const { docs } = component;
|
|
28
|
+
const where = ` \`${importOf(packageName, component.subpath)}\``;
|
|
29
|
+
// the part maps are summed up by the parts at the end of the line
|
|
30
|
+
const props = docs.props
|
|
31
|
+
.filter((prop) => !PART_MAPS.includes(prop.name))
|
|
32
|
+
.map(shortProp)
|
|
33
|
+
.join(" ");
|
|
34
|
+
const parts = docs.parts.length === 0 ? "" : ` · parts: ${docs.parts.join(", ")}`;
|
|
35
|
+
return `- **${docs.name}**${where}: ${sentence(docs.description)}. ${props}${parts}`;
|
|
36
|
+
};
|
|
37
|
+
/** Letters and digits only, lower case: how a subpath and an export name are compared. */
|
|
38
|
+
const comparable = (text) => text.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
39
|
+
/**
|
|
40
|
+
* The module's main export: the one named after the subpath (`./theming/tokens-css` → `tokensCss`), then one whose
|
|
41
|
+
* name holds it (`./theming/contrast` → `analyseContrast`), otherwise the first function or value.
|
|
42
|
+
*/
|
|
43
|
+
const mainExport = (subpath, entries) => {
|
|
44
|
+
const name = comparable(subpath.split("/").at(-1) ?? "");
|
|
45
|
+
return (entries.find((entry) => comparable(entry.name) === name) ??
|
|
46
|
+
entries.find((entry) => comparable(entry.name).includes(name)) ??
|
|
47
|
+
entries[0]);
|
|
48
|
+
};
|
|
49
|
+
/** One module's line. */
|
|
50
|
+
const moduleLine = (packageName, module) => {
|
|
51
|
+
const values = module.exports.filter((entry) => entry.kind !== "type");
|
|
52
|
+
const types = module.exports.filter((entry) => entry.kind === "type").map((entry) => entry.name);
|
|
53
|
+
const main = mainExport(module.subpath, values);
|
|
54
|
+
const head = main === undefined ? "" : ` ${shortExport(main)}: ${sentence(main.summary)}`;
|
|
55
|
+
const rest = [
|
|
56
|
+
...values.filter((entry) => entry !== main).map(shortExport),
|
|
57
|
+
...(types.length === 0 ? [] : [`types ${types.join(", ")}`])
|
|
58
|
+
];
|
|
59
|
+
return `- \`${importOf(packageName, module.subpath)}\`${head}${rest.length === 0 ? "" : `. Also: ${rest.join(", ")}`}`;
|
|
60
|
+
};
|
|
61
|
+
/** One export in short: a function with its parameters, a value or a type by name. */
|
|
62
|
+
const shortExport = (entry) => entry.kind === "function" ? `${entry.name}(${(entry.parameters ?? []).join(", ")})` : entry.name;
|
|
63
|
+
/** A title's family, group (empty when it has none) and name. */
|
|
64
|
+
const place = (title) => {
|
|
65
|
+
const segments = title.split("/");
|
|
66
|
+
return [segments[0] ?? "", segments.length === 3 ? (segments[1] ?? "") : "", segments.at(-1) ?? ""];
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Compares components by where their titles place them: by family, the ones without a group first, then by group
|
|
70
|
+
* and name, so each family and group is one heading.
|
|
71
|
+
*/
|
|
72
|
+
const byPlace = (left, right) => {
|
|
73
|
+
const [leftFamily, leftGroup, leftName] = place(left.title);
|
|
74
|
+
const [rightFamily, rightGroup, rightName] = place(right.title);
|
|
75
|
+
return (leftFamily.localeCompare(rightFamily) ||
|
|
76
|
+
leftGroup.localeCompare(rightGroup) ||
|
|
77
|
+
leftName.localeCompare(rightName));
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The text of `CATALOG.md`.
|
|
81
|
+
*
|
|
82
|
+
* @param data - what the command read.
|
|
83
|
+
* @returns the Markdown, ending with a newline.
|
|
84
|
+
*/
|
|
85
|
+
export const catalogueMarkdown = (data) => {
|
|
86
|
+
const lines = [
|
|
87
|
+
`# ${data.packageName}`,
|
|
88
|
+
"",
|
|
89
|
+
"<!-- GENERATED by forgebook-docs from the exports, their TSDoc and the stories: do not edit. -->",
|
|
90
|
+
"",
|
|
91
|
+
"Read before writing a component, hook or helper: what exists, how to import it, its props in short",
|
|
92
|
+
"(`a|b*`: values, `*` the default; `!` required; `onX(value)`: an event).",
|
|
93
|
+
""
|
|
94
|
+
];
|
|
95
|
+
lines.push("## Components", "");
|
|
96
|
+
if (data.components.length === 0)
|
|
97
|
+
lines.push("None yet.", "");
|
|
98
|
+
let heading = "";
|
|
99
|
+
for (const component of [...data.components].sort(byPlace)) {
|
|
100
|
+
const group = component.title.split("/").slice(0, -1).join(" › ");
|
|
101
|
+
if (group !== heading) {
|
|
102
|
+
lines.push(`### ${group}`);
|
|
103
|
+
heading = group;
|
|
104
|
+
}
|
|
105
|
+
lines.push(componentLine(data.packageName, component));
|
|
106
|
+
}
|
|
107
|
+
if (data.components.length > 0)
|
|
108
|
+
lines.push("");
|
|
109
|
+
if (data.modules.length > 0) {
|
|
110
|
+
lines.push("## Modules", "");
|
|
111
|
+
const modules = [...data.modules].sort((left, right) => left.subpath.localeCompare(right.subpath));
|
|
112
|
+
for (const module of modules)
|
|
113
|
+
lines.push(moduleLine(data.packageName, module));
|
|
114
|
+
lines.push("");
|
|
115
|
+
}
|
|
116
|
+
if (data.sassModules.length > 0) {
|
|
117
|
+
lines.push("## Sass modules", "", `\`@use "pkg:${data.packageName}/scss/<name>"\`.`, "");
|
|
118
|
+
for (const module of data.sassModules) {
|
|
119
|
+
const members = module.members.map((member) => `${member.name}(${member.parameters.join(", ")}): ${sentence(member.summary)}`);
|
|
120
|
+
lines.push(`- \`${module.subpath.slice("./scss/".length)}\`: ${members.join("; ")}`);
|
|
121
|
+
}
|
|
122
|
+
lines.push("");
|
|
123
|
+
}
|
|
124
|
+
if (data.styleSheets.length > 0) {
|
|
125
|
+
lines.push("## Style sheets", "");
|
|
126
|
+
for (const sheet of data.styleSheets)
|
|
127
|
+
lines.push(`- \`${importOf(data.packageName, sheet.subpath)}\`: ${sheet.summary}`);
|
|
128
|
+
lines.push("");
|
|
129
|
+
}
|
|
130
|
+
return `${lines.join("\n").trimEnd()}\n`;
|
|
131
|
+
};
|
|
132
|
+
//# sourceMappingURL=catalogueMarkdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogueMarkdown.js","sourceRoot":"","sources":["../../../bin/forgebook-docs/catalogueMarkdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExtractStoryComponent } from "../../src/vite/adapter.ts";
|
|
2
|
+
import type { CatalogueData } from "./catalogueDocs.types.ts";
|
|
3
|
+
/** What was read, and what could not be. */
|
|
4
|
+
export type CollectedDocs = {
|
|
5
|
+
/** The catalogue's data. */
|
|
6
|
+
readonly data: CatalogueData;
|
|
7
|
+
/** One message per file that could not be read. */
|
|
8
|
+
readonly problems: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Reads a package for its catalogue.
|
|
12
|
+
*
|
|
13
|
+
* @param packageDir - the package's folder.
|
|
14
|
+
* @param extractStoryComponent - the framework's reading of a story file's component (its docs module).
|
|
15
|
+
*/
|
|
16
|
+
export declare const collectDocs: (packageDir: string, extractStoryComponent: ExtractStoryComponent) => CollectedDocs;
|
|
17
|
+
//# sourceMappingURL=collectDocs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectDocs.d.ts","sourceRoot":"","sources":["../../../bin/forgebook-docs/collectDocs.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,0BAA0B,CAAC;AAIlC,4CAA4C;AAC5C,MAAM,MAAM,aAAa,GAAG;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AA+EF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,YAAY,MAAM,EAClB,uBAAuB,qBAAqB,KAC3C,aA8BF,CAAC"}
|