@wireweave/core 1.0.0-beta.20260107130355

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 (43) hide show
  1. package/README.md +351 -0
  2. package/dist/index.cjs +56106 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +252 -0
  5. package/dist/index.d.ts +252 -0
  6. package/dist/index.js +55985 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/parser.cjs +5417 -0
  9. package/dist/parser.cjs.map +1 -0
  10. package/dist/parser.d.cts +89 -0
  11. package/dist/parser.d.ts +89 -0
  12. package/dist/parser.js +5387 -0
  13. package/dist/parser.js.map +1 -0
  14. package/dist/renderer.cjs +50244 -0
  15. package/dist/renderer.cjs.map +1 -0
  16. package/dist/renderer.d.cts +497 -0
  17. package/dist/renderer.d.ts +497 -0
  18. package/dist/renderer.js +50202 -0
  19. package/dist/renderer.js.map +1 -0
  20. package/dist/types-DtovIYS6.d.cts +419 -0
  21. package/dist/types-DtovIYS6.d.ts +419 -0
  22. package/package.json +59 -0
  23. package/src/ast/guards.ts +361 -0
  24. package/src/ast/index.ts +9 -0
  25. package/src/ast/types.ts +661 -0
  26. package/src/ast/utils.ts +238 -0
  27. package/src/grammar/wireframe.peggy +677 -0
  28. package/src/icons/lucide-icons.ts +46422 -0
  29. package/src/index.ts +20 -0
  30. package/src/parser/generated-parser.js +5199 -0
  31. package/src/parser/index.ts +214 -0
  32. package/src/renderer/html/base.ts +186 -0
  33. package/src/renderer/html/components.ts +1092 -0
  34. package/src/renderer/html/index.ts +1608 -0
  35. package/src/renderer/html/layout.ts +392 -0
  36. package/src/renderer/index.ts +143 -0
  37. package/src/renderer/styles-components.ts +1232 -0
  38. package/src/renderer/styles.ts +382 -0
  39. package/src/renderer/svg/index.ts +1050 -0
  40. package/src/renderer/types.ts +173 -0
  41. package/src/types/index.ts +138 -0
  42. package/src/viewport/index.ts +17 -0
  43. package/src/viewport/presets.ts +181 -0
@@ -0,0 +1,252 @@
1
+ import { A as AnyNode, C as ContainerNode, L as LeafNode, a as LayoutNode, P as PageNode, H as HeaderNode, M as MainNode, F as FooterNode, S as SidebarNode, b as SectionNode, G as GridNode, R as RowNode, c as ColNode, d as ContainerComponentNode, e as CardNode, f as ModalNode, D as DrawerNode, g as AccordionNode, T as TextContentNode, h as TextNode, i as TitleNode, j as LinkNode, I as InputComponentNode, k as InputNode, l as TextareaNode, m as SelectNode, n as CheckboxNode, o as RadioNode, p as SwitchNode, q as SliderNode, B as ButtonNode, r as DisplayNode, s as ImageNode, t as PlaceholderNode, u as AvatarNode, v as BadgeNode, w as IconNode, x as DataNode, y as TableNode, z as ListNode, E as FeedbackNode, J as AlertNode, K as ToastNode, N as ProgressNode, O as SpinnerNode, Q as OverlayNode, U as TooltipNode, V as PopoverNode, W as DropdownNode, X as NavigationNode, Y as NavNode, Z as TabsNode, _ as BreadcrumbNode, $ as DividerComponentNode, a0 as NodeType, a1 as WireframeDocument } from './types-DtovIYS6.cjs';
2
+ export { ax as AlertVariant, ac as AlignValue, as as AvatarSize, au as BadgeSize, at as BadgeVariant, a4 as BaseNode, aF as BreadcrumbItem, ar as ButtonSize, aq as ButtonVariant, ag as CommonProps, ad as DirectionValue, aC as DividerNode, ai as DrawerPosition, aB as DropdownItemNode, ae as FlexProps, af as GridProps, a9 as HeightValue, av as IconSize, ao as InputType, ab as JustifyValue, aw as ListItemNode, aD as NavItem, a2 as Position, ap as SelectOption, ah as ShadowValue, aa as SizeProps, a3 as SourceLocation, a7 as SpacingProps, a6 as SpacingValue, az as SpinnerSize, aE as TabNode, am as TextAlign, ak as TextSize, aj as TextSizeToken, al as TextWeight, an as TitleLevel, ay as ToastPosition, aA as TooltipPosition, a5 as ValueWithUnit, a8 as WidthValue } from './types-DtovIYS6.cjs';
3
+ export { ExpectedToken, ParseError, ParseErrorInfo, ParseOptions, ParseResult, getErrors, isValid, parse, tryParse } from './parser.cjs';
4
+ export { HtmlRenderer, IconData, IconElement, RenderContext, RenderOptions, RenderResult, SvgRenderOptions, SvgRenderResult, SvgRenderer, ThemeColors, ThemeConfig, createHtmlRenderer, createSvgRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToPureSvg, renderToSvg } from './renderer.cjs';
5
+
6
+ /**
7
+ * Type guards for wireweave AST
8
+ *
9
+ * Provides runtime type checking for AST nodes
10
+ */
11
+
12
+ declare function isContainerNode(node: AnyNode): node is ContainerNode;
13
+ declare function hasChildren(node: AnyNode): node is AnyNode & {
14
+ children: AnyNode[];
15
+ };
16
+ declare function isLeafNode(node: AnyNode): node is LeafNode;
17
+ declare function isLayoutNode(node: AnyNode): node is LayoutNode;
18
+ declare function isPageNode(node: AnyNode): node is PageNode;
19
+ declare function isHeaderNode(node: AnyNode): node is HeaderNode;
20
+ declare function isMainNode(node: AnyNode): node is MainNode;
21
+ declare function isFooterNode(node: AnyNode): node is FooterNode;
22
+ declare function isSidebarNode(node: AnyNode): node is SidebarNode;
23
+ declare function isSectionNode(node: AnyNode): node is SectionNode;
24
+ declare function isGridNode(node: AnyNode): node is GridNode;
25
+ declare function isRowNode(node: AnyNode): node is RowNode;
26
+ declare function isColNode(node: AnyNode): node is ColNode;
27
+ declare function isContainerComponentNode(node: AnyNode): node is ContainerComponentNode;
28
+ declare function isCardNode(node: AnyNode): node is CardNode;
29
+ declare function isModalNode(node: AnyNode): node is ModalNode;
30
+ declare function isDrawerNode(node: AnyNode): node is DrawerNode;
31
+ declare function isAccordionNode(node: AnyNode): node is AccordionNode;
32
+ declare function isTextContentNode(node: AnyNode): node is TextContentNode;
33
+ declare function isTextNode(node: AnyNode): node is TextNode;
34
+ declare function isTitleNode(node: AnyNode): node is TitleNode;
35
+ declare function isLinkNode(node: AnyNode): node is LinkNode;
36
+ declare function isInputComponentNode(node: AnyNode): node is InputComponentNode;
37
+ declare function isInputNode(node: AnyNode): node is InputNode;
38
+ declare function isTextareaNode(node: AnyNode): node is TextareaNode;
39
+ declare function isSelectNode(node: AnyNode): node is SelectNode;
40
+ declare function isCheckboxNode(node: AnyNode): node is CheckboxNode;
41
+ declare function isRadioNode(node: AnyNode): node is RadioNode;
42
+ declare function isSwitchNode(node: AnyNode): node is SwitchNode;
43
+ declare function isSliderNode(node: AnyNode): node is SliderNode;
44
+ declare function isButtonNode(node: AnyNode): node is ButtonNode;
45
+ declare function isDisplayNode(node: AnyNode): node is DisplayNode;
46
+ declare function isImageNode(node: AnyNode): node is ImageNode;
47
+ declare function isPlaceholderNode(node: AnyNode): node is PlaceholderNode;
48
+ declare function isAvatarNode(node: AnyNode): node is AvatarNode;
49
+ declare function isBadgeNode(node: AnyNode): node is BadgeNode;
50
+ declare function isIconNode(node: AnyNode): node is IconNode;
51
+ declare function isDataNode(node: AnyNode): node is DataNode;
52
+ declare function isTableNode(node: AnyNode): node is TableNode;
53
+ declare function isListNode(node: AnyNode): node is ListNode;
54
+ declare function isFeedbackNode(node: AnyNode): node is FeedbackNode;
55
+ declare function isAlertNode(node: AnyNode): node is AlertNode;
56
+ declare function isToastNode(node: AnyNode): node is ToastNode;
57
+ declare function isProgressNode(node: AnyNode): node is ProgressNode;
58
+ declare function isSpinnerNode(node: AnyNode): node is SpinnerNode;
59
+ declare function isOverlayNode(node: AnyNode): node is OverlayNode;
60
+ declare function isTooltipNode(node: AnyNode): node is TooltipNode;
61
+ declare function isPopoverNode(node: AnyNode): node is PopoverNode;
62
+ declare function isDropdownNode(node: AnyNode): node is DropdownNode;
63
+ declare function isNavigationNode(node: AnyNode): node is NavigationNode;
64
+ declare function isNavNode(node: AnyNode): node is NavNode;
65
+ declare function isTabsNode(node: AnyNode): node is TabsNode;
66
+ declare function isBreadcrumbNode(node: AnyNode): node is BreadcrumbNode;
67
+ declare function isDividerNode(node: AnyNode): node is DividerComponentNode;
68
+ declare function isNodeType<T extends NodeType>(node: AnyNode, type: T): node is Extract<AnyNode, {
69
+ type: T;
70
+ }>;
71
+
72
+ /**
73
+ * AST utility functions for wireweave
74
+ *
75
+ * Provides traversal and search utilities for AST nodes
76
+ */
77
+
78
+ /**
79
+ * Callback function for AST traversal
80
+ */
81
+ type WalkCallback = (node: AnyNode, parent?: AnyNode, depth?: number) => void | boolean;
82
+ /**
83
+ * Predicate function for finding nodes
84
+ */
85
+ type NodePredicate = (node: AnyNode) => boolean;
86
+ /**
87
+ * Walk through all nodes in the AST
88
+ *
89
+ * @param node - The starting node
90
+ * @param callback - Function called for each node. Return false to stop traversal.
91
+ * @param parent - Parent node (used internally)
92
+ * @param depth - Current depth (used internally)
93
+ */
94
+ declare function walk(node: AnyNode, callback: WalkCallback, parent?: AnyNode, depth?: number): void;
95
+ /**
96
+ * Walk through a document's AST
97
+ *
98
+ * @param document - The wireframe document
99
+ * @param callback - Function called for each node
100
+ */
101
+ declare function walkDocument(document: WireframeDocument, callback: WalkCallback): void;
102
+ /**
103
+ * Find the first node matching a predicate
104
+ *
105
+ * @param node - The starting node
106
+ * @param predicate - Function to test each node
107
+ * @returns The first matching node, or undefined
108
+ */
109
+ declare function find(node: AnyNode, predicate: NodePredicate): AnyNode | undefined;
110
+ /**
111
+ * Find all nodes matching a predicate
112
+ *
113
+ * @param node - The starting node
114
+ * @param predicate - Function to test each node
115
+ * @returns Array of matching nodes
116
+ */
117
+ declare function findAll(node: AnyNode, predicate: NodePredicate): AnyNode[];
118
+ /**
119
+ * Find all nodes of a specific type
120
+ *
121
+ * @param node - The starting node
122
+ * @param type - The node type to find
123
+ * @returns Array of matching nodes
124
+ */
125
+ declare function findByType<T extends AnyNode>(node: AnyNode, type: NodeType): T[];
126
+ /**
127
+ * Count all nodes in the AST
128
+ *
129
+ * @param node - The starting node
130
+ * @returns Total number of nodes
131
+ */
132
+ declare function countNodes(node: AnyNode): number;
133
+ /**
134
+ * Get the maximum depth of the AST
135
+ *
136
+ * @param node - The starting node
137
+ * @returns Maximum depth
138
+ */
139
+ declare function getMaxDepth(node: AnyNode): number;
140
+ /**
141
+ * Get ancestors of a node (path from root to node)
142
+ *
143
+ * @param root - The root node
144
+ * @param target - The target node to find
145
+ * @returns Array of ancestor nodes, or empty array if not found
146
+ */
147
+ declare function getAncestors(root: AnyNode, target: AnyNode): AnyNode[];
148
+ /**
149
+ * Map over all nodes in the AST
150
+ *
151
+ * @param node - The starting node
152
+ * @param mapper - Function to transform each node
153
+ * @returns New AST with transformed nodes
154
+ */
155
+ declare function mapNodes<T>(node: AnyNode, mapper: (node: AnyNode) => T): T[];
156
+ /**
157
+ * Clone an AST node (deep clone)
158
+ *
159
+ * @param node - The node to clone
160
+ * @returns A deep clone of the node
161
+ */
162
+ declare function cloneNode<T extends AnyNode>(node: T): T;
163
+ /**
164
+ * Check if a node contains a specific child (at any depth)
165
+ *
166
+ * @param node - The parent node
167
+ * @param target - The target node to find
168
+ * @returns True if the target is found
169
+ */
170
+ declare function contains(node: AnyNode, target: AnyNode): boolean;
171
+ /**
172
+ * Get all node types present in the AST
173
+ *
174
+ * @param node - The starting node
175
+ * @returns Set of node types
176
+ */
177
+ declare function getNodeTypes(node: AnyNode): Set<NodeType>;
178
+
179
+ /**
180
+ * Device viewport presets for wireweave
181
+ *
182
+ * Standard device dimensions for wireframe design
183
+ */
184
+ interface ViewportSize {
185
+ width: number;
186
+ height: number;
187
+ label: string;
188
+ category: 'desktop' | 'tablet' | 'mobile';
189
+ }
190
+ /**
191
+ * Device preset definitions
192
+ */
193
+ declare const DEVICE_PRESETS: Record<string, ViewportSize>;
194
+ /**
195
+ * Default viewport size (desktop)
196
+ */
197
+ declare const DEFAULT_VIEWPORT: ViewportSize;
198
+ /**
199
+ * Parse viewport value (e.g., "1440x900", "1440", or number)
200
+ */
201
+ declare function parseViewportString(value: string | number): {
202
+ width: number;
203
+ height?: number;
204
+ } | null;
205
+ /**
206
+ * Get viewport size from device preset or explicit size
207
+ */
208
+ declare function resolveViewport(viewport?: string | number, device?: string): ViewportSize;
209
+ /**
210
+ * Get all available device presets
211
+ */
212
+ declare function getDevicePresets(): Record<string, ViewportSize>;
213
+ /**
214
+ * Check if a device preset exists
215
+ */
216
+ declare function isValidDevicePreset(device: string): boolean;
217
+ /**
218
+ * Calculate scale factor to fit viewport in container
219
+ *
220
+ * @param viewport - The viewport dimensions
221
+ * @param containerWidth - Available container width
222
+ * @param containerHeight - Available container height (optional)
223
+ * @param maxScale - Maximum scale factor (default: 1)
224
+ * @returns Scale factor (0-1 range, or up to maxScale)
225
+ */
226
+ declare function calculateViewportScale(viewport: ViewportSize, containerWidth: number, containerHeight?: number, maxScale?: number): number;
227
+ /**
228
+ * Options for creating preview wrapper HTML
229
+ */
230
+ interface PreviewWrapperOptions {
231
+ /** CSS class prefix (default: 'wf') */
232
+ prefix?: string;
233
+ /** Dark mode background */
234
+ darkMode?: boolean;
235
+ /** Container width for auto-scaling */
236
+ containerWidth?: number;
237
+ /** Container height for auto-scaling */
238
+ containerHeight?: number;
239
+ /** Custom scale (overrides auto-calculated scale) */
240
+ scale?: number;
241
+ }
242
+ /**
243
+ * Wrap rendered HTML in a preview container with scaling
244
+ *
245
+ * @param html - The rendered wireframe HTML
246
+ * @param viewport - The viewport size used for rendering
247
+ * @param options - Preview wrapper options
248
+ * @returns HTML string with preview wrapper
249
+ */
250
+ declare function wrapInPreviewContainer(html: string, viewport: ViewportSize, options?: PreviewWrapperOptions): string;
251
+
252
+ export { AccordionNode, AlertNode, AnyNode, AvatarNode, BadgeNode, BreadcrumbNode, ButtonNode, CardNode, CheckboxNode, ColNode, ContainerComponentNode, ContainerNode, DEFAULT_VIEWPORT, DEVICE_PRESETS, DataNode, DisplayNode, DividerComponentNode, DrawerNode, DropdownNode, FeedbackNode, FooterNode, GridNode, HeaderNode, IconNode, ImageNode, InputComponentNode, InputNode, LayoutNode, LeafNode, LinkNode, ListNode, MainNode, ModalNode, NavNode, NavigationNode, type NodePredicate, NodeType, OverlayNode, PageNode, PlaceholderNode, PopoverNode, type PreviewWrapperOptions, ProgressNode, RadioNode, RowNode, SectionNode, SelectNode, SidebarNode, SliderNode, SpinnerNode, SwitchNode, TableNode, TabsNode, TextContentNode, TextNode, TextareaNode, TitleNode, ToastNode, TooltipNode, type ViewportSize, type WalkCallback, WireframeDocument, calculateViewportScale, cloneNode, contains, countNodes, find, findAll, findByType, getAncestors, getDevicePresets, getMaxDepth, getNodeTypes, hasChildren, isAccordionNode, isAlertNode, isAvatarNode, isBadgeNode, isBreadcrumbNode, isButtonNode, isCardNode, isCheckboxNode, isColNode, isContainerComponentNode, isContainerNode, isDataNode, isDisplayNode, isDividerNode, isDrawerNode, isDropdownNode, isFeedbackNode, isFooterNode, isGridNode, isHeaderNode, isIconNode, isImageNode, isInputComponentNode, isInputNode, isLayoutNode, isLeafNode, isLinkNode, isListNode, isMainNode, isModalNode, isNavNode, isNavigationNode, isNodeType, isOverlayNode, isPageNode, isPlaceholderNode, isPopoverNode, isProgressNode, isRadioNode, isRowNode, isSectionNode, isSelectNode, isSidebarNode, isSliderNode, isSpinnerNode, isSwitchNode, isTableNode, isTabsNode, isTextContentNode, isTextNode, isTextareaNode, isTitleNode, isToastNode, isTooltipNode, isValidDevicePreset, mapNodes, parseViewportString, resolveViewport, walk, walkDocument, wrapInPreviewContainer };
@@ -0,0 +1,252 @@
1
+ import { A as AnyNode, C as ContainerNode, L as LeafNode, a as LayoutNode, P as PageNode, H as HeaderNode, M as MainNode, F as FooterNode, S as SidebarNode, b as SectionNode, G as GridNode, R as RowNode, c as ColNode, d as ContainerComponentNode, e as CardNode, f as ModalNode, D as DrawerNode, g as AccordionNode, T as TextContentNode, h as TextNode, i as TitleNode, j as LinkNode, I as InputComponentNode, k as InputNode, l as TextareaNode, m as SelectNode, n as CheckboxNode, o as RadioNode, p as SwitchNode, q as SliderNode, B as ButtonNode, r as DisplayNode, s as ImageNode, t as PlaceholderNode, u as AvatarNode, v as BadgeNode, w as IconNode, x as DataNode, y as TableNode, z as ListNode, E as FeedbackNode, J as AlertNode, K as ToastNode, N as ProgressNode, O as SpinnerNode, Q as OverlayNode, U as TooltipNode, V as PopoverNode, W as DropdownNode, X as NavigationNode, Y as NavNode, Z as TabsNode, _ as BreadcrumbNode, $ as DividerComponentNode, a0 as NodeType, a1 as WireframeDocument } from './types-DtovIYS6.js';
2
+ export { ax as AlertVariant, ac as AlignValue, as as AvatarSize, au as BadgeSize, at as BadgeVariant, a4 as BaseNode, aF as BreadcrumbItem, ar as ButtonSize, aq as ButtonVariant, ag as CommonProps, ad as DirectionValue, aC as DividerNode, ai as DrawerPosition, aB as DropdownItemNode, ae as FlexProps, af as GridProps, a9 as HeightValue, av as IconSize, ao as InputType, ab as JustifyValue, aw as ListItemNode, aD as NavItem, a2 as Position, ap as SelectOption, ah as ShadowValue, aa as SizeProps, a3 as SourceLocation, a7 as SpacingProps, a6 as SpacingValue, az as SpinnerSize, aE as TabNode, am as TextAlign, ak as TextSize, aj as TextSizeToken, al as TextWeight, an as TitleLevel, ay as ToastPosition, aA as TooltipPosition, a5 as ValueWithUnit, a8 as WidthValue } from './types-DtovIYS6.js';
3
+ export { ExpectedToken, ParseError, ParseErrorInfo, ParseOptions, ParseResult, getErrors, isValid, parse, tryParse } from './parser.js';
4
+ export { HtmlRenderer, IconData, IconElement, RenderContext, RenderOptions, RenderResult, SvgRenderOptions, SvgRenderResult, SvgRenderer, ThemeColors, ThemeConfig, createHtmlRenderer, createSvgRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToPureSvg, renderToSvg } from './renderer.js';
5
+
6
+ /**
7
+ * Type guards for wireweave AST
8
+ *
9
+ * Provides runtime type checking for AST nodes
10
+ */
11
+
12
+ declare function isContainerNode(node: AnyNode): node is ContainerNode;
13
+ declare function hasChildren(node: AnyNode): node is AnyNode & {
14
+ children: AnyNode[];
15
+ };
16
+ declare function isLeafNode(node: AnyNode): node is LeafNode;
17
+ declare function isLayoutNode(node: AnyNode): node is LayoutNode;
18
+ declare function isPageNode(node: AnyNode): node is PageNode;
19
+ declare function isHeaderNode(node: AnyNode): node is HeaderNode;
20
+ declare function isMainNode(node: AnyNode): node is MainNode;
21
+ declare function isFooterNode(node: AnyNode): node is FooterNode;
22
+ declare function isSidebarNode(node: AnyNode): node is SidebarNode;
23
+ declare function isSectionNode(node: AnyNode): node is SectionNode;
24
+ declare function isGridNode(node: AnyNode): node is GridNode;
25
+ declare function isRowNode(node: AnyNode): node is RowNode;
26
+ declare function isColNode(node: AnyNode): node is ColNode;
27
+ declare function isContainerComponentNode(node: AnyNode): node is ContainerComponentNode;
28
+ declare function isCardNode(node: AnyNode): node is CardNode;
29
+ declare function isModalNode(node: AnyNode): node is ModalNode;
30
+ declare function isDrawerNode(node: AnyNode): node is DrawerNode;
31
+ declare function isAccordionNode(node: AnyNode): node is AccordionNode;
32
+ declare function isTextContentNode(node: AnyNode): node is TextContentNode;
33
+ declare function isTextNode(node: AnyNode): node is TextNode;
34
+ declare function isTitleNode(node: AnyNode): node is TitleNode;
35
+ declare function isLinkNode(node: AnyNode): node is LinkNode;
36
+ declare function isInputComponentNode(node: AnyNode): node is InputComponentNode;
37
+ declare function isInputNode(node: AnyNode): node is InputNode;
38
+ declare function isTextareaNode(node: AnyNode): node is TextareaNode;
39
+ declare function isSelectNode(node: AnyNode): node is SelectNode;
40
+ declare function isCheckboxNode(node: AnyNode): node is CheckboxNode;
41
+ declare function isRadioNode(node: AnyNode): node is RadioNode;
42
+ declare function isSwitchNode(node: AnyNode): node is SwitchNode;
43
+ declare function isSliderNode(node: AnyNode): node is SliderNode;
44
+ declare function isButtonNode(node: AnyNode): node is ButtonNode;
45
+ declare function isDisplayNode(node: AnyNode): node is DisplayNode;
46
+ declare function isImageNode(node: AnyNode): node is ImageNode;
47
+ declare function isPlaceholderNode(node: AnyNode): node is PlaceholderNode;
48
+ declare function isAvatarNode(node: AnyNode): node is AvatarNode;
49
+ declare function isBadgeNode(node: AnyNode): node is BadgeNode;
50
+ declare function isIconNode(node: AnyNode): node is IconNode;
51
+ declare function isDataNode(node: AnyNode): node is DataNode;
52
+ declare function isTableNode(node: AnyNode): node is TableNode;
53
+ declare function isListNode(node: AnyNode): node is ListNode;
54
+ declare function isFeedbackNode(node: AnyNode): node is FeedbackNode;
55
+ declare function isAlertNode(node: AnyNode): node is AlertNode;
56
+ declare function isToastNode(node: AnyNode): node is ToastNode;
57
+ declare function isProgressNode(node: AnyNode): node is ProgressNode;
58
+ declare function isSpinnerNode(node: AnyNode): node is SpinnerNode;
59
+ declare function isOverlayNode(node: AnyNode): node is OverlayNode;
60
+ declare function isTooltipNode(node: AnyNode): node is TooltipNode;
61
+ declare function isPopoverNode(node: AnyNode): node is PopoverNode;
62
+ declare function isDropdownNode(node: AnyNode): node is DropdownNode;
63
+ declare function isNavigationNode(node: AnyNode): node is NavigationNode;
64
+ declare function isNavNode(node: AnyNode): node is NavNode;
65
+ declare function isTabsNode(node: AnyNode): node is TabsNode;
66
+ declare function isBreadcrumbNode(node: AnyNode): node is BreadcrumbNode;
67
+ declare function isDividerNode(node: AnyNode): node is DividerComponentNode;
68
+ declare function isNodeType<T extends NodeType>(node: AnyNode, type: T): node is Extract<AnyNode, {
69
+ type: T;
70
+ }>;
71
+
72
+ /**
73
+ * AST utility functions for wireweave
74
+ *
75
+ * Provides traversal and search utilities for AST nodes
76
+ */
77
+
78
+ /**
79
+ * Callback function for AST traversal
80
+ */
81
+ type WalkCallback = (node: AnyNode, parent?: AnyNode, depth?: number) => void | boolean;
82
+ /**
83
+ * Predicate function for finding nodes
84
+ */
85
+ type NodePredicate = (node: AnyNode) => boolean;
86
+ /**
87
+ * Walk through all nodes in the AST
88
+ *
89
+ * @param node - The starting node
90
+ * @param callback - Function called for each node. Return false to stop traversal.
91
+ * @param parent - Parent node (used internally)
92
+ * @param depth - Current depth (used internally)
93
+ */
94
+ declare function walk(node: AnyNode, callback: WalkCallback, parent?: AnyNode, depth?: number): void;
95
+ /**
96
+ * Walk through a document's AST
97
+ *
98
+ * @param document - The wireframe document
99
+ * @param callback - Function called for each node
100
+ */
101
+ declare function walkDocument(document: WireframeDocument, callback: WalkCallback): void;
102
+ /**
103
+ * Find the first node matching a predicate
104
+ *
105
+ * @param node - The starting node
106
+ * @param predicate - Function to test each node
107
+ * @returns The first matching node, or undefined
108
+ */
109
+ declare function find(node: AnyNode, predicate: NodePredicate): AnyNode | undefined;
110
+ /**
111
+ * Find all nodes matching a predicate
112
+ *
113
+ * @param node - The starting node
114
+ * @param predicate - Function to test each node
115
+ * @returns Array of matching nodes
116
+ */
117
+ declare function findAll(node: AnyNode, predicate: NodePredicate): AnyNode[];
118
+ /**
119
+ * Find all nodes of a specific type
120
+ *
121
+ * @param node - The starting node
122
+ * @param type - The node type to find
123
+ * @returns Array of matching nodes
124
+ */
125
+ declare function findByType<T extends AnyNode>(node: AnyNode, type: NodeType): T[];
126
+ /**
127
+ * Count all nodes in the AST
128
+ *
129
+ * @param node - The starting node
130
+ * @returns Total number of nodes
131
+ */
132
+ declare function countNodes(node: AnyNode): number;
133
+ /**
134
+ * Get the maximum depth of the AST
135
+ *
136
+ * @param node - The starting node
137
+ * @returns Maximum depth
138
+ */
139
+ declare function getMaxDepth(node: AnyNode): number;
140
+ /**
141
+ * Get ancestors of a node (path from root to node)
142
+ *
143
+ * @param root - The root node
144
+ * @param target - The target node to find
145
+ * @returns Array of ancestor nodes, or empty array if not found
146
+ */
147
+ declare function getAncestors(root: AnyNode, target: AnyNode): AnyNode[];
148
+ /**
149
+ * Map over all nodes in the AST
150
+ *
151
+ * @param node - The starting node
152
+ * @param mapper - Function to transform each node
153
+ * @returns New AST with transformed nodes
154
+ */
155
+ declare function mapNodes<T>(node: AnyNode, mapper: (node: AnyNode) => T): T[];
156
+ /**
157
+ * Clone an AST node (deep clone)
158
+ *
159
+ * @param node - The node to clone
160
+ * @returns A deep clone of the node
161
+ */
162
+ declare function cloneNode<T extends AnyNode>(node: T): T;
163
+ /**
164
+ * Check if a node contains a specific child (at any depth)
165
+ *
166
+ * @param node - The parent node
167
+ * @param target - The target node to find
168
+ * @returns True if the target is found
169
+ */
170
+ declare function contains(node: AnyNode, target: AnyNode): boolean;
171
+ /**
172
+ * Get all node types present in the AST
173
+ *
174
+ * @param node - The starting node
175
+ * @returns Set of node types
176
+ */
177
+ declare function getNodeTypes(node: AnyNode): Set<NodeType>;
178
+
179
+ /**
180
+ * Device viewport presets for wireweave
181
+ *
182
+ * Standard device dimensions for wireframe design
183
+ */
184
+ interface ViewportSize {
185
+ width: number;
186
+ height: number;
187
+ label: string;
188
+ category: 'desktop' | 'tablet' | 'mobile';
189
+ }
190
+ /**
191
+ * Device preset definitions
192
+ */
193
+ declare const DEVICE_PRESETS: Record<string, ViewportSize>;
194
+ /**
195
+ * Default viewport size (desktop)
196
+ */
197
+ declare const DEFAULT_VIEWPORT: ViewportSize;
198
+ /**
199
+ * Parse viewport value (e.g., "1440x900", "1440", or number)
200
+ */
201
+ declare function parseViewportString(value: string | number): {
202
+ width: number;
203
+ height?: number;
204
+ } | null;
205
+ /**
206
+ * Get viewport size from device preset or explicit size
207
+ */
208
+ declare function resolveViewport(viewport?: string | number, device?: string): ViewportSize;
209
+ /**
210
+ * Get all available device presets
211
+ */
212
+ declare function getDevicePresets(): Record<string, ViewportSize>;
213
+ /**
214
+ * Check if a device preset exists
215
+ */
216
+ declare function isValidDevicePreset(device: string): boolean;
217
+ /**
218
+ * Calculate scale factor to fit viewport in container
219
+ *
220
+ * @param viewport - The viewport dimensions
221
+ * @param containerWidth - Available container width
222
+ * @param containerHeight - Available container height (optional)
223
+ * @param maxScale - Maximum scale factor (default: 1)
224
+ * @returns Scale factor (0-1 range, or up to maxScale)
225
+ */
226
+ declare function calculateViewportScale(viewport: ViewportSize, containerWidth: number, containerHeight?: number, maxScale?: number): number;
227
+ /**
228
+ * Options for creating preview wrapper HTML
229
+ */
230
+ interface PreviewWrapperOptions {
231
+ /** CSS class prefix (default: 'wf') */
232
+ prefix?: string;
233
+ /** Dark mode background */
234
+ darkMode?: boolean;
235
+ /** Container width for auto-scaling */
236
+ containerWidth?: number;
237
+ /** Container height for auto-scaling */
238
+ containerHeight?: number;
239
+ /** Custom scale (overrides auto-calculated scale) */
240
+ scale?: number;
241
+ }
242
+ /**
243
+ * Wrap rendered HTML in a preview container with scaling
244
+ *
245
+ * @param html - The rendered wireframe HTML
246
+ * @param viewport - The viewport size used for rendering
247
+ * @param options - Preview wrapper options
248
+ * @returns HTML string with preview wrapper
249
+ */
250
+ declare function wrapInPreviewContainer(html: string, viewport: ViewportSize, options?: PreviewWrapperOptions): string;
251
+
252
+ export { AccordionNode, AlertNode, AnyNode, AvatarNode, BadgeNode, BreadcrumbNode, ButtonNode, CardNode, CheckboxNode, ColNode, ContainerComponentNode, ContainerNode, DEFAULT_VIEWPORT, DEVICE_PRESETS, DataNode, DisplayNode, DividerComponentNode, DrawerNode, DropdownNode, FeedbackNode, FooterNode, GridNode, HeaderNode, IconNode, ImageNode, InputComponentNode, InputNode, LayoutNode, LeafNode, LinkNode, ListNode, MainNode, ModalNode, NavNode, NavigationNode, type NodePredicate, NodeType, OverlayNode, PageNode, PlaceholderNode, PopoverNode, type PreviewWrapperOptions, ProgressNode, RadioNode, RowNode, SectionNode, SelectNode, SidebarNode, SliderNode, SpinnerNode, SwitchNode, TableNode, TabsNode, TextContentNode, TextNode, TextareaNode, TitleNode, ToastNode, TooltipNode, type ViewportSize, type WalkCallback, WireframeDocument, calculateViewportScale, cloneNode, contains, countNodes, find, findAll, findByType, getAncestors, getDevicePresets, getMaxDepth, getNodeTypes, hasChildren, isAccordionNode, isAlertNode, isAvatarNode, isBadgeNode, isBreadcrumbNode, isButtonNode, isCardNode, isCheckboxNode, isColNode, isContainerComponentNode, isContainerNode, isDataNode, isDisplayNode, isDividerNode, isDrawerNode, isDropdownNode, isFeedbackNode, isFooterNode, isGridNode, isHeaderNode, isIconNode, isImageNode, isInputComponentNode, isInputNode, isLayoutNode, isLeafNode, isLinkNode, isListNode, isMainNode, isModalNode, isNavNode, isNavigationNode, isNodeType, isOverlayNode, isPageNode, isPlaceholderNode, isPopoverNode, isProgressNode, isRadioNode, isRowNode, isSectionNode, isSelectNode, isSidebarNode, isSliderNode, isSpinnerNode, isSwitchNode, isTableNode, isTabsNode, isTextContentNode, isTextNode, isTextareaNode, isTitleNode, isToastNode, isTooltipNode, isValidDevicePreset, mapNodes, parseViewportString, resolveViewport, walk, walkDocument, wrapInPreviewContainer };