React Flow board (pan/zoom + frame drag are pure editor-side transforms — zero canvas-protocol traffic, <16ms budget) hosting one iframe frame node on the adapter origin. The frame waits for runtime.ready (queue-drain) behind an explicit 'Starting preview…' skeleton, then requests a single Element via render-frame (core-runner-protocol schema) plus geometry; agent-reported geometry stays frame-local and click reports drive store selection. The selection ring renders as an editor-side overlay from reported geometry — chrome never inside the customer's document (ADR-028). Stories + jsdom component tests for board/frame/overlay; Storybook stories glob extended to packages/editor (verified via static build). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
21 lines
568 B
TypeScript
21 lines
568 B
TypeScript
import type { StorybookConfig } from "@storybook/react-vite";
|
|
|
|
const config: StorybookConfig = {
|
|
framework: "@storybook/react-vite",
|
|
stories: [
|
|
"../../../packages/core-ui/src/**/*.stories.@(ts|tsx)",
|
|
"../../../packages/editor/src/**/*.stories.@(ts|tsx)",
|
|
],
|
|
addons: ["@storybook/addon-essentials"],
|
|
docs: {
|
|
autodocs: "tag",
|
|
},
|
|
async viteFinal(config) {
|
|
const tailwindPlugin = await import("@tailwindcss/vite");
|
|
config.plugins = [tailwindPlugin.default(), ...(config.plugins || [])];
|
|
return config;
|
|
},
|
|
};
|
|
|
|
export default config;
|