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:
anthonyrawlins
2025-07-12 19:41:01 +10:00
parent 9a6a06da89
commit e89f2f4b7b
4980 changed files with 1501266 additions and 57 deletions

View File

@@ -0,0 +1,12 @@
import { applyDecorators } from './chunk-XLZBPYSH.mjs';
import { isForwardRef, isMemo, reactElementToJsxString } from './chunk-CKO6TW2F.mjs';
import { __export } from './chunk-XP5HYGXS.mjs';
import React, { createElement, isValidElement } from 'react';
import { logger } from 'storybook/internal/client-logger';
import { getDocgenSection, SourceType } from 'storybook/internal/docs-tools';
import { useRef, useEffect, emitTransformCode } from 'storybook/preview-api';
var entry_preview_docs_exports={};__export(entry_preview_docs_exports,{applyDecorators:()=>applyDecorators2,decorators:()=>decorators,parameters:()=>parameters});var reactElementToJSXString=reactElementToJsxString,toPascalCase=str=>str.charAt(0).toUpperCase()+str.slice(1),getReactSymbolName=elementType=>(elementType.$$typeof||elementType).toString().replace(/^Symbol\((.*)\)$/,"$1").split(".").map(segment=>segment.split("_").map(toPascalCase).join("")).join(".");function simplifyNodeForStringify(node){if(isValidElement(node)){let props=Object.keys(node.props).reduce((acc,cur)=>(acc[cur]=simplifyNodeForStringify(node.props[cur]),acc),{});return {...node,props,_owner:null}}return Array.isArray(node)?node.map(simplifyNodeForStringify):node}var renderJsx=(code,options)=>{if(typeof code>"u")return logger.warn("Too many skip or undefined component"),null;let renderedJSX=code,Type=renderedJSX.type;for(let i=0;i<options?.skip;i+=1){if(typeof renderedJSX>"u")return logger.warn("Cannot skip undefined element"),null;if(React.Children.count(renderedJSX)>1)return logger.warn("Trying to skip an array of elements"),null;typeof renderedJSX.props.children>"u"?(logger.warn("Not enough children to skip elements."),typeof renderedJSX.type=="function"&&renderedJSX.type.name===""&&(renderedJSX=React.createElement(Type,{...renderedJSX.props}))):typeof renderedJSX.props.children=="function"?renderedJSX=renderedJSX.props.children():renderedJSX=renderedJSX.props.children;}let displayNameDefaults;typeof options?.displayName=="string"?displayNameDefaults={showFunctions:!0,displayName:()=>options.displayName}:displayNameDefaults={displayName:el=>el.type.displayName?el.type.displayName:getDocgenSection(el.type,"displayName")?getDocgenSection(el.type,"displayName"):el.type.render?.displayName?el.type.render.displayName:typeof el.type=="symbol"||el.type.$$typeof&&typeof el.type.$$typeof=="symbol"?getReactSymbolName(el.type):el.type.name&&el.type.name!=="_default"?el.type.name:typeof el.type=="function"?"No Display Name":isForwardRef(el.type)?el.type.render.name:isMemo(el.type)?el.type.type.name:el.type};let opts={...displayNameDefaults,...{filterProps:(value,key)=>value!==void 0},...options};return React.Children.map(code,c=>{let child=typeof c=="number"?c.toString():c,string=(typeof reactElementToJSXString=="function"?reactElementToJSXString:reactElementToJSXString.default)(simplifyNodeForStringify(child),opts);if(string.indexOf("&quot;")>-1){let matches=string.match(/\S+=\\"([^"]*)\\"/g);matches&&matches.forEach(match=>{string=string.replace(match,match.replace(/&quot;/g,"'"));});}return string}).join(`
`).replace(/function\s+noRefCheck\(\)\s*\{\}/g,"() => {}")},defaultOpts={skip:0,showFunctions:!1,enableBeautify:!0,showDefaultProps:!1},skipJsxRender=context=>{let sourceParams=context?.parameters.docs?.source,isArgsStory=context?.parameters.__isArgsStory;return sourceParams?.type===SourceType.DYNAMIC?!1:!isArgsStory||sourceParams?.code||sourceParams?.type===SourceType.CODE},isMdx=node=>node.type?.displayName==="MDXCreateElement"&&!!node.props?.mdxType,mdxToJsx=node=>{if(!isMdx(node))return node;let{mdxType,originalType,children,...rest}=node.props,jsxChildren=[];return children&&(jsxChildren=(Array.isArray(children)?children:[children]).map(mdxToJsx)),createElement(originalType,rest,...jsxChildren)},jsxDecorator=(storyFn,context)=>{let jsx=useRef(void 0),story=storyFn(),skip=skipJsxRender(context),options={...defaultOpts,...context?.parameters.jsx||{}},storyJsx=context.originalStoryFn(context.args,context);return useEffect(()=>{if(skip)return;let sourceJsx=mdxToJsx(storyJsx),rendered=renderJsx(sourceJsx,options);rendered&&jsx.current!==rendered&&(emitTransformCode(rendered,context),jsx.current=rendered);}),story};var applyDecorators2=(storyFn,decorators2)=>{let jsxIndex=decorators2.findIndex(d=>d.originalFn===jsxDecorator),reorderedDecorators=jsxIndex===-1?decorators2:[...decorators2.splice(jsxIndex,1),...decorators2];return applyDecorators(storyFn,reorderedDecorators)};var decorators=[jsxDecorator],parameters={docs:{story:{inline:!0}}};
export { applyDecorators2 as applyDecorators, decorators, entry_preview_docs_exports, parameters };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
import { entry_preview_exports } from './chunk-MNKU3DTE.mjs';
import { entry_preview_argtypes_exports } from './chunk-N3U7HZRZ.mjs';
import { entry_preview_docs_exports } from './chunk-AWLHXXSE.mjs';
import { normalizeProjectAnnotations, composeConfigs, getCoreAnnotations } from 'storybook/preview-api';
function __definePreview(input){let composed,preview={_tag:"Preview",input,get composed(){if(composed)return composed;let{addons,...rest}=input;return composed=normalizeProjectAnnotations(composeConfigs([...getCoreAnnotations(),...addons??[],rest])),composed},meta(meta){return defineMeta(meta,this)}};return globalThis.globalProjectAnnotations=preview.composed,preview}function defineMeta(input,preview){return {_tag:"Meta",input,preview,get composed(){throw new Error("Not implemented")},story(story){return defineStory(story,this)}}}function defineStory(input,meta){return {_tag:"Story",input,meta,get composed(){throw new Error("Not implemented")}}}function __definePreview2(preview){return __definePreview({...preview,addons:[entry_preview_exports,entry_preview_argtypes_exports,entry_preview_docs_exports,...preview.addons??[]]})}
export { __definePreview2 as __definePreview };

View File

@@ -0,0 +1,6 @@
import React from 'react';
import { defaultDecorateStory } from 'storybook/preview-api';
var applyDecorators=(storyFn,decorators)=>defaultDecorateStory(context=>React.createElement(storyFn,context),decorators);
export { applyDecorators };

View File

@@ -0,0 +1,3 @@
var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __esm=(fn,res)=>function(){return fn&&(res=(0, fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __commonJS=(cb,mod)=>function(){return mod||(0, cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0});},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);
export { __commonJS, __esm, __export, __toCommonJS, __toESM };

View File

@@ -0,0 +1,15 @@
import * as storybook_internal_docs_tools from 'storybook/internal/docs-tools';
import { extractComponentDescription } from 'storybook/internal/docs-tools';
import { ArgTypesEnhancer } from 'storybook/internal/types';
import { R as ReactRenderer } from './types-5617c98e.js';
import 'react';
declare const parameters: {
docs: {
extractArgTypes: storybook_internal_docs_tools.ArgTypesExtractor;
extractComponentDescription: typeof extractComponentDescription;
};
};
declare const argTypesEnhancers: ArgTypesEnhancer<ReactRenderer>[];
export { argTypesEnhancers, parameters };

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
export { argTypesEnhancers, parameters } from './chunk-N3U7HZRZ.mjs';
import './chunk-CKO6TW2F.mjs';
import './chunk-XP5HYGXS.mjs';

View File

@@ -0,0 +1,17 @@
import { LegacyStoryFn, DecoratorFunction } from 'storybook/internal/types';
import { R as ReactRenderer } from './types-5617c98e.js';
import 'react';
declare const applyDecorators: (storyFn: LegacyStoryFn<ReactRenderer>, decorators: DecoratorFunction<ReactRenderer>[]) => LegacyStoryFn<ReactRenderer>;
declare const decorators: DecoratorFunction<ReactRenderer>[];
declare const parameters: {
docs: {
story: {
inline: boolean;
};
};
};
export { applyDecorators, decorators, parameters };

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
export { applyDecorators, decorators, parameters } from './chunk-AWLHXXSE.mjs';
import './chunk-XLZBPYSH.mjs';
import './chunk-CKO6TW2F.mjs';
import './chunk-XP5HYGXS.mjs';

View File

@@ -0,0 +1,7 @@
declare const parameters: {
react: {
rsc: boolean;
};
};
export { parameters };

View File

@@ -0,0 +1 @@
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var entry_preview_rsc_exports={};__export(entry_preview_rsc_exports,{parameters:()=>parameters});module.exports=__toCommonJS(entry_preview_rsc_exports);var parameters={react:{rsc:!0}};0&&(module.exports={parameters});

View File

@@ -0,0 +1,5 @@
import './chunk-XP5HYGXS.mjs';
var parameters={react:{rsc:!0}};
export { parameters };

View File

@@ -0,0 +1,20 @@
import { D as Decorator } from './public-types-f2c70f25.js';
import { ArgsStoryFn, RenderContext, BaseAnnotations, LegacyStoryFn, DecoratorFunction } from 'storybook/internal/types';
import { R as ReactRenderer } from './types-5617c98e.js';
import 'react';
declare const render: ArgsStoryFn<ReactRenderer>;
declare function renderToCanvas({ storyContext, unboundStoryFn, showMain, showException, forceRemount, }: RenderContext<ReactRenderer>, canvasElement: ReactRenderer['canvasElement']): Promise<() => Promise<void>>;
declare const mount: BaseAnnotations<ReactRenderer>['mount'];
declare const applyDecorators: (storyFn: LegacyStoryFn<ReactRenderer>, decorators: DecoratorFunction<ReactRenderer>[]) => LegacyStoryFn<ReactRenderer>;
declare const decorators: Decorator[];
declare const parameters: {
renderer: string;
};
declare const beforeAll: () => Promise<void>;
export { applyDecorators, beforeAll, decorators, mount, parameters, render, renderToCanvas };

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
export { beforeAll, decorators, mount, parameters, render, renderToCanvas } from './chunk-MNKU3DTE.mjs';
export { applyDecorators } from './chunk-XLZBPYSH.mjs';
import './chunk-XP5HYGXS.mjs';

91
frontend/node_modules/@storybook/react/dist/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,91 @@
import { M as Meta } from './public-types-f2c70f25.js';
export { A as AddMocks, D as Decorator, L as Loader, P as Preview, b as StoryContext, S as StoryFn, a as StoryObj } from './public-types-f2c70f25.js';
import { NamedOrDefaultProjectAnnotations, NormalizedProjectAnnotations, ProjectAnnotations, Args, StoryAnnotationsOrFn, ComposedStoryFn, Store_CSFExports, StoriesWithPartialProps } from 'storybook/internal/types';
export { ArgTypes, Args, Parameters, StrictArgs } from 'storybook/internal/types';
import { R as ReactRenderer } from './types-5617c98e.js';
export { a as ReactParameters } from './types-5617c98e.js';
export { ReactPreview, ReactStory, __definePreview } from './preview.js';
import 'react';
import 'storybook/internal/csf';
/**
* Function that sets the globalConfig of your storybook. The global config is the preview module of
* your .storybook folder.
*
* It should be run a single time, so that your global config (e.g. decorators) is applied to your
* stories when using `composeStories` or `composeStory`.
*
* Example:
*
* ```jsx
* // setup-file.js
* import { setProjectAnnotations } from '@storybook/react';
* import projectAnnotations from './.storybook/preview';
*
* setProjectAnnotations(projectAnnotations);
* ```
*
* @param projectAnnotations - E.g. (import * as projectAnnotations from '../.storybook/preview')
*/
declare function setProjectAnnotations(projectAnnotations: NamedOrDefaultProjectAnnotations<any> | NamedOrDefaultProjectAnnotations<any>[]): NormalizedProjectAnnotations<ReactRenderer>;
declare const INTERNAL_DEFAULT_PROJECT_ANNOTATIONS: ProjectAnnotations<ReactRenderer>;
/**
* Function that will receive a story along with meta (e.g. a default export from a .stories file)
* and optionally projectAnnotations e.g. (import * as projectAnnotations from
* '../.storybook/preview) and will return a composed component that has all
* args/parameters/decorators/etc combined and applied to it.
*
* It's very useful for reusing a story in scenarios outside of Storybook like unit testing.
*
* Example:
*
* ```jsx
* import { render } from '@testing-library/react';
* import { composeStory } from '@storybook/react';
* import Meta, { Primary as PrimaryStory } from './Button.stories';
*
* const Primary = composeStory(PrimaryStory, Meta);
*
* test('renders primary button with Hello World', () => {
* const { getByText } = render(<Primary>Hello world</Primary>);
* expect(getByText(/Hello world/i)).not.toBeNull();
* });
* ```
*
* @param story
* @param componentAnnotations - E.g. (import Meta from './Button.stories')
* @param [projectAnnotations] - E.g. (import * as projectAnnotations from '../.storybook/preview')
* this can be applied automatically if you use `setProjectAnnotations` in your setup files.
* @param [exportsName] - In case your story does not contain a name and you want it to have a name.
*/
declare function composeStory<TArgs extends Args = Args>(story: StoryAnnotationsOrFn<ReactRenderer, TArgs>, componentAnnotations: Meta<TArgs | any>, projectAnnotations?: ProjectAnnotations<ReactRenderer>, exportsName?: string): ComposedStoryFn<ReactRenderer, Partial<TArgs>>;
/**
* Function that will receive a stories import (e.g. `import * as stories from './Button.stories'`)
* and optionally projectAnnotations (e.g. `import * as projectAnnotations from
* '../.storybook/preview`) and will return an object containing all the stories passed, but now as
* a composed component that has all args/parameters/decorators/etc combined and applied to it.
*
* It's very useful for reusing stories in scenarios outside of Storybook like unit testing.
*
* Example:
*
* ```jsx
* import { render } from '@testing-library/react';
* import { composeStories } from '@storybook/react';
* import * as stories from './Button.stories';
*
* const { Primary, Secondary } = composeStories(stories);
*
* test('renders primary button with Hello World', () => {
* const { getByText } = render(<Primary>Hello world</Primary>);
* expect(getByText(/Hello world/i)).not.toBeNull();
* });
* ```
*
* @param csfExports - E.g. (import * as stories from './Button.stories')
* @param [projectAnnotations] - E.g. (import * as projectAnnotations from '../.storybook/preview')
* this can be applied automatically if you use `setProjectAnnotations` in your setup files.
*/
declare function composeStories<TModule extends Store_CSFExports<ReactRenderer, any>>(csfExports: TModule, projectAnnotations?: ProjectAnnotations<ReactRenderer>): Omit<StoriesWithPartialProps<ReactRenderer, TModule>, keyof Store_CSFExports>;
export { INTERNAL_DEFAULT_PROJECT_ANNOTATIONS, Meta, ReactRenderer, composeStories, composeStory, setProjectAnnotations };

46
frontend/node_modules/@storybook/react/dist/index.js generated vendored Normal file

File diff suppressed because one or more lines are too long

14
frontend/node_modules/@storybook/react/dist/index.mjs generated vendored Normal file
View File

@@ -0,0 +1,14 @@
export { __definePreview } from './chunk-XBCHTE6T.mjs';
import { entry_preview_exports, renderToCanvas } from './chunk-MNKU3DTE.mjs';
import { entry_preview_argtypes_exports } from './chunk-N3U7HZRZ.mjs';
import './chunk-AWLHXXSE.mjs';
import './chunk-XLZBPYSH.mjs';
import './chunk-CKO6TW2F.mjs';
import './chunk-XP5HYGXS.mjs';
import { global } from '@storybook/global';
import * as React from 'react';
import { composeConfigs, setDefaultProjectAnnotations, setProjectAnnotations as setProjectAnnotations$1, composeStory as composeStory$1, composeStories as composeStories$1 } from 'storybook/preview-api';
var{window:globalWindow}=global;globalWindow&&(globalWindow.STORYBOOK_ENV="react");function setProjectAnnotations(projectAnnotations){return setDefaultProjectAnnotations(INTERNAL_DEFAULT_PROJECT_ANNOTATIONS),setProjectAnnotations$1(projectAnnotations)}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS=composeConfigs([entry_preview_exports,entry_preview_argtypes_exports,{renderToCanvas:async(renderContext,canvasElement)=>{if(renderContext.storyContext.testingLibraryRender==null)return renderToCanvas(renderContext,canvasElement);let{storyContext:{context,unboundStoryFn:Story,testingLibraryRender:render}}=renderContext,{unmount}=render(React.createElement(Story,{...context}),{container:context.canvasElement});return unmount}}]);function composeStory(story,componentAnnotations,projectAnnotations,exportsName){return composeStory$1(story,componentAnnotations,projectAnnotations,globalThis.globalProjectAnnotations??INTERNAL_DEFAULT_PROJECT_ANNOTATIONS,exportsName)}function composeStories(csfExports,projectAnnotations){return composeStories$1(csfExports,projectAnnotations,composeStory)}typeof module<"u"&&module?.hot?.decline();
export { INTERNAL_DEFAULT_PROJECT_ANNOTATIONS, composeStories, composeStory, setProjectAnnotations };

View File

@@ -0,0 +1 @@
export { createPlaywrightTest as createTest } from 'storybook/preview-api';

View File

@@ -0,0 +1 @@
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var playwright_exports={};__export(playwright_exports,{createTest:()=>import_preview_api.createPlaywrightTest});module.exports=__toCommonJS(playwright_exports);var import_preview_api=require("storybook/preview-api");0&&(module.exports={createTest});

View File

@@ -0,0 +1,2 @@
import './chunk-XP5HYGXS.mjs';
export { createPlaywrightTest as createTest } from 'storybook/preview-api';

View File

@@ -0,0 +1,19 @@
import { PresetProperty } from 'storybook/internal/types';
declare const addons: PresetProperty<'addons'>;
declare const previewAnnotations: PresetProperty<'previewAnnotations'>;
/**
* Try to resolve react and react-dom from the root node_modules of the project addon-docs uses this
* to alias react and react-dom to the project's version when possible If the user doesn't have an
* explicit dependency on react this will return the existing values Which will be the versions
* shipped with addon-docs
*
* We do the exact same thing in the common preset, but that will fail in Yarn PnP because
*
* Storybook/internal/core-server doesn't have a peer dependency on react This will make
*
* @storybook/react projects work in Yarn PnP
*/
declare const resolvedReact: (existing: any) => Promise<any>;
export { addons, previewAnnotations, resolvedReact };

View File

@@ -0,0 +1 @@
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var preset_exports={};__export(preset_exports,{addons:()=>addons,previewAnnotations:()=>previewAnnotations,resolvedReact:()=>resolvedReact});module.exports=__toCommonJS(preset_exports);var import_node_path=require("path"),addons=[require.resolve("@storybook/react-dom-shim/dist/preset")],previewAnnotations=async(input=[],options)=>{let docsConfig=await options.presets.apply("docs",{},options),features=await options.presets.apply("features",{},options),docsEnabled=Object.keys(docsConfig).length>0;return[].concat(input).concat((0,import_node_path.join)(__dirname,"entry-preview.mjs"),(0,import_node_path.join)(__dirname,"entry-preview-argtypes.mjs")).concat(docsEnabled?[(0,import_node_path.join)(__dirname,"entry-preview-docs.mjs")]:[]).concat(features?.experimentalRSC?[(0,import_node_path.join)(__dirname,"entry-preview-rsc.mjs")]:[])},resolvedReact=async existing=>{try{return{...existing,react:(0,import_node_path.dirname)(require.resolve("react/package.json")),reactDom:(0,import_node_path.dirname)(require.resolve("react-dom/package.json"))}}catch{return existing}};0&&(module.exports={addons,previewAnnotations,resolvedReact});

View File

@@ -0,0 +1,199 @@
import { ComponentType } from 'react';
import { Preview, Meta, Story } from 'storybook/internal/csf';
import { Args, DecoratorFunction, ArgsStoryFn, ComponentAnnotations, Renderer, StoryAnnotations } from 'storybook/internal/types';
import { c as Simplify, A as AddMocks, d as SetOptional } from './public-types-f2c70f25.js';
import { R as ReactRenderer } from './types-5617c98e.js';
/**
Remove any index signatures from the given object type, so that only explicitly defined properties remain.
Use-cases:
- Remove overly permissive signatures from third-party types.
This type was taken from this [StackOverflow answer](https://stackoverflow.com/a/68261113/420747).
It relies on the fact that an empty object (`{}`) is assignable to an object with just an index signature, like `Record<string, unknown>`, but not to an object with explicitly defined keys, like `Record<'foo' | 'bar', unknown>`.
(The actual value type, `unknown`, is irrelevant and could be any type. Only the key type matters.)
```
const indexed: Record<string, unknown> = {}; // Allowed
const keyed: Record<'foo', unknown> = {}; // Error
// => TS2739: Type '{}' is missing the following properties from type 'Record<"foo" | "bar", unknown>': foo, bar
```
Instead of causing a type error like the above, you can also use a [conditional type](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html) to test whether a type is assignable to another:
```
type Indexed = {} extends Record<string, unknown>
? '✅ `{}` is assignable to `Record<string, unknown>`'
: '❌ `{}` is NOT assignable to `Record<string, unknown>`';
// => '✅ `{}` is assignable to `Record<string, unknown>`'
type Keyed = {} extends Record<'foo' | 'bar', unknown>
? "✅ `{}` is assignable to `Record<'foo' | 'bar', unknown>`"
: "❌ `{}` is NOT assignable to `Record<'foo' | 'bar', unknown>`";
// => "❌ `{}` is NOT assignable to `Record<'foo' | 'bar', unknown>`"
```
Using a [mapped type](https://www.typescriptlang.org/docs/handbook/2/mapped-types.html#further-exploration), you can then check for each `KeyType` of `ObjectType`...
```
import type {RemoveIndexSignature} from 'type-fest';
type RemoveIndexSignature<ObjectType> = {
[KeyType in keyof ObjectType // Map each key of `ObjectType`...
]: ObjectType[KeyType]; // ...to its original value, i.e. `RemoveIndexSignature<Foo> == Foo`.
};
```
...whether an empty object (`{}`) would be assignable to an object with that `KeyType` (`Record<KeyType, unknown>`)...
```
import type {RemoveIndexSignature} from 'type-fest';
type RemoveIndexSignature<ObjectType> = {
[KeyType in keyof ObjectType
// Is `{}` assignable to `Record<KeyType, unknown>`?
as {} extends Record<KeyType, unknown>
? ... // ✅ `{}` is assignable to `Record<KeyType, unknown>`
: ... // ❌ `{}` is NOT assignable to `Record<KeyType, unknown>`
]: ObjectType[KeyType];
};
```
If `{}` is assignable, it means that `KeyType` is an index signature and we want to remove it. If it is not assignable, `KeyType` is a "real" key and we want to keep it.
```
import type {RemoveIndexSignature} from 'type-fest';
type RemoveIndexSignature<ObjectType> = {
[KeyType in keyof ObjectType
as {} extends Record<KeyType, unknown>
? never // => Remove this `KeyType`.
: KeyType // => Keep this `KeyType` as it is.
]: ObjectType[KeyType];
};
```
@example
```
import type {RemoveIndexSignature} from 'type-fest';
interface Example {
// These index signatures will be removed.
[x: string]: any
[x: number]: any
[x: symbol]: any
[x: `head-${string}`]: string
[x: `${string}-tail`]: string
[x: `head-${string}-tail`]: string
[x: `${bigint}`]: string
[x: `embedded-${number}`]: string
// These explicitly defined keys will remain.
foo: 'bar';
qux?: 'baz';
}
type ExampleWithoutIndexSignatures = RemoveIndexSignature<Example>;
// => { foo: 'bar'; qux?: 'baz' | undefined; }
```
@category Object
*/
type RemoveIndexSignature<ObjectType> = {
[KeyType in keyof ObjectType as {} extends Record<KeyType, unknown>
? never
: KeyType]: ObjectType[KeyType];
};
/**
Convert a union type to an intersection type using [distributive conditional types](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types).
Inspired by [this Stack Overflow answer](https://stackoverflow.com/a/50375286/2172153).
@example
```
import type {UnionToIntersection} from 'type-fest';
type Union = {the(): void} | {great(arg: string): void} | {escape: boolean};
type Intersection = UnionToIntersection<Union>;
//=> {the(): void; great(arg: string): void; escape: boolean};
```
A more applicable example which could make its way into your library code follows.
@example
```
import type {UnionToIntersection} from 'type-fest';
class CommandOne {
commands: {
a1: () => undefined,
b1: () => undefined,
}
}
class CommandTwo {
commands: {
a2: (argA: string) => undefined,
b2: (argB: string) => undefined,
}
}
const union = [new CommandOne(), new CommandTwo()].map(instance => instance.commands);
type Union = typeof union;
//=> {a1(): void; b1(): void} | {a2(argA: string): void; b2(argB: string): void}
type Intersection = UnionToIntersection<Union>;
//=> {a1(): void; b1(): void; a2(argA: string): void; b2(argB: string): void}
```
@category Type
*/
type UnionToIntersection<Union> = (
// `extends unknown` is always going to be the case and is used to convert the
// `Union` into a [distributive conditional
// type](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types).
Union extends unknown
// The union type is used as the only argument to a function since the union
// of function arguments is an intersection.
? (distributedUnion: Union) => void
// This won't happen.
: never
// Infer the `Intersection` type since TypeScript represents the positional
// arguments of unions of functions as an intersection of the union.
) extends ((mergedIntersection: infer Intersection) => void)
? Intersection
: never;
/** Do not use, use the definePreview exported from the framework instead */
declare function __definePreview(preview: ReactPreview['input']): ReactPreview;
interface ReactPreview extends Preview<ReactRenderer> {
meta<TArgs extends Args, Decorators extends DecoratorFunction<ReactRenderer, any>, TMetaArgs extends Partial<TArgs>>(meta: {
render?: ArgsStoryFn<ReactRenderer, TArgs>;
component?: ComponentType<TArgs>;
decorators?: Decorators | Decorators[];
args?: TMetaArgs;
} & Omit<ComponentAnnotations<ReactRenderer, TArgs>, 'decorators'>): ReactMeta<{
args: Simplify<TArgs & Simplify<RemoveIndexSignature<DecoratorsArgs<ReactRenderer, Decorators>>>>;
}, {
args: Partial<TArgs> extends TMetaArgs ? {} : TMetaArgs;
}>;
}
type DecoratorsArgs<TRenderer extends Renderer, Decorators> = UnionToIntersection<Decorators extends DecoratorFunction<TRenderer, infer TArgs> ? TArgs : unknown>;
interface ReactMeta<Context extends {
args: Args;
}, MetaInput extends ComponentAnnotations<ReactRenderer>> extends Meta<ReactRenderer, Context['args']> {
story<TInput extends StoryAnnotations<ReactRenderer, Context['args']> & {
render: () => ReactRenderer['storyResult'];
}>(story: TInput): ReactStory;
story<TInput extends Simplify<StoryAnnotations<ReactRenderer, AddMocks<Context['args'], MetaInput['args']>, SetOptional<Context['args'], keyof Context['args'] & keyof MetaInput['args']>>>>(story: TInput): ReactStory;
}
interface ReactStory extends Story<ReactRenderer> {
}
export { ReactPreview, ReactStory, __definePreview };

46
frontend/node_modules/@storybook/react/dist/preview.js generated vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
export { __definePreview } from './chunk-XBCHTE6T.mjs';
import './chunk-MNKU3DTE.mjs';
import './chunk-N3U7HZRZ.mjs';
import './chunk-AWLHXXSE.mjs';
import './chunk-XLZBPYSH.mjs';
import './chunk-CKO6TW2F.mjs';
import './chunk-XP5HYGXS.mjs';

View File

@@ -0,0 +1,230 @@
import { ComponentType, ComponentProps } from 'react';
import { Args, ComponentAnnotations, AnnotatedStoryFn, ArgsStoryFn, ArgsFromMeta, StoryAnnotations, StrictArgs, DecoratorFunction, LoaderFunction, StoryContext as StoryContext$1, ProjectAnnotations } from 'storybook/internal/types';
import { R as ReactRenderer } from './types-5617c98e.js';
declare global {
interface SymbolConstructor {
readonly observable: symbol;
}
}
/**
Returns a boolean for whether the two given types are equal.
@link https://github.com/microsoft/TypeScript/issues/27024#issuecomment-421529650
@link https://stackoverflow.com/questions/68961864/how-does-the-equals-work-in-typescript/68963796#68963796
*/
type IsEqual<T, U> =
(<G>() => G extends T ? 1 : 2) extends
(<G>() => G extends U ? 1 : 2)
? true
: false;
/**
Filter out keys from an object.
Returns `never` if `Exclude` is strictly equal to `Key`.
Returns `never` if `Key` extends `Exclude`.
Returns `Key` otherwise.
@example
```
type Filtered = Filter<'foo', 'foo'>;
//=> never
```
@example
```
type Filtered = Filter<'bar', string>;
//=> never
```
@example
```
type Filtered = Filter<'bar', 'foo'>;
//=> 'bar'
```
@see {Except}
*/
type Filter<KeyType, ExcludeType> = IsEqual<KeyType, ExcludeType> extends true ? never : (KeyType extends ExcludeType ? never : KeyType);
/**
Create a type from an object type without certain keys.
This type is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type). The `Omit` type does not restrict the omitted keys to be keys present on the given type, while `Except` does. The benefits of a stricter type are avoiding typos and allowing the compiler to pick up on rename refactors automatically.
This type was proposed to the TypeScript team, which declined it, saying they prefer that libraries implement stricter versions of the built-in types ([microsoft/TypeScript#30825](https://github.com/microsoft/TypeScript/issues/30825#issuecomment-523668235)).
@example
```
import type {Except} from 'type-fest';
type Foo = {
a: number;
b: string;
c: boolean;
};
type FooWithoutA = Except<Foo, 'a' | 'c'>;
//=> {b: string};
```
@category Object
*/
type Except<ObjectType, KeysType extends keyof ObjectType> = {
[KeyType in keyof ObjectType as Filter<KeyType, KeysType>]: ObjectType[KeyType];
};
/**
@see Simplify
*/
interface SimplifyOptions {
/**
Do the simplification recursively.
@default false
*/
deep?: boolean;
}
// Flatten a type without worrying about the result.
type Flatten<
AnyType,
Options extends SimplifyOptions = {},
> = Options['deep'] extends true
? {[KeyType in keyof AnyType]: Simplify<AnyType[KeyType], Options>}
: {[KeyType in keyof AnyType]: AnyType[KeyType]};
/**
Useful to flatten the type output to improve type hints shown in editors. And also to transform an interface into a type to aide with assignability.
@example
```
import type {Simplify} from 'type-fest';
type PositionProps = {
top: number;
left: number;
};
type SizeProps = {
width: number;
height: number;
};
// In your editor, hovering over `Props` will show a flattened object with all the properties.
type Props = Simplify<PositionProps & SizeProps>;
```
Sometimes it is desired to pass a value as a function argument that has a different type. At first inspection it may seem assignable, and then you discover it is not because the `value`'s type definition was defined as an interface. In the following example, `fn` requires an argument of type `Record<string, unknown>`. If the value is defined as a literal, then it is assignable. And if the `value` is defined as type using the `Simplify` utility the value is assignable. But if the `value` is defined as an interface, it is not assignable because the interface is not sealed and elsewhere a non-string property could be added to the interface.
If the type definition must be an interface (perhaps it was defined in a third-party npm package), then the `value` can be defined as `const value: Simplify<SomeInterface> = ...`. Then `value` will be assignable to the `fn` argument. Or the `value` can be cast as `Simplify<SomeInterface>` if you can't re-declare the `value`.
@example
```
import type {Simplify} from 'type-fest';
interface SomeInterface {
foo: number;
bar?: string;
baz: number | undefined;
}
type SomeType = {
foo: number;
bar?: string;
baz: number | undefined;
};
const literal = {foo: 123, bar: 'hello', baz: 456};
const someType: SomeType = literal;
const someInterface: SomeInterface = literal;
function fn(object: Record<string, unknown>): void {}
fn(literal); // Good: literal object type is sealed
fn(someType); // Good: type is sealed
fn(someInterface); // Error: Index signature for type 'string' is missing in type 'someInterface'. Because `interface` can be re-opened
fn(someInterface as Simplify<SomeInterface>); // Good: transform an `interface` into a `type`
```
@link https://github.com/microsoft/TypeScript/issues/15300
@category Object
*/
type Simplify<
AnyType,
Options extends SimplifyOptions = {},
> = Flatten<AnyType> extends AnyType
? Flatten<AnyType, Options>
: AnyType;
/**
Create a type that makes the given keys optional. The remaining keys are kept as is. The sister of the `SetRequired` type.
Use-case: You want to define a single model where the only thing that changes is whether or not some of the keys are optional.
@example
```
import type {SetOptional} from 'type-fest';
type Foo = {
a: number;
b?: string;
c: boolean;
}
type SomeOptional = SetOptional<Foo, 'b' | 'c'>;
// type SomeOptional = {
// a: number;
// b?: string; // Was already optional and still is.
// c?: boolean; // Is now optional.
// }
```
@category Object
*/
type SetOptional<BaseType, Keys extends keyof BaseType> =
Simplify<
// Pick just the keys that are readonly from the base type.
Except<BaseType, Keys> &
// Pick the keys that should be mutable from the base type and make them mutable.
Partial<Pick<BaseType, Keys>>
>;
/**
* Metadata to configure the stories for a component.
*
* @see [Default export](https://storybook.js.org/docs/api/csf#default-export)
*/
type Meta<TCmpOrArgs = Args> = [TCmpOrArgs] extends [ComponentType<any>] ? ComponentAnnotations<ReactRenderer, ComponentProps<TCmpOrArgs>> : ComponentAnnotations<ReactRenderer, TCmpOrArgs>;
/**
* Story function that represents a CSFv2 component example.
*
* @see [Named Story exports](https://storybook.js.org/docs/api/csf#named-story-exports)
*/
type StoryFn<TCmpOrArgs = Args> = [TCmpOrArgs] extends [ComponentType<any>] ? AnnotatedStoryFn<ReactRenderer, ComponentProps<TCmpOrArgs>> : AnnotatedStoryFn<ReactRenderer, TCmpOrArgs>;
/**
* Story object that represents a CSFv3 component example.
*
* @see [Named Story exports](https://storybook.js.org/docs/api/csf#named-story-exports)
*/
type StoryObj<TMetaOrCmpOrArgs = Args> = [TMetaOrCmpOrArgs] extends [
{
render?: ArgsStoryFn<ReactRenderer, any>;
component?: infer Component;
args?: infer DefaultArgs;
}
] ? Simplify<(Component extends ComponentType<any> ? ComponentProps<Component> : unknown) & ArgsFromMeta<ReactRenderer, TMetaOrCmpOrArgs>> extends infer TArgs ? StoryAnnotations<ReactRenderer, AddMocks<TArgs, DefaultArgs>, SetOptional<TArgs, keyof TArgs & keyof DefaultArgs>> : never : TMetaOrCmpOrArgs extends ComponentType<any> ? StoryAnnotations<ReactRenderer, ComponentProps<TMetaOrCmpOrArgs>> : StoryAnnotations<ReactRenderer, TMetaOrCmpOrArgs>;
type AddMocks<TArgs, DefaultArgs> = Simplify<{
[T in keyof TArgs]: T extends keyof DefaultArgs ? DefaultArgs[T] extends (...args: any) => any & {
mock: {};
} ? DefaultArgs[T] : TArgs[T] : TArgs[T];
}>;
type Decorator<TArgs = StrictArgs> = DecoratorFunction<ReactRenderer, TArgs>;
type Loader<TArgs = StrictArgs> = LoaderFunction<ReactRenderer, TArgs>;
type StoryContext<TArgs = StrictArgs> = StoryContext$1<ReactRenderer, TArgs>;
type Preview = ProjectAnnotations<ReactRenderer>;
export { AddMocks as A, Decorator as D, Loader as L, Meta as M, Preview as P, StoryFn as S, StoryObj as a, StoryContext as b, Simplify as c, SetOptional as d };

View File

@@ -0,0 +1,27 @@
import { ComponentType, JSX } from 'react';
import { WebRenderer, Canvas } from 'storybook/internal/types';
interface ReactRenderer extends WebRenderer {
component: ComponentType<this['T']>;
storyResult: StoryFnReactReturnType;
mount: (ui?: JSX.Element) => Promise<Canvas>;
}
interface ReactParameters {
/** React renderer configuration */
react?: {
/**
* Whether to enable React Server Components
*
* @see https://storybook.js.org/docs/get-started/frameworks/nextjs#react-server-components-rsc
*/
rsc?: boolean;
/** Options passed to React root creation */
rootOptions?: {
/** Custom error handler for caught errors */
onCaughtError?: (error: unknown) => void;
};
};
}
type StoryFnReactReturnType = JSX.Element;
export { ReactRenderer as R, ReactParameters as a };