From db418e1e56fd50009f51a2a96e190a9feaf133b7 Mon Sep 17 00:00:00 2001 From: Makito Date: Wed, 12 Mar 2025 10:32:05 +0800 Subject: [PATCH] feat(stage-ui): integrate histoire storyboard (#70) --- cspell.config.yaml | 3 +- packages/stage-ui/README.md | 16 + packages/stage-ui/build.config.ts | 2 +- packages/stage-ui/env.d.ts | 1 + packages/stage-ui/histoire.config.ts | 15 + packages/stage-ui/package.json | 13 +- .../src/components/Menu/IconItem.story.vue | 21 + .../stage-ui/src/components/Menu/IconItem.vue | 2 + .../components/Menu/IconStatusItem.story.vue | 27 + packages/stage-ui/stories/Colors.story.vue | 105 ++++ .../stories/ThemeColorsHueControl.vue | 41 ++ packages/stage-ui/stories/main.css | 41 ++ packages/stage-ui/stories/setup.ts | 3 + packages/stage-ui/stories/themes.css | 26 + packages/stage-ui/stories/transitions.css | 18 + packages/stage-ui/tsconfig.json | 5 + packages/stage-ui/uno.config.ts | 109 ++++ packages/stage-ui/vite.config.ts | 11 + pnpm-lock.yaml | 495 ++++++++++++++++-- 19 files changed, 909 insertions(+), 45 deletions(-) create mode 100644 packages/stage-ui/README.md create mode 100644 packages/stage-ui/env.d.ts create mode 100644 packages/stage-ui/histoire.config.ts create mode 100644 packages/stage-ui/src/components/Menu/IconItem.story.vue create mode 100644 packages/stage-ui/src/components/Menu/IconStatusItem.story.vue create mode 100644 packages/stage-ui/stories/Colors.story.vue create mode 100644 packages/stage-ui/stories/ThemeColorsHueControl.vue create mode 100755 packages/stage-ui/stories/main.css create mode 100644 packages/stage-ui/stories/setup.ts create mode 100644 packages/stage-ui/stories/themes.css create mode 100644 packages/stage-ui/stories/transitions.css create mode 100644 packages/stage-ui/uno.config.ts create mode 100644 packages/stage-ui/vite.config.ts diff --git a/cspell.config.yaml b/cspell.config.yaml index 1e0da871e..c0eab40ec 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -64,6 +64,7 @@ words: - hfup - higress - histoire + - histoire - hiyori - huggingface - huggingspace @@ -138,6 +139,7 @@ words: - sizecheck - smallserial - Sniglet + - ssml - stepfun - supergroup - superjson @@ -161,6 +163,5 @@ words: - xsai - xsschema - zhipu - - ssml ignoreWords: [] import: [] diff --git a/packages/stage-ui/README.md b/packages/stage-ui/README.md new file mode 100644 index 000000000..7aed57dd4 --- /dev/null +++ b/packages/stage-ui/README.md @@ -0,0 +1,16 @@ +# Stage UI + +Shared core for stage + +## Histoire (UI storyboard) + +https://histoire.dev/ + +``` +pnpm -F @proj-airi/stage-ui run story:dev +``` + +### Project structure + +1. If a story is bound to a specific component, it can be placed beside the component in the `src` folder. e.g., `MyComponent.story.vue` +2. If a story is not bound to a specific component, then it should be placed in the `stories` folder. e.g., `MyStory.story.vue` diff --git a/packages/stage-ui/build.config.ts b/packages/stage-ui/build.config.ts index 4ce3f9e08..41c988ceb 100644 --- a/packages/stage-ui/build.config.ts +++ b/packages/stage-ui/build.config.ts @@ -2,7 +2,7 @@ import { defineBuildConfig } from 'unbuild' export default defineBuildConfig({ entries: [ - { builder: 'mkdist', input: './src/components/', outDir: './dist/components', pattern: '**/*.vue', loaders: ['vue'] }, + { builder: 'mkdist', input: './src/components/', outDir: './dist/components', pattern: ['**/*.vue', '!**/*.story.vue'], loaders: ['vue'] }, { builder: 'mkdist', input: './src/components/', outDir: './dist/components', pattern: '**/*.ts', format: 'esm', loaders: ['js'] }, { builder: 'mkdist', input: './src/stores/', outDir: './dist/stores', pattern: '**/*.ts', format: 'esm', loaders: ['js'] }, { builder: 'mkdist', input: './src/constants/', outDir: './dist/constants', pattern: '**/*.ts', format: 'esm', loaders: ['js'] }, diff --git a/packages/stage-ui/env.d.ts b/packages/stage-ui/env.d.ts new file mode 100644 index 000000000..89cfee377 --- /dev/null +++ b/packages/stage-ui/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/stage-ui/histoire.config.ts b/packages/stage-ui/histoire.config.ts new file mode 100644 index 000000000..17c41a903 --- /dev/null +++ b/packages/stage-ui/histoire.config.ts @@ -0,0 +1,15 @@ +import { HstVue } from '@histoire/plugin-vue' +import { defineConfig } from 'histoire' + +export default defineConfig({ + plugins: [HstVue()], + setupFile: 'stories/setup.ts', + tree: { + groups: [ + { + id: 'design-system', + title: 'Design System', + }, + ], + }, +}) diff --git a/packages/stage-ui/package.json b/packages/stage-ui/package.json index 92a8c099e..ded5f72ca 100644 --- a/packages/stage-ui/package.json +++ b/packages/stage-ui/package.json @@ -49,12 +49,21 @@ "dev": "pnpm run stub", "stub": "unbuild --stub", "build": "unbuild", - "typecheck": "vue-tsc --noEmit" + "typecheck": "vue-tsc --noEmit", + "story:dev": "histoire dev", + "story:build": "histoire build", + "story:preview": "histoire preview" }, "devDependencies": { "@electron-toolkit/preload": "^3.0.1", + "@histoire/plugin-vue": "1.0.0-alpha.2", "@proj-airi/provider-transformers": "workspace:^", "@proj-airi/utils-transformers": "workspace:^", - "@xsai/embed": "catalog:" + "@unocss/reset": "^66.1.0-beta.3", + "@vitejs/plugin-vue": "^5.2.1", + "@xsai/embed": "catalog:", + "histoire": "1.0.0-alpha.2", + "unocss": "^66.1.0-beta.3", + "vite": "^6.2.1" } } diff --git a/packages/stage-ui/src/components/Menu/IconItem.story.vue b/packages/stage-ui/src/components/Menu/IconItem.story.vue new file mode 100644 index 000000000..506fe94e2 --- /dev/null +++ b/packages/stage-ui/src/components/Menu/IconItem.story.vue @@ -0,0 +1,21 @@ + + + diff --git a/packages/stage-ui/src/components/Menu/IconItem.vue b/packages/stage-ui/src/components/Menu/IconItem.vue index 59f3d4d4a..3aeaa2ab0 100644 --- a/packages/stage-ui/src/components/Menu/IconItem.vue +++ b/packages/stage-ui/src/components/Menu/IconItem.vue @@ -10,6 +10,7 @@ defineProps<{