@snowcone-app/canvas 0.1.9 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/{CanvasStateV1-D5GzvmnY.cjs → CanvasStateV1-C4hC1MCe.cjs} +5 -5
  2. package/dist/{CanvasStateV1-D5GzvmnY.cjs.map → CanvasStateV1-C4hC1MCe.cjs.map} +1 -1
  3. package/dist/{CanvasStateV1-ejb4d_LM.js → CanvasStateV1-CJU_xYW5.js} +3 -3
  4. package/dist/{CanvasStateV1-ejb4d_LM.js.map → CanvasStateV1-CJU_xYW5.js.map} +1 -1
  5. package/dist/{HybridHistoryManager-BV6XV0nD.js → HybridHistoryManager-jBBnVim8.js} +54 -54
  6. package/dist/{HybridHistoryManager-BV6XV0nD.js.map → HybridHistoryManager-jBBnVim8.js.map} +1 -1
  7. package/dist/{ElementFactory-uJTXU-nP.js → ImportManager-Oqu2yB54.js} +916 -697
  8. package/dist/ImportManager-Oqu2yB54.js.map +1 -0
  9. package/dist/{ElementFactory-B7UOaJSD.cjs → ImportManager-W1eWhfyM.cjs} +5 -5
  10. package/dist/ImportManager-W1eWhfyM.cjs.map +1 -0
  11. package/dist/ThemeContext-BMNQKl1c.cjs +2 -0
  12. package/dist/{ThemeContext-4mJ_y0Me.cjs.map → ThemeContext-BMNQKl1c.cjs.map} +1 -1
  13. package/dist/ThemeContext-wj-wSO7J.js +1158 -0
  14. package/dist/{ThemeContext-H0Z-MqqR.js.map → ThemeContext-wj-wSO7J.js.map} +1 -1
  15. package/dist/advanced.js +5 -32
  16. package/dist/advanced.js.map +1 -1
  17. package/dist/advanced.mjs +593 -15081
  18. package/dist/advanced.mjs.map +1 -1
  19. package/dist/components/embed/KitLayout.d.ts +22 -0
  20. package/dist/components/embed/UndoRedoControls.d.ts +3 -0
  21. package/dist/compose-Dqh2f8tS.js +22222 -0
  22. package/dist/compose-Dqh2f8tS.js.map +1 -0
  23. package/dist/compose-HDJp4Z_d.cjs +60 -0
  24. package/dist/compose-HDJp4Z_d.cjs.map +1 -0
  25. package/dist/index.js +1 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +589 -508
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/internals.js +1 -1
  30. package/dist/internals.js.map +1 -1
  31. package/dist/internals.mjs +101 -102
  32. package/dist/internals.mjs.map +1 -1
  33. package/dist/style.css.d.ts +4 -0
  34. package/dist/testing.js +1 -1
  35. package/dist/testing.mjs +11 -11
  36. package/package.json +9 -5
  37. package/dist/ElementFactory-B7UOaJSD.cjs.map +0 -1
  38. package/dist/ElementFactory-uJTXU-nP.js.map +0 -1
  39. package/dist/ImportManager-BYwuK6n4.cjs +0 -2
  40. package/dist/ImportManager-BYwuK6n4.cjs.map +0 -1
  41. package/dist/ImportManager-CxiaRg1N.js +0 -222
  42. package/dist/ImportManager-CxiaRg1N.js.map +0 -1
  43. package/dist/ThemeContext-4mJ_y0Me.cjs +0 -2
  44. package/dist/ThemeContext-H0Z-MqqR.js +0 -1077
  45. package/dist/components/stories/utils/MockEditorProvider.d.ts +0 -32
  46. package/dist/components/stories/utils/QACanvasCard.d.ts +0 -41
  47. package/dist/components/stories/utils/VisualQACard.d.ts +0 -24
  48. package/dist/components/stories/utils/element-factories.d.ts +0 -188
  49. package/dist/components/stories/utils/spec-to-elements.d.ts +0 -74
  50. package/dist/components/stories/utils/themeDecorator.d.ts +0 -45
  51. package/dist/components/stories/utils/unified-test-cases.d.ts +0 -27
  52. package/dist/compose-Bo108juW.cjs +0 -33
  53. package/dist/compose-Bo108juW.cjs.map +0 -1
  54. package/dist/compose-DQ1FZS3O.js +0 -7690
  55. package/dist/compose-DQ1FZS3O.js.map +0 -1
@@ -1,32 +0,0 @@
1
- import { default as React } from 'react';
2
- import { EditorElement } from '../../embed/index';
3
- import { ShapeElement } from '../../../core/ShapeElement';
4
- /**
5
- * Default triangle shape that helps visualize canvas bounds in stories.
6
- * Positioned at center (500, 500) with a semi-transparent gray fill.
7
- */
8
- export declare const createDefaultTriangle: () => ShapeElement;
9
- export interface MockEditorProviderProps {
10
- children: React.ReactNode;
11
- initialElements?: EditorElement[];
12
- initialSelection?: string | null;
13
- /** If true, skips adding the default triangle marker. Default: false */
14
- hideDefaultMarker?: boolean;
15
- /** Configuration for the default artboard created on mount. */
16
- initialArtboardConfig?: {
17
- name?: string;
18
- x?: number;
19
- y?: number;
20
- width?: number;
21
- height?: number;
22
- backgroundColor?: string;
23
- };
24
- }
25
- /**
26
- * A wrapper around EditorProvider that allows pre-populating data
27
- * for testing and stories.
28
- *
29
- * By default, includes a semi-transparent triangle marker at the canvas center
30
- * to help visualize canvas bounds. Pass `hideDefaultMarker={true}` to disable.
31
- */
32
- export declare const MockEditorProvider: React.FC<MockEditorProviderProps>;
@@ -1,41 +0,0 @@
1
- import { default as React } from 'react';
2
- import { EditorElement } from '../../embed/index';
3
- export interface QACanvasCardProps {
4
- /** Unique test case ID (used by capture scripts and data attributes) */
5
- id: string;
6
- /** Short title describing the test case */
7
- title: string;
8
- /** Visual expectation description — what the rendered output should look like */
9
- expect: string;
10
- /** Optional tags for grouping/filtering (e.g., 'stroke', 'knockout', 'text') */
11
- tags?: string[];
12
- /**
13
- * Factory function that returns the elements to render on the canvas.
14
- * May be synchronous or asynchronous (e.g., when loading fonts/images).
15
- */
16
- createElements: () => EditorElement[] | Promise<EditorElement[]>;
17
- /** Optional callback to configure the artboard after elements are registered */
18
- artboardSetup?: (artboard: any) => void;
19
- /** Optional cleanup callback invoked on unmount */
20
- artboardCleanup?: (artboard: any) => void;
21
- /** Optional callback fired when export diff result is available */
22
- onDiffResult?: (id: string, diffPercentage: number | null) => void;
23
- }
24
- /**
25
- * A QA card that renders canvas elements inside a labeled VisualQACard,
26
- * with automatic export parity comparison (main-thread vs worker).
27
- */
28
- export declare const QACanvasCard: React.FC<QACanvasCardProps>;
29
- export interface QADiffSummaryItem {
30
- id: string;
31
- diffPercentage: number | null;
32
- }
33
- /**
34
- * Sticky summary banner that shows which cards have non-zero diffs.
35
- * Place at the top of a QA story page. If all diffs are zero, shows a green "All match" bar.
36
- */
37
- export declare const QADiffSummary: React.FC<{
38
- items: QADiffSummaryItem[];
39
- }>;
40
- /** Grid layout for multiple QACanvasCards. Re-exported from VisualQACard. */
41
- export { VisualQAGrid as QACanvasGrid } from './VisualQACard';
@@ -1,24 +0,0 @@
1
- import { default as React } from 'react';
2
- export interface VisualQACardProps {
3
- /** Unique identifier for this test case (used by capture script) */
4
- id: string;
5
- /** Short title describing the test case */
6
- title: string;
7
- /** Detailed expectation: what the rendered output should look like */
8
- expect: string;
9
- /** Optional tags for grouping/filtering (e.g., 'stroke', 'knockout', 'text') */
10
- tags?: string[];
11
- /** The canvas content to render */
12
- children: React.ReactNode;
13
- /** Canvas height in pixels (default: 300) */
14
- height?: number;
15
- }
16
- export declare const VisualQACard: React.FC<VisualQACardProps>;
17
- /**
18
- * Grid layout for multiple VisualQACards in a story.
19
- */
20
- export declare const VisualQAGrid: React.FC<{
21
- children: React.ReactNode;
22
- columns?: number;
23
- }>;
24
- export default VisualQACard;
@@ -1,188 +0,0 @@
1
- import { CustomTransform } from '../../../transforms/CustomTransform';
2
- import { CircleTransform } from '../../../transforms/CircleTransform';
3
- import { ArchTransform } from '../../../transforms/ArchTransform';
4
- import { WaveTransform } from '../../../transforms/WaveTransform';
5
- import { LeanTransform } from '../../../transforms/LeanTransform';
6
- import { AscendTransform } from '../../../transforms/AscendTransform';
7
- import { FlagTransform } from '../../../transforms/FlagTransform';
8
- import { ShapeElement } from '../../../core/ShapeElement';
9
- import { ImageElement } from '../../../core/ImageElement';
10
- import { EditorElement } from '../../embed/index';
11
- export declare const CX = 250;
12
- export declare const CY = 250;
13
- export declare function ensureGoogleFont(family: string): Promise<void>;
14
- /**
15
- * Create a test image: 100x100 red square rendered to an HTMLImageElement via canvas.
16
- * Using a canvas-drawn image avoids data-URL CORS issues with createImageBitmap
17
- * that occur inside the Storybook iframe.
18
- */
19
- export declare function createTestImage(): HTMLImageElement;
20
- export declare function createImageElement(overrides?: Partial<{
21
- id: string;
22
- x: number;
23
- y: number;
24
- width: number;
25
- height: number;
26
- }>): ImageElement;
27
- export declare function createPlainText(): CustomTransform[];
28
- export declare function createStrokeText(): CustomTransform[];
29
- export declare function createCircleTransform(): CircleTransform[];
30
- export declare function createArchTransform(): ArchTransform[];
31
- export declare function createWaveTransform(): WaveTransform[];
32
- export declare function createDistressText(): CustomTransform[];
33
- export declare function createShape(): ShapeElement[];
34
- export declare function createKnockout(): (ShapeElement | CustomTransform)[];
35
- export declare function createDistressBg(): CustomTransform[];
36
- export declare function createStrokeArch(): ArchTransform[];
37
- export declare function createKnockoutFillOnly(): (ShapeElement | CustomTransform)[];
38
- export declare function createKnockoutStrokeOnly(): (ShapeElement | CustomTransform)[];
39
- export declare function createKnockoutBoth(): (ShapeElement | CustomTransform)[];
40
- export declare function createStrokeDistress(): CustomTransform[];
41
- export declare function createLeanTransform(): LeanTransform[];
42
- export declare function createAscendTransform(): AscendTransform[];
43
- export declare function createFlagTransform(): FlagTransform[];
44
- export declare function createNormalText(): CustomTransform[];
45
- export declare function createBoldText(): CustomTransform[];
46
- export declare function createItalicText(): CustomTransform[];
47
- export declare function createBoldItalicText(): CustomTransform[];
48
- export declare function createFontOswald(): Promise<CustomTransform[]>;
49
- export declare function createFontOswaldBold(): Promise<CustomTransform[]>;
50
- export declare function createFontPlayfair(): Promise<CustomTransform[]>;
51
- export declare function createFontPlayfairBoldItalic(): Promise<CustomTransform[]>;
52
- export declare function createFontGeorgia(): CustomTransform[];
53
- export declare function createFontGeorgiaBold(): CustomTransform[];
54
- export declare function createFontLobster(): Promise<CustomTransform[]>;
55
- export declare function createFontBebas(): Promise<CustomTransform[]>;
56
- export declare function createFontPoppins(): Promise<CustomTransform[]>;
57
- export declare function createFontPoppinsBold(): Promise<CustomTransform[]>;
58
- export declare function createFontDancingScript(): Promise<CustomTransform[]>;
59
- /**
60
- * Bangers — single-weight (400-only) Google Font. Canonical regression
61
- * case for the worker's Google Fonts CSS2 fetch: `wght@400;700` returns
62
- * an empty HTTP-200 body when the font doesn't have all the requested
63
- * weights, so a single-weight family loses its @font-face rule entirely
64
- * and the export PNG silently renders with the serif fallback. The
65
- * worker now per-weight-fetches; keep this story so anyone who
66
- * refactors back gets a visible diff against main-thread rendering.
67
- */
68
- export declare function createFontBangers(): Promise<CustomTransform[]>;
69
- export declare function createFontRobotoSlab(): Promise<CustomTransform[]>;
70
- export declare function createFontRobotoSlabBold(): Promise<CustomTransform[]>;
71
- export declare function createFontCourierNew(): CustomTransform[];
72
- export declare function createFontArialBlack(): CustomTransform[];
73
- export declare function createUnderlineText(): CustomTransform[];
74
- export declare function createStrikethroughText(): CustomTransform[];
75
- export declare function createTextAlignLeft(): CustomTransform[];
76
- export declare function createTextAlignRight(): CustomTransform[];
77
- export declare function createMultilineWrapping(): CustomTransform[];
78
- export declare function createLargeFont(): CustomTransform[];
79
- export declare function createSmallFont(): CustomTransform[];
80
- export declare function createTextOpacity(): CustomTransform[];
81
- export declare function createShapeOpacity(): ShapeElement[];
82
- export declare function createStrokeOpacity(): CustomTransform[];
83
- export declare function createOverlappingOpacity(): ShapeElement[];
84
- export declare function createTextRotated45(): CustomTransform[];
85
- export declare function createTextRotated90(): CustomTransform[];
86
- export declare function createTextRotated180(): CustomTransform[];
87
- export declare function createShapeRotated45(): ShapeElement[];
88
- export declare function createCircleShape(): ShapeElement[];
89
- export declare function createEllipseShape(): ShapeElement[];
90
- export declare function createTriangleShape(): ShapeElement[];
91
- export declare function createStarShape(): ShapeElement[];
92
- export declare function createPolygonShape(): ShapeElement[];
93
- export declare function createRoundedRectShape(): ShapeElement[];
94
- export declare function createShapeWithStroke(): ShapeElement[];
95
- export declare function createCircleWithStroke(): ShapeElement[];
96
- export declare function createStarWithStroke(): ShapeElement[];
97
- export declare function createDashedStroke(): CustomTransform[];
98
- export declare function createThickStroke(): CustomTransform[];
99
- export declare function createStrokeWithFeather(): CustomTransform[];
100
- export declare function createStrokeOpacityOnly(): CustomTransform[];
101
- export declare function createStrokeCircle(): CircleTransform[];
102
- export declare function createStrokeWave(): WaveTransform[];
103
- export declare function createStrokeLean(): LeanTransform[];
104
- export declare function createStrokeFlag(): FlagTransform[];
105
- export declare function createDistressArch(): ArchTransform[];
106
- export declare function createDistressCircle(): CircleTransform[];
107
- export declare function createDistressWave(): WaveTransform[];
108
- export declare function createKnockoutCircleShape(): (ShapeElement | CustomTransform)[];
109
- export declare function createKnockoutRotation(): (ShapeElement | CustomTransform)[];
110
- export declare function createKnockoutOpacity(): (ShapeElement | CustomTransform)[];
111
- export declare function createKnockoutGroupScope(): (ShapeElement | CustomTransform)[];
112
- export declare function createMultipleKnockouts(): (ShapeElement | CustomTransform)[];
113
- export declare function createStackedText(): CustomTransform[];
114
- export declare function createTextOverShape(): (ShapeElement | CustomTransform)[];
115
- export declare function createMixedColorsSizes(): CustomTransform[];
116
- export declare function createElementAtEdge(): CustomTransform[];
117
- export declare function createManyElements(): EditorElement[];
118
- export declare function createDistressWornStyle(): CustomTransform[];
119
- export declare function createDistressLowIntensity(): CustomTransform[];
120
- export declare function createDistressHighIntensity(): CustomTransform[];
121
- export declare function createStrokeDistressRotation(): CustomTransform[];
122
- export declare function createKnockoutDistress(): (ShapeElement | CustomTransform)[];
123
- export declare function createStrokeOpacityArch(): ArchTransform[];
124
- export declare function createDistressStrokeArch(): ArchTransform[];
125
- export declare function createDistressStrokeCircle(): CircleTransform[];
126
- export declare function createDistressStrokeWave(): WaveTransform[];
127
- export declare function createDistressStrokeLean(): LeanTransform[];
128
- export declare function createDistressStrokeFlag(): FlagTransform[];
129
- export declare function createDistressStrokeAscend(): AscendTransform[];
130
- export declare function createDistressLean(): LeanTransform[];
131
- export declare function createDistressAscend(): AscendTransform[];
132
- export declare function createDistressFlag(): FlagTransform[];
133
- export declare function createStrokeAscend(): AscendTransform[];
134
- export declare function createRotatedOpacityText(): CustomTransform[];
135
- export declare function createRotatedStrokeText(): CustomTransform[];
136
- export declare function createRotatedDistressText(): CustomTransform[];
137
- export declare function createShapeRotated90(): ShapeElement[];
138
- export declare function createTriangleRotated(): ShapeElement[];
139
- export declare function createShapeFillOpacity(): ShapeElement[];
140
- export declare function createShapeNoFill(): ShapeElement[];
141
- export declare function createEllipseWithStroke(): ShapeElement[];
142
- export declare function createTriangleWithStroke(): ShapeElement[];
143
- export declare function createPolygonWithStroke(): ShapeElement[];
144
- export declare function createRoundedRectWithStroke(): ShapeElement[];
145
- export declare function createShapeRotatedWithStroke(): ShapeElement[];
146
- export declare function createStarRotatedWithStroke(): ShapeElement[];
147
- export declare function createShapeOpacityStroke(): ShapeElement[];
148
- export declare function createKnockoutStrokeRotation(): (ShapeElement | CustomTransform)[];
149
- export declare function createKnockoutOnTriangle(): (ShapeElement | CustomTransform)[];
150
- export declare function createKnockoutOnStar(): (ShapeElement | CustomTransform)[];
151
- export declare function createCircleTransformLargeFont(): CircleTransform[];
152
- export declare function createArchTransformSmallFont(): ArchTransform[];
153
- export declare function createWaveTransformRotated(): WaveTransform[];
154
- export declare function createLeanTransformNegative(): LeanTransform[];
155
- export declare function createAscendTransformNegative(): AscendTransform[];
156
- export declare function createFlagTransformHighFreq(): FlagTransform[];
157
- export declare function createOverlappingShapes(): ShapeElement[];
158
- export declare function createShapeGrid(): ShapeElement[];
159
- export declare function createTextInsideCircle(): (ShapeElement | CustomTransform)[];
160
- export declare function createTextWithStrokeOverShape(): (ShapeElement | CustomTransform)[];
161
- export declare function createTextRotated270(): CustomTransform[];
162
- export declare function createTextRotated355(): CustomTransform[];
163
- export declare function createVeryThinStroke(): CustomTransform[];
164
- export declare function createStrokeSquareCap(): CustomTransform[];
165
- export declare function createStrokeMiterJoin(): CustomTransform[];
166
- export declare function createArtboardDistressWithStrokeText(): CustomTransform[];
167
- export declare function createArtboardDistressWithShape(): ShapeElement[];
168
- export declare function createMultipleDistressElements(): CustomTransform[];
169
- export declare function createMultipleStrokeElements(): CustomTransform[];
170
- export declare function createShapeAndTransformText(): (ShapeElement | ArchTransform)[];
171
- export declare function createZeroOpacity(): CustomTransform[];
172
- export declare function createElementOffscreen(): CustomTransform[];
173
- export declare function createWhiteOnWhite(): CustomTransform[];
174
- export declare function createBlackOnBlack(): CustomTransform[];
175
- export declare function createPentagonShape(): ShapeElement[];
176
- export declare function createOctagonShape(): ShapeElement[];
177
- export declare function createStar8Points(): ShapeElement[];
178
- export declare function createStarThinSpikes(): ShapeElement[];
179
- export declare function createKnockoutArch(): (ShapeElement | ArchTransform)[];
180
- export declare function createKnockoutWave(): (ShapeElement | WaveTransform)[];
181
- export declare function createWideText(): CustomTransform[];
182
- export declare function createTallStack(): EditorElement[];
183
- export declare function createPlainImage(): ImageElement[];
184
- export declare function createImageWithDistress(): ImageElement[];
185
- export declare function createImageWithDistressAndText(): (ImageElement | CustomTransform)[];
186
- export declare function createImageWithOpacity(): ImageElement[];
187
- export declare function createImageRotated(): ImageElement[];
188
- export declare function createImageWithArtboardDistress(): ImageElement[];
@@ -1,74 +0,0 @@
1
- import { EditorElement } from '../../embed/index';
2
- export interface DesignSpec {
3
- artboard: {
4
- width: number;
5
- height: number;
6
- };
7
- backgroundColor?: string;
8
- elements: DesignElement[];
9
- fontsRequired: string[];
10
- designNotes: string;
11
- }
12
- export type DesignElement = TextSpec | ShapeSpec | ImageLayerSpec;
13
- export interface TextSpec {
14
- type: 'text';
15
- id: string;
16
- text: string;
17
- x: number;
18
- y: number;
19
- fontSize: number;
20
- fontFamily: string;
21
- fontFamilyNotes?: string;
22
- color: string;
23
- bold: boolean;
24
- italic: boolean;
25
- textAlign: 'left' | 'center' | 'right';
26
- containerWidth?: number;
27
- rotation?: number;
28
- opacity?: number;
29
- stroke?: {
30
- color: string;
31
- width: number;
32
- };
33
- transformType?: string;
34
- transformParams?: Record<string, number>;
35
- }
36
- export interface ShapeSpec {
37
- type: 'shape';
38
- id: string;
39
- x: number;
40
- y: number;
41
- shapeType: 'rectangle' | 'circle' | 'ellipse' | 'triangle' | 'polygon' | 'star';
42
- width: number;
43
- height: number;
44
- fillColor: string;
45
- fillOpacity?: number;
46
- borderRadius?: number;
47
- rotation?: number;
48
- opacity?: number;
49
- stroke?: {
50
- color: string;
51
- width: number;
52
- };
53
- sides?: number;
54
- points?: number;
55
- innerRadius?: number;
56
- }
57
- export interface ImageLayerSpec {
58
- type: 'image';
59
- id: string;
60
- x: number;
61
- y: number;
62
- width: number;
63
- height: number;
64
- imageUrl: string;
65
- rotation?: number;
66
- opacity?: number;
67
- }
68
- /**
69
- * Convert a DesignSpec into EditorElement[].
70
- *
71
- * This is an async function because it needs to load Google Fonts.
72
- * Elements are returned in spec order (index 0 = bottom of z-stack).
73
- */
74
- export declare function specToElements(spec: DesignSpec): Promise<EditorElement[]>;
@@ -1,45 +0,0 @@
1
- import { default as React } from 'react';
2
- /**
3
- * Shared theme utilities for Storybook stories
4
- *
5
- * HeroUI Convention:
6
- * - ThemeAccent: 'default' | 'axis' | 'indigo' | 'ocean' | 'sunset' (accent color)
7
- * - ThemeMode: 'light' | 'dark' (controlled by .dark class)
8
- *
9
- * These are INDEPENDENT - accent sets data-theme, mode sets .dark class
10
- */
11
- export type ThemeAccent = 'default' | 'axis' | 'indigo' | 'ocean' | 'sunset';
12
- export type ThemeMode = 'light' | 'dark';
13
- export type ThemeColor = ThemeAccent;
14
- export type SnowconeThemeVariant = 'light' | 'dark' | 'axis' | 'axis-light' | 'axis-dark' | 'indigo' | 'indigo-light' | 'indigo-dark' | 'ocean' | 'ocean-light' | 'ocean-dark' | 'sunset' | 'sunset-light' | 'sunset-dark';
15
- /**
16
- * Gets theme accent and mode from Storybook context globals
17
- */
18
- export declare function getThemeFromContext(context: {
19
- globals?: Record<string, unknown>;
20
- }): {
21
- accent: ThemeAccent;
22
- mode: ThemeMode;
23
- };
24
- /**
25
- * @deprecated Use the global ThemeDecorator in preview.tsx instead.
26
- *
27
- * The global decorator applies theme to document.documentElement which ensures
28
- * CSS variables cascade properly. This local decorator is kept for backward
29
- * compatibility but should not be used for new stories.
30
- *
31
- * Stories should rely on Storybook's global theme controls:
32
- * - Dark mode toggle (moon icon) for light/dark
33
- * - Accent color picker (paintbrush) for theme variants
34
- */
35
- export declare function createThemeDecorator(): (Story: React.ComponentType<any>, context: {
36
- globals?: Record<string, unknown>;
37
- args?: Record<string, unknown>;
38
- }) => import("react/jsx-runtime").JSX.Element;
39
- export type StorybookTheme = ThemeAccent | ThemeMode;
40
- /**
41
- * @deprecated Use accent-only themes instead (e.g., 'ocean' not 'ocean-light')
42
- */
43
- export declare function buildThemeVariant(color: ThemeAccent, mode: ThemeMode): SnowconeThemeVariant;
44
- export declare function mapStorybookThemeToVariant(storybookTheme: string): SnowconeThemeVariant;
45
- export declare function mapStorybookThemeToProductCardVariant(storybookTheme: string): string;
@@ -1,27 +0,0 @@
1
- import { EditorElement } from '../../embed/index';
2
- export interface UnifiedTestCase {
3
- /** Unique ID for QA card (kebab-case) */
4
- id: string;
5
- /** Display name */
6
- name: string;
7
- /** Group name for organizing stories */
8
- group: string;
9
- /** Visual expectation: what correct rendering looks like (for AI evaluation) */
10
- expect: string;
11
- /** Tags for filtering */
12
- tags: string[];
13
- /** Factory that produces the elements for this test */
14
- createElements: () => EditorElement[] | Promise<EditorElement[]>;
15
- /** Optional artboard setup (e.g. background color, distress texture) */
16
- artboardSetup?: (artboard: any) => void;
17
- /** Optional artboard cleanup (restore defaults) */
18
- artboardCleanup?: (artboard: any) => void;
19
- /** Optional wait time in ms before capturing */
20
- waitMs?: number;
21
- }
22
- export declare const UNIFIED_TEST_CASES: UnifiedTestCase[];
23
- /** Returns test cases organized by group */
24
- export declare function getTestGroups(): {
25
- name: string;
26
- cases: UnifiedTestCase[];
27
- }[];