Add comprehensive development roadmap via GitHub Issues
Created 10 detailed GitHub issues covering: - Project activation and management UI (#1-2) - Worker node coordination and visualization (#3-4) - Automated GitHub repository scanning (#5) - Intelligent model-to-issue matching (#6) - Multi-model task execution system (#7) - N8N workflow integration (#8) - Hive-Bzzz P2P bridge (#9) - Peer assistance protocol (#10) Each issue includes detailed specifications, acceptance criteria, technical implementation notes, and dependency mapping. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
169
frontend/node_modules/@storybook/builder-vite/README.md
generated
vendored
Normal file
169
frontend/node_modules/@storybook/builder-vite/README.md
generated
vendored
Normal file
@@ -0,0 +1,169 @@
|
||||
# Storybook builder for Vite <!-- omit in toc -->
|
||||
|
||||
Build your stories with [vite](https://vitejs.dev/) for fast startup times and near-instant HMR.
|
||||
|
||||
# Table of Contents <!-- omit in toc -->
|
||||
|
||||
- [Installation](#installation)
|
||||
- [Usage](#usage)
|
||||
- [Getting started with Vite and Storybook (on a new project)](#getting-started-with-vite-and-storybook-on-a-new-project)
|
||||
- [Migration from webpack / CRA](#migration-from-webpack--cra)
|
||||
- [Customize Vite config](#customize-vite-config)
|
||||
- [TypeScript](#typescript)
|
||||
- [React Docgen](#react-docgen)
|
||||
- [Note about working directory](#note-about-working-directory)
|
||||
- [Known issues](#known-issues)
|
||||
- [Contributing](#contributing)
|
||||
|
||||
## Installation
|
||||
|
||||
Requirements:
|
||||
|
||||
- Vite 3.0 or newer (4.X recommended)
|
||||
|
||||
When installing Storybook, use the `--builder=vite` flag if you do not have a `vite.config` file at your project root (if you do, the vite builder is chosen automatically).
|
||||
|
||||
## Usage
|
||||
|
||||
The builder supports both development mode in Storybook and building a static production version.
|
||||
|
||||
Your `vite.config` file will be used by Storybook. If you need to customize the Vite config for Storybook, you have two choices:
|
||||
|
||||
1. Set values in your `vite.config` conditionally, based on an environment variable, for example.
|
||||
2. Add a `viteFinal` config to your `.storybook/main.js` file. See [Customize Vite config](#customize-vite-config) for details.
|
||||
|
||||
### Getting started with Vite and Storybook (on a new project)
|
||||
|
||||
See https://vitejs.dev/guide/#scaffolding-your-first-vite-project,
|
||||
|
||||
```
|
||||
npm create vite@latest # follow the prompts
|
||||
npx storybook@latest init --builder vite && npm run storybook
|
||||
```
|
||||
|
||||
### Migration from webpack / CRA
|
||||
|
||||
1. Install `vite` and `@storybook/builder-vite`
|
||||
2. Remove any explicit project dependencies on `webpack`, `react-scripts`, and any other Webpack plugins or loaders.
|
||||
3. If you were previously using `@storybook/manager-webpack5`, you can remove it. Also remove `@storybook/builder-webpack5` or `@storybook/builder-webpack4` if they are installed.
|
||||
4. Choose a Vite-based Storybook "framework" to set in the `framework` option of your `.storybook/main.js` file.
|
||||
5. Remove Storybook Webpack cache (`rm -rf node_modules/.cache`)
|
||||
6. Update your `/public/index.html` file for Vite (be sure there are no `%PUBLIC_URL%` inside it, which is a CRA variable)
|
||||
7. Be sure that any files containing JSX syntax use a `.jsx` or `.tsx` file extension, which [Vite requires](https://vitejs.dev/guide/features.html#jsx). This includes `.storybook/preview.jsx` if it contains JSX syntax.
|
||||
8. For now you'll need to add a [workaround](https://github.com/storybookjs/storybook/issues/18399) for jest-mock relying on the node `global` variable by creating a `.storybook/preview-head.html` file containing the following:
|
||||
|
||||
```html
|
||||
<script>
|
||||
window.global = window;
|
||||
</script>
|
||||
```
|
||||
|
||||
9. Start up your Storybook using the same `yarn storybook` or `npm run storybook` commands you are used to.
|
||||
|
||||
For other details about the differences between Vite and Webpack projects, be sure to read through the [Vite documentation](https://vitejs.dev/).
|
||||
|
||||
### Customize Vite config
|
||||
|
||||
The builder _will_ read your `vite.config.js` file, though it may change some of the options in order to work correctly.
|
||||
It looks for the Vite config in the CWD. If your config is located elsewhere, specify the path using the `viteConfigPath` builder option:
|
||||
|
||||
```javascript
|
||||
// .storybook/main.mjs
|
||||
|
||||
const config = {
|
||||
framework: {
|
||||
name: '@storybook/react-vite', // Your framework name here.
|
||||
options: {
|
||||
builder: {
|
||||
viteConfigPath: '.storybook/customViteConfig.js',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
```
|
||||
|
||||
You can also override the merged Vite config:
|
||||
|
||||
```javascript
|
||||
// use `mergeConfig` to recursively merge Vite options
|
||||
import { mergeConfig } from 'vite';
|
||||
|
||||
const config = {
|
||||
async viteFinal(config, { configType }) {
|
||||
// Be sure to return the customized config
|
||||
return mergeConfig(config, {
|
||||
// Customize the Vite config for Storybook
|
||||
resolve: {
|
||||
alias: { foo: 'bar' },
|
||||
},
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
```
|
||||
|
||||
The `viteFinal` function will give you `config` which is the combination of your project's Vite config and the builder's own Vite config.
|
||||
You can tweak this as you want, for example to set up aliases, add new plugins etc.
|
||||
|
||||
The `configType` variable will be either `"DEVELOPMENT"` or `"PRODUCTION"`.
|
||||
|
||||
The function should return the updated Vite configuration.
|
||||
|
||||
### TypeScript
|
||||
|
||||
Configure your `.storybook/main.ts` to use TypeScript:
|
||||
|
||||
```typescript
|
||||
import type { StorybookConfig } from '@storybook/react-vite';
|
||||
|
||||
// (or whatever framework you are using)
|
||||
|
||||
const config: StorybookConfig = {
|
||||
// other storybook options...,
|
||||
async viteFinal(config, options) {
|
||||
// modify and return config
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
```
|
||||
|
||||
See [Customize Vite config](#customize-vite-config) for details about using `viteFinal`.
|
||||
|
||||
### React Docgen
|
||||
|
||||
Docgen is used in Storybook to populate the props table in docs view, the controls panel, and for several other addons. Docgen is supported in Svelte, Vue 3, and React. React docgen is configurable via the [`typescript.reactDocgen`](https://storybook.js.org/docs/api/main-config-typescript#reactdocgen) setting in `.storybook/main.js`.
|
||||
|
||||
```javascript
|
||||
export default {
|
||||
typescript: {
|
||||
reactDocgen: 'react-docgen`
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
If you're using TypeScript, we encourage you to experiment and see which option works better for your project.
|
||||
|
||||
### Note about working directory
|
||||
|
||||
The builder will by default enable Vite's [server.fs.strict](https://vitejs.dev/config/#server-fs-strict)
|
||||
option, for increased security. The default project `root` is set to the parent directory of the
|
||||
Storybook configuration directory. This can be overridden in [viteFinal](https://storybook.js.org/docs/api/main-config-vite-final).
|
||||
|
||||
## Known issues
|
||||
|
||||
- HMR: saving a story file does not hot-module-reload, a full reload happens instead. HMR works correctly when saving component files.
|
||||
|
||||
## Contributing
|
||||
|
||||
The Vite builder cannot build itself.
|
||||
|
||||
Are you willing to contribute? We are especially looking for Vue and Svelte experts, as the current maintainers are React users.
|
||||
|
||||
Have a look at the GitHub issues with the `vite` label for known bugs. If you find any new bugs,
|
||||
feel free to create an issue or send a pull request!
|
||||
|
||||
Please read the [How to contribute](/CONTRIBUTING.md) guide.
|
||||
30
frontend/node_modules/@storybook/builder-vite/dist/index.d.ts
generated
vendored
Normal file
30
frontend/node_modules/@storybook/builder-vite/dist/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
import { Builder, Options } from 'storybook/internal/types';
|
||||
import { UserConfig, InlineConfig, PluginOption } from 'vite';
|
||||
|
||||
type ViteStats = {
|
||||
toJson: () => any;
|
||||
};
|
||||
type ViteBuilder = Builder<UserConfig, ViteStats>;
|
||||
type ViteFinal = (config: InlineConfig, options: Options) => InlineConfig | Promise<InlineConfig>;
|
||||
type StorybookConfigVite = {
|
||||
viteFinal?: ViteFinal;
|
||||
};
|
||||
type BuilderOptions = {
|
||||
/** Path to `vite.config` file, relative to `process.cwd()`. */
|
||||
viteConfigPath?: string;
|
||||
};
|
||||
|
||||
/** Recursively removes all plugins with the names given Resolves async plugins */
|
||||
declare const withoutVitePlugins: <TPlugin>(plugins: TPlugin[] | undefined, namesToRemove: string[]) => Promise<TPlugin[]>;
|
||||
|
||||
/**
|
||||
* Returns true if ANY of the plugins in the array have a name that matches one of the names in the
|
||||
* names array. Will resolve any promises in the array.
|
||||
*/
|
||||
declare function hasVitePlugins(plugins: PluginOption[], names: string[]): Promise<boolean>;
|
||||
|
||||
declare function bail(): Promise<void>;
|
||||
declare const start: ViteBuilder['start'];
|
||||
declare const build: ViteBuilder['build'];
|
||||
|
||||
export { BuilderOptions, StorybookConfigVite, ViteBuilder, ViteFinal, bail, build, hasVitePlugins, start, withoutVitePlugins };
|
||||
84
frontend/node_modules/@storybook/builder-vite/dist/index.js
generated
vendored
Normal file
84
frontend/node_modules/@storybook/builder-vite/dist/index.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
104
frontend/node_modules/@storybook/builder-vite/dist/index.mjs
generated
vendored
Normal file
104
frontend/node_modules/@storybook/builder-vite/dist/index.mjs
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
99
frontend/node_modules/@storybook/builder-vite/input/iframe.html
generated
vendored
Normal file
99
frontend/node_modules/@storybook/builder-vite/input/iframe.html
generated
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
<!doctype html>
|
||||
<!--suppress HtmlUnknownTarget -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Storybook</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'Nunito Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('./sb-common-assets/nunito-sans-regular.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nunito Sans';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('./sb-common-assets/nunito-sans-italic.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nunito Sans';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('./sb-common-assets/nunito-sans-bold.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Nunito Sans';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('./sb-common-assets/nunito-sans-bold-italic.woff2') format('woff2');
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
window.CONFIG_TYPE = '[CONFIG_TYPE HERE]';
|
||||
window.LOGLEVEL = '[LOGLEVEL HERE]';
|
||||
window.FRAMEWORK_OPTIONS = '[FRAMEWORK_OPTIONS HERE]';
|
||||
window.CHANNEL_OPTIONS = '[CHANNEL_OPTIONS HERE]';
|
||||
window.FEATURES = '[FEATURES HERE]';
|
||||
window.STORIES = '[STORIES HERE]';
|
||||
window.DOCS_OPTIONS = '[DOCS_OPTIONS HERE]';
|
||||
window.TAGS_OPTIONS = '[TAGS_OPTIONS HERE]';
|
||||
|
||||
('OTHER_GLOBALS HERE');
|
||||
|
||||
// We do this so that "module && module.hot" etc. in Storybook source code
|
||||
// doesn't fail (it will simply be disabled)
|
||||
window.module = undefined;
|
||||
window.global = window;
|
||||
</script>
|
||||
<!-- [HEAD HTML SNIPPET HERE] -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- [BODY HTML SNIPPET HERE] -->
|
||||
<div id="storybook-root"></div>
|
||||
<div id="storybook-docs"></div>
|
||||
<script>
|
||||
function __onViteAppLoadingError(event) {
|
||||
const hostname = globalThis.location.hostname;
|
||||
if (hostname !== 'localhost' && globalThis.CONFIG_TYPE === 'DEVELOPMENT') {
|
||||
const message = `Failed to load the Storybook preview file 'vite-app.js':
|
||||
|
||||
It looks like you're visiting the Storybook development server on another hostname than localhost: '${hostname}', but you haven't configured the necessary security features to support this.
|
||||
Please re-run your Storybook development server with the '--host ${hostname}' flag, or manually configure your Vite allowedHosts configuration with viteFinal.
|
||||
|
||||
See:`;
|
||||
const docs = [
|
||||
'https://storybook.js.org/docs/api/cli-options#dev',
|
||||
'https://storybook.js.org/docs/api/main-config/main-config-vite-final',
|
||||
'https://vite.dev/config/server-options.html#server-allowedhosts',
|
||||
];
|
||||
console.error(`${message}\n${docs.map((doc) => `- ${doc}`).join('\n')}`);
|
||||
|
||||
document.getElementById('storybook-root').innerHTML =
|
||||
`<p style="color: red; max-width: 70ch">${message.replaceAll(
|
||||
'\n',
|
||||
'<br/>'
|
||||
)}<ul>${docs.map((doc) => `<li><a href='${doc}' target='_blank'>${doc}</a></li>`).join('')}<ul></p>`;
|
||||
return;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script
|
||||
type="module"
|
||||
src="virtual:/@storybook/builder-vite/vite-app.js"
|
||||
onerror="__onViteAppLoadingError(event)"
|
||||
></script>
|
||||
</body>
|
||||
</html>
|
||||
75
frontend/node_modules/@storybook/builder-vite/package.json
generated
vendored
Normal file
75
frontend/node_modules/@storybook/builder-vite/package.json
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"name": "@storybook/builder-vite",
|
||||
"version": "9.0.16",
|
||||
"description": "A plugin to run and build Storybooks with Vite",
|
||||
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme",
|
||||
"bugs": {
|
||||
"url": "https://github.com/storybookjs/storybook/issues"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/storybookjs/storybook.git",
|
||||
"directory": "code/builders/builder-vite"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/storybook"
|
||||
},
|
||||
"license": "MIT",
|
||||
"author": "Eirik Sletteberg",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"node": "./dist/index.js",
|
||||
"import": "./dist/index.mjs",
|
||||
"require": "./dist/index.js"
|
||||
},
|
||||
"./input/iframe.html": "./input/iframe.html",
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs",
|
||||
"types": "dist/index.d.ts",
|
||||
"files": [
|
||||
"dist/**/*",
|
||||
"input/**/*",
|
||||
"README.md",
|
||||
"*.js",
|
||||
"*.d.ts",
|
||||
"!src/**/*"
|
||||
],
|
||||
"scripts": {
|
||||
"check": "jiti ../../../scripts/prepare/check.ts",
|
||||
"prep": "jiti ../../../scripts/prepare/bundle.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@storybook/csf-plugin": "9.0.16",
|
||||
"ts-dedent": "^2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/find-cache-dir": "^3.2.1",
|
||||
"@types/node": "^22.0.0",
|
||||
"es-module-lexer": "^1.5.0",
|
||||
"find-cache-dir": "^3.0.0",
|
||||
"glob": "^10.0.0",
|
||||
"knitwork": "^1.1.0",
|
||||
"magic-string": "^0.30.0",
|
||||
"pathe": "^1.1.2",
|
||||
"slash": "^5.0.0",
|
||||
"vite": "^6.2.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"storybook": "^9.0.16",
|
||||
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"bundler": {
|
||||
"entries": [
|
||||
"./src/index.ts"
|
||||
],
|
||||
"platform": "node"
|
||||
},
|
||||
"gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae16"
|
||||
}
|
||||
Reference in New Issue
Block a user