@synergy-design-system/mcp 0.1.0 → 1.1.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.
- package/CHANGELOG.md +15 -0
- package/README.md +539 -3
- package/dist/bin/create-checksum.d.ts +2 -0
- package/dist/bin/create-checksum.js +23 -0
- package/dist/bin/start.d.ts +2 -0
- package/dist/bin/start.js +8 -0
- package/dist/build/assets.d.ts +4 -0
- package/dist/build/assets.js +57 -0
- package/dist/build/build.d.ts +1 -0
- package/dist/build/build.js +33 -0
- package/dist/build/components.d.ts +4 -0
- package/dist/build/components.js +132 -0
- package/dist/build/frameworks.d.ts +4 -0
- package/dist/build/frameworks.js +61 -0
- package/dist/build/static.d.ts +4 -0
- package/dist/build/static.js +57 -0
- package/dist/build/styles.d.ts +4 -0
- package/dist/build/styles.js +58 -0
- package/dist/build/tokens.d.ts +4 -0
- package/dist/build/tokens.js +59 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +20 -0
- package/dist/tools/asset-info.d.ts +8 -0
- package/dist/tools/asset-info.js +140 -0
- package/dist/tools/asset-list.d.ts +6 -0
- package/dist/tools/asset-list.js +40 -0
- package/dist/tools/component-info.d.ts +6 -0
- package/dist/tools/component-info.js +35 -0
- package/dist/tools/component-list.d.ts +7 -0
- package/dist/tools/component-list.js +42 -0
- package/dist/tools/davinci-migration.d.ts +3 -0
- package/dist/tools/davinci-migration.js +66 -0
- package/dist/tools/framework-info.d.ts +7 -0
- package/dist/tools/framework-info.js +59 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/migration-info.d.ts +6 -0
- package/dist/tools/migration-info.js +27 -0
- package/dist/tools/styles-info.d.ts +7 -0
- package/dist/tools/styles-info.js +28 -0
- package/dist/tools/styles-list.d.ts +7 -0
- package/dist/tools/styles-list.js +42 -0
- package/dist/tools/template-info.d.ts +6 -0
- package/dist/tools/template-info.js +34 -0
- package/dist/tools/template-list.d.ts +7 -0
- package/dist/tools/template-list.js +42 -0
- package/dist/tools/tokens.d.ts +7 -0
- package/dist/tools/tokens.js +24 -0
- package/dist/tools/version.d.ts +7 -0
- package/dist/tools/version.js +51 -0
- package/dist/utilities/assets.d.ts +2 -0
- package/dist/utilities/assets.js +3 -0
- package/dist/utilities/checksum.d.ts +36 -0
- package/dist/utilities/checksum.js +93 -0
- package/dist/utilities/components.d.ts +25 -0
- package/dist/utilities/components.js +86 -0
- package/dist/utilities/config.d.ts +76 -0
- package/dist/utilities/config.js +77 -0
- package/dist/utilities/file.d.ts +12 -0
- package/dist/utilities/file.js +31 -0
- package/dist/utilities/index.d.ts +12 -0
- package/dist/utilities/index.js +12 -0
- package/dist/utilities/metadata.d.ts +28 -0
- package/dist/utilities/metadata.js +57 -0
- package/dist/utilities/migration.d.ts +1 -0
- package/dist/utilities/migration.js +10 -0
- package/dist/utilities/stdio.d.ts +14 -0
- package/dist/utilities/stdio.js +60 -0
- package/dist/utilities/storybook/build-docs.d.ts +2 -0
- package/dist/utilities/storybook/build-docs.js +42 -0
- package/dist/utilities/storybook/configs.d.ts +13 -0
- package/dist/utilities/storybook/configs.js +85 -0
- package/dist/utilities/storybook/docs-scraper.d.ts +26 -0
- package/dist/utilities/storybook/docs-scraper.js +97 -0
- package/dist/utilities/storybook/index.d.ts +5 -0
- package/dist/utilities/storybook/index.js +4 -0
- package/dist/utilities/storybook/scraper.d.ts +14 -0
- package/dist/utilities/storybook/scraper.js +196 -0
- package/dist/utilities/storybook/storybook-manager.d.ts +29 -0
- package/dist/utilities/storybook/storybook-manager.js +139 -0
- package/dist/utilities/storybook/types.d.ts +22 -0
- package/dist/utilities/storybook/types.js +1 -0
- package/dist/utilities/styles.d.ts +6 -0
- package/dist/utilities/styles.js +24 -0
- package/dist/utilities/templates.d.ts +12 -0
- package/dist/utilities/templates.js +28 -0
- package/dist/utilities/tokens.d.ts +1 -0
- package/dist/utilities/tokens.js +21 -0
- package/dist/utilities/version.d.ts +10 -0
- package/dist/utilities/version.js +21 -0
- package/metadata/checksum.txt +1 -0
- package/metadata/davinci-migration/migration-guide.md +1859 -0
- package/metadata/packages/angular/LIMITATIONS.md +32 -0
- package/metadata/packages/angular/README.md +393 -0
- package/metadata/packages/assets/CHANGELOG.md +196 -0
- package/metadata/packages/assets/README.md +79 -0
- package/metadata/packages/components/components/syn-accordion/component.angular.ts +80 -0
- package/metadata/packages/components/components/syn-accordion/component.react.ts +30 -0
- package/metadata/packages/components/components/syn-accordion/component.styles.ts +15 -0
- package/metadata/packages/components/components/syn-accordion/component.ts +111 -0
- package/metadata/packages/components/components/syn-accordion/component.vue +64 -0
- package/metadata/packages/components/components/syn-alert/component.angular.ts +158 -0
- package/metadata/packages/components/components/syn-alert/component.custom.styles.ts +90 -0
- package/metadata/packages/components/components/syn-alert/component.react.ts +60 -0
- package/metadata/packages/components/components/syn-alert/component.styles.ts +110 -0
- package/metadata/packages/components/components/syn-alert/component.ts +324 -0
- package/metadata/packages/components/components/syn-alert/component.vue +130 -0
- package/metadata/packages/components/components/syn-badge/component.angular.ts +53 -0
- package/metadata/packages/components/components/syn-badge/component.custom.styles.ts +61 -0
- package/metadata/packages/components/components/syn-badge/component.react.ts +29 -0
- package/metadata/packages/components/components/syn-badge/component.styles.ts +59 -0
- package/metadata/packages/components/components/syn-badge/component.ts +65 -0
- package/metadata/packages/components/components/syn-badge/component.vue +53 -0
- package/metadata/packages/components/components/syn-breadcrumb/component.angular.ts +58 -0
- package/metadata/packages/components/components/syn-breadcrumb/component.custom.styles.ts +5 -0
- package/metadata/packages/components/components/syn-breadcrumb/component.react.ts +32 -0
- package/metadata/packages/components/components/syn-breadcrumb/component.styles.ts +18 -0
- package/metadata/packages/components/components/syn-breadcrumb/component.ts +110 -0
- package/metadata/packages/components/components/syn-breadcrumb/component.vue +58 -0
- package/metadata/packages/components/components/syn-breadcrumb-item/component.angular.ts +88 -0
- package/metadata/packages/components/components/syn-breadcrumb-item/component.custom.styles.ts +74 -0
- package/metadata/packages/components/components/syn-breadcrumb-item/component.react.ts +37 -0
- package/metadata/packages/components/components/syn-breadcrumb-item/component.styles.ts +95 -0
- package/metadata/packages/components/components/syn-breadcrumb-item/component.ts +139 -0
- package/metadata/packages/components/components/syn-breadcrumb-item/component.vue +76 -0
- package/metadata/packages/components/components/syn-button/component.angular.ts +318 -0
- package/metadata/packages/components/components/syn-button/component.custom.styles.ts +206 -0
- package/metadata/packages/components/components/syn-button/component.react.ts +56 -0
- package/metadata/packages/components/components/syn-button/component.styles.ts +368 -0
- package/metadata/packages/components/components/syn-button/component.ts +322 -0
- package/metadata/packages/components/components/syn-button/component.vue +204 -0
- package/metadata/packages/components/components/syn-button-group/component.angular.ts +55 -0
- package/metadata/packages/components/components/syn-button-group/component.react.ts +29 -0
- package/metadata/packages/components/components/syn-button-group/component.styles.ts +21 -0
- package/metadata/packages/components/components/syn-button-group/component.ts +103 -0
- package/metadata/packages/components/components/syn-button-group/component.vue +55 -0
- package/metadata/packages/components/components/syn-card/component.angular.ts +69 -0
- package/metadata/packages/components/components/syn-card/component.custom.styles.ts +55 -0
- package/metadata/packages/components/components/syn-card/component.react.ts +41 -0
- package/metadata/packages/components/components/syn-card/component.styles.ts +77 -0
- package/metadata/packages/components/components/syn-card/component.ts +68 -0
- package/metadata/packages/components/components/syn-card/component.vue +67 -0
- package/metadata/packages/components/components/syn-checkbox/component.angular.ts +260 -0
- package/metadata/packages/components/components/syn-checkbox/component.custom.styles.ts +53 -0
- package/metadata/packages/components/components/syn-checkbox/component.react.ts +64 -0
- package/metadata/packages/components/components/syn-checkbox/component.styles.ts +130 -0
- package/metadata/packages/components/components/syn-checkbox/component.ts +291 -0
- package/metadata/packages/components/components/syn-checkbox/component.vue +186 -0
- package/metadata/packages/components/components/syn-combobox/component.angular.ts +436 -0
- package/metadata/packages/components/components/syn-combobox/component.custom.styles.ts +35 -0
- package/metadata/packages/components/components/syn-combobox/component.react.ts +109 -0
- package/metadata/packages/components/components/syn-combobox/component.styles.ts +406 -0
- package/metadata/packages/components/components/syn-combobox/component.ts +1139 -0
- package/metadata/packages/components/components/syn-combobox/component.vue +304 -0
- package/metadata/packages/components/components/syn-details/component.angular.ts +184 -0
- package/metadata/packages/components/components/syn-details/component.custom.styles.ts +140 -0
- package/metadata/packages/components/components/syn-details/component.react.ts +63 -0
- package/metadata/packages/components/components/syn-details/component.styles.ts +90 -0
- package/metadata/packages/components/components/syn-details/component.ts +266 -0
- package/metadata/packages/components/components/syn-details/component.vue +134 -0
- package/metadata/packages/components/components/syn-dialog/component.angular.ts +201 -0
- package/metadata/packages/components/components/syn-dialog/component.custom.styles.ts +54 -0
- package/metadata/packages/components/components/syn-dialog/component.react.ts +91 -0
- package/metadata/packages/components/components/syn-dialog/component.styles.ts +129 -0
- package/metadata/packages/components/components/syn-dialog/component.ts +366 -0
- package/metadata/packages/components/components/syn-dialog/component.vue +169 -0
- package/metadata/packages/components/components/syn-divider/component.angular.ts +55 -0
- package/metadata/packages/components/components/syn-divider/component.custom.styles.ts +8 -0
- package/metadata/packages/components/components/syn-divider/component.react.ts +29 -0
- package/metadata/packages/components/components/syn-divider/component.styles.ts +31 -0
- package/metadata/packages/components/components/syn-divider/component.ts +42 -0
- package/metadata/packages/components/components/syn-divider/component.vue +51 -0
- package/metadata/packages/components/components/syn-drawer/component.angular.ts +234 -0
- package/metadata/packages/components/components/syn-drawer/component.custom.styles.ts +78 -0
- package/metadata/packages/components/components/syn-drawer/component.react.ts +98 -0
- package/metadata/packages/components/components/syn-drawer/component.styles.ts +165 -0
- package/metadata/packages/components/components/syn-drawer/component.ts +496 -0
- package/metadata/packages/components/components/syn-drawer/component.vue +188 -0
- package/metadata/packages/components/components/syn-dropdown/component.angular.ts +223 -0
- package/metadata/packages/components/components/syn-dropdown/component.custom.styles.ts +5 -0
- package/metadata/packages/components/components/syn-dropdown/component.react.ts +59 -0
- package/metadata/packages/components/components/syn-dropdown/component.styles.ts +60 -0
- package/metadata/packages/components/components/syn-dropdown/component.ts +484 -0
- package/metadata/packages/components/components/syn-dropdown/component.vue +159 -0
- package/metadata/packages/components/components/syn-file/component.angular.ts +359 -0
- package/metadata/packages/components/components/syn-file/component.react.ts +85 -0
- package/metadata/packages/components/components/syn-file/component.styles.ts +179 -0
- package/metadata/packages/components/components/syn-file/component.ts +631 -0
- package/metadata/packages/components/components/syn-file/component.vue +251 -0
- package/metadata/packages/components/components/syn-header/component.angular.ts +132 -0
- package/metadata/packages/components/components/syn-header/component.react.ts +65 -0
- package/metadata/packages/components/components/syn-header/component.styles.ts +128 -0
- package/metadata/packages/components/components/syn-header/component.ts +260 -0
- package/metadata/packages/components/components/syn-header/component.vue +117 -0
- package/metadata/packages/components/components/syn-icon/component.angular.ts +115 -0
- package/metadata/packages/components/components/syn-icon/component.custom.styles.ts +5 -0
- package/metadata/packages/components/components/syn-icon/component.react.ts +41 -0
- package/metadata/packages/components/components/syn-icon/component.styles.ts +25 -0
- package/metadata/packages/components/components/syn-icon/component.ts +234 -0
- package/metadata/packages/components/components/syn-icon/component.vue +100 -0
- package/metadata/packages/components/components/syn-icon-button/component.angular.ts +185 -0
- package/metadata/packages/components/components/syn-icon-button/component.custom.styles.ts +68 -0
- package/metadata/packages/components/components/syn-icon-button/component.react.ts +42 -0
- package/metadata/packages/components/components/syn-icon-button/component.styles.ts +59 -0
- package/metadata/packages/components/components/syn-icon-button/component.ts +154 -0
- package/metadata/packages/components/components/syn-icon-button/component.vue +132 -0
- package/metadata/packages/components/components/syn-input/component.angular.ts +606 -0
- package/metadata/packages/components/components/syn-input/component.custom.styles.ts +278 -0
- package/metadata/packages/components/components/syn-input/component.react.ts +91 -0
- package/metadata/packages/components/components/syn-input/component.styles.ts +287 -0
- package/metadata/packages/components/components/syn-input/component.ts +942 -0
- package/metadata/packages/components/components/syn-input/component.vue +370 -0
- package/metadata/packages/components/components/syn-menu/component.angular.ts +52 -0
- package/metadata/packages/components/components/syn-menu/component.custom.styles.ts +29 -0
- package/metadata/packages/components/components/syn-menu/component.react.ts +36 -0
- package/metadata/packages/components/components/syn-menu/component.styles.ts +27 -0
- package/metadata/packages/components/components/syn-menu/component.ts +199 -0
- package/metadata/packages/components/components/syn-menu/component.vue +48 -0
- package/metadata/packages/components/components/syn-menu-item/component.angular.ts +121 -0
- package/metadata/packages/components/components/syn-menu-item/component.custom.styles.ts +128 -0
- package/metadata/packages/components/components/syn-menu-item/component.react.ts +45 -0
- package/metadata/packages/components/components/syn-menu-item/component.styles.ts +164 -0
- package/metadata/packages/components/components/syn-menu-item/component.ts +209 -0
- package/metadata/packages/components/components/syn-menu-item/component.vue +91 -0
- package/metadata/packages/components/components/syn-menu-label/component.angular.ts +48 -0
- package/metadata/packages/components/components/syn-menu-label/component.custom.styles.ts +24 -0
- package/metadata/packages/components/components/syn-menu-label/component.react.ts +35 -0
- package/metadata/packages/components/components/syn-menu-label/component.styles.ts +28 -0
- package/metadata/packages/components/components/syn-menu-label/component.ts +54 -0
- package/metadata/packages/components/components/syn-menu-label/component.vue +41 -0
- package/metadata/packages/components/components/syn-nav-item/component.angular.ts +242 -0
- package/metadata/packages/components/components/syn-nav-item/component.react.ts +82 -0
- package/metadata/packages/components/components/syn-nav-item/component.styles.ts +337 -0
- package/metadata/packages/components/components/syn-nav-item/component.ts +492 -0
- package/metadata/packages/components/components/syn-nav-item/component.vue +182 -0
- package/metadata/packages/components/components/syn-optgroup/component.angular.ts +79 -0
- package/metadata/packages/components/components/syn-optgroup/component.react.ts +41 -0
- package/metadata/packages/components/components/syn-optgroup/component.styles.ts +59 -0
- package/metadata/packages/components/components/syn-optgroup/component.ts +176 -0
- package/metadata/packages/components/components/syn-optgroup/component.vue +71 -0
- package/metadata/packages/components/components/syn-option/component.angular.ts +79 -0
- package/metadata/packages/components/components/syn-option/component.custom.styles.ts +81 -0
- package/metadata/packages/components/components/syn-option/component.react.ts +37 -0
- package/metadata/packages/components/components/syn-option/component.styles.ts +96 -0
- package/metadata/packages/components/components/syn-option/component.ts +174 -0
- package/metadata/packages/components/components/syn-option/component.vue +71 -0
- package/metadata/packages/components/components/syn-popup/component.angular.ts +385 -0
- package/metadata/packages/components/components/syn-popup/component.react.ts +55 -0
- package/metadata/packages/components/components/syn-popup/component.styles.ts +70 -0
- package/metadata/packages/components/components/syn-popup/component.ts +583 -0
- package/metadata/packages/components/components/syn-popup/component.vue +240 -0
- package/metadata/packages/components/components/syn-prio-nav/component.angular.ts +67 -0
- package/metadata/packages/components/components/syn-prio-nav/component.react.ts +54 -0
- package/metadata/packages/components/components/syn-prio-nav/component.styles.ts +48 -0
- package/metadata/packages/components/components/syn-prio-nav/component.ts +287 -0
- package/metadata/packages/components/components/syn-prio-nav/component.vue +60 -0
- package/metadata/packages/components/components/syn-progress-bar/component.angular.ts +85 -0
- package/metadata/packages/components/components/syn-progress-bar/component.custom.styles.ts +22 -0
- package/metadata/packages/components/components/syn-progress-bar/component.react.ts +37 -0
- package/metadata/packages/components/components/syn-progress-bar/component.styles.ts +94 -0
- package/metadata/packages/components/components/syn-progress-bar/component.ts +74 -0
- package/metadata/packages/components/components/syn-progress-bar/component.vue +71 -0
- package/metadata/packages/components/components/syn-progress-ring/component.angular.ts +72 -0
- package/metadata/packages/components/components/syn-progress-ring/component.custom.styles.ts +17 -0
- package/metadata/packages/components/components/syn-progress-ring/component.react.ts +37 -0
- package/metadata/packages/components/components/syn-progress-ring/component.styles.ts +77 -0
- package/metadata/packages/components/components/syn-progress-ring/component.ts +90 -0
- package/metadata/packages/components/components/syn-progress-ring/component.vue +66 -0
- package/metadata/packages/components/components/syn-radio/component.angular.ts +109 -0
- package/metadata/packages/components/components/syn-radio/component.custom.styles.ts +73 -0
- package/metadata/packages/components/components/syn-radio/component.react.ts +48 -0
- package/metadata/packages/components/components/syn-radio/component.styles.ts +124 -0
- package/metadata/packages/components/components/syn-radio/component.ts +129 -0
- package/metadata/packages/components/components/syn-radio/component.vue +99 -0
- package/metadata/packages/components/components/syn-radio-button/component.angular.ts +123 -0
- package/metadata/packages/components/components/syn-radio-button/component.react.ts +49 -0
- package/metadata/packages/components/components/syn-radio-button/component.styles.ts +37 -0
- package/metadata/packages/components/components/syn-radio-button/component.ts +149 -0
- package/metadata/packages/components/components/syn-radio-button/component.vue +105 -0
- package/metadata/packages/components/components/syn-radio-group/component.angular.ts +204 -0
- package/metadata/packages/components/components/syn-radio-group/component.custom.styles.ts +22 -0
- package/metadata/packages/components/components/syn-radio-group/component.react.ts +56 -0
- package/metadata/packages/components/components/syn-radio-group/component.styles.ts +44 -0
- package/metadata/packages/components/components/syn-radio-group/component.ts +418 -0
- package/metadata/packages/components/components/syn-radio-group/component.vue +158 -0
- package/metadata/packages/components/components/syn-range/component.angular.ts +334 -0
- package/metadata/packages/components/components/syn-range/component.react.ts +92 -0
- package/metadata/packages/components/components/syn-range/component.styles.ts +284 -0
- package/metadata/packages/components/components/syn-range/component.ts +878 -0
- package/metadata/packages/components/components/syn-range/component.vue +240 -0
- package/metadata/packages/components/components/syn-range-tick/component.angular.ts +59 -0
- package/metadata/packages/components/components/syn-range-tick/component.react.ts +33 -0
- package/metadata/packages/components/components/syn-range-tick/component.styles.ts +34 -0
- package/metadata/packages/components/components/syn-range-tick/component.ts +50 -0
- package/metadata/packages/components/components/syn-range-tick/component.vue +57 -0
- package/metadata/packages/components/components/syn-resize-observer/component.styles.ts +16 -0
- package/metadata/packages/components/components/syn-resize-observer/component.ts +98 -0
- package/metadata/packages/components/components/syn-select/component.angular.ts +441 -0
- package/metadata/packages/components/components/syn-select/component.custom.styles.ts +176 -0
- package/metadata/packages/components/components/syn-select/component.react.ts +101 -0
- package/metadata/packages/components/components/syn-select/component.styles.ts +316 -0
- package/metadata/packages/components/components/syn-select/component.ts +1054 -0
- package/metadata/packages/components/components/syn-select/component.vue +303 -0
- package/metadata/packages/components/components/syn-side-nav/component.angular.ts +231 -0
- package/metadata/packages/components/components/syn-side-nav/component.react.ts +95 -0
- package/metadata/packages/components/components/syn-side-nav/component.styles.ts +160 -0
- package/metadata/packages/components/components/syn-side-nav/component.ts +492 -0
- package/metadata/packages/components/components/syn-side-nav/component.vue +201 -0
- package/metadata/packages/components/components/syn-spinner/component.angular.ts +44 -0
- package/metadata/packages/components/components/syn-spinner/component.custom.styles.ts +31 -0
- package/metadata/packages/components/components/syn-spinner/component.react.ts +31 -0
- package/metadata/packages/components/components/syn-spinner/component.styles.ts +55 -0
- package/metadata/packages/components/components/syn-spinner/component.ts +42 -0
- package/metadata/packages/components/components/syn-spinner/component.vue +35 -0
- package/metadata/packages/components/components/syn-switch/component.angular.ts +244 -0
- package/metadata/packages/components/components/syn-switch/component.custom.styles.ts +112 -0
- package/metadata/packages/components/components/syn-switch/component.react.ts +63 -0
- package/metadata/packages/components/components/syn-switch/component.styles.ts +177 -0
- package/metadata/packages/components/components/syn-switch/component.ts +274 -0
- package/metadata/packages/components/components/syn-switch/component.vue +178 -0
- package/metadata/packages/components/components/syn-tab/component.angular.ts +109 -0
- package/metadata/packages/components/components/syn-tab/component.custom.styles.ts +92 -0
- package/metadata/packages/components/components/syn-tab/component.react.ts +42 -0
- package/metadata/packages/components/components/syn-tab/component.styles.ts +77 -0
- package/metadata/packages/components/components/syn-tab/component.ts +132 -0
- package/metadata/packages/components/components/syn-tab/component.vue +91 -0
- package/metadata/packages/components/components/syn-tab-group/component.angular.ts +166 -0
- package/metadata/packages/components/components/syn-tab-group/component.custom.styles.ts +248 -0
- package/metadata/packages/components/components/syn-tab-group/component.react.ts +58 -0
- package/metadata/packages/components/components/syn-tab-group/component.styles.ts +200 -0
- package/metadata/packages/components/components/syn-tab-group/component.ts +557 -0
- package/metadata/packages/components/components/syn-tab-group/component.vue +126 -0
- package/metadata/packages/components/components/syn-tab-panel/component.angular.ts +68 -0
- package/metadata/packages/components/components/syn-tab-panel/component.custom.styles.ts +8 -0
- package/metadata/packages/components/components/syn-tab-panel/component.react.ts +31 -0
- package/metadata/packages/components/components/syn-tab-panel/component.styles.ts +27 -0
- package/metadata/packages/components/components/syn-tab-panel/component.ts +67 -0
- package/metadata/packages/components/components/syn-tab-panel/component.vue +60 -0
- package/metadata/packages/components/components/syn-tag/component.angular.ts +83 -0
- package/metadata/packages/components/components/syn-tag/component.custom.styles.ts +120 -0
- package/metadata/packages/components/components/syn-tag/component.react.ts +43 -0
- package/metadata/packages/components/components/syn-tag/component.styles.ts +65 -0
- package/metadata/packages/components/components/syn-tag/component.ts +90 -0
- package/metadata/packages/components/components/syn-tag/component.vue +81 -0
- package/metadata/packages/components/components/syn-textarea/component.angular.ts +394 -0
- package/metadata/packages/components/components/syn-textarea/component.custom.styles.ts +18 -0
- package/metadata/packages/components/components/syn-textarea/component.react.ts +60 -0
- package/metadata/packages/components/components/syn-textarea/component.styles.ts +187 -0
- package/metadata/packages/components/components/syn-textarea/component.ts +401 -0
- package/metadata/packages/components/components/syn-textarea/component.vue +244 -0
- package/metadata/packages/components/components/syn-tooltip/component.angular.ts +212 -0
- package/metadata/packages/components/components/syn-tooltip/component.custom.styles.ts +13 -0
- package/metadata/packages/components/components/syn-tooltip/component.react.ts +63 -0
- package/metadata/packages/components/components/syn-tooltip/component.styles.ts +64 -0
- package/metadata/packages/components/components/syn-tooltip/component.ts +319 -0
- package/metadata/packages/components/components/syn-tooltip/component.vue +158 -0
- package/metadata/packages/components/components/syn-validate/component.angular.ts +128 -0
- package/metadata/packages/components/components/syn-validate/component.react.ts +36 -0
- package/metadata/packages/components/components/syn-validate/component.styles.ts +9 -0
- package/metadata/packages/components/components/syn-validate/component.ts +437 -0
- package/metadata/packages/components/components/syn-validate/component.vue +98 -0
- package/metadata/packages/components/migration/BREAKING_CHANGES.md +489 -0
- package/metadata/packages/components/migration/migration-synergy-v3.md +50 -0
- package/metadata/packages/components/static/CHANGELOG.md +1107 -0
- package/metadata/packages/components/static/LIMITATIONS.md +269 -0
- package/metadata/packages/components/static/README.md +248 -0
- package/metadata/packages/react/LIMITATIONS.md +31 -0
- package/metadata/packages/react/README.md +262 -0
- package/metadata/packages/styles/CHANGELOG.md +76 -0
- package/metadata/packages/styles/README.md +132 -0
- package/metadata/packages/styles/index.css +309 -0
- package/metadata/packages/styles/link-list.css +47 -0
- package/metadata/packages/styles/link.css +79 -0
- package/metadata/packages/styles/tables.css +143 -0
- package/metadata/packages/styles/typography.css +52 -0
- package/metadata/packages/tokens/CHANGELOG.md +431 -0
- package/metadata/packages/tokens/README.md +408 -0
- package/metadata/packages/tokens/dark.css +268 -0
- package/metadata/packages/tokens/index.js +1294 -0
- package/metadata/packages/tokens/light.css +268 -0
- package/metadata/packages/vue/LIMITATIONS.md +53 -0
- package/metadata/packages/vue/README.md +252 -0
- package/metadata/static/angular/index.md +6 -0
- package/metadata/static/assets/index.md +10 -0
- package/metadata/static/component-info/index.md +24 -0
- package/metadata/static/component-list/index.md +34 -0
- package/metadata/static/components/index.md +10 -0
- package/metadata/static/components/syn-accordion/docs.md +428 -0
- package/metadata/static/components/syn-alert/docs.md +231 -0
- package/metadata/static/components/syn-badge/docs.md +128 -0
- package/metadata/static/components/syn-breadcrumb/docs.md +265 -0
- package/metadata/static/components/syn-breadcrumb-item/docs.md +49 -0
- package/metadata/static/components/syn-button/docs.md +402 -0
- package/metadata/static/components/syn-card/docs.md +273 -0
- package/metadata/static/components/syn-checkbox/docs.md +77 -0
- package/metadata/static/components/syn-combobox/docs.md +2402 -0
- package/metadata/static/components/syn-details/docs.md +220 -0
- package/metadata/static/components/syn-dialog/docs.md +222 -0
- package/metadata/static/components/syn-divider/docs.md +77 -0
- package/metadata/static/components/syn-drawer/docs.md +271 -0
- package/metadata/static/components/syn-dropdown/docs.md +316 -0
- package/metadata/static/components/syn-file/docs.md +215 -0
- package/metadata/static/components/syn-header/docs.md +134 -0
- package/metadata/static/components/syn-icon/docs.md +177 -0
- package/metadata/static/components/syn-icon-button/docs.md +142 -0
- package/metadata/static/components/syn-input/docs.md +460 -0
- package/metadata/static/components/syn-menu/docs.md +162 -0
- package/metadata/static/components/syn-menu-item/docs.md +196 -0
- package/metadata/static/components/syn-menu-label/docs.md +29 -0
- package/metadata/static/components/syn-nav-item/docs.md +161 -0
- package/metadata/static/components/syn-optgroup/docs.md +167 -0
- package/metadata/static/components/syn-option/docs.md +137 -0
- package/metadata/static/components/syn-prio-nav/docs.md +54 -0
- package/metadata/static/components/syn-progress-bar/docs.md +77 -0
- package/metadata/static/components/syn-progress-ring/docs.md +89 -0
- package/metadata/static/components/syn-radio/docs.md +123 -0
- package/metadata/static/components/syn-radio-group/docs.md +363 -0
- package/metadata/static/components/syn-range/docs.md +419 -0
- package/metadata/static/components/syn-range-tick/docs.md +110 -0
- package/metadata/static/components/syn-select/docs.md +730 -0
- package/metadata/static/components/syn-side-nav/docs.md +593 -0
- package/metadata/static/components/syn-spinner/docs.md +45 -0
- package/metadata/static/components/syn-switch/docs.md +74 -0
- package/metadata/static/components/syn-tab/docs.md +47 -0
- package/metadata/static/components/syn-tab-group/docs.md +1094 -0
- package/metadata/static/components/syn-tab-panel/docs.md +91 -0
- package/metadata/static/components/syn-tag/docs.md +50 -0
- package/metadata/static/components/syn-textarea/docs.md +215 -0
- package/metadata/static/components/syn-tooltip/docs.md +144 -0
- package/metadata/static/components/syn-validate/docs.md +225 -0
- package/metadata/static/migration/index.md +16 -0
- package/metadata/static/react/index.md +8 -0
- package/metadata/static/setup/icon-usage.md +276 -0
- package/metadata/static/setup/prerequisites.md +171 -0
- package/metadata/static/styles/index.md +11 -0
- package/metadata/static/styles/syn-body.md +5 -0
- package/metadata/static/styles/syn-heading.md +5 -0
- package/metadata/static/styles/syn-link-list.md +325 -0
- package/metadata/static/styles/syn-link.md +156 -0
- package/metadata/static/styles/syn-table-cell.md +125 -0
- package/metadata/static/styles/syn-table.md +201 -0
- package/metadata/static/styles/syn-weight.md +5 -0
- package/metadata/static/templates/appshell.md +2061 -0
- package/metadata/static/templates/breadcrumb.md +375 -0
- package/metadata/static/templates/footer.md +342 -0
- package/metadata/static/templates/forms.md +369 -0
- package/metadata/static/templates/index.md +9 -0
- package/metadata/static/templates/table.md +1426 -0
- package/metadata/static/vue/index.md +6 -0
- package/package.json +109 -4
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import storybookOutput from '@synergy-design-system/docs/dist/index.json' with { type: 'json' };
|
|
2
|
+
import { staticComponentPath, staticStylesPath, templatesPath, } from '../config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get stories from Storybook output based on a prefix.
|
|
5
|
+
* @param prefix Prefix to filter stories by
|
|
6
|
+
* @returns List of stories matching the prefix
|
|
7
|
+
*/
|
|
8
|
+
const getStoriesFromStorybook = (prefix) => {
|
|
9
|
+
const foundStories = Object
|
|
10
|
+
.entries(storybookOutput.entries)
|
|
11
|
+
.filter(([key]) => key.startsWith(`${prefix}-`) && key.endsWith('-docs'))
|
|
12
|
+
.map(([, value]) => value)
|
|
13
|
+
.reduce((acc, story) => {
|
|
14
|
+
const componentName = story.id.split('--')[0].replace(`${prefix}-`, '');
|
|
15
|
+
acc[componentName] = story.id;
|
|
16
|
+
return acc;
|
|
17
|
+
}, {});
|
|
18
|
+
return foundStories;
|
|
19
|
+
};
|
|
20
|
+
const componentStories = getStoriesFromStorybook('components');
|
|
21
|
+
const styleStories = getStoriesFromStorybook('styles');
|
|
22
|
+
const templateStories = getStoriesFromStorybook('templates');
|
|
23
|
+
/**
|
|
24
|
+
* Configuration for scraping component documentation
|
|
25
|
+
*/
|
|
26
|
+
export const componentScrapingConfig = {
|
|
27
|
+
formatContent: (component, stories) => {
|
|
28
|
+
const content = stories.map(story => `
|
|
29
|
+
## ${story.heading}
|
|
30
|
+
|
|
31
|
+
${story.description}
|
|
32
|
+
|
|
33
|
+
\`\`\`html
|
|
34
|
+
${story.example}
|
|
35
|
+
\`\`\`
|
|
36
|
+
`).join('\n---\n');
|
|
37
|
+
return content;
|
|
38
|
+
},
|
|
39
|
+
generateOutputPath: (component) => `${staticComponentPath}/${component}/docs.md`,
|
|
40
|
+
generateStoryId: (component) => componentStories[component],
|
|
41
|
+
getItems: async () => Object.keys(componentStories),
|
|
42
|
+
outputPath: staticComponentPath,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Configuration for scraping styles documentation
|
|
46
|
+
*/
|
|
47
|
+
export const stylesScrapingConfig = {
|
|
48
|
+
formatContent: (style, stories) => {
|
|
49
|
+
const content = stories.map(story => `
|
|
50
|
+
## ${story.heading}
|
|
51
|
+
|
|
52
|
+
${story.description}
|
|
53
|
+
|
|
54
|
+
\`\`\`html
|
|
55
|
+
${story.example}
|
|
56
|
+
\`\`\`
|
|
57
|
+
`).join('\n---\n');
|
|
58
|
+
return content;
|
|
59
|
+
},
|
|
60
|
+
generateOutputPath: (style) => `${staticStylesPath}/${style}.md`,
|
|
61
|
+
generateStoryId: (component) => styleStories[component],
|
|
62
|
+
getItems: async () => Object.keys(styleStories),
|
|
63
|
+
outputPath: staticStylesPath,
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Configuration for scraping template documentation
|
|
67
|
+
*/
|
|
68
|
+
export const templateScrapingConfig = {
|
|
69
|
+
formatContent: (template, stories) => {
|
|
70
|
+
const content = stories.map(story => `
|
|
71
|
+
## ${story.heading}
|
|
72
|
+
|
|
73
|
+
${story.description}
|
|
74
|
+
|
|
75
|
+
\`\`\`html
|
|
76
|
+
${story.example}
|
|
77
|
+
\`\`\`
|
|
78
|
+
`).join('\n---\n');
|
|
79
|
+
return content;
|
|
80
|
+
},
|
|
81
|
+
generateOutputPath: (template) => `${templatesPath}/${template}.md`,
|
|
82
|
+
generateStoryId: (component) => templateStories[component],
|
|
83
|
+
getItems: async () => Object.keys(templateStories),
|
|
84
|
+
outputPath: staticStylesPath,
|
|
85
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ScrapingConfig } from './types.js';
|
|
2
|
+
export declare class DocsScraper {
|
|
3
|
+
private baseUrl;
|
|
4
|
+
constructor(baseUrl?: string);
|
|
5
|
+
/**
|
|
6
|
+
* Run the scraping process for a specific configuration
|
|
7
|
+
*/
|
|
8
|
+
scrapeWithConfig(config: ScrapingConfig): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Scrape component documentation
|
|
11
|
+
*/
|
|
12
|
+
scrapeComponents(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Scrape styles documentation
|
|
15
|
+
*/
|
|
16
|
+
scrapeStyles(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Scrape styles documentation
|
|
19
|
+
*/
|
|
20
|
+
scrapeTemplates(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Scrape all documentation types
|
|
23
|
+
*/
|
|
24
|
+
scrapeAll(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare function runDocsScraper(type?: 'components' | 'styles' | 'templates' | 'all', baseUrl?: string): Promise<void>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { StorybookScraper } from './scraper.js';
|
|
3
|
+
import { componentScrapingConfig, stylesScrapingConfig, templateScrapingConfig, } from './configs.js';
|
|
4
|
+
export class DocsScraper {
|
|
5
|
+
baseUrl;
|
|
6
|
+
constructor(baseUrl = 'http://localhost:6006') {
|
|
7
|
+
this.baseUrl = baseUrl;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Run the scraping process for a specific configuration
|
|
11
|
+
*/
|
|
12
|
+
async scrapeWithConfig(config) {
|
|
13
|
+
try {
|
|
14
|
+
console.log(`Using Storybook server at ${this.baseUrl}`);
|
|
15
|
+
// Create scraper and run
|
|
16
|
+
const scraper = new StorybookScraper(config);
|
|
17
|
+
await scraper.scrapeAll(this.baseUrl);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error('Error during scraping process:', error);
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Scrape component documentation
|
|
26
|
+
*/
|
|
27
|
+
async scrapeComponents() {
|
|
28
|
+
console.log('Starting component documentation scraping...');
|
|
29
|
+
await this.scrapeWithConfig(componentScrapingConfig);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Scrape styles documentation
|
|
33
|
+
*/
|
|
34
|
+
async scrapeStyles() {
|
|
35
|
+
console.log('Starting styles documentation scraping...');
|
|
36
|
+
await this.scrapeWithConfig(stylesScrapingConfig);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Scrape styles documentation
|
|
40
|
+
*/
|
|
41
|
+
async scrapeTemplates() {
|
|
42
|
+
console.log('Starting templates documentation scraping...');
|
|
43
|
+
await this.scrapeWithConfig(templateScrapingConfig);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Scrape all documentation types
|
|
47
|
+
*/
|
|
48
|
+
async scrapeAll() {
|
|
49
|
+
console.log('Starting comprehensive documentation scraping...');
|
|
50
|
+
try {
|
|
51
|
+
console.log(`Using Storybook server at ${this.baseUrl}`);
|
|
52
|
+
// Scrape components
|
|
53
|
+
console.log('Scraping component documentation...');
|
|
54
|
+
const componentScraper = new StorybookScraper(componentScrapingConfig);
|
|
55
|
+
await componentScraper.scrapeAll(this.baseUrl);
|
|
56
|
+
// Scrape styles
|
|
57
|
+
console.log('Scraping styles documentation...');
|
|
58
|
+
const stylesScraper = new StorybookScraper(stylesScrapingConfig);
|
|
59
|
+
await stylesScraper.scrapeAll(this.baseUrl);
|
|
60
|
+
// Scrape templates
|
|
61
|
+
console.log('Scraping templates documentation...');
|
|
62
|
+
const templatesScraper = new StorybookScraper(templateScrapingConfig);
|
|
63
|
+
await templatesScraper.scrapeAll(this.baseUrl);
|
|
64
|
+
console.log('All documentation scraping completed successfully!');
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('Error during comprehensive scraping process:', error);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// CLI usage helper
|
|
73
|
+
export async function runDocsScraper(type = 'all', baseUrl = 'http://localhost:6006') {
|
|
74
|
+
const scraper = new DocsScraper(baseUrl);
|
|
75
|
+
try {
|
|
76
|
+
switch (type) {
|
|
77
|
+
case 'components':
|
|
78
|
+
await scraper.scrapeComponents();
|
|
79
|
+
break;
|
|
80
|
+
case 'styles':
|
|
81
|
+
await scraper.scrapeStyles();
|
|
82
|
+
break;
|
|
83
|
+
case 'templates':
|
|
84
|
+
await scraper.scrapeTemplates();
|
|
85
|
+
break;
|
|
86
|
+
case 'all':
|
|
87
|
+
await scraper.scrapeAll();
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
throw new Error(`Unknown scraping type: ${type}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error('Scraping failed:', error);
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { StaticServerManager } from './storybook-manager.js';
|
|
2
|
+
export { StorybookScraper } from './scraper.js';
|
|
3
|
+
export { DocsScraper, runDocsScraper } from './docs-scraper.js';
|
|
4
|
+
export { componentScrapingConfig, stylesScrapingConfig } from './configs.js';
|
|
5
|
+
export type { ScrapingConfig, ScrapedStory, StorybookServer } from './types.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Browser } from 'playwright';
|
|
2
|
+
import { ScrapedStory, ScrapingConfig } from './types.js';
|
|
3
|
+
export declare class StorybookScraper {
|
|
4
|
+
private config;
|
|
5
|
+
constructor(config: ScrapingConfig);
|
|
6
|
+
/**
|
|
7
|
+
* Scrape a single story from Storybook
|
|
8
|
+
*/
|
|
9
|
+
static scrapeStoryDocs(storyId: string, baseUrl?: string, browser?: Browser): Promise<ScrapedStory[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Scrape all configured items and write documentation
|
|
12
|
+
*/
|
|
13
|
+
scrapeAll(baseUrl?: string): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { chromium } from 'playwright';
|
|
5
|
+
import prettier from 'prettier';
|
|
6
|
+
export class StorybookScraper {
|
|
7
|
+
config;
|
|
8
|
+
constructor(config) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Scrape a single story from Storybook
|
|
13
|
+
*/
|
|
14
|
+
static async scrapeStoryDocs(storyId, baseUrl = 'http://localhost:6006', browser) {
|
|
15
|
+
const shouldCloseBrowser = !browser;
|
|
16
|
+
const browserInstance = browser || await chromium.launch({
|
|
17
|
+
headless: true,
|
|
18
|
+
});
|
|
19
|
+
const page = await browserInstance.newPage({
|
|
20
|
+
viewport: {
|
|
21
|
+
height: 768,
|
|
22
|
+
width: 1024,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
const scrapingReport = {
|
|
26
|
+
error: null,
|
|
27
|
+
foundStories: 0,
|
|
28
|
+
processedStories: 0,
|
|
29
|
+
status: 'pending',
|
|
30
|
+
storyDetails: [],
|
|
31
|
+
storyId,
|
|
32
|
+
};
|
|
33
|
+
try {
|
|
34
|
+
// Navigate to the Storybook docs page
|
|
35
|
+
await page.goto(`${baseUrl}/iframe?viewMode=docs&id=${storyId}&globals=`);
|
|
36
|
+
// Wait for the content to load
|
|
37
|
+
await page.waitForSelector('.sb-anchor');
|
|
38
|
+
// Extract the stories metadata first
|
|
39
|
+
// We get basic info and identify stories that need iframe content
|
|
40
|
+
const storyMetadata = await page.evaluate(() => Array.from(document.querySelectorAll('.sb-anchor'))
|
|
41
|
+
.map((story, index) => {
|
|
42
|
+
const description = story.querySelector(':scope > p')?.textContent || '';
|
|
43
|
+
const exampleSource = story.querySelector('.sb-story #root-inner')?.innerHTML || '';
|
|
44
|
+
const heading = story.querySelector('h3')?.textContent || '';
|
|
45
|
+
const hasIframe = !!story.querySelector('.sb-story iframe');
|
|
46
|
+
return {
|
|
47
|
+
description,
|
|
48
|
+
exampleSource,
|
|
49
|
+
hasIframe,
|
|
50
|
+
heading,
|
|
51
|
+
index,
|
|
52
|
+
};
|
|
53
|
+
})
|
|
54
|
+
.filter(x => x.heading));
|
|
55
|
+
// Process each story and handle iframe content if needed
|
|
56
|
+
const results = await Promise.all(storyMetadata.map(async (storyMeta) => {
|
|
57
|
+
let { exampleSource } = storyMeta;
|
|
58
|
+
// If no inline content and there's an iframe, try to get content from iframe
|
|
59
|
+
if (!exampleSource && storyMeta.hasIframe) {
|
|
60
|
+
try {
|
|
61
|
+
const storySection = page.locator('.sb-anchor').nth(storyMeta.index);
|
|
62
|
+
const frame = await storySection.frameLocator('iframe');
|
|
63
|
+
const frameContent = await frame.locator('#root-inner').innerHTML();
|
|
64
|
+
exampleSource = frameContent || '';
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// If iframe content extraction fails, continue with empty content
|
|
68
|
+
console.log(`Failed to extract iframe content for story "${storyMeta.heading}"`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Replace all lit internal comments
|
|
72
|
+
// Lit comments look like this: <!----> or <!--?lit$SOMENUMBER$-->
|
|
73
|
+
const example = exampleSource
|
|
74
|
+
// Remove comments that start with ?lit (with any content after)
|
|
75
|
+
.replace(/<!--\?lit\$[^>]*-->/g, '')
|
|
76
|
+
// Remove empty comments
|
|
77
|
+
.replace(/<!--\s*-->/g, '')
|
|
78
|
+
// Clean up any resulting multiple consecutive whitespace/newlines
|
|
79
|
+
.replace(/\n\s*\n\s*\n/g, '\n\n')
|
|
80
|
+
// Remove all data attributes as they may be dynamic data
|
|
81
|
+
.replace(/ data-[^=]+="[^"]*"/g, '')
|
|
82
|
+
// Trim leading/trailing whitespace
|
|
83
|
+
.trim();
|
|
84
|
+
return {
|
|
85
|
+
description: storyMeta.description,
|
|
86
|
+
example,
|
|
87
|
+
heading: storyMeta.heading,
|
|
88
|
+
};
|
|
89
|
+
}));
|
|
90
|
+
// Filter out stories without examples
|
|
91
|
+
const validResults = results.filter(x => x.heading && x.example);
|
|
92
|
+
scrapingReport.foundStories = validResults.length;
|
|
93
|
+
if (validResults.length === 0) {
|
|
94
|
+
throw new Error(`No stories found for ${storyId}`);
|
|
95
|
+
}
|
|
96
|
+
const processedStories = await Promise.all(validResults.map(async (story, index) => {
|
|
97
|
+
try {
|
|
98
|
+
const formattedExample = await prettier.format(story.example, {
|
|
99
|
+
parser: 'html',
|
|
100
|
+
});
|
|
101
|
+
scrapingReport.storyDetails.push({
|
|
102
|
+
heading: story.heading,
|
|
103
|
+
status: 'success',
|
|
104
|
+
});
|
|
105
|
+
scrapingReport.processedStories += 1;
|
|
106
|
+
return {
|
|
107
|
+
description: story.description,
|
|
108
|
+
example: formattedExample,
|
|
109
|
+
heading: story.heading,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
114
|
+
scrapingReport.storyDetails.push({
|
|
115
|
+
error: errorMessage,
|
|
116
|
+
heading: story.heading || `Story ${index + 1}`,
|
|
117
|
+
status: 'error',
|
|
118
|
+
});
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
}));
|
|
122
|
+
scrapingReport.status = 'success';
|
|
123
|
+
return processedStories;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
scrapingReport.error = error instanceof Error ? error : new Error(String(error));
|
|
127
|
+
scrapingReport.status = 'error';
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
await page.close();
|
|
132
|
+
if (shouldCloseBrowser) {
|
|
133
|
+
await browserInstance.close();
|
|
134
|
+
}
|
|
135
|
+
// Generate final report
|
|
136
|
+
if (scrapingReport.status !== 'success') {
|
|
137
|
+
console.log(`📊 Scraping Report for ${storyId}:`);
|
|
138
|
+
console.log(' Status: ❌ Error');
|
|
139
|
+
console.log(` Found Stories: ${scrapingReport.foundStories}`);
|
|
140
|
+
console.log(` Processed Stories: ${scrapingReport.processedStories}`);
|
|
141
|
+
if (scrapingReport.storyDetails.length > 0) {
|
|
142
|
+
console.log(' Story Details:');
|
|
143
|
+
scrapingReport.storyDetails.forEach((detail, index) => {
|
|
144
|
+
const statusIcon = detail.status === 'success' ? '✅' : '❌';
|
|
145
|
+
console.log(` ${index + 1}. ${statusIcon} ${detail.heading}`);
|
|
146
|
+
if (detail.error) {
|
|
147
|
+
console.log(` Error: ${detail.error}`);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
if (scrapingReport.error) {
|
|
152
|
+
console.log(` Error Details: ${scrapingReport.error.message}`);
|
|
153
|
+
}
|
|
154
|
+
console.log(''); // Empty line for readability
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Scrape all configured items and write documentation
|
|
160
|
+
*/
|
|
161
|
+
async scrapeAll(baseUrl = 'http://localhost:6006') {
|
|
162
|
+
console.log('Starting scraping process...');
|
|
163
|
+
const items = await this.config.getItems();
|
|
164
|
+
// Create a single browser instance for all scraping operations
|
|
165
|
+
const browser = await chromium.launch({
|
|
166
|
+
headless: true,
|
|
167
|
+
});
|
|
168
|
+
try {
|
|
169
|
+
const scrapedPages = await Promise.all(items.map(async (item) => {
|
|
170
|
+
const storyId = this.config.generateStoryId(item);
|
|
171
|
+
const stories = await StorybookScraper.scrapeStoryDocs(storyId, baseUrl, browser);
|
|
172
|
+
return {
|
|
173
|
+
item,
|
|
174
|
+
stories,
|
|
175
|
+
};
|
|
176
|
+
}));
|
|
177
|
+
console.log('Writing documentation files...');
|
|
178
|
+
// Write out the results
|
|
179
|
+
await Promise.all(scrapedPages.map(async ({ item, stories }) => {
|
|
180
|
+
const filePath = this.config.generateOutputPath(item);
|
|
181
|
+
// Ensure the directory exists before writing
|
|
182
|
+
const dir = dirname(filePath);
|
|
183
|
+
await mkdir(dir, { recursive: true });
|
|
184
|
+
const content = await prettier.format(this.config.formatContent(item, stories), {
|
|
185
|
+
parser: 'markdown',
|
|
186
|
+
});
|
|
187
|
+
await writeFile(filePath, content, 'utf-8');
|
|
188
|
+
}));
|
|
189
|
+
console.log('Scraping process completed successfully!');
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
// Always close the browser, even if an error occurs
|
|
193
|
+
await browser.close();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { StorybookServer } from './types.js';
|
|
2
|
+
export declare class StaticServerManager {
|
|
3
|
+
private server;
|
|
4
|
+
private serverInfo;
|
|
5
|
+
/**
|
|
6
|
+
* Check if a port is available
|
|
7
|
+
*/
|
|
8
|
+
private static isPortAvailable;
|
|
9
|
+
/**
|
|
10
|
+
* Find an available port starting from the default port
|
|
11
|
+
*/
|
|
12
|
+
private static findAvailablePort;
|
|
13
|
+
/**
|
|
14
|
+
* Start the static file server for Storybook
|
|
15
|
+
*/
|
|
16
|
+
start(port?: number): Promise<StorybookServer>;
|
|
17
|
+
/**
|
|
18
|
+
* Stop the static server
|
|
19
|
+
*/
|
|
20
|
+
stop(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Get the current server information
|
|
23
|
+
*/
|
|
24
|
+
getServer(): StorybookServer | null;
|
|
25
|
+
/**
|
|
26
|
+
* Check if static server is currently running
|
|
27
|
+
*/
|
|
28
|
+
isRunning(): boolean;
|
|
29
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { createServer } from 'http';
|
|
3
|
+
import { promisify } from 'node:util';
|
|
4
|
+
import { exec } from 'node:child_process';
|
|
5
|
+
import { dirname, resolve } from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
8
|
+
import handler from 'serve-handler';
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
// Get current directory for resolving the Storybook build path
|
|
11
|
+
const filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const currentDir = dirname(filename);
|
|
13
|
+
export class StaticServerManager {
|
|
14
|
+
server = null;
|
|
15
|
+
serverInfo = null;
|
|
16
|
+
/**
|
|
17
|
+
* Check if a port is available
|
|
18
|
+
*/
|
|
19
|
+
static async isPortAvailable(port) {
|
|
20
|
+
try {
|
|
21
|
+
const { stdout } = await execAsync(`lsof -ti:${port}`);
|
|
22
|
+
return stdout.trim() === '';
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find an available port starting from the default port
|
|
30
|
+
*/
|
|
31
|
+
static async findAvailablePort(startPort = 6006) {
|
|
32
|
+
let port = startPort;
|
|
33
|
+
// eslint-disable-next-line no-await-in-loop
|
|
34
|
+
while (!(await StaticServerManager.isPortAvailable(port))) {
|
|
35
|
+
port += 1;
|
|
36
|
+
if (port > startPort + 100) {
|
|
37
|
+
throw new Error('Could not find available port for static server');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return port;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Start the static file server for Storybook
|
|
44
|
+
*/
|
|
45
|
+
async start(port = 6006) {
|
|
46
|
+
if (this.serverInfo?.isRunning) {
|
|
47
|
+
console.log('Static server is already running');
|
|
48
|
+
return this.serverInfo;
|
|
49
|
+
}
|
|
50
|
+
const availablePort = await StaticServerManager.findAvailablePort(port);
|
|
51
|
+
const url = `http://localhost:${availablePort}`;
|
|
52
|
+
const storybookDistPath = resolve(currentDir, '../../../../docs/dist');
|
|
53
|
+
console.log(`Starting static server on port ${availablePort}...`);
|
|
54
|
+
console.log(`Serving files from: ${storybookDistPath}`);
|
|
55
|
+
this.server = createServer((request, response) => {
|
|
56
|
+
// Add custom URL rewriting before serve-handler
|
|
57
|
+
const originalUrl = request.url || '';
|
|
58
|
+
// Handle iframe.html -> iframe rewrite manually
|
|
59
|
+
if (originalUrl.startsWith('/iframe.html')) {
|
|
60
|
+
const rewrittenUrl = originalUrl.replace('/iframe.html', '/iframe');
|
|
61
|
+
request.url = rewrittenUrl;
|
|
62
|
+
}
|
|
63
|
+
return handler(request, response, {
|
|
64
|
+
headers: [
|
|
65
|
+
{
|
|
66
|
+
headers: [
|
|
67
|
+
{
|
|
68
|
+
key: 'Cache-Control',
|
|
69
|
+
value: 'public, max-age=3600',
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
source: '**',
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
public: storybookDistPath,
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
// Start listening and wait for the server to be ready
|
|
79
|
+
await new Promise((resolvePromise, reject) => {
|
|
80
|
+
if (!this.server) {
|
|
81
|
+
reject(new Error('Server instance not created'));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Handle server errors
|
|
85
|
+
this.server.on('error', (error) => {
|
|
86
|
+
console.error('Static server error:', error);
|
|
87
|
+
reject(error);
|
|
88
|
+
});
|
|
89
|
+
// Server is ready when listening event fires
|
|
90
|
+
this.server.on('listening', () => {
|
|
91
|
+
console.log(`✓ Static server started successfully at ${url}`);
|
|
92
|
+
resolvePromise();
|
|
93
|
+
});
|
|
94
|
+
// Start the server
|
|
95
|
+
this.server.listen(availablePort);
|
|
96
|
+
});
|
|
97
|
+
this.serverInfo = {
|
|
98
|
+
isRunning: true,
|
|
99
|
+
port: availablePort,
|
|
100
|
+
url,
|
|
101
|
+
};
|
|
102
|
+
console.log(`Static server ready at ${url}`);
|
|
103
|
+
return this.serverInfo;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Stop the static server
|
|
107
|
+
*/
|
|
108
|
+
async stop() {
|
|
109
|
+
if (!this.server || !this.serverInfo) {
|
|
110
|
+
console.log('No static server to stop');
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
console.log('Stopping static server...');
|
|
114
|
+
await new Promise((resolvePromise) => {
|
|
115
|
+
if (!this.server) {
|
|
116
|
+
resolvePromise();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this.server.close(() => {
|
|
120
|
+
this.serverInfo = null;
|
|
121
|
+
this.server = null;
|
|
122
|
+
console.log('Static server stopped successfully');
|
|
123
|
+
resolvePromise();
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get the current server information
|
|
129
|
+
*/
|
|
130
|
+
getServer() {
|
|
131
|
+
return this.serverInfo;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check if static server is currently running
|
|
135
|
+
*/
|
|
136
|
+
isRunning() {
|
|
137
|
+
return this.serverInfo?.isRunning ?? false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface ScrapingConfig {
|
|
2
|
+
/** The output directory path */
|
|
3
|
+
outputPath: string;
|
|
4
|
+
/** Function to get the list of items to scrape */
|
|
5
|
+
getItems: () => Promise<string[]> | string[];
|
|
6
|
+
/** Function to generate the story ID from an item */
|
|
7
|
+
generateStoryId: (item: string) => string;
|
|
8
|
+
/** Function to generate the output file path from an item */
|
|
9
|
+
generateOutputPath: (item: string) => string;
|
|
10
|
+
/** Function to format the scraped content */
|
|
11
|
+
formatContent: (item: string, stories: ScrapedStory[]) => string;
|
|
12
|
+
}
|
|
13
|
+
export interface ScrapedStory {
|
|
14
|
+
heading: string;
|
|
15
|
+
description: string;
|
|
16
|
+
example: string;
|
|
17
|
+
}
|
|
18
|
+
export interface StorybookServer {
|
|
19
|
+
port: number;
|
|
20
|
+
url: string;
|
|
21
|
+
isRunning: boolean;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const getStylesMetaData: () => Promise<(import("./metadata.js").MetadataFile | null)[]>;
|
|
2
|
+
/**
|
|
3
|
+
* Get a list of all available styles in the Synergy Design System.
|
|
4
|
+
* @returns A list of all available styles in the Synergy Design System.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getAvailableStyles: () => Promise<string[]>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import { staticStylesPath, stylesPath, } from './config.js';
|
|
3
|
+
import { getAbsolutePath } from './file.js';
|
|
4
|
+
import { getStructuredMetaData, } from './metadata.js';
|
|
5
|
+
export const getStylesMetaData = async () => {
|
|
6
|
+
const data = await getStructuredMetaData(stylesPath);
|
|
7
|
+
const additionalData = await getStructuredMetaData(staticStylesPath);
|
|
8
|
+
return [
|
|
9
|
+
...data,
|
|
10
|
+
...additionalData,
|
|
11
|
+
];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Get a list of all available styles in the Synergy Design System.
|
|
15
|
+
* @returns A list of all available styles in the Synergy Design System.
|
|
16
|
+
*/
|
|
17
|
+
export const getAvailableStyles = async () => {
|
|
18
|
+
const absolutePath = getAbsolutePath(`${stylesPath}`);
|
|
19
|
+
const files = await fs.readdir(absolutePath, { withFileTypes: true });
|
|
20
|
+
const styles = files
|
|
21
|
+
.filter(file => file.isFile() && file.name !== 'index.css' && file.name.endsWith('css'))
|
|
22
|
+
.map(file => file.name.replace('.css', ''));
|
|
23
|
+
return styles;
|
|
24
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const getTemplateMetaData: () => Promise<(import("./metadata.js").MetadataFile | null)[]>;
|
|
2
|
+
/**
|
|
3
|
+
* Get a list of all available templates in the Synergy Design System.
|
|
4
|
+
* @returns A list of all available templates in the Synergy Design System.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getAvailableTemplates: () => Promise<string[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Get information about a specific template in the Synergy Design System.
|
|
9
|
+
* @param template The name of the template to get information about, e.g., 'appshell'.
|
|
10
|
+
* @returns Structured metadata for the specified template.
|
|
11
|
+
*/
|
|
12
|
+
export declare const getInfoForTemplate: (template: string) => Promise<(import("./metadata.js").MetadataFile | null)[]>;
|