@wireweave/language-data 1.0.1 → 1.0.2-beta.0
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.
- package/README.md +8 -4
- package/dist/index.cjs +27 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +28 -4
- package/dist/index.d.ts +28 -4
- package/dist/index.js +27 -17
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/wireweave/language-data/main/logo.svg" width="128" height="128" alt="Wireweave Language Data">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
<h1 align="center">@wireweave/language-data</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">Shared language definitions for Wireweave DSL editors</p>
|
|
4
8
|
|
|
5
9
|
## Installation
|
|
6
10
|
|
|
@@ -98,8 +102,8 @@ type ComponentCategory =
|
|
|
98
102
|
|
|
99
103
|
## Used By
|
|
100
104
|
|
|
101
|
-
-
|
|
102
|
-
-
|
|
105
|
+
- **Wireweave Playground** - Monaco Editor integration for live preview
|
|
106
|
+
- **Wireweave VS Code Extension** - VS Code language support and preview
|
|
103
107
|
|
|
104
108
|
## License
|
|
105
109
|
|
package/dist/index.cjs
CHANGED
|
@@ -58,37 +58,37 @@ var ALL_COMPONENTS = [
|
|
|
58
58
|
name: "header",
|
|
59
59
|
description: "Page header area. Place navigation, logo, etc.",
|
|
60
60
|
category: "layout",
|
|
61
|
-
attributes: ["p", "px", "py", "border", "gap", "justify", "align"],
|
|
61
|
+
attributes: ["p", "px", "py", "h", "border", "gap", "justify", "align"],
|
|
62
62
|
hasChildren: true,
|
|
63
63
|
validParents: ["page"],
|
|
64
|
-
example: "header
|
|
64
|
+
example: "header h=56 border { ... }"
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
name: "main",
|
|
68
68
|
description: "Main content area. Place primary content here.",
|
|
69
69
|
category: "layout",
|
|
70
|
-
attributes: ["p", "px", "py", "gap"],
|
|
70
|
+
attributes: ["p", "px", "py", "gap", "scroll"],
|
|
71
71
|
hasChildren: true,
|
|
72
72
|
validParents: ["page"],
|
|
73
|
-
example: "main p=6 { ... }"
|
|
73
|
+
example: "main p=6 scroll { ... }"
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
name: "footer",
|
|
77
77
|
description: "Page footer area. Place copyright, links, etc.",
|
|
78
78
|
category: "layout",
|
|
79
|
-
attributes: ["p", "px", "py", "border", "gap"],
|
|
79
|
+
attributes: ["p", "px", "py", "h", "border", "gap"],
|
|
80
80
|
hasChildren: true,
|
|
81
81
|
validParents: ["page"],
|
|
82
|
-
example: "footer
|
|
82
|
+
example: "footer h=48 border { ... }"
|
|
83
83
|
},
|
|
84
84
|
{
|
|
85
85
|
name: "sidebar",
|
|
86
86
|
description: "Sidebar area. Place auxiliary navigation or information.",
|
|
87
87
|
category: "layout",
|
|
88
|
-
attributes: ["position", "w", "p", "px", "py", "gap"],
|
|
88
|
+
attributes: ["position", "w", "p", "px", "py", "gap", "border", "bg"],
|
|
89
89
|
hasChildren: true,
|
|
90
90
|
validParents: ["page"],
|
|
91
|
-
example: "sidebar w=240 { ... }"
|
|
91
|
+
example: "sidebar w=240 border { ... }"
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
name: "section",
|
|
@@ -103,7 +103,7 @@ var ALL_COMPONENTS = [
|
|
|
103
103
|
name: "row",
|
|
104
104
|
description: "Horizontal flex container. Arrange children horizontally.",
|
|
105
105
|
category: "grid",
|
|
106
|
-
attributes: ["gap", "justify", "align", "wrap", "direction", "flex", "p", "m", "mt", "mb"],
|
|
106
|
+
attributes: ["gap", "justify", "align", "wrap", "direction", "flex", "p", "px", "py", "m", "mt", "mb", "h", "w", "border", "bg"],
|
|
107
107
|
hasChildren: true,
|
|
108
108
|
example: "row flex gap=4 justify=between { ... }"
|
|
109
109
|
},
|
|
@@ -111,7 +111,7 @@ var ALL_COMPONENTS = [
|
|
|
111
111
|
name: "col",
|
|
112
112
|
description: "Vertical flex container or grid column.",
|
|
113
113
|
category: "grid",
|
|
114
|
-
attributes: ["span", "sm", "md", "lg", "xl", "order", "gap", "justify", "align", "p", "m", "w"],
|
|
114
|
+
attributes: ["span", "sm", "md", "lg", "xl", "order", "gap", "justify", "align", "p", "px", "py", "m", "w", "h", "flex", "border", "bg", "scroll"],
|
|
115
115
|
hasChildren: true,
|
|
116
116
|
example: "col span=6 md=4 { ... }"
|
|
117
117
|
},
|
|
@@ -120,7 +120,7 @@ var ALL_COMPONENTS = [
|
|
|
120
120
|
name: "card",
|
|
121
121
|
description: "Card component. Group and display content.",
|
|
122
122
|
category: "container",
|
|
123
|
-
attributes: ["title", "p", "shadow", "border", "gap"],
|
|
123
|
+
attributes: ["title", "p", "px", "py", "shadow", "border", "gap", "w", "h", "rounded"],
|
|
124
124
|
hasChildren: true,
|
|
125
125
|
example: 'card "Settings" p=4 shadow=md { ... }'
|
|
126
126
|
},
|
|
@@ -178,7 +178,7 @@ var ALL_COMPONENTS = [
|
|
|
178
178
|
name: "input",
|
|
179
179
|
description: "Input field. Accept text, email, password, etc.",
|
|
180
180
|
category: "input",
|
|
181
|
-
attributes: ["label", "inputType", "placeholder", "value", "disabled", "required", "readonly", "icon", "m", "mb"],
|
|
181
|
+
attributes: ["label", "inputType", "placeholder", "value", "disabled", "required", "readonly", "icon", "w", "size", "m", "mb"],
|
|
182
182
|
hasChildren: false,
|
|
183
183
|
example: 'input "Email" inputType=email placeholder="user@example.com" required'
|
|
184
184
|
},
|
|
@@ -252,9 +252,9 @@ var ALL_COMPONENTS = [
|
|
|
252
252
|
name: "placeholder",
|
|
253
253
|
description: "Placeholder. Image or content placeholder.",
|
|
254
254
|
category: "display",
|
|
255
|
-
attributes: ["label", "w", "h"],
|
|
256
|
-
hasChildren:
|
|
257
|
-
example: 'placeholder "Banner Image" w=full h=200'
|
|
255
|
+
attributes: ["label", "w", "h", "flex"],
|
|
256
|
+
hasChildren: true,
|
|
257
|
+
example: 'placeholder "Banner Image" w=full h=200 { ... }'
|
|
258
258
|
},
|
|
259
259
|
{
|
|
260
260
|
name: "avatar",
|
|
@@ -385,7 +385,7 @@ var ALL_COMPONENTS = [
|
|
|
385
385
|
name: "divider",
|
|
386
386
|
description: "Divider element. Visually separate content.",
|
|
387
387
|
category: "display",
|
|
388
|
-
attributes: ["m", "my", "mx"],
|
|
388
|
+
attributes: ["m", "my", "mx", "vertical", "h"],
|
|
389
389
|
hasChildren: false,
|
|
390
390
|
example: "divider my=4"
|
|
391
391
|
}
|
|
@@ -431,7 +431,7 @@ var ATTRIBUTES = [
|
|
|
431
431
|
{ name: "maxW", description: "Maximum width.", values: "number", example: "maxW=600" },
|
|
432
432
|
{ name: "minH", description: "Minimum height.", values: "number", example: "minH=100" },
|
|
433
433
|
{ name: "maxH", description: "Maximum height.", values: "number", example: "maxH=400" },
|
|
434
|
-
{ name: "size", description: "Size preset.", values: ["xs", "sm", "md", "lg", "xl"], example: "size=lg" },
|
|
434
|
+
{ name: "size", description: "Size preset.", values: ["xs", "sm", "base", "md", "lg", "xl", "2xl", "3xl"], example: "size=lg" },
|
|
435
435
|
{ name: "viewport", description: 'Viewport size (e.g., "1440x900").', values: "string", example: 'viewport="1440x900"' },
|
|
436
436
|
{ name: "device", description: "Device preset.", values: ["iphone14", "iphone14pro", "desktop", "tablet"], example: 'device="iphone14"' },
|
|
437
437
|
// Visual
|
|
@@ -441,6 +441,7 @@ var ATTRIBUTES = [
|
|
|
441
441
|
// Text
|
|
442
442
|
{ name: "level", description: "Heading level (1-6).", values: "number", example: "level=2" },
|
|
443
443
|
{ name: "weight", description: "Font weight.", values: ["normal", "medium", "semibold", "bold"], example: "weight=bold" },
|
|
444
|
+
{ name: "bold", description: "Bold text (shorthand for weight=bold).", values: "boolean", example: "bold" },
|
|
444
445
|
{ name: "muted", description: "Muted style.", values: "boolean", example: "muted" },
|
|
445
446
|
// Button variants
|
|
446
447
|
{ name: "primary", description: "Primary emphasis style.", values: "boolean", example: "primary" },
|
|
@@ -465,6 +466,15 @@ var ATTRIBUTES = [
|
|
|
465
466
|
{ name: "min", description: "Minimum value.", values: "number", example: "min=0" },
|
|
466
467
|
{ name: "max", description: "Maximum value.", values: "number", example: "max=100" },
|
|
467
468
|
{ name: "step", description: "Step increment.", values: "number", example: "step=1" },
|
|
469
|
+
// Scrolling
|
|
470
|
+
{ name: "scroll", description: "Enable vertical scrolling for overflow content.", values: "boolean", example: "scroll" },
|
|
471
|
+
// Background
|
|
472
|
+
{ name: "bg", description: "Background color variant.", values: ["muted", "primary", "secondary"], example: "bg=muted" },
|
|
473
|
+
// Border radius
|
|
474
|
+
{ name: "rounded", description: "Apply border radius.", values: "boolean", example: "rounded" },
|
|
475
|
+
// Position
|
|
476
|
+
{ name: "x", description: "Horizontal position (px or with unit).", values: "number", example: "x=100" },
|
|
477
|
+
{ name: "y", description: "Vertical position (px or with unit).", values: "number", example: "y=50" },
|
|
468
478
|
// Other
|
|
469
479
|
{ name: "title", description: "Title text.", values: "string", example: 'title="Title"' },
|
|
470
480
|
{ name: "centered", description: "Center alignment.", values: "boolean", example: "centered" },
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components.ts","../src/attributes.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * @wireweave/language-data\n *\n * Shared language definitions for Wireweave DSL editors\n * Used by VS Code Extension, Playground, and other editor integrations\n */\n\n// Types\nexport type { ComponentDef, AttributeDef, ComponentCategory } from './types.js';\n\n// Data\nexport { ALL_COMPONENTS } from './components.js';\nexport { ATTRIBUTES } from './attributes.js';\nexport {\n CATEGORY_LABELS,\n VALUE_KEYWORDS,\n COMMON_NUMBERS,\n SPACING_SCALE,\n} from './keywords.js';\n\n// Utilities\nexport {\n getComponent,\n getAttribute,\n getValidChildren,\n isValidChild,\n getComponentAttributes,\n getComponentsByCategory,\n getAttributeTypeLabel,\n formatAttributeValues,\n isComponent,\n isAttribute,\n getComponentNames,\n getAttributeNames,\n} from './utils.js';\n","/**\n * Component definitions for Wireweave DSL\n * Based on @wireweave/core AST types\n */\n\nimport type { ComponentDef } from './types.js';\n\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // Layout\n {\n name: 'page',\n description: 'Page root container. Starting point for the entire layout.',\n category: 'layout',\n attributes: ['title', 'width', 'height', 'viewport', 'device', 'centered', 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl', 'm', 'gap'],\n hasChildren: true,\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n example: 'page \"Dashboard\" centered { ... }',\n },\n {\n name: 'header',\n description: 'Page header area. Place navigation, logo, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'border', 'gap', 'justify', 'align'],\n hasChildren: true,\n validParents: ['page'],\n example: 'header p=4 border { ... }',\n },\n {\n name: 'main',\n description: 'Main content area. Place primary content here.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'main p=6 { ... }',\n },\n {\n name: 'footer',\n description: 'Page footer area. Place copyright, links, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'border', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'footer p=4 border { ... }',\n },\n {\n name: 'sidebar',\n description: 'Sidebar area. Place auxiliary navigation or information.',\n category: 'layout',\n attributes: ['position', 'w', 'p', 'px', 'py', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'sidebar w=240 { ... }',\n },\n {\n name: 'section',\n description: 'Section area. Logically group content.',\n category: 'layout',\n attributes: ['title', 'expanded', 'p', 'px', 'py', 'gap'],\n hasChildren: true,\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // Grid\n {\n name: 'row',\n description: 'Horizontal flex container. Arrange children horizontally.',\n category: 'grid',\n attributes: ['gap', 'justify', 'align', 'wrap', 'direction', 'flex', 'p', 'm', 'mt', 'mb'],\n hasChildren: true,\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n description: 'Vertical flex container or grid column.',\n category: 'grid',\n attributes: ['span', 'sm', 'md', 'lg', 'xl', 'order', 'gap', 'justify', 'align', 'p', 'm', 'w'],\n hasChildren: true,\n example: 'col span=6 md=4 { ... }',\n },\n\n // Container\n {\n name: 'card',\n description: 'Card component. Group and display content.',\n category: 'container',\n attributes: ['title', 'p', 'shadow', 'border', 'gap'],\n hasChildren: true,\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n description: 'Modal dialog. Display content on an overlay.',\n category: 'container',\n attributes: ['title', 'w', 'h', 'p'],\n hasChildren: true,\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n description: 'Drawer panel. Slides in from the edge of the screen.',\n category: 'container',\n attributes: ['title', 'position', 'p'],\n hasChildren: true,\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n description: 'Accordion. Collapsible content panel.',\n category: 'container',\n attributes: ['title', 'p'],\n hasChildren: true,\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // Text\n {\n name: 'text',\n description: 'Text element. Display plain text.',\n category: 'text',\n attributes: ['size', 'weight', 'align', 'muted', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n description: 'Title element. Display h1-h6 headings.',\n category: 'text',\n attributes: ['level', 'size', 'align', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n description: 'Link element. Display clickable hyperlink.',\n category: 'text',\n attributes: ['href', 'external'],\n hasChildren: false,\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // Input\n {\n name: 'input',\n description: 'Input field. Accept text, email, password, etc.',\n category: 'input',\n attributes: ['label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'm', 'mb'],\n hasChildren: false,\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n description: 'Multi-line input field. Accept long text.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'rows', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n description: 'Dropdown select. Choose one from multiple options.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n description: 'Checkbox. Select true/false value.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n description: 'Radio button. Select one within a group.',\n category: 'input',\n attributes: ['label', 'name', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n description: 'Toggle switch. Switch on/off state.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n description: 'Slider. Select a value within a range.',\n category: 'input',\n attributes: ['label', 'min', 'max', 'value', 'step', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n\n // Button\n {\n name: 'button',\n description: 'Button element. Display clickable button.',\n category: 'input',\n attributes: ['primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading', 'w'],\n hasChildren: false,\n example: 'button \"Submit\" primary icon=send',\n },\n\n // Display\n {\n name: 'image',\n description: 'Image element. Display an image.',\n category: 'display',\n attributes: ['src', 'alt', 'w', 'h'],\n hasChildren: false,\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n description: 'Placeholder. Image or content placeholder.',\n category: 'display',\n attributes: ['label', 'w', 'h'],\n hasChildren: false,\n example: 'placeholder \"Banner Image\" w=full h=200',\n },\n {\n name: 'avatar',\n description: 'Avatar element. Display user profile image.',\n category: 'display',\n attributes: ['name', 'src', 'size'],\n hasChildren: false,\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n description: 'Badge element. Display status or count as a small label.',\n category: 'display',\n attributes: ['variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n description: 'Icon element. Display a Lucide icon.',\n category: 'display',\n attributes: ['name', 'size', 'muted'],\n hasChildren: false,\n example: 'icon \"settings\" size=lg',\n },\n\n // Data\n {\n name: 'table',\n description: 'Table component. Display data in tabular format.',\n category: 'data',\n attributes: ['striped', 'bordered', 'hover'],\n hasChildren: false,\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n description: 'List component. Display items as a list.',\n category: 'data',\n attributes: ['ordered', 'none', 'gap'],\n hasChildren: false,\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // Feedback\n {\n name: 'alert',\n description: 'Alert element. Display a message to the user.',\n category: 'feedback',\n attributes: ['variant', 'dismissible', 'icon'],\n hasChildren: false,\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n description: 'Toast notification. Display a temporary message.',\n category: 'feedback',\n attributes: ['position', 'variant'],\n hasChildren: false,\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n description: 'Progress bar. Display progress status.',\n category: 'feedback',\n attributes: ['value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n description: 'Loading spinner. Display loading status.',\n category: 'feedback',\n attributes: ['label', 'size'],\n hasChildren: false,\n example: 'spinner size=lg',\n },\n\n // Overlay\n {\n name: 'tooltip',\n description: 'Tooltip element. Show additional info on hover.',\n category: 'overlay',\n attributes: ['position'],\n hasChildren: true,\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n description: 'Popover. Show additional content on click.',\n category: 'overlay',\n attributes: ['title'],\n hasChildren: true,\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n description: 'Dropdown menu. Expand menu on click.',\n category: 'overlay',\n attributes: [],\n hasChildren: false,\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // Navigation\n {\n name: 'nav',\n description: 'Navigation area. Place menu items.',\n category: 'navigation',\n attributes: ['vertical', 'gap'],\n hasChildren: false,\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n description: 'Tabs component. Switch between multiple panels.',\n category: 'navigation',\n attributes: ['active'],\n hasChildren: true,\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n description: 'Breadcrumb. Display current location as a path.',\n category: 'navigation',\n attributes: [],\n hasChildren: false,\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // Divider\n {\n name: 'divider',\n description: 'Divider element. Visually separate content.',\n category: 'display',\n attributes: ['m', 'my', 'mx'],\n hasChildren: false,\n example: 'divider my=4',\n },\n];\n","/**\n * Attribute definitions for Wireweave DSL\n */\n\nimport type { AttributeDef } from './types.js';\n\nexport const ATTRIBUTES: AttributeDef[] = [\n // Spacing\n { name: 'p', description: 'Padding. Set inner spacing.', values: 'number', example: 'p=4' },\n { name: 'px', description: 'Horizontal padding.', values: 'number', example: 'px=4' },\n { name: 'py', description: 'Vertical padding.', values: 'number', example: 'py=4' },\n { name: 'pt', description: 'Top padding.', values: 'number', example: 'pt=4' },\n { name: 'pr', description: 'Right padding.', values: 'number', example: 'pr=4' },\n { name: 'pb', description: 'Bottom padding.', values: 'number', example: 'pb=4' },\n { name: 'pl', description: 'Left padding.', values: 'number', example: 'pl=4' },\n { name: 'm', description: 'Margin. Set outer spacing.', values: 'number', example: 'm=4' },\n { name: 'mx', description: 'Horizontal margin. Can be \"auto\" for centering.', values: 'number', example: 'mx=auto' },\n { name: 'my', description: 'Vertical margin.', values: 'number', example: 'my=4' },\n { name: 'mt', description: 'Top margin.', values: 'number', example: 'mt=4' },\n { name: 'mr', description: 'Right margin.', values: 'number', example: 'mr=4' },\n { name: 'mb', description: 'Bottom margin.', values: 'number', example: 'mb=4' },\n { name: 'ml', description: 'Left margin.', values: 'number', example: 'ml=4' },\n { name: 'gap', description: 'Gap between child elements.', values: 'number', example: 'gap=4' },\n\n // Grid Layout\n { name: 'span', description: 'Grid column width (1-12).', values: 'number', example: 'span=6' },\n { name: 'sm', description: 'Column width at 576px and above.', values: 'number', example: 'sm=6' },\n { name: 'md', description: 'Column width at 768px and above.', values: 'number', example: 'md=4' },\n { name: 'lg', description: 'Column width at 992px and above.', values: 'number', example: 'lg=3' },\n { name: 'xl', description: 'Column width at 1200px and above.', values: 'number', example: 'xl=2' },\n { name: 'order', description: 'Order within flex container.', values: 'number', example: 'order=1' },\n\n // Flex Layout\n { name: 'flex', description: 'Enable flexbox layout.', values: 'boolean', example: 'flex' },\n { name: 'direction', description: 'Flex direction.', values: ['row', 'column', 'row-reverse', 'column-reverse'], example: 'direction=column' },\n { name: 'justify', description: 'Main axis alignment.', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], example: 'justify=center' },\n { name: 'align', description: 'Cross axis alignment.', values: ['start', 'center', 'end', 'stretch', 'baseline'], example: 'align=center' },\n { name: 'wrap', description: 'Allow child elements to wrap.', values: 'boolean', example: 'wrap' },\n\n // Size\n { name: 'width', description: 'Width in pixels.', values: 'number', example: 'width=400' },\n { name: 'height', description: 'Height in pixels.', values: 'number', example: 'height=300' },\n { name: 'w', description: 'Width (full, auto, screen, fit, or number).', values: ['full', 'auto', 'screen', 'fit'], example: 'w=full' },\n { name: 'h', description: 'Height (full, auto, screen, or number).', values: ['full', 'auto', 'screen'], example: 'h=full' },\n { name: 'minW', description: 'Minimum width.', values: 'number', example: 'minW=200' },\n { name: 'maxW', description: 'Maximum width.', values: 'number', example: 'maxW=600' },\n { name: 'minH', description: 'Minimum height.', values: 'number', example: 'minH=100' },\n { name: 'maxH', description: 'Maximum height.', values: 'number', example: 'maxH=400' },\n { name: 'size', description: 'Size preset.', values: ['xs', 'sm', 'md', 'lg', 'xl'], example: 'size=lg' },\n { name: 'viewport', description: 'Viewport size (e.g., \"1440x900\").', values: 'string', example: 'viewport=\"1440x900\"' },\n { name: 'device', description: 'Device preset.', values: ['iphone14', 'iphone14pro', 'desktop', 'tablet'], example: 'device=\"iphone14\"' },\n\n // Visual\n { name: 'border', description: 'Show border.', values: 'boolean', example: 'border' },\n { name: 'shadow', description: 'Box shadow.', values: ['none', 'sm', 'md', 'lg', 'xl'], example: 'shadow=md' },\n { name: 'position', description: 'Position setting.', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], example: 'position=left' },\n\n // Text\n { name: 'level', description: 'Heading level (1-6).', values: 'number', example: 'level=2' },\n { name: 'weight', description: 'Font weight.', values: ['normal', 'medium', 'semibold', 'bold'], example: 'weight=bold' },\n { name: 'muted', description: 'Muted style.', values: 'boolean', example: 'muted' },\n\n // Button variants\n { name: 'primary', description: 'Primary emphasis style.', values: 'boolean', example: 'primary' },\n { name: 'secondary', description: 'Secondary style.', values: 'boolean', example: 'secondary' },\n { name: 'outline', description: 'Outline style.', values: 'boolean', example: 'outline' },\n { name: 'ghost', description: 'Ghost/transparent style.', values: 'boolean', example: 'ghost' },\n { name: 'danger', description: 'Danger/delete style.', values: 'boolean', example: 'danger' },\n\n // Status variants\n { name: 'variant', description: 'Variant style.', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], example: 'variant=success' },\n\n // Form\n { name: 'inputType', description: 'Input field type.', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], example: 'inputType=email' },\n { name: 'placeholder', description: 'Placeholder text.', values: 'string', example: 'placeholder=\"Enter text\"' },\n { name: 'value', description: 'Default value.', values: 'string', example: 'value=\"default\"' },\n { name: 'label', description: 'Label text.', values: 'string', example: 'label=\"Name\"' },\n { name: 'required', description: 'Required field.', values: 'boolean', example: 'required' },\n { name: 'disabled', description: 'Disabled state.', values: 'boolean', example: 'disabled' },\n { name: 'readonly', description: 'Read-only.', values: 'boolean', example: 'readonly' },\n { name: 'checked', description: 'Checked state.', values: 'boolean', example: 'checked' },\n { name: 'loading', description: 'Loading state.', values: 'boolean', example: 'loading' },\n { name: 'name', description: 'Form element name attribute.', values: 'string', example: 'name=\"field\"' },\n { name: 'rows', description: 'Number of textarea rows.', values: 'number', example: 'rows=4' },\n { name: 'min', description: 'Minimum value.', values: 'number', example: 'min=0' },\n { name: 'max', description: 'Maximum value.', values: 'number', example: 'max=100' },\n { name: 'step', description: 'Step increment.', values: 'number', example: 'step=1' },\n\n // Other\n { name: 'title', description: 'Title text.', values: 'string', example: 'title=\"Title\"' },\n { name: 'centered', description: 'Center alignment.', values: 'boolean', example: 'centered' },\n { name: 'vertical', description: 'Vertical orientation.', values: 'boolean', example: 'vertical' },\n { name: 'expanded', description: 'Expanded state.', values: 'boolean', example: 'expanded' },\n { name: 'active', description: 'Active state/index.', values: 'number', example: 'active=0' },\n { name: 'href', description: 'Link URL.', values: 'string', example: 'href=\"/path\"' },\n { name: 'external', description: 'External link.', values: 'boolean', example: 'external' },\n { name: 'src', description: 'Image source URL.', values: 'string', example: 'src=\"/image.png\"' },\n { name: 'alt', description: 'Alternative text.', values: 'string', example: 'alt=\"Image\"' },\n { name: 'icon', description: 'Icon name (Lucide icons).', values: 'string', example: 'icon=\"home\"' },\n { name: 'pill', description: 'Rounded pill badge.', values: 'boolean', example: 'pill' },\n { name: 'dismissible', description: 'Can be dismissed.', values: 'boolean', example: 'dismissible' },\n { name: 'indeterminate', description: 'Indeterminate state.', values: 'boolean', example: 'indeterminate' },\n { name: 'striped', description: 'Striped style.', values: 'boolean', example: 'striped' },\n { name: 'bordered', description: 'Bordered style.', values: 'boolean', example: 'bordered' },\n { name: 'hover', description: 'Hover effect.', values: 'boolean', example: 'hover' },\n { name: 'ordered', description: 'Ordered list.', values: 'boolean', example: 'ordered' },\n { name: 'none', description: 'No list style.', values: 'boolean', example: 'none' },\n];\n","/**\n * Keywords and labels for Wireweave DSL\n */\n\nimport type { ComponentCategory } from './types.js';\n\n// Category labels for display\nexport const CATEGORY_LABELS: Record<ComponentCategory, string> = {\n layout: 'Layout',\n container: 'Container',\n grid: 'Grid',\n text: 'Text',\n input: 'Input',\n display: 'Display',\n data: 'Data',\n feedback: 'Feedback',\n overlay: 'Overlay',\n navigation: 'Navigation',\n};\n\n// Value keywords used in the language\nexport const VALUE_KEYWORDS = [\n // Booleans\n 'true',\n 'false',\n\n // Button variants\n 'primary',\n 'secondary',\n 'outline',\n 'ghost',\n\n // Status variants\n 'success',\n 'danger',\n 'warning',\n 'info',\n 'default',\n\n // Sizes\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n 'base',\n '2xl',\n '3xl',\n\n // Flex alignment\n 'start',\n 'center',\n 'end',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n\n // Positions\n 'left',\n 'right',\n 'top',\n 'bottom',\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n\n // Sizing\n 'full',\n 'auto',\n 'screen',\n 'fit',\n\n // Font weights\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n\n // Input types\n 'text',\n 'email',\n 'password',\n 'number',\n 'tel',\n 'url',\n 'search',\n 'date',\n\n // Flex direction\n 'row',\n 'column',\n 'row-reverse',\n 'column-reverse',\n\n // List\n 'none',\n 'nowrap',\n];\n\n// Common number suggestions for attributes\nexport const COMMON_NUMBERS = [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 48, 64];\n\n// Spacing scale (4px base)\nexport const SPACING_SCALE: Record<number, string> = {\n 0: '0px',\n 1: '4px',\n 2: '8px',\n 3: '12px',\n 4: '16px',\n 5: '20px',\n 6: '24px',\n 8: '32px',\n 10: '40px',\n 12: '48px',\n 16: '64px',\n 20: '80px',\n 24: '96px',\n};\n","/**\n * Utility functions for Wireweave language data\n */\n\nimport type { ComponentDef, AttributeDef } from './types.js';\nimport { ALL_COMPONENTS } from './components.js';\nimport { ATTRIBUTES } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return ALL_COMPONENTS.find((c) => c.name === name.toLowerCase());\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTES.find((a) => a.name === name);\n}\n\n/**\n * Get valid child components for a parent component\n */\nexport function getValidChildren(componentName: string): ComponentDef[] {\n const component = getComponent(componentName);\n if (!component || !component.hasChildren) return [];\n\n if (component.validChildren === undefined) {\n // All components except page are valid children\n return ALL_COMPONENTS.filter((c) => c.name !== 'page');\n }\n\n return component.validChildren\n .map((name) => getComponent(name))\n .filter((c): c is ComponentDef => c !== undefined);\n}\n\n/**\n * Check if a component is a valid child of another\n */\nexport function isValidChild(childName: string, parentName: string): boolean {\n const parent = getComponent(parentName);\n if (!parent || !parent.hasChildren) return false;\n\n if (parent.validChildren === undefined) return true;\n return parent.validChildren.includes(childName.toLowerCase());\n}\n\n/**\n * Get attribute definitions for a specific component\n */\nexport function getComponentAttributes(componentName: string): AttributeDef[] {\n const component = getComponent(componentName);\n if (!component) return ATTRIBUTES;\n\n return ATTRIBUTES.filter((attr) => component.attributes.includes(attr.name));\n}\n\n/**\n * Get all components in a category\n */\nexport function getComponentsByCategory(category: string): ComponentDef[] {\n return ALL_COMPONENTS.filter((c) => c.category === category);\n}\n\n/**\n * Get attribute type label for display\n */\nexport function getAttributeTypeLabel(attr: AttributeDef): string {\n if (attr.values === 'number') return 'number';\n if (attr.values === 'string') return 'string';\n if (attr.values === 'boolean') return 'boolean';\n if (Array.isArray(attr.values)) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return '';\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.values === 'number') return 'Type: number';\n if (attr.values === 'string') return 'Type: string';\n if (attr.values === 'boolean') return 'Type: boolean (can be omitted)';\n if (Array.isArray(attr.values)) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return '';\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return ALL_COMPONENTS.some((c) => c.name === word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTES.some((a) => a.name === word);\n}\n\n/**\n * Get all component names\n */\nexport function getComponentNames(): string[] {\n return ALL_COMPONENTS.map((c) => c.name);\n}\n\n/**\n * Get all attribute names\n */\nexport function getAttributeNames(): string[] {\n return ATTRIBUTES.map((a) => a.name);\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components.ts","../src/attributes.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * @wireweave/language-data\n *\n * Editor-specific metadata for Wireweave DSL\n * Provides descriptions, examples, and autocomplete hints for IDE integrations.\n *\n * For DSL spec and validation, use @wireweave/core directly.\n */\n\n// Editor-specific types\nexport type { ComponentDef, AttributeDef } from './types.js';\n\n// Editor-specific data (with descriptions, examples)\nexport { ALL_COMPONENTS } from './components.js';\nexport { ATTRIBUTES } from './attributes.js';\nexport {\n CATEGORY_LABELS,\n VALUE_KEYWORDS,\n COMMON_NUMBERS,\n SPACING_SCALE,\n} from './keywords.js';\n\n// Editor utilities\nexport {\n getComponent,\n getAttribute,\n getValidChildren,\n isValidChild,\n getComponentAttributes,\n getComponentsByCategory,\n getAttributeTypeLabel,\n formatAttributeValues,\n isComponent,\n isAttribute,\n getComponentNames,\n getAttributeNames,\n} from './utils.js';\n","/**\n * Component definitions for Wireweave DSL\n * Based on @wireweave/core AST types\n */\n\nimport type { ComponentDef } from './types.js';\n\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // Layout\n {\n name: 'page',\n description: 'Page root container. Starting point for the entire layout.',\n category: 'layout',\n attributes: ['title', 'width', 'height', 'viewport', 'device', 'centered', 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl', 'm', 'gap'],\n hasChildren: true,\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n example: 'page \"Dashboard\" centered { ... }',\n },\n {\n name: 'header',\n description: 'Page header area. Place navigation, logo, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'h', 'border', 'gap', 'justify', 'align'],\n hasChildren: true,\n validParents: ['page'],\n example: 'header h=56 border { ... }',\n },\n {\n name: 'main',\n description: 'Main content area. Place primary content here.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'gap', 'scroll'],\n hasChildren: true,\n validParents: ['page'],\n example: 'main p=6 scroll { ... }',\n },\n {\n name: 'footer',\n description: 'Page footer area. Place copyright, links, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'h', 'border', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'footer h=48 border { ... }',\n },\n {\n name: 'sidebar',\n description: 'Sidebar area. Place auxiliary navigation or information.',\n category: 'layout',\n attributes: ['position', 'w', 'p', 'px', 'py', 'gap', 'border', 'bg'],\n hasChildren: true,\n validParents: ['page'],\n example: 'sidebar w=240 border { ... }',\n },\n {\n name: 'section',\n description: 'Section area. Logically group content.',\n category: 'layout',\n attributes: ['title', 'expanded', 'p', 'px', 'py', 'gap'],\n hasChildren: true,\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // Grid\n {\n name: 'row',\n description: 'Horizontal flex container. Arrange children horizontally.',\n category: 'grid',\n attributes: ['gap', 'justify', 'align', 'wrap', 'direction', 'flex', 'p', 'px', 'py', 'm', 'mt', 'mb', 'h', 'w', 'border', 'bg'],\n hasChildren: true,\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n description: 'Vertical flex container or grid column.',\n category: 'grid',\n attributes: ['span', 'sm', 'md', 'lg', 'xl', 'order', 'gap', 'justify', 'align', 'p', 'px', 'py', 'm', 'w', 'h', 'flex', 'border', 'bg', 'scroll'],\n hasChildren: true,\n example: 'col span=6 md=4 { ... }',\n },\n\n // Container\n {\n name: 'card',\n description: 'Card component. Group and display content.',\n category: 'container',\n attributes: ['title', 'p', 'px', 'py', 'shadow', 'border', 'gap', 'w', 'h', 'rounded'],\n hasChildren: true,\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n description: 'Modal dialog. Display content on an overlay.',\n category: 'container',\n attributes: ['title', 'w', 'h', 'p'],\n hasChildren: true,\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n description: 'Drawer panel. Slides in from the edge of the screen.',\n category: 'container',\n attributes: ['title', 'position', 'p'],\n hasChildren: true,\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n description: 'Accordion. Collapsible content panel.',\n category: 'container',\n attributes: ['title', 'p'],\n hasChildren: true,\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // Text\n {\n name: 'text',\n description: 'Text element. Display plain text.',\n category: 'text',\n attributes: ['size', 'weight', 'align', 'muted', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n description: 'Title element. Display h1-h6 headings.',\n category: 'text',\n attributes: ['level', 'size', 'align', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n description: 'Link element. Display clickable hyperlink.',\n category: 'text',\n attributes: ['href', 'external'],\n hasChildren: false,\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // Input\n {\n name: 'input',\n description: 'Input field. Accept text, email, password, etc.',\n category: 'input',\n attributes: ['label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'w', 'size', 'm', 'mb'],\n hasChildren: false,\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n description: 'Multi-line input field. Accept long text.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'rows', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n description: 'Dropdown select. Choose one from multiple options.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n description: 'Checkbox. Select true/false value.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n description: 'Radio button. Select one within a group.',\n category: 'input',\n attributes: ['label', 'name', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n description: 'Toggle switch. Switch on/off state.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n description: 'Slider. Select a value within a range.',\n category: 'input',\n attributes: ['label', 'min', 'max', 'value', 'step', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n\n // Button\n {\n name: 'button',\n description: 'Button element. Display clickable button.',\n category: 'input',\n attributes: ['primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading', 'w'],\n hasChildren: false,\n example: 'button \"Submit\" primary icon=send',\n },\n\n // Display\n {\n name: 'image',\n description: 'Image element. Display an image.',\n category: 'display',\n attributes: ['src', 'alt', 'w', 'h'],\n hasChildren: false,\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n description: 'Placeholder. Image or content placeholder.',\n category: 'display',\n attributes: ['label', 'w', 'h', 'flex'],\n hasChildren: true,\n example: 'placeholder \"Banner Image\" w=full h=200 { ... }',\n },\n {\n name: 'avatar',\n description: 'Avatar element. Display user profile image.',\n category: 'display',\n attributes: ['name', 'src', 'size'],\n hasChildren: false,\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n description: 'Badge element. Display status or count as a small label.',\n category: 'display',\n attributes: ['variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n description: 'Icon element. Display a Lucide icon.',\n category: 'display',\n attributes: ['name', 'size', 'muted'],\n hasChildren: false,\n example: 'icon \"settings\" size=lg',\n },\n\n // Data\n {\n name: 'table',\n description: 'Table component. Display data in tabular format.',\n category: 'data',\n attributes: ['striped', 'bordered', 'hover'],\n hasChildren: false,\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n description: 'List component. Display items as a list.',\n category: 'data',\n attributes: ['ordered', 'none', 'gap'],\n hasChildren: false,\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // Feedback\n {\n name: 'alert',\n description: 'Alert element. Display a message to the user.',\n category: 'feedback',\n attributes: ['variant', 'dismissible', 'icon'],\n hasChildren: false,\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n description: 'Toast notification. Display a temporary message.',\n category: 'feedback',\n attributes: ['position', 'variant'],\n hasChildren: false,\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n description: 'Progress bar. Display progress status.',\n category: 'feedback',\n attributes: ['value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n description: 'Loading spinner. Display loading status.',\n category: 'feedback',\n attributes: ['label', 'size'],\n hasChildren: false,\n example: 'spinner size=lg',\n },\n\n // Overlay\n {\n name: 'tooltip',\n description: 'Tooltip element. Show additional info on hover.',\n category: 'overlay',\n attributes: ['position'],\n hasChildren: true,\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n description: 'Popover. Show additional content on click.',\n category: 'overlay',\n attributes: ['title'],\n hasChildren: true,\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n description: 'Dropdown menu. Expand menu on click.',\n category: 'overlay',\n attributes: [],\n hasChildren: false,\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // Navigation\n {\n name: 'nav',\n description: 'Navigation area. Place menu items.',\n category: 'navigation',\n attributes: ['vertical', 'gap'],\n hasChildren: false,\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n description: 'Tabs component. Switch between multiple panels.',\n category: 'navigation',\n attributes: ['active'],\n hasChildren: true,\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n description: 'Breadcrumb. Display current location as a path.',\n category: 'navigation',\n attributes: [],\n hasChildren: false,\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // Divider\n {\n name: 'divider',\n description: 'Divider element. Visually separate content.',\n category: 'display',\n attributes: ['m', 'my', 'mx', 'vertical', 'h'],\n hasChildren: false,\n example: 'divider my=4',\n },\n];\n","/**\n * Attribute definitions for Wireweave DSL\n */\n\nimport type { AttributeDef } from './types.js';\n\nexport const ATTRIBUTES: AttributeDef[] = [\n // Spacing\n { name: 'p', description: 'Padding. Set inner spacing.', values: 'number', example: 'p=4' },\n { name: 'px', description: 'Horizontal padding.', values: 'number', example: 'px=4' },\n { name: 'py', description: 'Vertical padding.', values: 'number', example: 'py=4' },\n { name: 'pt', description: 'Top padding.', values: 'number', example: 'pt=4' },\n { name: 'pr', description: 'Right padding.', values: 'number', example: 'pr=4' },\n { name: 'pb', description: 'Bottom padding.', values: 'number', example: 'pb=4' },\n { name: 'pl', description: 'Left padding.', values: 'number', example: 'pl=4' },\n { name: 'm', description: 'Margin. Set outer spacing.', values: 'number', example: 'm=4' },\n { name: 'mx', description: 'Horizontal margin. Can be \"auto\" for centering.', values: 'number', example: 'mx=auto' },\n { name: 'my', description: 'Vertical margin.', values: 'number', example: 'my=4' },\n { name: 'mt', description: 'Top margin.', values: 'number', example: 'mt=4' },\n { name: 'mr', description: 'Right margin.', values: 'number', example: 'mr=4' },\n { name: 'mb', description: 'Bottom margin.', values: 'number', example: 'mb=4' },\n { name: 'ml', description: 'Left margin.', values: 'number', example: 'ml=4' },\n { name: 'gap', description: 'Gap between child elements.', values: 'number', example: 'gap=4' },\n\n // Grid Layout\n { name: 'span', description: 'Grid column width (1-12).', values: 'number', example: 'span=6' },\n { name: 'sm', description: 'Column width at 576px and above.', values: 'number', example: 'sm=6' },\n { name: 'md', description: 'Column width at 768px and above.', values: 'number', example: 'md=4' },\n { name: 'lg', description: 'Column width at 992px and above.', values: 'number', example: 'lg=3' },\n { name: 'xl', description: 'Column width at 1200px and above.', values: 'number', example: 'xl=2' },\n { name: 'order', description: 'Order within flex container.', values: 'number', example: 'order=1' },\n\n // Flex Layout\n { name: 'flex', description: 'Enable flexbox layout.', values: 'boolean', example: 'flex' },\n { name: 'direction', description: 'Flex direction.', values: ['row', 'column', 'row-reverse', 'column-reverse'], example: 'direction=column' },\n { name: 'justify', description: 'Main axis alignment.', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], example: 'justify=center' },\n { name: 'align', description: 'Cross axis alignment.', values: ['start', 'center', 'end', 'stretch', 'baseline'], example: 'align=center' },\n { name: 'wrap', description: 'Allow child elements to wrap.', values: 'boolean', example: 'wrap' },\n\n // Size\n { name: 'width', description: 'Width in pixels.', values: 'number', example: 'width=400' },\n { name: 'height', description: 'Height in pixels.', values: 'number', example: 'height=300' },\n { name: 'w', description: 'Width (full, auto, screen, fit, or number).', values: ['full', 'auto', 'screen', 'fit'], example: 'w=full' },\n { name: 'h', description: 'Height (full, auto, screen, or number).', values: ['full', 'auto', 'screen'], example: 'h=full' },\n { name: 'minW', description: 'Minimum width.', values: 'number', example: 'minW=200' },\n { name: 'maxW', description: 'Maximum width.', values: 'number', example: 'maxW=600' },\n { name: 'minH', description: 'Minimum height.', values: 'number', example: 'minH=100' },\n { name: 'maxH', description: 'Maximum height.', values: 'number', example: 'maxH=400' },\n { name: 'size', description: 'Size preset.', values: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl'], example: 'size=lg' },\n { name: 'viewport', description: 'Viewport size (e.g., \"1440x900\").', values: 'string', example: 'viewport=\"1440x900\"' },\n { name: 'device', description: 'Device preset.', values: ['iphone14', 'iphone14pro', 'desktop', 'tablet'], example: 'device=\"iphone14\"' },\n\n // Visual\n { name: 'border', description: 'Show border.', values: 'boolean', example: 'border' },\n { name: 'shadow', description: 'Box shadow.', values: ['none', 'sm', 'md', 'lg', 'xl'], example: 'shadow=md' },\n { name: 'position', description: 'Position setting.', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], example: 'position=left' },\n\n // Text\n { name: 'level', description: 'Heading level (1-6).', values: 'number', example: 'level=2' },\n { name: 'weight', description: 'Font weight.', values: ['normal', 'medium', 'semibold', 'bold'], example: 'weight=bold' },\n { name: 'bold', description: 'Bold text (shorthand for weight=bold).', values: 'boolean', example: 'bold' },\n { name: 'muted', description: 'Muted style.', values: 'boolean', example: 'muted' },\n\n // Button variants\n { name: 'primary', description: 'Primary emphasis style.', values: 'boolean', example: 'primary' },\n { name: 'secondary', description: 'Secondary style.', values: 'boolean', example: 'secondary' },\n { name: 'outline', description: 'Outline style.', values: 'boolean', example: 'outline' },\n { name: 'ghost', description: 'Ghost/transparent style.', values: 'boolean', example: 'ghost' },\n { name: 'danger', description: 'Danger/delete style.', values: 'boolean', example: 'danger' },\n\n // Status variants\n { name: 'variant', description: 'Variant style.', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], example: 'variant=success' },\n\n // Form\n { name: 'inputType', description: 'Input field type.', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], example: 'inputType=email' },\n { name: 'placeholder', description: 'Placeholder text.', values: 'string', example: 'placeholder=\"Enter text\"' },\n { name: 'value', description: 'Default value.', values: 'string', example: 'value=\"default\"' },\n { name: 'label', description: 'Label text.', values: 'string', example: 'label=\"Name\"' },\n { name: 'required', description: 'Required field.', values: 'boolean', example: 'required' },\n { name: 'disabled', description: 'Disabled state.', values: 'boolean', example: 'disabled' },\n { name: 'readonly', description: 'Read-only.', values: 'boolean', example: 'readonly' },\n { name: 'checked', description: 'Checked state.', values: 'boolean', example: 'checked' },\n { name: 'loading', description: 'Loading state.', values: 'boolean', example: 'loading' },\n { name: 'name', description: 'Form element name attribute.', values: 'string', example: 'name=\"field\"' },\n { name: 'rows', description: 'Number of textarea rows.', values: 'number', example: 'rows=4' },\n { name: 'min', description: 'Minimum value.', values: 'number', example: 'min=0' },\n { name: 'max', description: 'Maximum value.', values: 'number', example: 'max=100' },\n { name: 'step', description: 'Step increment.', values: 'number', example: 'step=1' },\n\n // Scrolling\n { name: 'scroll', description: 'Enable vertical scrolling for overflow content.', values: 'boolean', example: 'scroll' },\n\n // Background\n { name: 'bg', description: 'Background color variant.', values: ['muted', 'primary', 'secondary'], example: 'bg=muted' },\n\n // Border radius\n { name: 'rounded', description: 'Apply border radius.', values: 'boolean', example: 'rounded' },\n\n // Position\n { name: 'x', description: 'Horizontal position (px or with unit).', values: 'number', example: 'x=100' },\n { name: 'y', description: 'Vertical position (px or with unit).', values: 'number', example: 'y=50' },\n\n // Other\n { name: 'title', description: 'Title text.', values: 'string', example: 'title=\"Title\"' },\n { name: 'centered', description: 'Center alignment.', values: 'boolean', example: 'centered' },\n { name: 'vertical', description: 'Vertical orientation.', values: 'boolean', example: 'vertical' },\n { name: 'expanded', description: 'Expanded state.', values: 'boolean', example: 'expanded' },\n { name: 'active', description: 'Active state/index.', values: 'number', example: 'active=0' },\n { name: 'href', description: 'Link URL.', values: 'string', example: 'href=\"/path\"' },\n { name: 'external', description: 'External link.', values: 'boolean', example: 'external' },\n { name: 'src', description: 'Image source URL.', values: 'string', example: 'src=\"/image.png\"' },\n { name: 'alt', description: 'Alternative text.', values: 'string', example: 'alt=\"Image\"' },\n { name: 'icon', description: 'Icon name (Lucide icons).', values: 'string', example: 'icon=\"home\"' },\n { name: 'pill', description: 'Rounded pill badge.', values: 'boolean', example: 'pill' },\n { name: 'dismissible', description: 'Can be dismissed.', values: 'boolean', example: 'dismissible' },\n { name: 'indeterminate', description: 'Indeterminate state.', values: 'boolean', example: 'indeterminate' },\n { name: 'striped', description: 'Striped style.', values: 'boolean', example: 'striped' },\n { name: 'bordered', description: 'Bordered style.', values: 'boolean', example: 'bordered' },\n { name: 'hover', description: 'Hover effect.', values: 'boolean', example: 'hover' },\n { name: 'ordered', description: 'Ordered list.', values: 'boolean', example: 'ordered' },\n { name: 'none', description: 'No list style.', values: 'boolean', example: 'none' },\n];\n","/**\n * Keywords and labels for Wireweave DSL\n */\n\nimport type { ComponentCategory } from '@wireweave/core';\n\n// Category labels for display\nexport const CATEGORY_LABELS: Record<ComponentCategory, string> = {\n layout: 'Layout',\n container: 'Container',\n grid: 'Grid',\n text: 'Text',\n input: 'Input',\n display: 'Display',\n data: 'Data',\n feedback: 'Feedback',\n overlay: 'Overlay',\n navigation: 'Navigation',\n};\n\n// Value keywords used in the language\nexport const VALUE_KEYWORDS = [\n // Booleans\n 'true',\n 'false',\n\n // Button variants\n 'primary',\n 'secondary',\n 'outline',\n 'ghost',\n\n // Status variants\n 'success',\n 'danger',\n 'warning',\n 'info',\n 'default',\n\n // Sizes\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n 'base',\n '2xl',\n '3xl',\n\n // Flex alignment\n 'start',\n 'center',\n 'end',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n\n // Positions\n 'left',\n 'right',\n 'top',\n 'bottom',\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n\n // Sizing\n 'full',\n 'auto',\n 'screen',\n 'fit',\n\n // Font weights\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n\n // Input types\n 'text',\n 'email',\n 'password',\n 'number',\n 'tel',\n 'url',\n 'search',\n 'date',\n\n // Flex direction\n 'row',\n 'column',\n 'row-reverse',\n 'column-reverse',\n\n // List\n 'none',\n 'nowrap',\n];\n\n// Common number suggestions for attributes\nexport const COMMON_NUMBERS = [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 48, 64];\n\n// Spacing scale (4px base)\nexport const SPACING_SCALE: Record<number, string> = {\n 0: '0px',\n 1: '4px',\n 2: '8px',\n 3: '12px',\n 4: '16px',\n 5: '20px',\n 6: '24px',\n 8: '32px',\n 10: '40px',\n 12: '48px',\n 16: '64px',\n 20: '80px',\n 24: '96px',\n};\n","/**\n * Utility functions for Wireweave language data\n */\n\nimport type { ComponentDef, AttributeDef } from './types.js';\nimport { ALL_COMPONENTS } from './components.js';\nimport { ATTRIBUTES } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return ALL_COMPONENTS.find((c) => c.name === name.toLowerCase());\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTES.find((a) => a.name === name);\n}\n\n/**\n * Get valid child components for a parent component\n */\nexport function getValidChildren(componentName: string): ComponentDef[] {\n const component = getComponent(componentName);\n if (!component || !component.hasChildren) return [];\n\n if (component.validChildren === undefined) {\n // All components except page are valid children\n return ALL_COMPONENTS.filter((c) => c.name !== 'page');\n }\n\n return component.validChildren\n .map((name) => getComponent(name))\n .filter((c): c is ComponentDef => c !== undefined);\n}\n\n/**\n * Check if a component is a valid child of another\n */\nexport function isValidChild(childName: string, parentName: string): boolean {\n const parent = getComponent(parentName);\n if (!parent || !parent.hasChildren) return false;\n\n if (parent.validChildren === undefined) return true;\n return parent.validChildren.includes(childName.toLowerCase());\n}\n\n/**\n * Get attribute definitions for a specific component\n */\nexport function getComponentAttributes(componentName: string): AttributeDef[] {\n const component = getComponent(componentName);\n if (!component) return ATTRIBUTES;\n\n return ATTRIBUTES.filter((attr) => component.attributes.includes(attr.name));\n}\n\n/**\n * Get all components in a category\n */\nexport function getComponentsByCategory(category: string): ComponentDef[] {\n return ALL_COMPONENTS.filter((c) => c.category === category);\n}\n\n/**\n * Get attribute type label for display\n */\nexport function getAttributeTypeLabel(attr: AttributeDef): string {\n if (attr.values === 'number') return 'number';\n if (attr.values === 'string') return 'string';\n if (attr.values === 'boolean') return 'boolean';\n if (Array.isArray(attr.values)) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return '';\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.values === 'number') return 'Type: number';\n if (attr.values === 'string') return 'Type: string';\n if (attr.values === 'boolean') return 'Type: boolean (can be omitted)';\n if (Array.isArray(attr.values)) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return '';\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return ALL_COMPONENTS.some((c) => c.name === word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTES.some((a) => a.name === word);\n}\n\n/**\n * Get all component names\n */\nexport function getComponentNames(): string[] {\n return ALL_COMPONENTS.map((c) => c.name);\n}\n\n/**\n * Get all attribute names\n */\nexport function getAttributeNames(): string[] {\n return ATTRIBUTES.map((a) => a.name);\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,21 +1,45 @@
|
|
|
1
|
+
import { ComponentCategory } from '@wireweave/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Type definitions for Wireweave language data (editor-friendly)
|
|
5
|
+
*
|
|
6
|
+
* Editor-specific types for IDE integrations.
|
|
7
|
+
* For core spec types, use @wireweave/core directly.
|
|
8
|
+
*/
|
|
1
9
|
/**
|
|
2
|
-
*
|
|
10
|
+
* Extended component definition for editors
|
|
11
|
+
* Includes documentation and autocomplete hints
|
|
3
12
|
*/
|
|
4
|
-
type ComponentCategory = 'layout' | 'container' | 'grid' | 'text' | 'input' | 'display' | 'data' | 'feedback' | 'overlay' | 'navigation';
|
|
5
13
|
interface ComponentDef {
|
|
14
|
+
/** Component name (lowercase) */
|
|
6
15
|
name: string;
|
|
16
|
+
/** Human-readable description for tooltips */
|
|
7
17
|
description: string;
|
|
8
|
-
category
|
|
18
|
+
/** Component category for grouping */
|
|
19
|
+
category: string;
|
|
20
|
+
/** Valid attributes for this component */
|
|
9
21
|
attributes: string[];
|
|
22
|
+
/** Whether this component can have children */
|
|
10
23
|
hasChildren: boolean;
|
|
24
|
+
/** Valid child components (for autocomplete) */
|
|
11
25
|
validChildren?: string[];
|
|
26
|
+
/** Valid parent components (for validation hints) */
|
|
12
27
|
validParents?: string[];
|
|
28
|
+
/** Code example for documentation */
|
|
13
29
|
example?: string;
|
|
14
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Extended attribute definition for editors
|
|
33
|
+
* Includes documentation and autocomplete values
|
|
34
|
+
*/
|
|
15
35
|
interface AttributeDef {
|
|
36
|
+
/** Attribute name */
|
|
16
37
|
name: string;
|
|
38
|
+
/** Human-readable description for tooltips */
|
|
17
39
|
description: string;
|
|
40
|
+
/** Possible values (for autocomplete) */
|
|
18
41
|
values?: string[] | 'number' | 'string' | 'boolean';
|
|
42
|
+
/** Code example for documentation */
|
|
19
43
|
example?: string;
|
|
20
44
|
}
|
|
21
45
|
|
|
@@ -94,4 +118,4 @@ declare function getComponentNames(): string[];
|
|
|
94
118
|
*/
|
|
95
119
|
declare function getAttributeNames(): string[];
|
|
96
120
|
|
|
97
|
-
export { ALL_COMPONENTS, ATTRIBUTES, type AttributeDef, CATEGORY_LABELS, COMMON_NUMBERS, type
|
|
121
|
+
export { ALL_COMPONENTS, ATTRIBUTES, type AttributeDef, CATEGORY_LABELS, COMMON_NUMBERS, type ComponentDef, SPACING_SCALE, VALUE_KEYWORDS, formatAttributeValues, getAttribute, getAttributeNames, getAttributeTypeLabel, getComponent, getComponentAttributes, getComponentNames, getComponentsByCategory, getValidChildren, isAttribute, isComponent, isValidChild };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,45 @@
|
|
|
1
|
+
import { ComponentCategory } from '@wireweave/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Type definitions for Wireweave language data (editor-friendly)
|
|
5
|
+
*
|
|
6
|
+
* Editor-specific types for IDE integrations.
|
|
7
|
+
* For core spec types, use @wireweave/core directly.
|
|
8
|
+
*/
|
|
1
9
|
/**
|
|
2
|
-
*
|
|
10
|
+
* Extended component definition for editors
|
|
11
|
+
* Includes documentation and autocomplete hints
|
|
3
12
|
*/
|
|
4
|
-
type ComponentCategory = 'layout' | 'container' | 'grid' | 'text' | 'input' | 'display' | 'data' | 'feedback' | 'overlay' | 'navigation';
|
|
5
13
|
interface ComponentDef {
|
|
14
|
+
/** Component name (lowercase) */
|
|
6
15
|
name: string;
|
|
16
|
+
/** Human-readable description for tooltips */
|
|
7
17
|
description: string;
|
|
8
|
-
category
|
|
18
|
+
/** Component category for grouping */
|
|
19
|
+
category: string;
|
|
20
|
+
/** Valid attributes for this component */
|
|
9
21
|
attributes: string[];
|
|
22
|
+
/** Whether this component can have children */
|
|
10
23
|
hasChildren: boolean;
|
|
24
|
+
/** Valid child components (for autocomplete) */
|
|
11
25
|
validChildren?: string[];
|
|
26
|
+
/** Valid parent components (for validation hints) */
|
|
12
27
|
validParents?: string[];
|
|
28
|
+
/** Code example for documentation */
|
|
13
29
|
example?: string;
|
|
14
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Extended attribute definition for editors
|
|
33
|
+
* Includes documentation and autocomplete values
|
|
34
|
+
*/
|
|
15
35
|
interface AttributeDef {
|
|
36
|
+
/** Attribute name */
|
|
16
37
|
name: string;
|
|
38
|
+
/** Human-readable description for tooltips */
|
|
17
39
|
description: string;
|
|
40
|
+
/** Possible values (for autocomplete) */
|
|
18
41
|
values?: string[] | 'number' | 'string' | 'boolean';
|
|
42
|
+
/** Code example for documentation */
|
|
19
43
|
example?: string;
|
|
20
44
|
}
|
|
21
45
|
|
|
@@ -94,4 +118,4 @@ declare function getComponentNames(): string[];
|
|
|
94
118
|
*/
|
|
95
119
|
declare function getAttributeNames(): string[];
|
|
96
120
|
|
|
97
|
-
export { ALL_COMPONENTS, ATTRIBUTES, type AttributeDef, CATEGORY_LABELS, COMMON_NUMBERS, type
|
|
121
|
+
export { ALL_COMPONENTS, ATTRIBUTES, type AttributeDef, CATEGORY_LABELS, COMMON_NUMBERS, type ComponentDef, SPACING_SCALE, VALUE_KEYWORDS, formatAttributeValues, getAttribute, getAttributeNames, getAttributeTypeLabel, getComponent, getComponentAttributes, getComponentNames, getComponentsByCategory, getValidChildren, isAttribute, isComponent, isValidChild };
|
package/dist/index.js
CHANGED
|
@@ -15,37 +15,37 @@ var ALL_COMPONENTS = [
|
|
|
15
15
|
name: "header",
|
|
16
16
|
description: "Page header area. Place navigation, logo, etc.",
|
|
17
17
|
category: "layout",
|
|
18
|
-
attributes: ["p", "px", "py", "border", "gap", "justify", "align"],
|
|
18
|
+
attributes: ["p", "px", "py", "h", "border", "gap", "justify", "align"],
|
|
19
19
|
hasChildren: true,
|
|
20
20
|
validParents: ["page"],
|
|
21
|
-
example: "header
|
|
21
|
+
example: "header h=56 border { ... }"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
name: "main",
|
|
25
25
|
description: "Main content area. Place primary content here.",
|
|
26
26
|
category: "layout",
|
|
27
|
-
attributes: ["p", "px", "py", "gap"],
|
|
27
|
+
attributes: ["p", "px", "py", "gap", "scroll"],
|
|
28
28
|
hasChildren: true,
|
|
29
29
|
validParents: ["page"],
|
|
30
|
-
example: "main p=6 { ... }"
|
|
30
|
+
example: "main p=6 scroll { ... }"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
name: "footer",
|
|
34
34
|
description: "Page footer area. Place copyright, links, etc.",
|
|
35
35
|
category: "layout",
|
|
36
|
-
attributes: ["p", "px", "py", "border", "gap"],
|
|
36
|
+
attributes: ["p", "px", "py", "h", "border", "gap"],
|
|
37
37
|
hasChildren: true,
|
|
38
38
|
validParents: ["page"],
|
|
39
|
-
example: "footer
|
|
39
|
+
example: "footer h=48 border { ... }"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
name: "sidebar",
|
|
43
43
|
description: "Sidebar area. Place auxiliary navigation or information.",
|
|
44
44
|
category: "layout",
|
|
45
|
-
attributes: ["position", "w", "p", "px", "py", "gap"],
|
|
45
|
+
attributes: ["position", "w", "p", "px", "py", "gap", "border", "bg"],
|
|
46
46
|
hasChildren: true,
|
|
47
47
|
validParents: ["page"],
|
|
48
|
-
example: "sidebar w=240 { ... }"
|
|
48
|
+
example: "sidebar w=240 border { ... }"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
name: "section",
|
|
@@ -60,7 +60,7 @@ var ALL_COMPONENTS = [
|
|
|
60
60
|
name: "row",
|
|
61
61
|
description: "Horizontal flex container. Arrange children horizontally.",
|
|
62
62
|
category: "grid",
|
|
63
|
-
attributes: ["gap", "justify", "align", "wrap", "direction", "flex", "p", "m", "mt", "mb"],
|
|
63
|
+
attributes: ["gap", "justify", "align", "wrap", "direction", "flex", "p", "px", "py", "m", "mt", "mb", "h", "w", "border", "bg"],
|
|
64
64
|
hasChildren: true,
|
|
65
65
|
example: "row flex gap=4 justify=between { ... }"
|
|
66
66
|
},
|
|
@@ -68,7 +68,7 @@ var ALL_COMPONENTS = [
|
|
|
68
68
|
name: "col",
|
|
69
69
|
description: "Vertical flex container or grid column.",
|
|
70
70
|
category: "grid",
|
|
71
|
-
attributes: ["span", "sm", "md", "lg", "xl", "order", "gap", "justify", "align", "p", "m", "w"],
|
|
71
|
+
attributes: ["span", "sm", "md", "lg", "xl", "order", "gap", "justify", "align", "p", "px", "py", "m", "w", "h", "flex", "border", "bg", "scroll"],
|
|
72
72
|
hasChildren: true,
|
|
73
73
|
example: "col span=6 md=4 { ... }"
|
|
74
74
|
},
|
|
@@ -77,7 +77,7 @@ var ALL_COMPONENTS = [
|
|
|
77
77
|
name: "card",
|
|
78
78
|
description: "Card component. Group and display content.",
|
|
79
79
|
category: "container",
|
|
80
|
-
attributes: ["title", "p", "shadow", "border", "gap"],
|
|
80
|
+
attributes: ["title", "p", "px", "py", "shadow", "border", "gap", "w", "h", "rounded"],
|
|
81
81
|
hasChildren: true,
|
|
82
82
|
example: 'card "Settings" p=4 shadow=md { ... }'
|
|
83
83
|
},
|
|
@@ -135,7 +135,7 @@ var ALL_COMPONENTS = [
|
|
|
135
135
|
name: "input",
|
|
136
136
|
description: "Input field. Accept text, email, password, etc.",
|
|
137
137
|
category: "input",
|
|
138
|
-
attributes: ["label", "inputType", "placeholder", "value", "disabled", "required", "readonly", "icon", "m", "mb"],
|
|
138
|
+
attributes: ["label", "inputType", "placeholder", "value", "disabled", "required", "readonly", "icon", "w", "size", "m", "mb"],
|
|
139
139
|
hasChildren: false,
|
|
140
140
|
example: 'input "Email" inputType=email placeholder="user@example.com" required'
|
|
141
141
|
},
|
|
@@ -209,9 +209,9 @@ var ALL_COMPONENTS = [
|
|
|
209
209
|
name: "placeholder",
|
|
210
210
|
description: "Placeholder. Image or content placeholder.",
|
|
211
211
|
category: "display",
|
|
212
|
-
attributes: ["label", "w", "h"],
|
|
213
|
-
hasChildren:
|
|
214
|
-
example: 'placeholder "Banner Image" w=full h=200'
|
|
212
|
+
attributes: ["label", "w", "h", "flex"],
|
|
213
|
+
hasChildren: true,
|
|
214
|
+
example: 'placeholder "Banner Image" w=full h=200 { ... }'
|
|
215
215
|
},
|
|
216
216
|
{
|
|
217
217
|
name: "avatar",
|
|
@@ -342,7 +342,7 @@ var ALL_COMPONENTS = [
|
|
|
342
342
|
name: "divider",
|
|
343
343
|
description: "Divider element. Visually separate content.",
|
|
344
344
|
category: "display",
|
|
345
|
-
attributes: ["m", "my", "mx"],
|
|
345
|
+
attributes: ["m", "my", "mx", "vertical", "h"],
|
|
346
346
|
hasChildren: false,
|
|
347
347
|
example: "divider my=4"
|
|
348
348
|
}
|
|
@@ -388,7 +388,7 @@ var ATTRIBUTES = [
|
|
|
388
388
|
{ name: "maxW", description: "Maximum width.", values: "number", example: "maxW=600" },
|
|
389
389
|
{ name: "minH", description: "Minimum height.", values: "number", example: "minH=100" },
|
|
390
390
|
{ name: "maxH", description: "Maximum height.", values: "number", example: "maxH=400" },
|
|
391
|
-
{ name: "size", description: "Size preset.", values: ["xs", "sm", "md", "lg", "xl"], example: "size=lg" },
|
|
391
|
+
{ name: "size", description: "Size preset.", values: ["xs", "sm", "base", "md", "lg", "xl", "2xl", "3xl"], example: "size=lg" },
|
|
392
392
|
{ name: "viewport", description: 'Viewport size (e.g., "1440x900").', values: "string", example: 'viewport="1440x900"' },
|
|
393
393
|
{ name: "device", description: "Device preset.", values: ["iphone14", "iphone14pro", "desktop", "tablet"], example: 'device="iphone14"' },
|
|
394
394
|
// Visual
|
|
@@ -398,6 +398,7 @@ var ATTRIBUTES = [
|
|
|
398
398
|
// Text
|
|
399
399
|
{ name: "level", description: "Heading level (1-6).", values: "number", example: "level=2" },
|
|
400
400
|
{ name: "weight", description: "Font weight.", values: ["normal", "medium", "semibold", "bold"], example: "weight=bold" },
|
|
401
|
+
{ name: "bold", description: "Bold text (shorthand for weight=bold).", values: "boolean", example: "bold" },
|
|
401
402
|
{ name: "muted", description: "Muted style.", values: "boolean", example: "muted" },
|
|
402
403
|
// Button variants
|
|
403
404
|
{ name: "primary", description: "Primary emphasis style.", values: "boolean", example: "primary" },
|
|
@@ -422,6 +423,15 @@ var ATTRIBUTES = [
|
|
|
422
423
|
{ name: "min", description: "Minimum value.", values: "number", example: "min=0" },
|
|
423
424
|
{ name: "max", description: "Maximum value.", values: "number", example: "max=100" },
|
|
424
425
|
{ name: "step", description: "Step increment.", values: "number", example: "step=1" },
|
|
426
|
+
// Scrolling
|
|
427
|
+
{ name: "scroll", description: "Enable vertical scrolling for overflow content.", values: "boolean", example: "scroll" },
|
|
428
|
+
// Background
|
|
429
|
+
{ name: "bg", description: "Background color variant.", values: ["muted", "primary", "secondary"], example: "bg=muted" },
|
|
430
|
+
// Border radius
|
|
431
|
+
{ name: "rounded", description: "Apply border radius.", values: "boolean", example: "rounded" },
|
|
432
|
+
// Position
|
|
433
|
+
{ name: "x", description: "Horizontal position (px or with unit).", values: "number", example: "x=100" },
|
|
434
|
+
{ name: "y", description: "Vertical position (px or with unit).", values: "number", example: "y=50" },
|
|
425
435
|
// Other
|
|
426
436
|
{ name: "title", description: "Title text.", values: "string", example: 'title="Title"' },
|
|
427
437
|
{ name: "centered", description: "Center alignment.", values: "boolean", example: "centered" },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components.ts","../src/attributes.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * Component definitions for Wireweave DSL\n * Based on @wireweave/core AST types\n */\n\nimport type { ComponentDef } from './types.js';\n\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // Layout\n {\n name: 'page',\n description: 'Page root container. Starting point for the entire layout.',\n category: 'layout',\n attributes: ['title', 'width', 'height', 'viewport', 'device', 'centered', 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl', 'm', 'gap'],\n hasChildren: true,\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n example: 'page \"Dashboard\" centered { ... }',\n },\n {\n name: 'header',\n description: 'Page header area. Place navigation, logo, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'border', 'gap', 'justify', 'align'],\n hasChildren: true,\n validParents: ['page'],\n example: 'header p=4 border { ... }',\n },\n {\n name: 'main',\n description: 'Main content area. Place primary content here.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'main p=6 { ... }',\n },\n {\n name: 'footer',\n description: 'Page footer area. Place copyright, links, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'border', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'footer p=4 border { ... }',\n },\n {\n name: 'sidebar',\n description: 'Sidebar area. Place auxiliary navigation or information.',\n category: 'layout',\n attributes: ['position', 'w', 'p', 'px', 'py', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'sidebar w=240 { ... }',\n },\n {\n name: 'section',\n description: 'Section area. Logically group content.',\n category: 'layout',\n attributes: ['title', 'expanded', 'p', 'px', 'py', 'gap'],\n hasChildren: true,\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // Grid\n {\n name: 'row',\n description: 'Horizontal flex container. Arrange children horizontally.',\n category: 'grid',\n attributes: ['gap', 'justify', 'align', 'wrap', 'direction', 'flex', 'p', 'm', 'mt', 'mb'],\n hasChildren: true,\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n description: 'Vertical flex container or grid column.',\n category: 'grid',\n attributes: ['span', 'sm', 'md', 'lg', 'xl', 'order', 'gap', 'justify', 'align', 'p', 'm', 'w'],\n hasChildren: true,\n example: 'col span=6 md=4 { ... }',\n },\n\n // Container\n {\n name: 'card',\n description: 'Card component. Group and display content.',\n category: 'container',\n attributes: ['title', 'p', 'shadow', 'border', 'gap'],\n hasChildren: true,\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n description: 'Modal dialog. Display content on an overlay.',\n category: 'container',\n attributes: ['title', 'w', 'h', 'p'],\n hasChildren: true,\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n description: 'Drawer panel. Slides in from the edge of the screen.',\n category: 'container',\n attributes: ['title', 'position', 'p'],\n hasChildren: true,\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n description: 'Accordion. Collapsible content panel.',\n category: 'container',\n attributes: ['title', 'p'],\n hasChildren: true,\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // Text\n {\n name: 'text',\n description: 'Text element. Display plain text.',\n category: 'text',\n attributes: ['size', 'weight', 'align', 'muted', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n description: 'Title element. Display h1-h6 headings.',\n category: 'text',\n attributes: ['level', 'size', 'align', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n description: 'Link element. Display clickable hyperlink.',\n category: 'text',\n attributes: ['href', 'external'],\n hasChildren: false,\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // Input\n {\n name: 'input',\n description: 'Input field. Accept text, email, password, etc.',\n category: 'input',\n attributes: ['label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'm', 'mb'],\n hasChildren: false,\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n description: 'Multi-line input field. Accept long text.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'rows', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n description: 'Dropdown select. Choose one from multiple options.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n description: 'Checkbox. Select true/false value.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n description: 'Radio button. Select one within a group.',\n category: 'input',\n attributes: ['label', 'name', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n description: 'Toggle switch. Switch on/off state.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n description: 'Slider. Select a value within a range.',\n category: 'input',\n attributes: ['label', 'min', 'max', 'value', 'step', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n\n // Button\n {\n name: 'button',\n description: 'Button element. Display clickable button.',\n category: 'input',\n attributes: ['primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading', 'w'],\n hasChildren: false,\n example: 'button \"Submit\" primary icon=send',\n },\n\n // Display\n {\n name: 'image',\n description: 'Image element. Display an image.',\n category: 'display',\n attributes: ['src', 'alt', 'w', 'h'],\n hasChildren: false,\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n description: 'Placeholder. Image or content placeholder.',\n category: 'display',\n attributes: ['label', 'w', 'h'],\n hasChildren: false,\n example: 'placeholder \"Banner Image\" w=full h=200',\n },\n {\n name: 'avatar',\n description: 'Avatar element. Display user profile image.',\n category: 'display',\n attributes: ['name', 'src', 'size'],\n hasChildren: false,\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n description: 'Badge element. Display status or count as a small label.',\n category: 'display',\n attributes: ['variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n description: 'Icon element. Display a Lucide icon.',\n category: 'display',\n attributes: ['name', 'size', 'muted'],\n hasChildren: false,\n example: 'icon \"settings\" size=lg',\n },\n\n // Data\n {\n name: 'table',\n description: 'Table component. Display data in tabular format.',\n category: 'data',\n attributes: ['striped', 'bordered', 'hover'],\n hasChildren: false,\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n description: 'List component. Display items as a list.',\n category: 'data',\n attributes: ['ordered', 'none', 'gap'],\n hasChildren: false,\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // Feedback\n {\n name: 'alert',\n description: 'Alert element. Display a message to the user.',\n category: 'feedback',\n attributes: ['variant', 'dismissible', 'icon'],\n hasChildren: false,\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n description: 'Toast notification. Display a temporary message.',\n category: 'feedback',\n attributes: ['position', 'variant'],\n hasChildren: false,\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n description: 'Progress bar. Display progress status.',\n category: 'feedback',\n attributes: ['value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n description: 'Loading spinner. Display loading status.',\n category: 'feedback',\n attributes: ['label', 'size'],\n hasChildren: false,\n example: 'spinner size=lg',\n },\n\n // Overlay\n {\n name: 'tooltip',\n description: 'Tooltip element. Show additional info on hover.',\n category: 'overlay',\n attributes: ['position'],\n hasChildren: true,\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n description: 'Popover. Show additional content on click.',\n category: 'overlay',\n attributes: ['title'],\n hasChildren: true,\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n description: 'Dropdown menu. Expand menu on click.',\n category: 'overlay',\n attributes: [],\n hasChildren: false,\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // Navigation\n {\n name: 'nav',\n description: 'Navigation area. Place menu items.',\n category: 'navigation',\n attributes: ['vertical', 'gap'],\n hasChildren: false,\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n description: 'Tabs component. Switch between multiple panels.',\n category: 'navigation',\n attributes: ['active'],\n hasChildren: true,\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n description: 'Breadcrumb. Display current location as a path.',\n category: 'navigation',\n attributes: [],\n hasChildren: false,\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // Divider\n {\n name: 'divider',\n description: 'Divider element. Visually separate content.',\n category: 'display',\n attributes: ['m', 'my', 'mx'],\n hasChildren: false,\n example: 'divider my=4',\n },\n];\n","/**\n * Attribute definitions for Wireweave DSL\n */\n\nimport type { AttributeDef } from './types.js';\n\nexport const ATTRIBUTES: AttributeDef[] = [\n // Spacing\n { name: 'p', description: 'Padding. Set inner spacing.', values: 'number', example: 'p=4' },\n { name: 'px', description: 'Horizontal padding.', values: 'number', example: 'px=4' },\n { name: 'py', description: 'Vertical padding.', values: 'number', example: 'py=4' },\n { name: 'pt', description: 'Top padding.', values: 'number', example: 'pt=4' },\n { name: 'pr', description: 'Right padding.', values: 'number', example: 'pr=4' },\n { name: 'pb', description: 'Bottom padding.', values: 'number', example: 'pb=4' },\n { name: 'pl', description: 'Left padding.', values: 'number', example: 'pl=4' },\n { name: 'm', description: 'Margin. Set outer spacing.', values: 'number', example: 'm=4' },\n { name: 'mx', description: 'Horizontal margin. Can be \"auto\" for centering.', values: 'number', example: 'mx=auto' },\n { name: 'my', description: 'Vertical margin.', values: 'number', example: 'my=4' },\n { name: 'mt', description: 'Top margin.', values: 'number', example: 'mt=4' },\n { name: 'mr', description: 'Right margin.', values: 'number', example: 'mr=4' },\n { name: 'mb', description: 'Bottom margin.', values: 'number', example: 'mb=4' },\n { name: 'ml', description: 'Left margin.', values: 'number', example: 'ml=4' },\n { name: 'gap', description: 'Gap between child elements.', values: 'number', example: 'gap=4' },\n\n // Grid Layout\n { name: 'span', description: 'Grid column width (1-12).', values: 'number', example: 'span=6' },\n { name: 'sm', description: 'Column width at 576px and above.', values: 'number', example: 'sm=6' },\n { name: 'md', description: 'Column width at 768px and above.', values: 'number', example: 'md=4' },\n { name: 'lg', description: 'Column width at 992px and above.', values: 'number', example: 'lg=3' },\n { name: 'xl', description: 'Column width at 1200px and above.', values: 'number', example: 'xl=2' },\n { name: 'order', description: 'Order within flex container.', values: 'number', example: 'order=1' },\n\n // Flex Layout\n { name: 'flex', description: 'Enable flexbox layout.', values: 'boolean', example: 'flex' },\n { name: 'direction', description: 'Flex direction.', values: ['row', 'column', 'row-reverse', 'column-reverse'], example: 'direction=column' },\n { name: 'justify', description: 'Main axis alignment.', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], example: 'justify=center' },\n { name: 'align', description: 'Cross axis alignment.', values: ['start', 'center', 'end', 'stretch', 'baseline'], example: 'align=center' },\n { name: 'wrap', description: 'Allow child elements to wrap.', values: 'boolean', example: 'wrap' },\n\n // Size\n { name: 'width', description: 'Width in pixels.', values: 'number', example: 'width=400' },\n { name: 'height', description: 'Height in pixels.', values: 'number', example: 'height=300' },\n { name: 'w', description: 'Width (full, auto, screen, fit, or number).', values: ['full', 'auto', 'screen', 'fit'], example: 'w=full' },\n { name: 'h', description: 'Height (full, auto, screen, or number).', values: ['full', 'auto', 'screen'], example: 'h=full' },\n { name: 'minW', description: 'Minimum width.', values: 'number', example: 'minW=200' },\n { name: 'maxW', description: 'Maximum width.', values: 'number', example: 'maxW=600' },\n { name: 'minH', description: 'Minimum height.', values: 'number', example: 'minH=100' },\n { name: 'maxH', description: 'Maximum height.', values: 'number', example: 'maxH=400' },\n { name: 'size', description: 'Size preset.', values: ['xs', 'sm', 'md', 'lg', 'xl'], example: 'size=lg' },\n { name: 'viewport', description: 'Viewport size (e.g., \"1440x900\").', values: 'string', example: 'viewport=\"1440x900\"' },\n { name: 'device', description: 'Device preset.', values: ['iphone14', 'iphone14pro', 'desktop', 'tablet'], example: 'device=\"iphone14\"' },\n\n // Visual\n { name: 'border', description: 'Show border.', values: 'boolean', example: 'border' },\n { name: 'shadow', description: 'Box shadow.', values: ['none', 'sm', 'md', 'lg', 'xl'], example: 'shadow=md' },\n { name: 'position', description: 'Position setting.', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], example: 'position=left' },\n\n // Text\n { name: 'level', description: 'Heading level (1-6).', values: 'number', example: 'level=2' },\n { name: 'weight', description: 'Font weight.', values: ['normal', 'medium', 'semibold', 'bold'], example: 'weight=bold' },\n { name: 'muted', description: 'Muted style.', values: 'boolean', example: 'muted' },\n\n // Button variants\n { name: 'primary', description: 'Primary emphasis style.', values: 'boolean', example: 'primary' },\n { name: 'secondary', description: 'Secondary style.', values: 'boolean', example: 'secondary' },\n { name: 'outline', description: 'Outline style.', values: 'boolean', example: 'outline' },\n { name: 'ghost', description: 'Ghost/transparent style.', values: 'boolean', example: 'ghost' },\n { name: 'danger', description: 'Danger/delete style.', values: 'boolean', example: 'danger' },\n\n // Status variants\n { name: 'variant', description: 'Variant style.', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], example: 'variant=success' },\n\n // Form\n { name: 'inputType', description: 'Input field type.', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], example: 'inputType=email' },\n { name: 'placeholder', description: 'Placeholder text.', values: 'string', example: 'placeholder=\"Enter text\"' },\n { name: 'value', description: 'Default value.', values: 'string', example: 'value=\"default\"' },\n { name: 'label', description: 'Label text.', values: 'string', example: 'label=\"Name\"' },\n { name: 'required', description: 'Required field.', values: 'boolean', example: 'required' },\n { name: 'disabled', description: 'Disabled state.', values: 'boolean', example: 'disabled' },\n { name: 'readonly', description: 'Read-only.', values: 'boolean', example: 'readonly' },\n { name: 'checked', description: 'Checked state.', values: 'boolean', example: 'checked' },\n { name: 'loading', description: 'Loading state.', values: 'boolean', example: 'loading' },\n { name: 'name', description: 'Form element name attribute.', values: 'string', example: 'name=\"field\"' },\n { name: 'rows', description: 'Number of textarea rows.', values: 'number', example: 'rows=4' },\n { name: 'min', description: 'Minimum value.', values: 'number', example: 'min=0' },\n { name: 'max', description: 'Maximum value.', values: 'number', example: 'max=100' },\n { name: 'step', description: 'Step increment.', values: 'number', example: 'step=1' },\n\n // Other\n { name: 'title', description: 'Title text.', values: 'string', example: 'title=\"Title\"' },\n { name: 'centered', description: 'Center alignment.', values: 'boolean', example: 'centered' },\n { name: 'vertical', description: 'Vertical orientation.', values: 'boolean', example: 'vertical' },\n { name: 'expanded', description: 'Expanded state.', values: 'boolean', example: 'expanded' },\n { name: 'active', description: 'Active state/index.', values: 'number', example: 'active=0' },\n { name: 'href', description: 'Link URL.', values: 'string', example: 'href=\"/path\"' },\n { name: 'external', description: 'External link.', values: 'boolean', example: 'external' },\n { name: 'src', description: 'Image source URL.', values: 'string', example: 'src=\"/image.png\"' },\n { name: 'alt', description: 'Alternative text.', values: 'string', example: 'alt=\"Image\"' },\n { name: 'icon', description: 'Icon name (Lucide icons).', values: 'string', example: 'icon=\"home\"' },\n { name: 'pill', description: 'Rounded pill badge.', values: 'boolean', example: 'pill' },\n { name: 'dismissible', description: 'Can be dismissed.', values: 'boolean', example: 'dismissible' },\n { name: 'indeterminate', description: 'Indeterminate state.', values: 'boolean', example: 'indeterminate' },\n { name: 'striped', description: 'Striped style.', values: 'boolean', example: 'striped' },\n { name: 'bordered', description: 'Bordered style.', values: 'boolean', example: 'bordered' },\n { name: 'hover', description: 'Hover effect.', values: 'boolean', example: 'hover' },\n { name: 'ordered', description: 'Ordered list.', values: 'boolean', example: 'ordered' },\n { name: 'none', description: 'No list style.', values: 'boolean', example: 'none' },\n];\n","/**\n * Keywords and labels for Wireweave DSL\n */\n\nimport type { ComponentCategory } from './types.js';\n\n// Category labels for display\nexport const CATEGORY_LABELS: Record<ComponentCategory, string> = {\n layout: 'Layout',\n container: 'Container',\n grid: 'Grid',\n text: 'Text',\n input: 'Input',\n display: 'Display',\n data: 'Data',\n feedback: 'Feedback',\n overlay: 'Overlay',\n navigation: 'Navigation',\n};\n\n// Value keywords used in the language\nexport const VALUE_KEYWORDS = [\n // Booleans\n 'true',\n 'false',\n\n // Button variants\n 'primary',\n 'secondary',\n 'outline',\n 'ghost',\n\n // Status variants\n 'success',\n 'danger',\n 'warning',\n 'info',\n 'default',\n\n // Sizes\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n 'base',\n '2xl',\n '3xl',\n\n // Flex alignment\n 'start',\n 'center',\n 'end',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n\n // Positions\n 'left',\n 'right',\n 'top',\n 'bottom',\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n\n // Sizing\n 'full',\n 'auto',\n 'screen',\n 'fit',\n\n // Font weights\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n\n // Input types\n 'text',\n 'email',\n 'password',\n 'number',\n 'tel',\n 'url',\n 'search',\n 'date',\n\n // Flex direction\n 'row',\n 'column',\n 'row-reverse',\n 'column-reverse',\n\n // List\n 'none',\n 'nowrap',\n];\n\n// Common number suggestions for attributes\nexport const COMMON_NUMBERS = [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 48, 64];\n\n// Spacing scale (4px base)\nexport const SPACING_SCALE: Record<number, string> = {\n 0: '0px',\n 1: '4px',\n 2: '8px',\n 3: '12px',\n 4: '16px',\n 5: '20px',\n 6: '24px',\n 8: '32px',\n 10: '40px',\n 12: '48px',\n 16: '64px',\n 20: '80px',\n 24: '96px',\n};\n","/**\n * Utility functions for Wireweave language data\n */\n\nimport type { ComponentDef, AttributeDef } from './types.js';\nimport { ALL_COMPONENTS } from './components.js';\nimport { ATTRIBUTES } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return ALL_COMPONENTS.find((c) => c.name === name.toLowerCase());\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTES.find((a) => a.name === name);\n}\n\n/**\n * Get valid child components for a parent component\n */\nexport function getValidChildren(componentName: string): ComponentDef[] {\n const component = getComponent(componentName);\n if (!component || !component.hasChildren) return [];\n\n if (component.validChildren === undefined) {\n // All components except page are valid children\n return ALL_COMPONENTS.filter((c) => c.name !== 'page');\n }\n\n return component.validChildren\n .map((name) => getComponent(name))\n .filter((c): c is ComponentDef => c !== undefined);\n}\n\n/**\n * Check if a component is a valid child of another\n */\nexport function isValidChild(childName: string, parentName: string): boolean {\n const parent = getComponent(parentName);\n if (!parent || !parent.hasChildren) return false;\n\n if (parent.validChildren === undefined) return true;\n return parent.validChildren.includes(childName.toLowerCase());\n}\n\n/**\n * Get attribute definitions for a specific component\n */\nexport function getComponentAttributes(componentName: string): AttributeDef[] {\n const component = getComponent(componentName);\n if (!component) return ATTRIBUTES;\n\n return ATTRIBUTES.filter((attr) => component.attributes.includes(attr.name));\n}\n\n/**\n * Get all components in a category\n */\nexport function getComponentsByCategory(category: string): ComponentDef[] {\n return ALL_COMPONENTS.filter((c) => c.category === category);\n}\n\n/**\n * Get attribute type label for display\n */\nexport function getAttributeTypeLabel(attr: AttributeDef): string {\n if (attr.values === 'number') return 'number';\n if (attr.values === 'string') return 'string';\n if (attr.values === 'boolean') return 'boolean';\n if (Array.isArray(attr.values)) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return '';\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.values === 'number') return 'Type: number';\n if (attr.values === 'string') return 'Type: string';\n if (attr.values === 'boolean') return 'Type: boolean (can be omitted)';\n if (Array.isArray(attr.values)) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return '';\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return ALL_COMPONENTS.some((c) => c.name === word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTES.some((a) => a.name === word);\n}\n\n/**\n * Get all component names\n */\nexport function getComponentNames(): string[] {\n return ALL_COMPONENTS.map((c) => c.name);\n}\n\n/**\n * Get all attribute names\n */\nexport function getAttributeNames(): string[] {\n return ATTRIBUTES.map((a) => a.name);\n}\n"],"mappings":";AAOO,IAAM,iBAAiC;AAAA;AAAA,EAE5C;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,SAAS,UAAU,YAAY,UAAU,YAAY,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK;AAAA,IAC9H,aAAa;AAAA,IACb,eAAe,CAAC,UAAU,QAAQ,UAAU,WAAW,WAAW,OAAO,OAAO,OAAO,MAAM;AAAA,IAC7F,cAAc,CAAC;AAAA,IACf,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,MAAM,UAAU,OAAO,WAAW,OAAO;AAAA,IACjE,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,MAAM,KAAK;AAAA,IACnC,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,MAAM,UAAU,KAAK;AAAA,IAC7C,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,YAAY,KAAK,KAAK,MAAM,MAAM,KAAK;AAAA,IACpD,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,YAAY,KAAK,MAAM,MAAM,KAAK;AAAA,IACxD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,OAAO,WAAW,SAAS,QAAQ,aAAa,QAAQ,KAAK,KAAK,MAAM,IAAI;AAAA,IACzF,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,MAAM,MAAM,MAAM,MAAM,SAAS,OAAO,WAAW,SAAS,KAAK,KAAK,GAAG;AAAA,IAC9F,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,KAAK,UAAU,UAAU,KAAK;AAAA,IACpD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,KAAK,KAAK,GAAG;AAAA,IACnC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,YAAY,GAAG;AAAA,IACrC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,GAAG;AAAA,IACzB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,UAAU,SAAS,SAAS,KAAK,MAAM,IAAI;AAAA,IAChE,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,QAAQ,SAAS,KAAK,MAAM,IAAI;AAAA,IACtD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,UAAU;AAAA,IAC/B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,aAAa,eAAe,SAAS,YAAY,YAAY,YAAY,QAAQ,KAAK,IAAI;AAAA,IAChH,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,eAAe,SAAS,QAAQ,YAAY,YAAY,KAAK,IAAI;AAAA,IACvF,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,eAAe,SAAS,YAAY,YAAY,KAAK,IAAI;AAAA,IAC/E,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,WAAW,YAAY,KAAK,IAAI;AAAA,IACtD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,QAAQ,WAAW,YAAY,KAAK,IAAI;AAAA,IAC9D,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,WAAW,YAAY,KAAK,IAAI;AAAA,IACtD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,OAAO,OAAO,SAAS,QAAQ,YAAY,KAAK,IAAI;AAAA,IAC1E,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,aAAa,WAAW,SAAS,UAAU,QAAQ,QAAQ,YAAY,WAAW,GAAG;AAAA,IAC7G,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,OAAO,OAAO,KAAK,GAAG;AAAA,IACnC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,KAAK,GAAG;AAAA,IAC9B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,OAAO,MAAM;AAAA,IAClC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,QAAQ,QAAQ,MAAM;AAAA,IAC9C,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,QAAQ,OAAO;AAAA,IACpC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,YAAY,OAAO;AAAA,IAC3C,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,QAAQ,KAAK;AAAA,IACrC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,eAAe,MAAM;AAAA,IAC7C,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,YAAY,SAAS;AAAA,IAClC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,OAAO,SAAS,eAAe;AAAA,IACrD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,MAAM;AAAA,IAC5B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,UAAU;AAAA,IACvB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,OAAO;AAAA,IACpB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,YAAY,KAAK;AAAA,IAC9B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ;AAAA,IACrB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,IAAI;AAAA,IAC5B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AACF;;;ACvWO,IAAM,aAA6B;AAAA;AAAA,EAExC,EAAE,MAAM,KAAK,aAAa,+BAA+B,QAAQ,UAAU,SAAS,MAAM;AAAA,EAC1F,EAAE,MAAM,MAAM,aAAa,uBAAuB,QAAQ,UAAU,SAAS,OAAO;AAAA,EACpF,EAAE,MAAM,MAAM,aAAa,qBAAqB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAClF,EAAE,MAAM,MAAM,aAAa,gBAAgB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC7E,EAAE,MAAM,MAAM,aAAa,kBAAkB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC/E,EAAE,MAAM,MAAM,aAAa,mBAAmB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAChF,EAAE,MAAM,MAAM,aAAa,iBAAiB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC9E,EAAE,MAAM,KAAK,aAAa,8BAA8B,QAAQ,UAAU,SAAS,MAAM;AAAA,EACzF,EAAE,MAAM,MAAM,aAAa,mDAAmD,QAAQ,UAAU,SAAS,UAAU;AAAA,EACnH,EAAE,MAAM,MAAM,aAAa,oBAAoB,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjF,EAAE,MAAM,MAAM,aAAa,eAAe,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC5E,EAAE,MAAM,MAAM,aAAa,iBAAiB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC9E,EAAE,MAAM,MAAM,aAAa,kBAAkB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC/E,EAAE,MAAM,MAAM,aAAa,gBAAgB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC7E,EAAE,MAAM,OAAO,aAAa,+BAA+B,QAAQ,UAAU,SAAS,QAAQ;AAAA;AAAA,EAG9F,EAAE,MAAM,QAAQ,aAAa,6BAA6B,QAAQ,UAAU,SAAS,SAAS;AAAA,EAC9F,EAAE,MAAM,MAAM,aAAa,oCAAoC,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjG,EAAE,MAAM,MAAM,aAAa,oCAAoC,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjG,EAAE,MAAM,MAAM,aAAa,oCAAoC,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjG,EAAE,MAAM,MAAM,aAAa,qCAAqC,QAAQ,UAAU,SAAS,OAAO;AAAA,EAClG,EAAE,MAAM,SAAS,aAAa,gCAAgC,QAAQ,UAAU,SAAS,UAAU;AAAA;AAAA,EAGnG,EAAE,MAAM,QAAQ,aAAa,0BAA0B,QAAQ,WAAW,SAAS,OAAO;AAAA,EAC1F,EAAE,MAAM,aAAa,aAAa,mBAAmB,QAAQ,CAAC,OAAO,UAAU,eAAe,gBAAgB,GAAG,SAAS,mBAAmB;AAAA,EAC7I,EAAE,MAAM,WAAW,aAAa,wBAAwB,QAAQ,CAAC,SAAS,UAAU,OAAO,WAAW,UAAU,QAAQ,GAAG,SAAS,iBAAiB;AAAA,EACrJ,EAAE,MAAM,SAAS,aAAa,yBAAyB,QAAQ,CAAC,SAAS,UAAU,OAAO,WAAW,UAAU,GAAG,SAAS,eAAe;AAAA,EAC1I,EAAE,MAAM,QAAQ,aAAa,iCAAiC,QAAQ,WAAW,SAAS,OAAO;AAAA;AAAA,EAGjG,EAAE,MAAM,SAAS,aAAa,oBAAoB,QAAQ,UAAU,SAAS,YAAY;AAAA,EACzF,EAAE,MAAM,UAAU,aAAa,qBAAqB,QAAQ,UAAU,SAAS,aAAa;AAAA,EAC5F,EAAE,MAAM,KAAK,aAAa,+CAA+C,QAAQ,CAAC,QAAQ,QAAQ,UAAU,KAAK,GAAG,SAAS,SAAS;AAAA,EACtI,EAAE,MAAM,KAAK,aAAa,2CAA2C,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,GAAG,SAAS,SAAS;AAAA,EAC3H,EAAE,MAAM,QAAQ,aAAa,kBAAkB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACrF,EAAE,MAAM,QAAQ,aAAa,kBAAkB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACrF,EAAE,MAAM,QAAQ,aAAa,mBAAmB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACtF,EAAE,MAAM,QAAQ,aAAa,mBAAmB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACtF,EAAE,MAAM,QAAQ,aAAa,gBAAgB,QAAQ,CAAC,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,SAAS,UAAU;AAAA,EACxG,EAAE,MAAM,YAAY,aAAa,qCAAqC,QAAQ,UAAU,SAAS,sBAAsB;AAAA,EACvH,EAAE,MAAM,UAAU,aAAa,kBAAkB,QAAQ,CAAC,YAAY,eAAe,WAAW,QAAQ,GAAG,SAAS,oBAAoB;AAAA;AAAA,EAGxI,EAAE,MAAM,UAAU,aAAa,gBAAgB,QAAQ,WAAW,SAAS,SAAS;AAAA,EACpF,EAAE,MAAM,UAAU,aAAa,eAAe,QAAQ,CAAC,QAAQ,MAAM,MAAM,MAAM,IAAI,GAAG,SAAS,YAAY;AAAA,EAC7G,EAAE,MAAM,YAAY,aAAa,qBAAqB,QAAQ,CAAC,QAAQ,SAAS,OAAO,UAAU,YAAY,cAAc,aAAa,eAAe,iBAAiB,cAAc,GAAG,SAAS,gBAAgB;AAAA;AAAA,EAGlN,EAAE,MAAM,SAAS,aAAa,wBAAwB,QAAQ,UAAU,SAAS,UAAU;AAAA,EAC3F,EAAE,MAAM,UAAU,aAAa,gBAAgB,QAAQ,CAAC,UAAU,UAAU,YAAY,MAAM,GAAG,SAAS,cAAc;AAAA,EACxH,EAAE,MAAM,SAAS,aAAa,gBAAgB,QAAQ,WAAW,SAAS,QAAQ;AAAA;AAAA,EAGlF,EAAE,MAAM,WAAW,aAAa,2BAA2B,QAAQ,WAAW,SAAS,UAAU;AAAA,EACjG,EAAE,MAAM,aAAa,aAAa,oBAAoB,QAAQ,WAAW,SAAS,YAAY;AAAA,EAC9F,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,SAAS,aAAa,4BAA4B,QAAQ,WAAW,SAAS,QAAQ;AAAA,EAC9F,EAAE,MAAM,UAAU,aAAa,wBAAwB,QAAQ,WAAW,SAAS,SAAS;AAAA;AAAA,EAG5F,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,CAAC,WAAW,WAAW,aAAa,WAAW,WAAW,UAAU,MAAM,GAAG,SAAS,kBAAkB;AAAA;AAAA,EAGlK,EAAE,MAAM,aAAa,aAAa,qBAAqB,QAAQ,CAAC,QAAQ,SAAS,YAAY,UAAU,OAAO,OAAO,UAAU,MAAM,GAAG,SAAS,kBAAkB;AAAA,EACnK,EAAE,MAAM,eAAe,aAAa,qBAAqB,QAAQ,UAAU,SAAS,2BAA2B;AAAA,EAC/G,EAAE,MAAM,SAAS,aAAa,kBAAkB,QAAQ,UAAU,SAAS,kBAAkB;AAAA,EAC7F,EAAE,MAAM,SAAS,aAAa,eAAe,QAAQ,UAAU,SAAS,eAAe;AAAA,EACvF,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,YAAY,aAAa,cAAc,QAAQ,WAAW,SAAS,WAAW;AAAA,EACtF,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,QAAQ,aAAa,gCAAgC,QAAQ,UAAU,SAAS,eAAe;AAAA,EACvG,EAAE,MAAM,QAAQ,aAAa,4BAA4B,QAAQ,UAAU,SAAS,SAAS;AAAA,EAC7F,EAAE,MAAM,OAAO,aAAa,kBAAkB,QAAQ,UAAU,SAAS,QAAQ;AAAA,EACjF,EAAE,MAAM,OAAO,aAAa,kBAAkB,QAAQ,UAAU,SAAS,UAAU;AAAA,EACnF,EAAE,MAAM,QAAQ,aAAa,mBAAmB,QAAQ,UAAU,SAAS,SAAS;AAAA;AAAA,EAGpF,EAAE,MAAM,SAAS,aAAa,eAAe,QAAQ,UAAU,SAAS,gBAAgB;AAAA,EACxF,EAAE,MAAM,YAAY,aAAa,qBAAqB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC7F,EAAE,MAAM,YAAY,aAAa,yBAAyB,QAAQ,WAAW,SAAS,WAAW;AAAA,EACjG,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,UAAU,aAAa,uBAAuB,QAAQ,UAAU,SAAS,WAAW;AAAA,EAC5F,EAAE,MAAM,QAAQ,aAAa,aAAa,QAAQ,UAAU,SAAS,eAAe;AAAA,EACpF,EAAE,MAAM,YAAY,aAAa,kBAAkB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC1F,EAAE,MAAM,OAAO,aAAa,qBAAqB,QAAQ,UAAU,SAAS,mBAAmB;AAAA,EAC/F,EAAE,MAAM,OAAO,aAAa,qBAAqB,QAAQ,UAAU,SAAS,cAAc;AAAA,EAC1F,EAAE,MAAM,QAAQ,aAAa,6BAA6B,QAAQ,UAAU,SAAS,cAAc;AAAA,EACnG,EAAE,MAAM,QAAQ,aAAa,uBAAuB,QAAQ,WAAW,SAAS,OAAO;AAAA,EACvF,EAAE,MAAM,eAAe,aAAa,qBAAqB,QAAQ,WAAW,SAAS,cAAc;AAAA,EACnG,EAAE,MAAM,iBAAiB,aAAa,wBAAwB,QAAQ,WAAW,SAAS,gBAAgB;AAAA,EAC1G,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,SAAS,aAAa,iBAAiB,QAAQ,WAAW,SAAS,QAAQ;AAAA,EACnF,EAAE,MAAM,WAAW,aAAa,iBAAiB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACvF,EAAE,MAAM,QAAQ,aAAa,kBAAkB,QAAQ,WAAW,SAAS,OAAO;AACpF;;;ACpGO,IAAM,kBAAqD;AAAA,EAChE,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AACd;AAGO,IAAM,iBAAiB;AAAA;AAAA,EAE5B;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AACF;AAGO,IAAM,iBAAiB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAG9E,IAAM,gBAAwC;AAAA,EACnD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;;;AC/GO,SAAS,aAAa,MAAwC;AACnE,SAAO,eAAe,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,YAAY,CAAC;AACjE;AAKO,SAAS,aAAa,MAAwC;AACnE,SAAO,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAC/C;AAKO,SAAS,iBAAiB,eAAuC;AACtE,QAAM,YAAY,aAAa,aAAa;AAC5C,MAAI,CAAC,aAAa,CAAC,UAAU,YAAa,QAAO,CAAC;AAElD,MAAI,UAAU,kBAAkB,QAAW;AAEzC,WAAO,eAAe,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EACvD;AAEA,SAAO,UAAU,cACd,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,EAChC,OAAO,CAAC,MAAyB,MAAM,MAAS;AACrD;AAKO,SAAS,aAAa,WAAmB,YAA6B;AAC3E,QAAM,SAAS,aAAa,UAAU;AACtC,MAAI,CAAC,UAAU,CAAC,OAAO,YAAa,QAAO;AAE3C,MAAI,OAAO,kBAAkB,OAAW,QAAO;AAC/C,SAAO,OAAO,cAAc,SAAS,UAAU,YAAY,CAAC;AAC9D;AAKO,SAAS,uBAAuB,eAAuC;AAC5E,QAAM,YAAY,aAAa,aAAa;AAC5C,MAAI,CAAC,UAAW,QAAO;AAEvB,SAAO,WAAW,OAAO,CAAC,SAAS,UAAU,WAAW,SAAS,KAAK,IAAI,CAAC;AAC7E;AAKO,SAAS,wBAAwB,UAAkC;AACxE,SAAO,eAAe,OAAO,CAAC,MAAM,EAAE,aAAa,QAAQ;AAC7D;AAKO,SAAS,sBAAsB,MAA4B;AAChE,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,UAAW,QAAO;AACtC,MAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,UAAM,UAAU,KAAK,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK,KAAK;AAClD,WAAO,KAAK,OAAO,SAAS,IAAI,GAAG,OAAO,QAAQ;AAAA,EACpD;AACA,SAAO;AACT;AAKO,SAAS,sBAAsB,MAA4B;AAChE,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,UAAW,QAAO;AACtC,MAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,WAAO,WAAW,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,EAC3C;AACA,SAAO;AACT;AAKO,SAAS,YAAY,MAAuB;AACjD,SAAO,eAAe,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,YAAY,CAAC;AACjE;AAKO,SAAS,YAAY,MAAuB;AACjD,SAAO,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAC/C;AAKO,SAAS,oBAA8B;AAC5C,SAAO,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AACzC;AAKO,SAAS,oBAA8B;AAC5C,SAAO,WAAW,IAAI,CAAC,MAAM,EAAE,IAAI;AACrC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/components.ts","../src/attributes.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * Component definitions for Wireweave DSL\n * Based on @wireweave/core AST types\n */\n\nimport type { ComponentDef } from './types.js';\n\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // Layout\n {\n name: 'page',\n description: 'Page root container. Starting point for the entire layout.',\n category: 'layout',\n attributes: ['title', 'width', 'height', 'viewport', 'device', 'centered', 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl', 'm', 'gap'],\n hasChildren: true,\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n example: 'page \"Dashboard\" centered { ... }',\n },\n {\n name: 'header',\n description: 'Page header area. Place navigation, logo, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'h', 'border', 'gap', 'justify', 'align'],\n hasChildren: true,\n validParents: ['page'],\n example: 'header h=56 border { ... }',\n },\n {\n name: 'main',\n description: 'Main content area. Place primary content here.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'gap', 'scroll'],\n hasChildren: true,\n validParents: ['page'],\n example: 'main p=6 scroll { ... }',\n },\n {\n name: 'footer',\n description: 'Page footer area. Place copyright, links, etc.',\n category: 'layout',\n attributes: ['p', 'px', 'py', 'h', 'border', 'gap'],\n hasChildren: true,\n validParents: ['page'],\n example: 'footer h=48 border { ... }',\n },\n {\n name: 'sidebar',\n description: 'Sidebar area. Place auxiliary navigation or information.',\n category: 'layout',\n attributes: ['position', 'w', 'p', 'px', 'py', 'gap', 'border', 'bg'],\n hasChildren: true,\n validParents: ['page'],\n example: 'sidebar w=240 border { ... }',\n },\n {\n name: 'section',\n description: 'Section area. Logically group content.',\n category: 'layout',\n attributes: ['title', 'expanded', 'p', 'px', 'py', 'gap'],\n hasChildren: true,\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // Grid\n {\n name: 'row',\n description: 'Horizontal flex container. Arrange children horizontally.',\n category: 'grid',\n attributes: ['gap', 'justify', 'align', 'wrap', 'direction', 'flex', 'p', 'px', 'py', 'm', 'mt', 'mb', 'h', 'w', 'border', 'bg'],\n hasChildren: true,\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n description: 'Vertical flex container or grid column.',\n category: 'grid',\n attributes: ['span', 'sm', 'md', 'lg', 'xl', 'order', 'gap', 'justify', 'align', 'p', 'px', 'py', 'm', 'w', 'h', 'flex', 'border', 'bg', 'scroll'],\n hasChildren: true,\n example: 'col span=6 md=4 { ... }',\n },\n\n // Container\n {\n name: 'card',\n description: 'Card component. Group and display content.',\n category: 'container',\n attributes: ['title', 'p', 'px', 'py', 'shadow', 'border', 'gap', 'w', 'h', 'rounded'],\n hasChildren: true,\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n description: 'Modal dialog. Display content on an overlay.',\n category: 'container',\n attributes: ['title', 'w', 'h', 'p'],\n hasChildren: true,\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n description: 'Drawer panel. Slides in from the edge of the screen.',\n category: 'container',\n attributes: ['title', 'position', 'p'],\n hasChildren: true,\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n description: 'Accordion. Collapsible content panel.',\n category: 'container',\n attributes: ['title', 'p'],\n hasChildren: true,\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // Text\n {\n name: 'text',\n description: 'Text element. Display plain text.',\n category: 'text',\n attributes: ['size', 'weight', 'align', 'muted', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n description: 'Title element. Display h1-h6 headings.',\n category: 'text',\n attributes: ['level', 'size', 'align', 'm', 'mt', 'mb'],\n hasChildren: false,\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n description: 'Link element. Display clickable hyperlink.',\n category: 'text',\n attributes: ['href', 'external'],\n hasChildren: false,\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // Input\n {\n name: 'input',\n description: 'Input field. Accept text, email, password, etc.',\n category: 'input',\n attributes: ['label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'w', 'size', 'm', 'mb'],\n hasChildren: false,\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n description: 'Multi-line input field. Accept long text.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'rows', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n description: 'Dropdown select. Choose one from multiple options.',\n category: 'input',\n attributes: ['label', 'placeholder', 'value', 'disabled', 'required', 'm', 'mb'],\n hasChildren: false,\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n description: 'Checkbox. Select true/false value.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n description: 'Radio button. Select one within a group.',\n category: 'input',\n attributes: ['label', 'name', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n description: 'Toggle switch. Switch on/off state.',\n category: 'input',\n attributes: ['label', 'checked', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n description: 'Slider. Select a value within a range.',\n category: 'input',\n attributes: ['label', 'min', 'max', 'value', 'step', 'disabled', 'm', 'mb'],\n hasChildren: false,\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n\n // Button\n {\n name: 'button',\n description: 'Button element. Display clickable button.',\n category: 'input',\n attributes: ['primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading', 'w'],\n hasChildren: false,\n example: 'button \"Submit\" primary icon=send',\n },\n\n // Display\n {\n name: 'image',\n description: 'Image element. Display an image.',\n category: 'display',\n attributes: ['src', 'alt', 'w', 'h'],\n hasChildren: false,\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n description: 'Placeholder. Image or content placeholder.',\n category: 'display',\n attributes: ['label', 'w', 'h', 'flex'],\n hasChildren: true,\n example: 'placeholder \"Banner Image\" w=full h=200 { ... }',\n },\n {\n name: 'avatar',\n description: 'Avatar element. Display user profile image.',\n category: 'display',\n attributes: ['name', 'src', 'size'],\n hasChildren: false,\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n description: 'Badge element. Display status or count as a small label.',\n category: 'display',\n attributes: ['variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n description: 'Icon element. Display a Lucide icon.',\n category: 'display',\n attributes: ['name', 'size', 'muted'],\n hasChildren: false,\n example: 'icon \"settings\" size=lg',\n },\n\n // Data\n {\n name: 'table',\n description: 'Table component. Display data in tabular format.',\n category: 'data',\n attributes: ['striped', 'bordered', 'hover'],\n hasChildren: false,\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n description: 'List component. Display items as a list.',\n category: 'data',\n attributes: ['ordered', 'none', 'gap'],\n hasChildren: false,\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // Feedback\n {\n name: 'alert',\n description: 'Alert element. Display a message to the user.',\n category: 'feedback',\n attributes: ['variant', 'dismissible', 'icon'],\n hasChildren: false,\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n description: 'Toast notification. Display a temporary message.',\n category: 'feedback',\n attributes: ['position', 'variant'],\n hasChildren: false,\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n description: 'Progress bar. Display progress status.',\n category: 'feedback',\n attributes: ['value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n description: 'Loading spinner. Display loading status.',\n category: 'feedback',\n attributes: ['label', 'size'],\n hasChildren: false,\n example: 'spinner size=lg',\n },\n\n // Overlay\n {\n name: 'tooltip',\n description: 'Tooltip element. Show additional info on hover.',\n category: 'overlay',\n attributes: ['position'],\n hasChildren: true,\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n description: 'Popover. Show additional content on click.',\n category: 'overlay',\n attributes: ['title'],\n hasChildren: true,\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n description: 'Dropdown menu. Expand menu on click.',\n category: 'overlay',\n attributes: [],\n hasChildren: false,\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // Navigation\n {\n name: 'nav',\n description: 'Navigation area. Place menu items.',\n category: 'navigation',\n attributes: ['vertical', 'gap'],\n hasChildren: false,\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n description: 'Tabs component. Switch between multiple panels.',\n category: 'navigation',\n attributes: ['active'],\n hasChildren: true,\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n description: 'Breadcrumb. Display current location as a path.',\n category: 'navigation',\n attributes: [],\n hasChildren: false,\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // Divider\n {\n name: 'divider',\n description: 'Divider element. Visually separate content.',\n category: 'display',\n attributes: ['m', 'my', 'mx', 'vertical', 'h'],\n hasChildren: false,\n example: 'divider my=4',\n },\n];\n","/**\n * Attribute definitions for Wireweave DSL\n */\n\nimport type { AttributeDef } from './types.js';\n\nexport const ATTRIBUTES: AttributeDef[] = [\n // Spacing\n { name: 'p', description: 'Padding. Set inner spacing.', values: 'number', example: 'p=4' },\n { name: 'px', description: 'Horizontal padding.', values: 'number', example: 'px=4' },\n { name: 'py', description: 'Vertical padding.', values: 'number', example: 'py=4' },\n { name: 'pt', description: 'Top padding.', values: 'number', example: 'pt=4' },\n { name: 'pr', description: 'Right padding.', values: 'number', example: 'pr=4' },\n { name: 'pb', description: 'Bottom padding.', values: 'number', example: 'pb=4' },\n { name: 'pl', description: 'Left padding.', values: 'number', example: 'pl=4' },\n { name: 'm', description: 'Margin. Set outer spacing.', values: 'number', example: 'm=4' },\n { name: 'mx', description: 'Horizontal margin. Can be \"auto\" for centering.', values: 'number', example: 'mx=auto' },\n { name: 'my', description: 'Vertical margin.', values: 'number', example: 'my=4' },\n { name: 'mt', description: 'Top margin.', values: 'number', example: 'mt=4' },\n { name: 'mr', description: 'Right margin.', values: 'number', example: 'mr=4' },\n { name: 'mb', description: 'Bottom margin.', values: 'number', example: 'mb=4' },\n { name: 'ml', description: 'Left margin.', values: 'number', example: 'ml=4' },\n { name: 'gap', description: 'Gap between child elements.', values: 'number', example: 'gap=4' },\n\n // Grid Layout\n { name: 'span', description: 'Grid column width (1-12).', values: 'number', example: 'span=6' },\n { name: 'sm', description: 'Column width at 576px and above.', values: 'number', example: 'sm=6' },\n { name: 'md', description: 'Column width at 768px and above.', values: 'number', example: 'md=4' },\n { name: 'lg', description: 'Column width at 992px and above.', values: 'number', example: 'lg=3' },\n { name: 'xl', description: 'Column width at 1200px and above.', values: 'number', example: 'xl=2' },\n { name: 'order', description: 'Order within flex container.', values: 'number', example: 'order=1' },\n\n // Flex Layout\n { name: 'flex', description: 'Enable flexbox layout.', values: 'boolean', example: 'flex' },\n { name: 'direction', description: 'Flex direction.', values: ['row', 'column', 'row-reverse', 'column-reverse'], example: 'direction=column' },\n { name: 'justify', description: 'Main axis alignment.', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], example: 'justify=center' },\n { name: 'align', description: 'Cross axis alignment.', values: ['start', 'center', 'end', 'stretch', 'baseline'], example: 'align=center' },\n { name: 'wrap', description: 'Allow child elements to wrap.', values: 'boolean', example: 'wrap' },\n\n // Size\n { name: 'width', description: 'Width in pixels.', values: 'number', example: 'width=400' },\n { name: 'height', description: 'Height in pixels.', values: 'number', example: 'height=300' },\n { name: 'w', description: 'Width (full, auto, screen, fit, or number).', values: ['full', 'auto', 'screen', 'fit'], example: 'w=full' },\n { name: 'h', description: 'Height (full, auto, screen, or number).', values: ['full', 'auto', 'screen'], example: 'h=full' },\n { name: 'minW', description: 'Minimum width.', values: 'number', example: 'minW=200' },\n { name: 'maxW', description: 'Maximum width.', values: 'number', example: 'maxW=600' },\n { name: 'minH', description: 'Minimum height.', values: 'number', example: 'minH=100' },\n { name: 'maxH', description: 'Maximum height.', values: 'number', example: 'maxH=400' },\n { name: 'size', description: 'Size preset.', values: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl'], example: 'size=lg' },\n { name: 'viewport', description: 'Viewport size (e.g., \"1440x900\").', values: 'string', example: 'viewport=\"1440x900\"' },\n { name: 'device', description: 'Device preset.', values: ['iphone14', 'iphone14pro', 'desktop', 'tablet'], example: 'device=\"iphone14\"' },\n\n // Visual\n { name: 'border', description: 'Show border.', values: 'boolean', example: 'border' },\n { name: 'shadow', description: 'Box shadow.', values: ['none', 'sm', 'md', 'lg', 'xl'], example: 'shadow=md' },\n { name: 'position', description: 'Position setting.', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], example: 'position=left' },\n\n // Text\n { name: 'level', description: 'Heading level (1-6).', values: 'number', example: 'level=2' },\n { name: 'weight', description: 'Font weight.', values: ['normal', 'medium', 'semibold', 'bold'], example: 'weight=bold' },\n { name: 'bold', description: 'Bold text (shorthand for weight=bold).', values: 'boolean', example: 'bold' },\n { name: 'muted', description: 'Muted style.', values: 'boolean', example: 'muted' },\n\n // Button variants\n { name: 'primary', description: 'Primary emphasis style.', values: 'boolean', example: 'primary' },\n { name: 'secondary', description: 'Secondary style.', values: 'boolean', example: 'secondary' },\n { name: 'outline', description: 'Outline style.', values: 'boolean', example: 'outline' },\n { name: 'ghost', description: 'Ghost/transparent style.', values: 'boolean', example: 'ghost' },\n { name: 'danger', description: 'Danger/delete style.', values: 'boolean', example: 'danger' },\n\n // Status variants\n { name: 'variant', description: 'Variant style.', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], example: 'variant=success' },\n\n // Form\n { name: 'inputType', description: 'Input field type.', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], example: 'inputType=email' },\n { name: 'placeholder', description: 'Placeholder text.', values: 'string', example: 'placeholder=\"Enter text\"' },\n { name: 'value', description: 'Default value.', values: 'string', example: 'value=\"default\"' },\n { name: 'label', description: 'Label text.', values: 'string', example: 'label=\"Name\"' },\n { name: 'required', description: 'Required field.', values: 'boolean', example: 'required' },\n { name: 'disabled', description: 'Disabled state.', values: 'boolean', example: 'disabled' },\n { name: 'readonly', description: 'Read-only.', values: 'boolean', example: 'readonly' },\n { name: 'checked', description: 'Checked state.', values: 'boolean', example: 'checked' },\n { name: 'loading', description: 'Loading state.', values: 'boolean', example: 'loading' },\n { name: 'name', description: 'Form element name attribute.', values: 'string', example: 'name=\"field\"' },\n { name: 'rows', description: 'Number of textarea rows.', values: 'number', example: 'rows=4' },\n { name: 'min', description: 'Minimum value.', values: 'number', example: 'min=0' },\n { name: 'max', description: 'Maximum value.', values: 'number', example: 'max=100' },\n { name: 'step', description: 'Step increment.', values: 'number', example: 'step=1' },\n\n // Scrolling\n { name: 'scroll', description: 'Enable vertical scrolling for overflow content.', values: 'boolean', example: 'scroll' },\n\n // Background\n { name: 'bg', description: 'Background color variant.', values: ['muted', 'primary', 'secondary'], example: 'bg=muted' },\n\n // Border radius\n { name: 'rounded', description: 'Apply border radius.', values: 'boolean', example: 'rounded' },\n\n // Position\n { name: 'x', description: 'Horizontal position (px or with unit).', values: 'number', example: 'x=100' },\n { name: 'y', description: 'Vertical position (px or with unit).', values: 'number', example: 'y=50' },\n\n // Other\n { name: 'title', description: 'Title text.', values: 'string', example: 'title=\"Title\"' },\n { name: 'centered', description: 'Center alignment.', values: 'boolean', example: 'centered' },\n { name: 'vertical', description: 'Vertical orientation.', values: 'boolean', example: 'vertical' },\n { name: 'expanded', description: 'Expanded state.', values: 'boolean', example: 'expanded' },\n { name: 'active', description: 'Active state/index.', values: 'number', example: 'active=0' },\n { name: 'href', description: 'Link URL.', values: 'string', example: 'href=\"/path\"' },\n { name: 'external', description: 'External link.', values: 'boolean', example: 'external' },\n { name: 'src', description: 'Image source URL.', values: 'string', example: 'src=\"/image.png\"' },\n { name: 'alt', description: 'Alternative text.', values: 'string', example: 'alt=\"Image\"' },\n { name: 'icon', description: 'Icon name (Lucide icons).', values: 'string', example: 'icon=\"home\"' },\n { name: 'pill', description: 'Rounded pill badge.', values: 'boolean', example: 'pill' },\n { name: 'dismissible', description: 'Can be dismissed.', values: 'boolean', example: 'dismissible' },\n { name: 'indeterminate', description: 'Indeterminate state.', values: 'boolean', example: 'indeterminate' },\n { name: 'striped', description: 'Striped style.', values: 'boolean', example: 'striped' },\n { name: 'bordered', description: 'Bordered style.', values: 'boolean', example: 'bordered' },\n { name: 'hover', description: 'Hover effect.', values: 'boolean', example: 'hover' },\n { name: 'ordered', description: 'Ordered list.', values: 'boolean', example: 'ordered' },\n { name: 'none', description: 'No list style.', values: 'boolean', example: 'none' },\n];\n","/**\n * Keywords and labels for Wireweave DSL\n */\n\nimport type { ComponentCategory } from '@wireweave/core';\n\n// Category labels for display\nexport const CATEGORY_LABELS: Record<ComponentCategory, string> = {\n layout: 'Layout',\n container: 'Container',\n grid: 'Grid',\n text: 'Text',\n input: 'Input',\n display: 'Display',\n data: 'Data',\n feedback: 'Feedback',\n overlay: 'Overlay',\n navigation: 'Navigation',\n};\n\n// Value keywords used in the language\nexport const VALUE_KEYWORDS = [\n // Booleans\n 'true',\n 'false',\n\n // Button variants\n 'primary',\n 'secondary',\n 'outline',\n 'ghost',\n\n // Status variants\n 'success',\n 'danger',\n 'warning',\n 'info',\n 'default',\n\n // Sizes\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n 'base',\n '2xl',\n '3xl',\n\n // Flex alignment\n 'start',\n 'center',\n 'end',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n\n // Positions\n 'left',\n 'right',\n 'top',\n 'bottom',\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n\n // Sizing\n 'full',\n 'auto',\n 'screen',\n 'fit',\n\n // Font weights\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n\n // Input types\n 'text',\n 'email',\n 'password',\n 'number',\n 'tel',\n 'url',\n 'search',\n 'date',\n\n // Flex direction\n 'row',\n 'column',\n 'row-reverse',\n 'column-reverse',\n\n // List\n 'none',\n 'nowrap',\n];\n\n// Common number suggestions for attributes\nexport const COMMON_NUMBERS = [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 48, 64];\n\n// Spacing scale (4px base)\nexport const SPACING_SCALE: Record<number, string> = {\n 0: '0px',\n 1: '4px',\n 2: '8px',\n 3: '12px',\n 4: '16px',\n 5: '20px',\n 6: '24px',\n 8: '32px',\n 10: '40px',\n 12: '48px',\n 16: '64px',\n 20: '80px',\n 24: '96px',\n};\n","/**\n * Utility functions for Wireweave language data\n */\n\nimport type { ComponentDef, AttributeDef } from './types.js';\nimport { ALL_COMPONENTS } from './components.js';\nimport { ATTRIBUTES } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return ALL_COMPONENTS.find((c) => c.name === name.toLowerCase());\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTES.find((a) => a.name === name);\n}\n\n/**\n * Get valid child components for a parent component\n */\nexport function getValidChildren(componentName: string): ComponentDef[] {\n const component = getComponent(componentName);\n if (!component || !component.hasChildren) return [];\n\n if (component.validChildren === undefined) {\n // All components except page are valid children\n return ALL_COMPONENTS.filter((c) => c.name !== 'page');\n }\n\n return component.validChildren\n .map((name) => getComponent(name))\n .filter((c): c is ComponentDef => c !== undefined);\n}\n\n/**\n * Check if a component is a valid child of another\n */\nexport function isValidChild(childName: string, parentName: string): boolean {\n const parent = getComponent(parentName);\n if (!parent || !parent.hasChildren) return false;\n\n if (parent.validChildren === undefined) return true;\n return parent.validChildren.includes(childName.toLowerCase());\n}\n\n/**\n * Get attribute definitions for a specific component\n */\nexport function getComponentAttributes(componentName: string): AttributeDef[] {\n const component = getComponent(componentName);\n if (!component) return ATTRIBUTES;\n\n return ATTRIBUTES.filter((attr) => component.attributes.includes(attr.name));\n}\n\n/**\n * Get all components in a category\n */\nexport function getComponentsByCategory(category: string): ComponentDef[] {\n return ALL_COMPONENTS.filter((c) => c.category === category);\n}\n\n/**\n * Get attribute type label for display\n */\nexport function getAttributeTypeLabel(attr: AttributeDef): string {\n if (attr.values === 'number') return 'number';\n if (attr.values === 'string') return 'string';\n if (attr.values === 'boolean') return 'boolean';\n if (Array.isArray(attr.values)) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return '';\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.values === 'number') return 'Type: number';\n if (attr.values === 'string') return 'Type: string';\n if (attr.values === 'boolean') return 'Type: boolean (can be omitted)';\n if (Array.isArray(attr.values)) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return '';\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return ALL_COMPONENTS.some((c) => c.name === word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTES.some((a) => a.name === word);\n}\n\n/**\n * Get all component names\n */\nexport function getComponentNames(): string[] {\n return ALL_COMPONENTS.map((c) => c.name);\n}\n\n/**\n * Get all attribute names\n */\nexport function getAttributeNames(): string[] {\n return ATTRIBUTES.map((a) => a.name);\n}\n"],"mappings":";AAOO,IAAM,iBAAiC;AAAA;AAAA,EAE5C;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,SAAS,UAAU,YAAY,UAAU,YAAY,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK;AAAA,IAC9H,aAAa;AAAA,IACb,eAAe,CAAC,UAAU,QAAQ,UAAU,WAAW,WAAW,OAAO,OAAO,OAAO,MAAM;AAAA,IAC7F,cAAc,CAAC;AAAA,IACf,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,MAAM,KAAK,UAAU,OAAO,WAAW,OAAO;AAAA,IACtE,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,MAAM,OAAO,QAAQ;AAAA,IAC7C,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,MAAM,KAAK,UAAU,KAAK;AAAA,IAClD,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,YAAY,KAAK,KAAK,MAAM,MAAM,OAAO,UAAU,IAAI;AAAA,IACpE,aAAa;AAAA,IACb,cAAc,CAAC,MAAM;AAAA,IACrB,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,YAAY,KAAK,MAAM,MAAM,KAAK;AAAA,IACxD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,OAAO,WAAW,SAAS,QAAQ,aAAa,QAAQ,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,UAAU,IAAI;AAAA,IAC/H,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,MAAM,MAAM,MAAM,MAAM,SAAS,OAAO,WAAW,SAAS,KAAK,MAAM,MAAM,KAAK,KAAK,KAAK,QAAQ,UAAU,MAAM,QAAQ;AAAA,IACjJ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,KAAK,MAAM,MAAM,UAAU,UAAU,OAAO,KAAK,KAAK,SAAS;AAAA,IACrF,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,KAAK,KAAK,GAAG;AAAA,IACnC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,YAAY,GAAG;AAAA,IACrC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,GAAG;AAAA,IACzB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,UAAU,SAAS,SAAS,KAAK,MAAM,IAAI;AAAA,IAChE,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,QAAQ,SAAS,KAAK,MAAM,IAAI;AAAA,IACtD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,UAAU;AAAA,IAC/B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,aAAa,eAAe,SAAS,YAAY,YAAY,YAAY,QAAQ,KAAK,QAAQ,KAAK,IAAI;AAAA,IAC7H,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,eAAe,SAAS,QAAQ,YAAY,YAAY,KAAK,IAAI;AAAA,IACvF,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,eAAe,SAAS,YAAY,YAAY,KAAK,IAAI;AAAA,IAC/E,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,WAAW,YAAY,KAAK,IAAI;AAAA,IACtD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,QAAQ,WAAW,YAAY,KAAK,IAAI;AAAA,IAC9D,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,WAAW,YAAY,KAAK,IAAI;AAAA,IACtD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,OAAO,OAAO,SAAS,QAAQ,YAAY,KAAK,IAAI;AAAA,IAC1E,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,aAAa,WAAW,SAAS,UAAU,QAAQ,QAAQ,YAAY,WAAW,GAAG;AAAA,IAC7G,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,OAAO,OAAO,KAAK,GAAG;AAAA,IACnC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,KAAK,KAAK,MAAM;AAAA,IACtC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,OAAO,MAAM;AAAA,IAClC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,QAAQ,QAAQ,MAAM;AAAA,IAC9C,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ,QAAQ,OAAO;AAAA,IACpC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,YAAY,OAAO;AAAA,IAC3C,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,QAAQ,KAAK;AAAA,IACrC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,WAAW,eAAe,MAAM;AAAA,IAC7C,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,YAAY,SAAS;AAAA,IAClC,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,OAAO,SAAS,eAAe;AAAA,IACrD,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,SAAS,MAAM;AAAA,IAC5B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,UAAU;AAAA,IACvB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,OAAO;AAAA,IACpB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,YAAY,KAAK;AAAA,IAC9B,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,QAAQ;AAAA,IACrB,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC;AAAA,IACb,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,CAAC,KAAK,MAAM,MAAM,YAAY,GAAG;AAAA,IAC7C,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AACF;;;ACvWO,IAAM,aAA6B;AAAA;AAAA,EAExC,EAAE,MAAM,KAAK,aAAa,+BAA+B,QAAQ,UAAU,SAAS,MAAM;AAAA,EAC1F,EAAE,MAAM,MAAM,aAAa,uBAAuB,QAAQ,UAAU,SAAS,OAAO;AAAA,EACpF,EAAE,MAAM,MAAM,aAAa,qBAAqB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAClF,EAAE,MAAM,MAAM,aAAa,gBAAgB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC7E,EAAE,MAAM,MAAM,aAAa,kBAAkB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC/E,EAAE,MAAM,MAAM,aAAa,mBAAmB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAChF,EAAE,MAAM,MAAM,aAAa,iBAAiB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC9E,EAAE,MAAM,KAAK,aAAa,8BAA8B,QAAQ,UAAU,SAAS,MAAM;AAAA,EACzF,EAAE,MAAM,MAAM,aAAa,mDAAmD,QAAQ,UAAU,SAAS,UAAU;AAAA,EACnH,EAAE,MAAM,MAAM,aAAa,oBAAoB,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjF,EAAE,MAAM,MAAM,aAAa,eAAe,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC5E,EAAE,MAAM,MAAM,aAAa,iBAAiB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC9E,EAAE,MAAM,MAAM,aAAa,kBAAkB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC/E,EAAE,MAAM,MAAM,aAAa,gBAAgB,QAAQ,UAAU,SAAS,OAAO;AAAA,EAC7E,EAAE,MAAM,OAAO,aAAa,+BAA+B,QAAQ,UAAU,SAAS,QAAQ;AAAA;AAAA,EAG9F,EAAE,MAAM,QAAQ,aAAa,6BAA6B,QAAQ,UAAU,SAAS,SAAS;AAAA,EAC9F,EAAE,MAAM,MAAM,aAAa,oCAAoC,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjG,EAAE,MAAM,MAAM,aAAa,oCAAoC,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjG,EAAE,MAAM,MAAM,aAAa,oCAAoC,QAAQ,UAAU,SAAS,OAAO;AAAA,EACjG,EAAE,MAAM,MAAM,aAAa,qCAAqC,QAAQ,UAAU,SAAS,OAAO;AAAA,EAClG,EAAE,MAAM,SAAS,aAAa,gCAAgC,QAAQ,UAAU,SAAS,UAAU;AAAA;AAAA,EAGnG,EAAE,MAAM,QAAQ,aAAa,0BAA0B,QAAQ,WAAW,SAAS,OAAO;AAAA,EAC1F,EAAE,MAAM,aAAa,aAAa,mBAAmB,QAAQ,CAAC,OAAO,UAAU,eAAe,gBAAgB,GAAG,SAAS,mBAAmB;AAAA,EAC7I,EAAE,MAAM,WAAW,aAAa,wBAAwB,QAAQ,CAAC,SAAS,UAAU,OAAO,WAAW,UAAU,QAAQ,GAAG,SAAS,iBAAiB;AAAA,EACrJ,EAAE,MAAM,SAAS,aAAa,yBAAyB,QAAQ,CAAC,SAAS,UAAU,OAAO,WAAW,UAAU,GAAG,SAAS,eAAe;AAAA,EAC1I,EAAE,MAAM,QAAQ,aAAa,iCAAiC,QAAQ,WAAW,SAAS,OAAO;AAAA;AAAA,EAGjG,EAAE,MAAM,SAAS,aAAa,oBAAoB,QAAQ,UAAU,SAAS,YAAY;AAAA,EACzF,EAAE,MAAM,UAAU,aAAa,qBAAqB,QAAQ,UAAU,SAAS,aAAa;AAAA,EAC5F,EAAE,MAAM,KAAK,aAAa,+CAA+C,QAAQ,CAAC,QAAQ,QAAQ,UAAU,KAAK,GAAG,SAAS,SAAS;AAAA,EACtI,EAAE,MAAM,KAAK,aAAa,2CAA2C,QAAQ,CAAC,QAAQ,QAAQ,QAAQ,GAAG,SAAS,SAAS;AAAA,EAC3H,EAAE,MAAM,QAAQ,aAAa,kBAAkB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACrF,EAAE,MAAM,QAAQ,aAAa,kBAAkB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACrF,EAAE,MAAM,QAAQ,aAAa,mBAAmB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACtF,EAAE,MAAM,QAAQ,aAAa,mBAAmB,QAAQ,UAAU,SAAS,WAAW;AAAA,EACtF,EAAE,MAAM,QAAQ,aAAa,gBAAgB,QAAQ,CAAC,MAAM,MAAM,QAAQ,MAAM,MAAM,MAAM,OAAO,KAAK,GAAG,SAAS,UAAU;AAAA,EAC9H,EAAE,MAAM,YAAY,aAAa,qCAAqC,QAAQ,UAAU,SAAS,sBAAsB;AAAA,EACvH,EAAE,MAAM,UAAU,aAAa,kBAAkB,QAAQ,CAAC,YAAY,eAAe,WAAW,QAAQ,GAAG,SAAS,oBAAoB;AAAA;AAAA,EAGxI,EAAE,MAAM,UAAU,aAAa,gBAAgB,QAAQ,WAAW,SAAS,SAAS;AAAA,EACpF,EAAE,MAAM,UAAU,aAAa,eAAe,QAAQ,CAAC,QAAQ,MAAM,MAAM,MAAM,IAAI,GAAG,SAAS,YAAY;AAAA,EAC7G,EAAE,MAAM,YAAY,aAAa,qBAAqB,QAAQ,CAAC,QAAQ,SAAS,OAAO,UAAU,YAAY,cAAc,aAAa,eAAe,iBAAiB,cAAc,GAAG,SAAS,gBAAgB;AAAA;AAAA,EAGlN,EAAE,MAAM,SAAS,aAAa,wBAAwB,QAAQ,UAAU,SAAS,UAAU;AAAA,EAC3F,EAAE,MAAM,UAAU,aAAa,gBAAgB,QAAQ,CAAC,UAAU,UAAU,YAAY,MAAM,GAAG,SAAS,cAAc;AAAA,EACxH,EAAE,MAAM,QAAQ,aAAa,0CAA0C,QAAQ,WAAW,SAAS,OAAO;AAAA,EAC1G,EAAE,MAAM,SAAS,aAAa,gBAAgB,QAAQ,WAAW,SAAS,QAAQ;AAAA;AAAA,EAGlF,EAAE,MAAM,WAAW,aAAa,2BAA2B,QAAQ,WAAW,SAAS,UAAU;AAAA,EACjG,EAAE,MAAM,aAAa,aAAa,oBAAoB,QAAQ,WAAW,SAAS,YAAY;AAAA,EAC9F,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,SAAS,aAAa,4BAA4B,QAAQ,WAAW,SAAS,QAAQ;AAAA,EAC9F,EAAE,MAAM,UAAU,aAAa,wBAAwB,QAAQ,WAAW,SAAS,SAAS;AAAA;AAAA,EAG5F,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,CAAC,WAAW,WAAW,aAAa,WAAW,WAAW,UAAU,MAAM,GAAG,SAAS,kBAAkB;AAAA;AAAA,EAGlK,EAAE,MAAM,aAAa,aAAa,qBAAqB,QAAQ,CAAC,QAAQ,SAAS,YAAY,UAAU,OAAO,OAAO,UAAU,MAAM,GAAG,SAAS,kBAAkB;AAAA,EACnK,EAAE,MAAM,eAAe,aAAa,qBAAqB,QAAQ,UAAU,SAAS,2BAA2B;AAAA,EAC/G,EAAE,MAAM,SAAS,aAAa,kBAAkB,QAAQ,UAAU,SAAS,kBAAkB;AAAA,EAC7F,EAAE,MAAM,SAAS,aAAa,eAAe,QAAQ,UAAU,SAAS,eAAe;AAAA,EACvF,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,YAAY,aAAa,cAAc,QAAQ,WAAW,SAAS,WAAW;AAAA,EACtF,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,QAAQ,aAAa,gCAAgC,QAAQ,UAAU,SAAS,eAAe;AAAA,EACvG,EAAE,MAAM,QAAQ,aAAa,4BAA4B,QAAQ,UAAU,SAAS,SAAS;AAAA,EAC7F,EAAE,MAAM,OAAO,aAAa,kBAAkB,QAAQ,UAAU,SAAS,QAAQ;AAAA,EACjF,EAAE,MAAM,OAAO,aAAa,kBAAkB,QAAQ,UAAU,SAAS,UAAU;AAAA,EACnF,EAAE,MAAM,QAAQ,aAAa,mBAAmB,QAAQ,UAAU,SAAS,SAAS;AAAA;AAAA,EAGpF,EAAE,MAAM,UAAU,aAAa,mDAAmD,QAAQ,WAAW,SAAS,SAAS;AAAA;AAAA,EAGvH,EAAE,MAAM,MAAM,aAAa,6BAA6B,QAAQ,CAAC,SAAS,WAAW,WAAW,GAAG,SAAS,WAAW;AAAA;AAAA,EAGvH,EAAE,MAAM,WAAW,aAAa,wBAAwB,QAAQ,WAAW,SAAS,UAAU;AAAA;AAAA,EAG9F,EAAE,MAAM,KAAK,aAAa,0CAA0C,QAAQ,UAAU,SAAS,QAAQ;AAAA,EACvG,EAAE,MAAM,KAAK,aAAa,wCAAwC,QAAQ,UAAU,SAAS,OAAO;AAAA;AAAA,EAGpG,EAAE,MAAM,SAAS,aAAa,eAAe,QAAQ,UAAU,SAAS,gBAAgB;AAAA,EACxF,EAAE,MAAM,YAAY,aAAa,qBAAqB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC7F,EAAE,MAAM,YAAY,aAAa,yBAAyB,QAAQ,WAAW,SAAS,WAAW;AAAA,EACjG,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,UAAU,aAAa,uBAAuB,QAAQ,UAAU,SAAS,WAAW;AAAA,EAC5F,EAAE,MAAM,QAAQ,aAAa,aAAa,QAAQ,UAAU,SAAS,eAAe;AAAA,EACpF,EAAE,MAAM,YAAY,aAAa,kBAAkB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC1F,EAAE,MAAM,OAAO,aAAa,qBAAqB,QAAQ,UAAU,SAAS,mBAAmB;AAAA,EAC/F,EAAE,MAAM,OAAO,aAAa,qBAAqB,QAAQ,UAAU,SAAS,cAAc;AAAA,EAC1F,EAAE,MAAM,QAAQ,aAAa,6BAA6B,QAAQ,UAAU,SAAS,cAAc;AAAA,EACnG,EAAE,MAAM,QAAQ,aAAa,uBAAuB,QAAQ,WAAW,SAAS,OAAO;AAAA,EACvF,EAAE,MAAM,eAAe,aAAa,qBAAqB,QAAQ,WAAW,SAAS,cAAc;AAAA,EACnG,EAAE,MAAM,iBAAiB,aAAa,wBAAwB,QAAQ,WAAW,SAAS,gBAAgB;AAAA,EAC1G,EAAE,MAAM,WAAW,aAAa,kBAAkB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACxF,EAAE,MAAM,YAAY,aAAa,mBAAmB,QAAQ,WAAW,SAAS,WAAW;AAAA,EAC3F,EAAE,MAAM,SAAS,aAAa,iBAAiB,QAAQ,WAAW,SAAS,QAAQ;AAAA,EACnF,EAAE,MAAM,WAAW,aAAa,iBAAiB,QAAQ,WAAW,SAAS,UAAU;AAAA,EACvF,EAAE,MAAM,QAAQ,aAAa,kBAAkB,QAAQ,WAAW,SAAS,OAAO;AACpF;;;AClHO,IAAM,kBAAqD;AAAA,EAChE,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AACd;AAGO,IAAM,iBAAiB;AAAA;AAAA,EAE5B;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EACA;AACF;AAGO,IAAM,iBAAiB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAG9E,IAAM,gBAAwC;AAAA,EACnD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;;;AC/GO,SAAS,aAAa,MAAwC;AACnE,SAAO,eAAe,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,YAAY,CAAC;AACjE;AAKO,SAAS,aAAa,MAAwC;AACnE,SAAO,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAC/C;AAKO,SAAS,iBAAiB,eAAuC;AACtE,QAAM,YAAY,aAAa,aAAa;AAC5C,MAAI,CAAC,aAAa,CAAC,UAAU,YAAa,QAAO,CAAC;AAElD,MAAI,UAAU,kBAAkB,QAAW;AAEzC,WAAO,eAAe,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EACvD;AAEA,SAAO,UAAU,cACd,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,EAChC,OAAO,CAAC,MAAyB,MAAM,MAAS;AACrD;AAKO,SAAS,aAAa,WAAmB,YAA6B;AAC3E,QAAM,SAAS,aAAa,UAAU;AACtC,MAAI,CAAC,UAAU,CAAC,OAAO,YAAa,QAAO;AAE3C,MAAI,OAAO,kBAAkB,OAAW,QAAO;AAC/C,SAAO,OAAO,cAAc,SAAS,UAAU,YAAY,CAAC;AAC9D;AAKO,SAAS,uBAAuB,eAAuC;AAC5E,QAAM,YAAY,aAAa,aAAa;AAC5C,MAAI,CAAC,UAAW,QAAO;AAEvB,SAAO,WAAW,OAAO,CAAC,SAAS,UAAU,WAAW,SAAS,KAAK,IAAI,CAAC;AAC7E;AAKO,SAAS,wBAAwB,UAAkC;AACxE,SAAO,eAAe,OAAO,CAAC,MAAM,EAAE,aAAa,QAAQ;AAC7D;AAKO,SAAS,sBAAsB,MAA4B;AAChE,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,UAAW,QAAO;AACtC,MAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,UAAM,UAAU,KAAK,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK,KAAK;AAClD,WAAO,KAAK,OAAO,SAAS,IAAI,GAAG,OAAO,QAAQ;AAAA,EACpD;AACA,SAAO;AACT;AAKO,SAAS,sBAAsB,MAA4B;AAChE,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,SAAU,QAAO;AACrC,MAAI,KAAK,WAAW,UAAW,QAAO;AACtC,MAAI,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC9B,WAAO,WAAW,KAAK,OAAO,KAAK,KAAK,CAAC;AAAA,EAC3C;AACA,SAAO;AACT;AAKO,SAAS,YAAY,MAAuB;AACjD,SAAO,eAAe,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,YAAY,CAAC;AACjE;AAKO,SAAS,YAAY,MAAuB;AACjD,SAAO,WAAW,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI;AAC/C;AAKO,SAAS,oBAA8B;AAC5C,SAAO,eAAe,IAAI,CAAC,MAAM,EAAE,IAAI;AACzC;AAKO,SAAS,oBAA8B;AAC5C,SAAO,WAAW,IAAI,CAAC,MAAM,EAAE,IAAI;AACrC;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wireweave/language-data",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2-beta.0",
|
|
4
4
|
"description": "Shared language definitions for Wireweave DSL editors",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,6 +23,9 @@
|
|
|
23
23
|
"clean": "rm -rf dist",
|
|
24
24
|
"release": "release-it"
|
|
25
25
|
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@wireweave/core": "1.1.0-beta.0"
|
|
28
|
+
},
|
|
26
29
|
"devDependencies": {
|
|
27
30
|
"@release-it/conventional-changelog": "^10.0.4",
|
|
28
31
|
"release-it": "^19.2.3",
|