@wireweave/core 1.1.0 → 1.2.0-beta.1

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.
@@ -1,4 +1,4 @@
1
- import { a1 as WireframeDocument, A as AnyNode, P as PageNode } from './types-DtovIYS6.cjs';
1
+ import { a1 as WireframeDocument, A as AnyNode, P as PageNode } from './types-lcJzPcR0.cjs';
2
2
 
3
3
  /**
4
4
  * Renderer type definitions for wireweave
@@ -183,7 +183,23 @@ declare abstract class BaseRenderer {
183
183
  * Renders wireframe AST to semantic HTML with utility classes
184
184
  */
185
185
  declare class HtmlRenderer extends BaseRenderer {
186
+ /**
187
+ * Node type to renderer method mapping
188
+ */
189
+ private readonly nodeRenderers;
186
190
  constructor(options?: RenderOptions);
191
+ /**
192
+ * Get render context for external renderer functions
193
+ */
194
+ private getRenderContext;
195
+ /**
196
+ * Get grid render context (extends RenderContext with buildColStyles)
197
+ */
198
+ private getGridRenderContext;
199
+ /**
200
+ * Create the node renderer mapping
201
+ */
202
+ private createNodeRenderers;
187
203
  /**
188
204
  * Render a page node
189
205
  */
@@ -214,6 +230,10 @@ declare class HtmlRenderer extends BaseRenderer {
214
230
  /**
215
231
  * Build common inline styles for all values
216
232
  *
233
+ * Position values (x, y) for absolute positioning:
234
+ * - When x or y is specified, element gets position: absolute
235
+ * - x → left, y → top
236
+ *
217
237
  * Spacing values (p, m, gap) use token system:
218
238
  * - number: spacing token (e.g., p=4 → padding: 16px from token table)
219
239
  * - ValueWithUnit: direct CSS value (e.g., p=16px → padding: 16px)
@@ -227,6 +247,26 @@ declare class HtmlRenderer extends BaseRenderer {
227
247
  * Uses Omit to exclude 'align' since TextNode/TitleNode have incompatible align types
228
248
  */
229
249
  private buildCommonStyles;
250
+ /**
251
+ * Build position styles (absolute positioning)
252
+ */
253
+ private buildPositionStyles;
254
+ /**
255
+ * Build size styles (width, height, min/max)
256
+ */
257
+ private buildSizeStyles;
258
+ /**
259
+ * Build padding styles (p, px, py, pt, pr, pb, pl)
260
+ */
261
+ private buildPaddingStyles;
262
+ /**
263
+ * Build margin styles (m, mx, my, mt, mr, mb, ml)
264
+ */
265
+ private buildMarginStyles;
266
+ /**
267
+ * Build gap styles
268
+ */
269
+ private buildGapStyles;
230
270
  /**
231
271
  * Build inline styles for Col node (extends common styles with order)
232
272
  */
@@ -264,129 +304,12 @@ declare class HtmlRenderer extends BaseRenderer {
264
304
  private renderTabs;
265
305
  private renderBreadcrumb;
266
306
  private renderDivider;
267
- /**
268
- * Parse and render semantic markers in text content
269
- *
270
- * Semantic markers use the syntax [component:variant] to indicate
271
- * what a visual element represents. This helps LLMs understand
272
- * the meaning of placeholder content.
273
- *
274
- * Supported markers:
275
- * - [avatar] or [avatar:size] - User avatar (renders as circle placeholder)
276
- * - [badge:variant] TEXT - Status badge (TEXT is displayed inside the badge)
277
- * - [dot:variant] - Status dot (renders as small circle before text)
278
- * - [icon:name] - Icon placeholder
279
- *
280
- * Examples:
281
- * - "[avatar] John Doe" → renders avatar circle + "John Doe"
282
- * - "[badge:primary] PRO" → renders badge containing "PRO"
283
- * - "[dot:success] Active" → renders green dot + "Active"
284
- */
285
- private renderSemanticMarkers;
286
- /**
287
- * Render a single semantic marker to HTML (without content)
288
- */
289
- private renderSemanticMarker;
290
- /**
291
- * Render a semantic marker with text content (for badge)
292
- */
293
- private renderSemanticMarkerWithContent;
294
- /**
295
- * Process table cell content with semantic markers and newlines
296
- *
297
- * Special handling for avatar + text layout:
298
- * When content starts with [avatar], wraps in flex container
299
- * so avatar and text align horizontally, with text stacking vertically
300
- */
301
- private renderTableCellContent;
302
307
  }
303
308
  /**
304
309
  * Create a new HTML renderer instance
305
310
  */
306
311
  declare function createHtmlRenderer(options?: RenderOptions): HtmlRenderer;
307
312
 
308
- /**
309
- * SVG Renderer for wireweave
310
- *
311
- * Renders wireframe AST to SVG image format
312
- */
313
-
314
- /**
315
- * SVG Renderer class
316
- *
317
- * Renders wireframe AST nodes to SVG elements
318
- */
319
- declare class SvgRenderer {
320
- private options;
321
- private theme;
322
- private currentX;
323
- private currentY;
324
- private contentWidth;
325
- constructor(options?: SvgRenderOptions);
326
- /**
327
- * Render a wireframe document to SVG
328
- */
329
- render(doc: WireframeDocument): SvgRenderResult;
330
- /**
331
- * Generate SVG defs (styles, patterns, etc.)
332
- */
333
- private generateDefs;
334
- /**
335
- * Render a page node
336
- */
337
- private renderPage;
338
- /**
339
- * Render page title
340
- */
341
- private renderPageTitle;
342
- /**
343
- * Render any AST node
344
- */
345
- private renderNode;
346
- private renderRow;
347
- private renderCol;
348
- private renderHeader;
349
- private renderMain;
350
- private renderFooter;
351
- private renderSidebar;
352
- private renderCard;
353
- private renderModal;
354
- private renderText;
355
- private renderTitle;
356
- private renderLink;
357
- private renderInput;
358
- private renderTextarea;
359
- private renderSelect;
360
- private renderCheckbox;
361
- private renderRadio;
362
- private renderSwitch;
363
- private renderButton;
364
- /**
365
- * Render icon paths for SVG
366
- */
367
- private renderIconPaths;
368
- private renderImage;
369
- private renderPlaceholder;
370
- private renderAvatar;
371
- private renderBadge;
372
- private renderTable;
373
- private renderList;
374
- private renderAlert;
375
- private renderProgress;
376
- private renderSpinner;
377
- private renderNav;
378
- private renderTabs;
379
- private renderBreadcrumb;
380
- private getFontSize;
381
- private resolveFontSize;
382
- private getTitleFontSize;
383
- private escapeXml;
384
- }
385
- /**
386
- * Create a new SVG renderer instance
387
- */
388
- declare function createSvgRenderer(options?: SvgRenderOptions): SvgRenderer;
389
-
390
313
  /**
391
314
  * CSS Style Generator for wireweave
392
315
  *
@@ -439,9 +362,6 @@ declare function generateComponentStyles(_theme: ThemeConfig, prefix?: string):
439
362
  type IconElement = [string, Record<string, string>];
440
363
  type IconData = IconElement[];
441
364
  declare const lucideIcons: Record<string, IconData>;
442
- /**
443
- * Get icon data by name
444
- */
445
365
  declare function getIconData(name: string): IconData | undefined;
446
366
  /**
447
367
  * Render icon data to SVG string
@@ -482,16 +402,5 @@ declare function renderToHtml(document: WireframeDocument, options?: RenderOptio
482
402
  * @returns Object containing SVG string and dimensions
483
403
  */
484
404
  declare function renderToSvg(document: WireframeDocument, options?: SvgRenderOptions): SvgRenderResult;
485
- /**
486
- * Render AST to pure SVG (without foreignObject)
487
- *
488
- * This uses the original SVG renderer with manual layout calculations.
489
- * Use this when foreignObject is not supported.
490
- *
491
- * @param document - Parsed wireframe document
492
- * @param options - SVG render options
493
- * @returns Object containing SVG string and dimensions
494
- */
495
- declare function renderToPureSvg(document: WireframeDocument, options?: SvgRenderOptions): SvgRenderResult;
496
405
 
497
- export { HtmlRenderer, type IconData, type IconElement, type RenderContext, type RenderOptions, type RenderResult, type SvgRenderOptions, type SvgRenderResult, SvgRenderer, type ThemeColors, type ThemeConfig, createHtmlRenderer, createSvgRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToPureSvg, renderToSvg };
406
+ export { HtmlRenderer, type IconData, type IconElement, type RenderContext, type RenderOptions, type RenderResult, type SvgRenderOptions, type SvgRenderResult, type ThemeColors, type ThemeConfig, createHtmlRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToSvg };
@@ -1,4 +1,4 @@
1
- import { a1 as WireframeDocument, A as AnyNode, P as PageNode } from './types-DtovIYS6.js';
1
+ import { a1 as WireframeDocument, A as AnyNode, P as PageNode } from './types-lcJzPcR0.js';
2
2
 
3
3
  /**
4
4
  * Renderer type definitions for wireweave
@@ -183,7 +183,23 @@ declare abstract class BaseRenderer {
183
183
  * Renders wireframe AST to semantic HTML with utility classes
184
184
  */
185
185
  declare class HtmlRenderer extends BaseRenderer {
186
+ /**
187
+ * Node type to renderer method mapping
188
+ */
189
+ private readonly nodeRenderers;
186
190
  constructor(options?: RenderOptions);
191
+ /**
192
+ * Get render context for external renderer functions
193
+ */
194
+ private getRenderContext;
195
+ /**
196
+ * Get grid render context (extends RenderContext with buildColStyles)
197
+ */
198
+ private getGridRenderContext;
199
+ /**
200
+ * Create the node renderer mapping
201
+ */
202
+ private createNodeRenderers;
187
203
  /**
188
204
  * Render a page node
189
205
  */
@@ -214,6 +230,10 @@ declare class HtmlRenderer extends BaseRenderer {
214
230
  /**
215
231
  * Build common inline styles for all values
216
232
  *
233
+ * Position values (x, y) for absolute positioning:
234
+ * - When x or y is specified, element gets position: absolute
235
+ * - x → left, y → top
236
+ *
217
237
  * Spacing values (p, m, gap) use token system:
218
238
  * - number: spacing token (e.g., p=4 → padding: 16px from token table)
219
239
  * - ValueWithUnit: direct CSS value (e.g., p=16px → padding: 16px)
@@ -227,6 +247,26 @@ declare class HtmlRenderer extends BaseRenderer {
227
247
  * Uses Omit to exclude 'align' since TextNode/TitleNode have incompatible align types
228
248
  */
229
249
  private buildCommonStyles;
250
+ /**
251
+ * Build position styles (absolute positioning)
252
+ */
253
+ private buildPositionStyles;
254
+ /**
255
+ * Build size styles (width, height, min/max)
256
+ */
257
+ private buildSizeStyles;
258
+ /**
259
+ * Build padding styles (p, px, py, pt, pr, pb, pl)
260
+ */
261
+ private buildPaddingStyles;
262
+ /**
263
+ * Build margin styles (m, mx, my, mt, mr, mb, ml)
264
+ */
265
+ private buildMarginStyles;
266
+ /**
267
+ * Build gap styles
268
+ */
269
+ private buildGapStyles;
230
270
  /**
231
271
  * Build inline styles for Col node (extends common styles with order)
232
272
  */
@@ -264,129 +304,12 @@ declare class HtmlRenderer extends BaseRenderer {
264
304
  private renderTabs;
265
305
  private renderBreadcrumb;
266
306
  private renderDivider;
267
- /**
268
- * Parse and render semantic markers in text content
269
- *
270
- * Semantic markers use the syntax [component:variant] to indicate
271
- * what a visual element represents. This helps LLMs understand
272
- * the meaning of placeholder content.
273
- *
274
- * Supported markers:
275
- * - [avatar] or [avatar:size] - User avatar (renders as circle placeholder)
276
- * - [badge:variant] TEXT - Status badge (TEXT is displayed inside the badge)
277
- * - [dot:variant] - Status dot (renders as small circle before text)
278
- * - [icon:name] - Icon placeholder
279
- *
280
- * Examples:
281
- * - "[avatar] John Doe" → renders avatar circle + "John Doe"
282
- * - "[badge:primary] PRO" → renders badge containing "PRO"
283
- * - "[dot:success] Active" → renders green dot + "Active"
284
- */
285
- private renderSemanticMarkers;
286
- /**
287
- * Render a single semantic marker to HTML (without content)
288
- */
289
- private renderSemanticMarker;
290
- /**
291
- * Render a semantic marker with text content (for badge)
292
- */
293
- private renderSemanticMarkerWithContent;
294
- /**
295
- * Process table cell content with semantic markers and newlines
296
- *
297
- * Special handling for avatar + text layout:
298
- * When content starts with [avatar], wraps in flex container
299
- * so avatar and text align horizontally, with text stacking vertically
300
- */
301
- private renderTableCellContent;
302
307
  }
303
308
  /**
304
309
  * Create a new HTML renderer instance
305
310
  */
306
311
  declare function createHtmlRenderer(options?: RenderOptions): HtmlRenderer;
307
312
 
308
- /**
309
- * SVG Renderer for wireweave
310
- *
311
- * Renders wireframe AST to SVG image format
312
- */
313
-
314
- /**
315
- * SVG Renderer class
316
- *
317
- * Renders wireframe AST nodes to SVG elements
318
- */
319
- declare class SvgRenderer {
320
- private options;
321
- private theme;
322
- private currentX;
323
- private currentY;
324
- private contentWidth;
325
- constructor(options?: SvgRenderOptions);
326
- /**
327
- * Render a wireframe document to SVG
328
- */
329
- render(doc: WireframeDocument): SvgRenderResult;
330
- /**
331
- * Generate SVG defs (styles, patterns, etc.)
332
- */
333
- private generateDefs;
334
- /**
335
- * Render a page node
336
- */
337
- private renderPage;
338
- /**
339
- * Render page title
340
- */
341
- private renderPageTitle;
342
- /**
343
- * Render any AST node
344
- */
345
- private renderNode;
346
- private renderRow;
347
- private renderCol;
348
- private renderHeader;
349
- private renderMain;
350
- private renderFooter;
351
- private renderSidebar;
352
- private renderCard;
353
- private renderModal;
354
- private renderText;
355
- private renderTitle;
356
- private renderLink;
357
- private renderInput;
358
- private renderTextarea;
359
- private renderSelect;
360
- private renderCheckbox;
361
- private renderRadio;
362
- private renderSwitch;
363
- private renderButton;
364
- /**
365
- * Render icon paths for SVG
366
- */
367
- private renderIconPaths;
368
- private renderImage;
369
- private renderPlaceholder;
370
- private renderAvatar;
371
- private renderBadge;
372
- private renderTable;
373
- private renderList;
374
- private renderAlert;
375
- private renderProgress;
376
- private renderSpinner;
377
- private renderNav;
378
- private renderTabs;
379
- private renderBreadcrumb;
380
- private getFontSize;
381
- private resolveFontSize;
382
- private getTitleFontSize;
383
- private escapeXml;
384
- }
385
- /**
386
- * Create a new SVG renderer instance
387
- */
388
- declare function createSvgRenderer(options?: SvgRenderOptions): SvgRenderer;
389
-
390
313
  /**
391
314
  * CSS Style Generator for wireweave
392
315
  *
@@ -439,9 +362,6 @@ declare function generateComponentStyles(_theme: ThemeConfig, prefix?: string):
439
362
  type IconElement = [string, Record<string, string>];
440
363
  type IconData = IconElement[];
441
364
  declare const lucideIcons: Record<string, IconData>;
442
- /**
443
- * Get icon data by name
444
- */
445
365
  declare function getIconData(name: string): IconData | undefined;
446
366
  /**
447
367
  * Render icon data to SVG string
@@ -482,16 +402,5 @@ declare function renderToHtml(document: WireframeDocument, options?: RenderOptio
482
402
  * @returns Object containing SVG string and dimensions
483
403
  */
484
404
  declare function renderToSvg(document: WireframeDocument, options?: SvgRenderOptions): SvgRenderResult;
485
- /**
486
- * Render AST to pure SVG (without foreignObject)
487
- *
488
- * This uses the original SVG renderer with manual layout calculations.
489
- * Use this when foreignObject is not supported.
490
- *
491
- * @param document - Parsed wireframe document
492
- * @param options - SVG render options
493
- * @returns Object containing SVG string and dimensions
494
- */
495
- declare function renderToPureSvg(document: WireframeDocument, options?: SvgRenderOptions): SvgRenderResult;
496
405
 
497
- export { HtmlRenderer, type IconData, type IconElement, type RenderContext, type RenderOptions, type RenderResult, type SvgRenderOptions, type SvgRenderResult, SvgRenderer, type ThemeColors, type ThemeConfig, createHtmlRenderer, createSvgRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToPureSvg, renderToSvg };
406
+ export { HtmlRenderer, type IconData, type IconElement, type RenderContext, type RenderOptions, type RenderResult, type SvgRenderOptions, type SvgRenderResult, type ThemeColors, type ThemeConfig, createHtmlRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToSvg };