UNPKG

@prismai/prism-ladle

Version:

Enhanced component development environment based on Ladle, with multi-project support

152 lines (133 loc) 3.35 kB
import type * as React from "react"; import { useLadleContext } from "./src/context"; import { StoryDecorator, ActionType, GlobalState, ThemeState, ModeState, GlobalAction, Config, KnownMeta, MetaJson as BaseMetaJson, MetaJsonStory as BaseMetaJsonStory, } from "../shared/types"; import * as msw from "msw"; export { msw }; export type { UserConfig } from "../shared/types"; export * as ui from "./src/ui"; export * as dialog from "./src/dialog"; export * as icons from "./src/icons"; export { useMDXComponents } from "@mdx-js/react"; export const Story = (props: any) => props.children; export const Meta = (props: any) => props.children; export const Description = (props: any) => props.children; type ReactNodeWithoutObject = | React.ReactElement | string | number | boolean | null | undefined; export { useLadleContext, ActionType, ThemeState, ModeState }; export type { StoryDecorator }; // deprecated, linkTo is just easier to use export const useLink = () => { const { dispatch } = useLadleContext(); return (value: string) => dispatch({ type: ActionType.UpdateStory, value }); }; export const linkTo = (value: string) => { const dispatch = (window as any) .ladleDispatch as React.Dispatch<GlobalAction>; return () => dispatch({ type: ActionType.UpdateStory, value }); }; export const action = (name: string) => { const dispatch = (window as any) .ladleDispatch as React.Dispatch<GlobalAction>; return (event: any = undefined) => dispatch({ type: ActionType.UpdateAction, value: { name, event }, clear: false, }); }; export type { GlobalAction, GlobalState }; export type GlobalProvider = React.FC<{ globalState: GlobalState; dispatch: React.Dispatch<GlobalAction>; config: Config; children: ReactNodeWithoutObject; storyMeta?: Meta; }>; export type SourceHeader = React.FC<{ path: string; locStart: number; locEnd: number; }>; export interface StoryDefault<P = {}> { args?: Args<P>; argTypes?: ArgTypes<P>; decorators?: StoryDecorator<P>[]; meta?: Meta; title?: string; msw?: msw.RequestHandler[]; parameters?: { [key: string]: any }; } export interface Story<P = {}> extends React.FC<P> { args?: Args<P>; argTypes?: ArgTypes<P>; decorators?: StoryDecorator<P>[]; meta?: Meta; storyName?: string; msw?: msw.RequestHandler[]; parameters?: { [key: string]: any }; } export type Args< P = { [key: string]: any; }, > = Partial<P>; export type ControlType = | "select" | "multi-select" | "radio" | "inline-radio" | "check" | "inline-check" | "background" | "color" | "date" | "number" | "text" | "boolean" | "range"; export interface ArgType<K = any> { control?: { name?: string; labels?: { [key: string]: string }; type: ControlType; min?: number; max?: number; step?: number; [key: string]: any; }; mapping?: { [key: string | number]: any }; options?: K[] | unknown; defaultValue?: K; description?: string; name?: string; action?: string; [key: string]: any; } export type ArgTypes< P = { [key: string]: any; }, > = { [key in keyof P]?: ArgType<P[key]>; }; export interface Meta extends KnownMeta { [key: string]: any; } export type MetaJson = BaseMetaJson<Meta>; export type MetaJsonStory = BaseMetaJsonStory<Meta>;