@wireweave/language-data 1.2.1-beta.0 → 1.3.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/dist/codemirror/index.cjs +8 -1
- package/dist/codemirror/index.cjs.map +1 -1
- package/dist/codemirror/index.js +8 -1
- package/dist/codemirror/index.js.map +1 -1
- package/dist/index.cjs +8 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/monaco/index.cjs +8 -1
- package/dist/monaco/index.cjs.map +1 -1
- package/dist/monaco/index.js +8 -1
- package/dist/monaco/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/attributes.ts","../src/components.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * @wireweave/language-data\n *\n * Language definitions and metadata for Wireweave DSL editor integrations.\n * This package is independent of @wireweave/core.\n *\n * Provides:\n * - Component and attribute definitions\n * - Editor utilities (autocomplete, validation hints)\n * - Monaco language configuration (coming soon)\n */\n\n// Types\nexport type {\n ComponentDef,\n AttributeDef,\n ComponentCategory,\n AttributeValueType,\n} from './types.js';\n\n// Data\nexport {\n ALL_COMPONENTS,\n COMPONENT_MAP,\n NODE_TYPE_MAP,\n VALID_COMPONENT_NAMES,\n} from './components.js';\nexport {\n ATTRIBUTES,\n ATTRIBUTE_MAP,\n COMMON_ATTRIBUTES,\n VALID_ATTRIBUTE_NAMES,\n} 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 getComponentByNodeType,\n getAttribute,\n getValidChildren,\n isValidChild,\n getComponentAttributes,\n getComponentsByCategory,\n getAttributeTypeLabel,\n formatAttributeValues,\n isComponent,\n isAttribute,\n getComponentNames,\n getAttributeNames,\n getCategories,\n} from './utils.js';\n","/**\n * Attribute definitions for Wireweave DSL\n *\n * Complete attribute definitions for editor integrations.\n * This is the authoritative source for editor-related attribute data.\n */\n\nimport type { AttributeDef } from './types.js';\n\n/**\n * Common attributes available to most components\n */\nexport const COMMON_ATTRIBUTES: readonly string[] = [\n // Spacing\n 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl',\n 'm', 'mx', 'my', 'mt', 'mr', 'mb', 'ml',\n 'gap',\n // Size\n 'w', 'h', 'minW', 'maxW', 'minH', 'maxH',\n // Flex\n 'flex', 'direction', 'justify', 'align', 'wrap',\n // Grid\n 'span',\n // Position\n 'x', 'y',\n];\n\n/**\n * All attributes in Wireweave DSL\n */\nexport const ATTRIBUTES: AttributeDef[] = [\n // ============================================\n // Spacing Attributes\n // ============================================\n { name: 'p', type: 'number', description: 'Padding (all sides)', example: 'p=4' },\n { name: 'px', type: 'number', description: 'Horizontal padding', example: 'px=4' },\n { name: 'py', type: 'number', description: 'Vertical padding', example: 'py=4' },\n { name: 'pt', type: 'number', description: 'Top padding', example: 'pt=4' },\n { name: 'pr', type: 'number', description: 'Right padding', example: 'pr=4' },\n { name: 'pb', type: 'number', description: 'Bottom padding', example: 'pb=4' },\n { name: 'pl', type: 'number', description: 'Left padding', example: 'pl=4' },\n { name: 'm', type: 'number', description: 'Margin (all sides)', example: 'm=4' },\n { name: 'mx', type: 'string', description: 'Horizontal margin (number or \"auto\")', example: 'mx=auto' },\n { name: 'my', type: 'number', description: 'Vertical margin', example: 'my=4' },\n { name: 'mt', type: 'number', description: 'Top margin', example: 'mt=4' },\n { name: 'mr', type: 'number', description: 'Right margin', example: 'mr=4' },\n { name: 'mb', type: 'number', description: 'Bottom margin', example: 'mb=4' },\n { name: 'ml', type: 'number', description: 'Left margin', example: 'ml=4' },\n { name: 'gap', type: 'number', description: 'Gap between children', example: 'gap=4' },\n\n // ============================================\n // Size Attributes\n // ============================================\n { name: 'w', type: 'string', description: 'Width (number, \"full\", \"auto\", \"screen\", \"fit\")', example: 'w=full' },\n { name: 'h', type: 'string', description: 'Height (number, \"full\", \"auto\", \"screen\")', example: 'h=full' },\n { name: 'width', type: 'number', description: 'Width in pixels (page only)', example: 'width=400' },\n { name: 'height', type: 'number', description: 'Height in pixels (page only)', example: 'height=300' },\n { name: 'minW', type: 'number', description: 'Minimum width', example: 'minW=200' },\n { name: 'maxW', type: 'number', description: 'Maximum width', example: 'maxW=600' },\n { name: 'minH', type: 'number', description: 'Minimum height', example: 'minH=100' },\n { name: 'maxH', type: 'number', description: 'Maximum height', example: 'maxH=400' },\n\n // ============================================\n // Flex/Grid Layout Attributes\n // ============================================\n { name: 'flex', type: 'boolean', description: 'Enable flexbox', example: 'flex' },\n { name: 'direction', type: 'enum', values: ['row', 'column', 'row-reverse', 'column-reverse'], description: 'Flex direction', example: 'direction=column' },\n { name: 'justify', type: 'enum', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], description: 'Main axis alignment', example: 'justify=center' },\n { name: 'align', type: 'enum', values: ['start', 'center', 'end', 'stretch', 'baseline'], description: 'Cross axis alignment', example: 'align=center' },\n { name: 'wrap', type: 'boolean', description: 'Enable flex wrap', example: 'wrap' },\n { name: 'span', type: 'number', description: 'Grid column span (1-12)', example: 'span=6' },\n { name: 'sm', type: 'number', description: 'Responsive span at 576px+', example: 'sm=6' },\n { name: 'md', type: 'number', description: 'Responsive span at 768px+', example: 'md=4' },\n { name: 'lg', type: 'number', description: 'Responsive span at 992px+', example: 'lg=3' },\n { name: 'xl', type: 'number', description: 'Responsive span at 1200px+', example: 'xl=2' },\n { name: 'order', type: 'number', description: 'Flex order', example: 'order=1' },\n\n // ============================================\n // Position Attributes\n // ============================================\n { name: 'x', type: 'number', description: 'Horizontal position', example: 'x=100' },\n { name: 'y', type: 'number', description: 'Vertical position', example: 'y=50' },\n { name: 'position', type: 'enum', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], description: 'Position preset', example: 'position=left' },\n\n // ============================================\n // Visual Attributes\n // ============================================\n { name: 'border', type: 'boolean', description: 'Show border', example: 'border' },\n { name: 'rounded', type: 'boolean', description: 'Apply border radius', example: 'rounded' },\n { name: 'shadow', type: 'enum', values: ['none', 'sm', 'md', 'lg', 'xl'], description: 'Box shadow', example: 'shadow=md' },\n { name: 'bg', type: 'enum', values: ['muted', 'primary', 'secondary'], description: 'Background variant', example: 'bg=muted' },\n\n // ============================================\n // Text Attributes\n // ============================================\n { name: 'size', type: 'enum', values: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl'], description: 'Size preset', example: 'size=lg' },\n { name: 'weight', type: 'enum', values: ['normal', 'medium', 'semibold', 'bold'], description: 'Font weight', example: 'weight=bold' },\n { name: 'level', type: 'number', description: 'Heading level (1-6)', example: 'level=2' },\n { name: 'muted', type: 'boolean', description: 'Muted/dimmed style', example: 'muted' },\n { name: 'bold', type: 'boolean', description: 'Bold text', example: 'bold' },\n\n // ============================================\n // Button Variant Attributes\n // ============================================\n { name: 'primary', type: 'boolean', description: 'Primary style', example: 'primary' },\n { name: 'secondary', type: 'boolean', description: 'Secondary style', example: 'secondary' },\n { name: 'outline', type: 'boolean', description: 'Outline style', example: 'outline' },\n { name: 'ghost', type: 'boolean', description: 'Ghost/transparent style', example: 'ghost' },\n { name: 'danger', type: 'boolean', description: 'Danger/destructive style', example: 'danger' },\n\n // ============================================\n // Status Variant Attributes\n // ============================================\n { name: 'variant', type: 'enum', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], description: 'Status variant', example: 'variant=success' },\n\n // ============================================\n // Form Attributes\n // ============================================\n { name: 'inputType', type: 'enum', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], description: 'Input field type', example: 'inputType=email' },\n { name: 'placeholder', type: 'string', description: 'Placeholder text', example: 'placeholder=\"Enter text\"' },\n { name: 'value', type: 'string', description: 'Default value', example: 'value=\"default\"' },\n { name: 'label', type: 'string', description: 'Field label', example: 'label=\"Name\"' },\n { name: 'name', type: 'string', description: 'Form field name', example: 'name=\"field\"' },\n { name: 'required', type: 'boolean', description: 'Required field', example: 'required' },\n { name: 'disabled', type: 'boolean', description: 'Disabled state', example: 'disabled' },\n { name: 'readonly', type: 'boolean', description: 'Read-only state', example: 'readonly' },\n { name: 'checked', type: 'boolean', description: 'Checked state', example: 'checked' },\n { name: 'loading', type: 'boolean', description: 'Loading state', example: 'loading' },\n { name: 'rows', type: 'number', description: 'Textarea rows', example: 'rows=4' },\n { name: 'min', type: 'number', description: 'Minimum value', example: 'min=0' },\n { name: 'max', type: 'number', description: 'Maximum value', example: 'max=100' },\n { name: 'step', type: 'number', description: 'Step increment', example: 'step=1' },\n\n // ============================================\n // Content Attributes\n // ============================================\n { name: 'title', type: 'string', description: 'Title text', example: 'title=\"Title\"' },\n { name: 'src', type: 'string', description: 'Source URL', example: 'src=\"/image.png\"' },\n { name: 'alt', type: 'string', description: 'Alt text', example: 'alt=\"Image\"' },\n { name: 'href', type: 'string', description: 'Link URL', example: 'href=\"/path\"' },\n { name: 'icon', type: 'string', description: 'Icon name', example: 'icon=\"home\"' },\n { name: 'external', type: 'boolean', description: 'External link', example: 'external' },\n\n // ============================================\n // State Attributes\n // ============================================\n { name: 'active', type: 'number', description: 'Active index', example: 'active=0' },\n { name: 'expanded', type: 'boolean', description: 'Expanded state', example: 'expanded' },\n { name: 'centered', type: 'boolean', description: 'Center content', example: 'centered' },\n { name: 'vertical', type: 'boolean', description: 'Vertical orientation', example: 'vertical' },\n { name: 'scroll', type: 'boolean', description: 'Enable scrolling', example: 'scroll' },\n\n // ============================================\n // Feedback Attributes\n // ============================================\n { name: 'dismissible', type: 'boolean', description: 'Can be dismissed', example: 'dismissible' },\n { name: 'indeterminate', type: 'boolean', description: 'Indeterminate state', example: 'indeterminate' },\n { name: 'pill', type: 'boolean', description: 'Pill/rounded style', example: 'pill' },\n\n // ============================================\n // Data Attributes\n // ============================================\n { name: 'striped', type: 'boolean', description: 'Striped rows', example: 'striped' },\n { name: 'bordered', type: 'boolean', description: 'Full borders', example: 'bordered' },\n { name: 'hover', type: 'boolean', description: 'Hover effect', example: 'hover' },\n { name: 'ordered', type: 'boolean', description: 'Ordered list', example: 'ordered' },\n { name: 'none', type: 'boolean', description: 'No list markers', example: 'none' },\n\n // ============================================\n // Page/Viewport Attributes\n // ============================================\n { name: 'viewport', type: 'string', description: 'Viewport size (e.g., \"1440x900\")', example: 'viewport=\"1440x900\"' },\n { name: 'device', type: 'string', description: 'Device preset', example: 'device=\"iphone14\"' },\n];\n\n/**\n * Map of attribute name to definition for quick lookup\n */\nexport const ATTRIBUTE_MAP: Map<string, AttributeDef> = new Map(\n ATTRIBUTES.map((attr) => [attr.name, attr])\n);\n\n/**\n * Set of all valid attribute names\n */\nexport const VALID_ATTRIBUTE_NAMES: ReadonlySet<string> = new Set(\n ATTRIBUTES.map((attr) => attr.name)\n);\n","/**\n * Component definitions for Wireweave DSL\n *\n * Complete component definitions for editor integrations.\n * This is the authoritative source for editor-related component data.\n */\n\nimport type { ComponentDef } from './types.js';\nimport { COMMON_ATTRIBUTES } from './attributes.js';\n\n/**\n * All components in Wireweave DSL\n */\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // ============================================\n // Layout Components\n // ============================================\n {\n name: 'page',\n nodeType: 'Page',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'width', 'height', 'viewport', 'device', 'centered'],\n hasChildren: true,\n description: 'Root container for a wireframe page',\n example: 'page \"Dashboard\" centered { ... }',\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n },\n {\n name: 'header',\n nodeType: 'Header',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page header section',\n example: 'header h=56 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'main',\n nodeType: 'Main',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'scroll'],\n hasChildren: true,\n description: 'Main content section',\n example: 'main p=6 scroll { ... }',\n validParents: ['page'],\n },\n {\n name: 'footer',\n nodeType: 'Footer',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page footer section',\n example: 'footer h=48 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'sidebar',\n nodeType: 'Sidebar',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'border', 'bg'],\n hasChildren: true,\n description: 'Side navigation or content area',\n example: 'sidebar w=240 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'section',\n nodeType: 'Section',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'expanded'],\n hasChildren: true,\n description: 'Grouped content section',\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // ============================================\n // Grid Components\n // ============================================\n {\n name: 'row',\n nodeType: 'Row',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'border', 'bg'],\n hasChildren: true,\n description: 'Horizontal flex container',\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n nodeType: 'Col',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'sm', 'md', 'lg', 'xl', 'order', 'border', 'bg', 'scroll'],\n hasChildren: true,\n description: 'Vertical flex container or grid column',\n example: 'col span=6 md=4 { ... }',\n },\n\n // ============================================\n // Container Components\n // ============================================\n {\n name: 'card',\n nodeType: 'Card',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'shadow', 'border', 'rounded'],\n hasChildren: true,\n description: 'Card container with optional title',\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n nodeType: 'Modal',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Modal dialog overlay',\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n nodeType: 'Drawer',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'position'],\n hasChildren: true,\n description: 'Slide-in drawer panel',\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n nodeType: 'Accordion',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Collapsible sections container',\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // ============================================\n // Text Components\n // ============================================\n {\n name: 'text',\n nodeType: 'Text',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'weight', 'muted', 'bold'],\n hasChildren: false,\n description: 'Text content',\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n nodeType: 'Title',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'level', 'size'],\n hasChildren: false,\n description: 'Heading element (h1-h6)',\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n nodeType: 'Link',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'href', 'external'],\n hasChildren: false,\n description: 'Hyperlink text',\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // ============================================\n // Input Components\n // ============================================\n {\n name: 'input',\n nodeType: 'Input',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'size', 'rounded'],\n hasChildren: false,\n description: 'Text input field',\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n nodeType: 'Textarea',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'rows', 'disabled', 'required'],\n hasChildren: false,\n description: 'Multi-line text input',\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n nodeType: 'Select',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'disabled', 'required'],\n hasChildren: false,\n description: 'Dropdown select',\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n nodeType: 'Checkbox',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Checkbox input',\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n nodeType: 'Radio',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'name', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Radio button input',\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n nodeType: 'Switch',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Toggle switch',\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n nodeType: 'Slider',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'min', 'max', 'value', 'step', 'disabled'],\n hasChildren: false,\n description: 'Range slider',\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n {\n name: 'button',\n nodeType: 'Button',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading'],\n hasChildren: false,\n description: 'Clickable button',\n example: 'button \"Submit\" primary icon=send',\n },\n\n // ============================================\n // Display Components\n // ============================================\n {\n name: 'image',\n nodeType: 'Image',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'src', 'alt'],\n hasChildren: false,\n description: 'Image placeholder',\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n nodeType: 'Placeholder',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'label'],\n hasChildren: true,\n description: 'Generic placeholder',\n example: 'placeholder \"Banner Image\" w=full h=200 { ... }',\n },\n {\n name: 'avatar',\n nodeType: 'Avatar',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'name', 'src', 'size'],\n hasChildren: false,\n description: 'User avatar',\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n nodeType: 'Badge',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n description: 'Status badge',\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n nodeType: 'Icon',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'muted'],\n hasChildren: false,\n description: 'Lucide icon',\n example: 'icon \"settings\" size=lg',\n },\n\n // ============================================\n // Data Components\n // ============================================\n {\n name: 'table',\n nodeType: 'Table',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'striped', 'bordered', 'hover'],\n hasChildren: false,\n description: 'Data table',\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n nodeType: 'List',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'ordered', 'none'],\n hasChildren: false,\n description: 'List of items',\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // ============================================\n // Feedback Components\n // ============================================\n {\n name: 'alert',\n nodeType: 'Alert',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'dismissible', 'icon'],\n hasChildren: false,\n description: 'Alert message',\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n nodeType: 'Toast',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'variant'],\n hasChildren: false,\n description: 'Toast notification',\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n nodeType: 'Progress',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n description: 'Progress bar',\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n nodeType: 'Spinner',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'size'],\n hasChildren: false,\n description: 'Loading spinner',\n example: 'spinner size=lg',\n },\n\n // ============================================\n // Overlay Components\n // ============================================\n {\n name: 'tooltip',\n nodeType: 'Tooltip',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'position'],\n hasChildren: false,\n description: 'Tooltip on hover',\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n nodeType: 'Popover',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Popover panel',\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n nodeType: 'Dropdown',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Dropdown menu',\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // ============================================\n // Navigation Components\n // ============================================\n {\n name: 'nav',\n nodeType: 'Nav',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Navigation menu',\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n nodeType: 'Tabs',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'active'],\n hasChildren: true,\n description: 'Tab navigation',\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n nodeType: 'Breadcrumb',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Breadcrumb navigation',\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // ============================================\n // Divider Component\n // ============================================\n {\n name: 'divider',\n nodeType: 'Divider',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Horizontal separator',\n example: 'divider my=4',\n },\n];\n\n/**\n * Map of component name to definition for quick lookup\n */\nexport const COMPONENT_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.name, comp])\n);\n\n/**\n * Map of AST node type to definition for quick lookup\n */\nexport const NODE_TYPE_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.nodeType, comp])\n);\n\n/**\n * Set of all valid component names\n */\nexport const VALID_COMPONENT_NAMES: ReadonlySet<string> = new Set(\n ALL_COMPONENTS.map((comp) => comp.name)\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, COMPONENT_MAP, NODE_TYPE_MAP } from './components.js';\nimport { ATTRIBUTES, ATTRIBUTE_MAP } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return COMPONENT_MAP.get(name.toLowerCase());\n}\n\n/**\n * Get component definition by AST node type\n */\nexport function getComponentByNodeType(nodeType: string): ComponentDef | undefined {\n return NODE_TYPE_MAP.get(nodeType);\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTE_MAP.get(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.type === 'boolean') return 'boolean';\n if (attr.type === 'number') return 'number';\n if (attr.type === 'string' || attr.type === 'string[]') return 'string';\n if (attr.type === 'enum' && attr.values) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return attr.type;\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.type === 'number') return 'Type: number';\n if (attr.type === 'string') return 'Type: string';\n if (attr.type === 'boolean') return 'Type: boolean (can be omitted)';\n if (attr.type === 'enum' && attr.values) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return `Type: ${attr.type}`;\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return COMPONENT_MAP.has(word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTE_MAP.has(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\n/**\n * Get all unique categories\n */\nexport function getCategories(): string[] {\n return [...new Set(ALL_COMPONENTS.map((c) => c.category))];\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/attributes.ts","../src/components.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * @wireweave/language-data\n *\n * Language definitions and metadata for Wireweave DSL editor integrations.\n * This package is independent of @wireweave/core.\n *\n * Provides:\n * - Component and attribute definitions\n * - Editor utilities (autocomplete, validation hints)\n * - Monaco language configuration (coming soon)\n */\n\n// Types\nexport type {\n ComponentDef,\n AttributeDef,\n ComponentCategory,\n AttributeValueType,\n} from './types.js';\n\n// Data\nexport {\n ALL_COMPONENTS,\n COMPONENT_MAP,\n NODE_TYPE_MAP,\n VALID_COMPONENT_NAMES,\n} from './components.js';\nexport {\n ATTRIBUTES,\n ATTRIBUTE_MAP,\n COMMON_ATTRIBUTES,\n VALID_ATTRIBUTE_NAMES,\n} 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 getComponentByNodeType,\n getAttribute,\n getValidChildren,\n isValidChild,\n getComponentAttributes,\n getComponentsByCategory,\n getAttributeTypeLabel,\n formatAttributeValues,\n isComponent,\n isAttribute,\n getComponentNames,\n getAttributeNames,\n getCategories,\n} from './utils.js';\n","/**\n * Attribute definitions for Wireweave DSL\n *\n * Complete attribute definitions for editor integrations.\n * This is the authoritative source for editor-related attribute data.\n */\n\nimport type { AttributeDef } from './types.js';\n\n/**\n * Common attributes available to most components\n */\nexport const COMMON_ATTRIBUTES: readonly string[] = [\n // Spacing\n 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl',\n 'm', 'mx', 'my', 'mt', 'mr', 'mb', 'ml',\n 'gap',\n // Size\n 'w', 'h', 'minW', 'maxW', 'minH', 'maxH',\n // Flex\n 'flex', 'direction', 'justify', 'align', 'wrap',\n // Grid\n 'span',\n // Position\n 'x', 'y',\n];\n\n/**\n * All attributes in Wireweave DSL\n */\nexport const ATTRIBUTES: AttributeDef[] = [\n // ============================================\n // Spacing Attributes\n // ============================================\n { name: 'p', type: 'number', description: 'Padding (all sides)', example: 'p=4' },\n { name: 'px', type: 'number', description: 'Horizontal padding', example: 'px=4' },\n { name: 'py', type: 'number', description: 'Vertical padding', example: 'py=4' },\n { name: 'pt', type: 'number', description: 'Top padding', example: 'pt=4' },\n { name: 'pr', type: 'number', description: 'Right padding', example: 'pr=4' },\n { name: 'pb', type: 'number', description: 'Bottom padding', example: 'pb=4' },\n { name: 'pl', type: 'number', description: 'Left padding', example: 'pl=4' },\n { name: 'm', type: 'number', description: 'Margin (all sides)', example: 'm=4' },\n { name: 'mx', type: 'string', description: 'Horizontal margin (number or \"auto\")', example: 'mx=auto' },\n { name: 'my', type: 'number', description: 'Vertical margin', example: 'my=4' },\n { name: 'mt', type: 'number', description: 'Top margin', example: 'mt=4' },\n { name: 'mr', type: 'number', description: 'Right margin', example: 'mr=4' },\n { name: 'mb', type: 'number', description: 'Bottom margin', example: 'mb=4' },\n { name: 'ml', type: 'number', description: 'Left margin', example: 'ml=4' },\n { name: 'gap', type: 'number', description: 'Gap between children', example: 'gap=4' },\n\n // ============================================\n // Size Attributes\n // ============================================\n { name: 'w', type: 'string', description: 'Width (number, \"full\", \"auto\", \"screen\", \"fit\")', example: 'w=full' },\n { name: 'h', type: 'string', description: 'Height (number, \"full\", \"auto\", \"screen\")', example: 'h=full' },\n { name: 'width', type: 'number', description: 'Width in pixels (page only)', example: 'width=400' },\n { name: 'height', type: 'number', description: 'Height in pixels (page only)', example: 'height=300' },\n { name: 'minW', type: 'number', description: 'Minimum width', example: 'minW=200' },\n { name: 'maxW', type: 'number', description: 'Maximum width', example: 'maxW=600' },\n { name: 'minH', type: 'number', description: 'Minimum height', example: 'minH=100' },\n { name: 'maxH', type: 'number', description: 'Maximum height', example: 'maxH=400' },\n\n // ============================================\n // Flex/Grid Layout Attributes\n // ============================================\n { name: 'flex', type: 'boolean', description: 'Enable flexbox', example: 'flex' },\n { name: 'direction', type: 'enum', values: ['row', 'column', 'row-reverse', 'column-reverse'], description: 'Flex direction', example: 'direction=column' },\n { name: 'justify', type: 'enum', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], description: 'Main axis alignment', example: 'justify=center' },\n { name: 'align', type: 'enum', values: ['start', 'center', 'end', 'stretch', 'baseline'], description: 'Cross axis alignment', example: 'align=center' },\n { name: 'wrap', type: 'boolean', description: 'Enable flex wrap', example: 'wrap' },\n { name: 'span', type: 'number', description: 'Grid column span (1-12)', example: 'span=6' },\n { name: 'sm', type: 'number', description: 'Responsive span at 576px+', example: 'sm=6' },\n { name: 'md', type: 'number', description: 'Responsive span at 768px+', example: 'md=4' },\n { name: 'lg', type: 'number', description: 'Responsive span at 992px+', example: 'lg=3' },\n { name: 'xl', type: 'number', description: 'Responsive span at 1200px+', example: 'xl=2' },\n { name: 'order', type: 'number', description: 'Flex order', example: 'order=1' },\n\n // ============================================\n // Position Attributes\n // ============================================\n { name: 'x', type: 'number', description: 'Horizontal position', example: 'x=100' },\n { name: 'y', type: 'number', description: 'Vertical position', example: 'y=50' },\n { name: 'position', type: 'enum', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], description: 'Position preset', example: 'position=left' },\n\n // ============================================\n // Visual Attributes\n // ============================================\n { name: 'border', type: 'boolean', description: 'Show border', example: 'border' },\n { name: 'rounded', type: 'boolean', description: 'Apply border radius', example: 'rounded' },\n { name: 'shadow', type: 'enum', values: ['none', 'sm', 'md', 'lg', 'xl'], description: 'Box shadow', example: 'shadow=md' },\n { name: 'bg', type: 'enum', values: ['muted', 'primary', 'secondary'], description: 'Background variant', example: 'bg=muted' },\n\n // ============================================\n // Text Attributes\n // ============================================\n { name: 'size', type: 'enum', values: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl'], description: 'Size preset', example: 'size=lg' },\n { name: 'weight', type: 'enum', values: ['normal', 'medium', 'semibold', 'bold'], description: 'Font weight', example: 'weight=bold' },\n { name: 'level', type: 'number', description: 'Heading level (1-6)', example: 'level=2' },\n { name: 'muted', type: 'boolean', description: 'Muted/dimmed style', example: 'muted' },\n { name: 'bold', type: 'boolean', description: 'Bold text', example: 'bold' },\n\n // ============================================\n // Button Variant Attributes\n // ============================================\n { name: 'primary', type: 'boolean', description: 'Primary style', example: 'primary' },\n { name: 'secondary', type: 'boolean', description: 'Secondary style', example: 'secondary' },\n { name: 'outline', type: 'boolean', description: 'Outline style', example: 'outline' },\n { name: 'ghost', type: 'boolean', description: 'Ghost/transparent style', example: 'ghost' },\n { name: 'danger', type: 'boolean', description: 'Danger/destructive style', example: 'danger' },\n\n // ============================================\n // Status Variant Attributes\n // ============================================\n { name: 'variant', type: 'enum', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], description: 'Status variant', example: 'variant=success' },\n\n // ============================================\n // Form Attributes\n // ============================================\n { name: 'inputType', type: 'enum', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], description: 'Input field type', example: 'inputType=email' },\n { name: 'placeholder', type: 'string', description: 'Placeholder text', example: 'placeholder=\"Enter text\"' },\n { name: 'value', type: 'string', description: 'Default value', example: 'value=\"default\"' },\n { name: 'label', type: 'string', description: 'Field label', example: 'label=\"Name\"' },\n { name: 'name', type: 'string', description: 'Form field name', example: 'name=\"field\"' },\n { name: 'required', type: 'boolean', description: 'Required field', example: 'required' },\n { name: 'disabled', type: 'boolean', description: 'Disabled state', example: 'disabled' },\n { name: 'readonly', type: 'boolean', description: 'Read-only state', example: 'readonly' },\n { name: 'checked', type: 'boolean', description: 'Checked state', example: 'checked' },\n { name: 'loading', type: 'boolean', description: 'Loading state', example: 'loading' },\n { name: 'rows', type: 'number', description: 'Textarea rows', example: 'rows=4' },\n { name: 'min', type: 'number', description: 'Minimum value', example: 'min=0' },\n { name: 'max', type: 'number', description: 'Maximum value', example: 'max=100' },\n { name: 'step', type: 'number', description: 'Step increment', example: 'step=1' },\n\n // ============================================\n // Content Attributes\n // ============================================\n { name: 'title', type: 'string', description: 'Title text', example: 'title=\"Title\"' },\n { name: 'src', type: 'string', description: 'Source URL', example: 'src=\"/image.png\"' },\n { name: 'alt', type: 'string', description: 'Alt text', example: 'alt=\"Image\"' },\n { name: 'href', type: 'string', description: 'Link URL', example: 'href=\"/path\"' },\n { name: 'icon', type: 'string', description: 'Icon name', example: 'icon=\"home\"' },\n { name: 'external', type: 'boolean', description: 'External link', example: 'external' },\n\n // ============================================\n // State Attributes\n // ============================================\n { name: 'active', type: 'number', description: 'Active index', example: 'active=0' },\n { name: 'expanded', type: 'boolean', description: 'Expanded state', example: 'expanded' },\n { name: 'centered', type: 'boolean', description: 'Center content', example: 'centered' },\n { name: 'vertical', type: 'boolean', description: 'Vertical orientation', example: 'vertical' },\n { name: 'scroll', type: 'boolean', description: 'Enable scrolling', example: 'scroll' },\n\n // ============================================\n // Feedback Attributes\n // ============================================\n { name: 'dismissible', type: 'boolean', description: 'Can be dismissed', example: 'dismissible' },\n { name: 'indeterminate', type: 'boolean', description: 'Indeterminate state', example: 'indeterminate' },\n { name: 'pill', type: 'boolean', description: 'Pill/rounded style', example: 'pill' },\n\n // ============================================\n // Data Attributes\n // ============================================\n { name: 'striped', type: 'boolean', description: 'Striped rows', example: 'striped' },\n { name: 'bordered', type: 'boolean', description: 'Full borders', example: 'bordered' },\n { name: 'hover', type: 'boolean', description: 'Hover effect', example: 'hover' },\n { name: 'ordered', type: 'boolean', description: 'Ordered list', example: 'ordered' },\n { name: 'none', type: 'boolean', description: 'No list markers', example: 'none' },\n\n // ============================================\n // Page/Viewport Attributes\n // ============================================\n { name: 'viewport', type: 'string', description: 'Viewport size (e.g., \"1440x900\")', example: 'viewport=\"1440x900\"' },\n { name: 'device', type: 'string', description: 'Device preset', example: 'device=\"iphone14\"' },\n\n // ============================================\n // Interactive Attributes\n // ============================================\n { name: 'navigate', type: 'string', description: 'Navigation target URL or page', example: 'navigate=\"/dashboard\"' },\n { name: 'opens', type: 'string', description: 'Opens a modal, drawer, or popup', example: 'opens=\"settings-modal\"' },\n { name: 'toggles', type: 'string', description: 'Toggles visibility of an element', example: 'toggles=\"menu\"' },\n { name: 'action', type: 'string', description: 'Action identifier for event handling', example: 'action=\"submit-form\"' },\n];\n\n/**\n * Map of attribute name to definition for quick lookup\n */\nexport const ATTRIBUTE_MAP: Map<string, AttributeDef> = new Map(\n ATTRIBUTES.map((attr) => [attr.name, attr])\n);\n\n/**\n * Set of all valid attribute names\n */\nexport const VALID_ATTRIBUTE_NAMES: ReadonlySet<string> = new Set(\n ATTRIBUTES.map((attr) => attr.name)\n);\n","/**\n * Component definitions for Wireweave DSL\n *\n * Complete component definitions for editor integrations.\n * This is the authoritative source for editor-related component data.\n */\n\nimport type { ComponentDef } from './types.js';\nimport { COMMON_ATTRIBUTES } from './attributes.js';\n\n/**\n * All components in Wireweave DSL\n */\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // ============================================\n // Layout Components\n // ============================================\n {\n name: 'page',\n nodeType: 'Page',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'width', 'height', 'viewport', 'device', 'centered'],\n hasChildren: true,\n description: 'Root container for a wireframe page',\n example: 'page \"Dashboard\" centered { ... }',\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n },\n {\n name: 'header',\n nodeType: 'Header',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page header section',\n example: 'header h=56 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'main',\n nodeType: 'Main',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'scroll'],\n hasChildren: true,\n description: 'Main content section',\n example: 'main p=6 scroll { ... }',\n validParents: ['page'],\n },\n {\n name: 'footer',\n nodeType: 'Footer',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page footer section',\n example: 'footer h=48 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'sidebar',\n nodeType: 'Sidebar',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'border', 'bg'],\n hasChildren: true,\n description: 'Side navigation or content area',\n example: 'sidebar w=240 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'section',\n nodeType: 'Section',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'expanded'],\n hasChildren: true,\n description: 'Grouped content section',\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // ============================================\n // Grid Components\n // ============================================\n {\n name: 'row',\n nodeType: 'Row',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'border', 'bg'],\n hasChildren: true,\n description: 'Horizontal flex container',\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n nodeType: 'Col',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'sm', 'md', 'lg', 'xl', 'order', 'border', 'bg', 'scroll'],\n hasChildren: true,\n description: 'Vertical flex container or grid column',\n example: 'col span=6 md=4 { ... }',\n },\n\n // ============================================\n // Container Components\n // ============================================\n {\n name: 'card',\n nodeType: 'Card',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'shadow', 'border', 'rounded'],\n hasChildren: true,\n description: 'Card container with optional title',\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n nodeType: 'Modal',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Modal dialog overlay',\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n nodeType: 'Drawer',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'position'],\n hasChildren: true,\n description: 'Slide-in drawer panel',\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n nodeType: 'Accordion',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Collapsible sections container',\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // ============================================\n // Text Components\n // ============================================\n {\n name: 'text',\n nodeType: 'Text',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'weight', 'muted', 'bold'],\n hasChildren: false,\n description: 'Text content',\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n nodeType: 'Title',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'level', 'size'],\n hasChildren: false,\n description: 'Heading element (h1-h6)',\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n nodeType: 'Link',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'href', 'external'],\n hasChildren: false,\n description: 'Hyperlink text',\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // ============================================\n // Input Components\n // ============================================\n {\n name: 'input',\n nodeType: 'Input',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'size', 'rounded'],\n hasChildren: false,\n description: 'Text input field',\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n nodeType: 'Textarea',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'rows', 'disabled', 'required'],\n hasChildren: false,\n description: 'Multi-line text input',\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n nodeType: 'Select',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'disabled', 'required'],\n hasChildren: false,\n description: 'Dropdown select',\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n nodeType: 'Checkbox',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Checkbox input',\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n nodeType: 'Radio',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'name', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Radio button input',\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n nodeType: 'Switch',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Toggle switch',\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n nodeType: 'Slider',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'min', 'max', 'value', 'step', 'disabled'],\n hasChildren: false,\n description: 'Range slider',\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n {\n name: 'button',\n nodeType: 'Button',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading'],\n hasChildren: false,\n description: 'Clickable button',\n example: 'button \"Submit\" primary icon=send',\n },\n\n // ============================================\n // Display Components\n // ============================================\n {\n name: 'image',\n nodeType: 'Image',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'src', 'alt'],\n hasChildren: false,\n description: 'Image placeholder',\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n nodeType: 'Placeholder',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'label'],\n hasChildren: true,\n description: 'Generic placeholder',\n example: 'placeholder \"Banner Image\" w=full h=200 { ... }',\n },\n {\n name: 'avatar',\n nodeType: 'Avatar',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'name', 'src', 'size'],\n hasChildren: false,\n description: 'User avatar',\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n nodeType: 'Badge',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n description: 'Status badge',\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n nodeType: 'Icon',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'muted'],\n hasChildren: false,\n description: 'Lucide icon',\n example: 'icon \"settings\" size=lg',\n },\n\n // ============================================\n // Data Components\n // ============================================\n {\n name: 'table',\n nodeType: 'Table',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'striped', 'bordered', 'hover'],\n hasChildren: false,\n description: 'Data table',\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n nodeType: 'List',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'ordered', 'none'],\n hasChildren: false,\n description: 'List of items',\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // ============================================\n // Feedback Components\n // ============================================\n {\n name: 'alert',\n nodeType: 'Alert',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'dismissible', 'icon'],\n hasChildren: false,\n description: 'Alert message',\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n nodeType: 'Toast',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'variant'],\n hasChildren: false,\n description: 'Toast notification',\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n nodeType: 'Progress',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n description: 'Progress bar',\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n nodeType: 'Spinner',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'size'],\n hasChildren: false,\n description: 'Loading spinner',\n example: 'spinner size=lg',\n },\n\n // ============================================\n // Overlay Components\n // ============================================\n {\n name: 'tooltip',\n nodeType: 'Tooltip',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'position'],\n hasChildren: false,\n description: 'Tooltip on hover',\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n nodeType: 'Popover',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Popover panel',\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n nodeType: 'Dropdown',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Dropdown menu',\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // ============================================\n // Navigation Components\n // ============================================\n {\n name: 'nav',\n nodeType: 'Nav',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Navigation menu',\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n nodeType: 'Tabs',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'active'],\n hasChildren: true,\n description: 'Tab navigation',\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n nodeType: 'Breadcrumb',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Breadcrumb navigation',\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // ============================================\n // Divider Component\n // ============================================\n {\n name: 'divider',\n nodeType: 'Divider',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Horizontal separator',\n example: 'divider my=4',\n },\n];\n\n/**\n * Map of component name to definition for quick lookup\n */\nexport const COMPONENT_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.name, comp])\n);\n\n/**\n * Map of AST node type to definition for quick lookup\n */\nexport const NODE_TYPE_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.nodeType, comp])\n);\n\n/**\n * Set of all valid component names\n */\nexport const VALID_COMPONENT_NAMES: ReadonlySet<string> = new Set(\n ALL_COMPONENTS.map((comp) => comp.name)\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, COMPONENT_MAP, NODE_TYPE_MAP } from './components.js';\nimport { ATTRIBUTES, ATTRIBUTE_MAP } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return COMPONENT_MAP.get(name.toLowerCase());\n}\n\n/**\n * Get component definition by AST node type\n */\nexport function getComponentByNodeType(nodeType: string): ComponentDef | undefined {\n return NODE_TYPE_MAP.get(nodeType);\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTE_MAP.get(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.type === 'boolean') return 'boolean';\n if (attr.type === 'number') return 'number';\n if (attr.type === 'string' || attr.type === 'string[]') return 'string';\n if (attr.type === 'enum' && attr.values) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return attr.type;\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.type === 'number') return 'Type: number';\n if (attr.type === 'string') return 'Type: string';\n if (attr.type === 'boolean') return 'Type: boolean (can be omitted)';\n if (attr.type === 'enum' && attr.values) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return `Type: ${attr.type}`;\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return COMPONENT_MAP.has(word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTE_MAP.has(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\n/**\n * Get all unique categories\n */\nexport function getCategories(): string[] {\n return [...new Set(ALL_COMPONENTS.map((c) => c.category))];\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -164,7 +164,14 @@ var ATTRIBUTES = [
|
|
|
164
164
|
// Page/Viewport Attributes
|
|
165
165
|
// ============================================
|
|
166
166
|
{ name: "viewport", type: "string", description: 'Viewport size (e.g., "1440x900")', example: 'viewport="1440x900"' },
|
|
167
|
-
{ name: "device", type: "string", description: "Device preset", example: 'device="iphone14"' }
|
|
167
|
+
{ name: "device", type: "string", description: "Device preset", example: 'device="iphone14"' },
|
|
168
|
+
// ============================================
|
|
169
|
+
// Interactive Attributes
|
|
170
|
+
// ============================================
|
|
171
|
+
{ name: "navigate", type: "string", description: "Navigation target URL or page", example: 'navigate="/dashboard"' },
|
|
172
|
+
{ name: "opens", type: "string", description: "Opens a modal, drawer, or popup", example: 'opens="settings-modal"' },
|
|
173
|
+
{ name: "toggles", type: "string", description: "Toggles visibility of an element", example: 'toggles="menu"' },
|
|
174
|
+
{ name: "action", type: "string", description: "Action identifier for event handling", example: 'action="submit-form"' }
|
|
168
175
|
];
|
|
169
176
|
var ATTRIBUTE_MAP = new Map(
|
|
170
177
|
ATTRIBUTES.map((attr) => [attr.name, attr])
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/attributes.ts","../src/components.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * Attribute definitions for Wireweave DSL\n *\n * Complete attribute definitions for editor integrations.\n * This is the authoritative source for editor-related attribute data.\n */\n\nimport type { AttributeDef } from './types.js';\n\n/**\n * Common attributes available to most components\n */\nexport const COMMON_ATTRIBUTES: readonly string[] = [\n // Spacing\n 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl',\n 'm', 'mx', 'my', 'mt', 'mr', 'mb', 'ml',\n 'gap',\n // Size\n 'w', 'h', 'minW', 'maxW', 'minH', 'maxH',\n // Flex\n 'flex', 'direction', 'justify', 'align', 'wrap',\n // Grid\n 'span',\n // Position\n 'x', 'y',\n];\n\n/**\n * All attributes in Wireweave DSL\n */\nexport const ATTRIBUTES: AttributeDef[] = [\n // ============================================\n // Spacing Attributes\n // ============================================\n { name: 'p', type: 'number', description: 'Padding (all sides)', example: 'p=4' },\n { name: 'px', type: 'number', description: 'Horizontal padding', example: 'px=4' },\n { name: 'py', type: 'number', description: 'Vertical padding', example: 'py=4' },\n { name: 'pt', type: 'number', description: 'Top padding', example: 'pt=4' },\n { name: 'pr', type: 'number', description: 'Right padding', example: 'pr=4' },\n { name: 'pb', type: 'number', description: 'Bottom padding', example: 'pb=4' },\n { name: 'pl', type: 'number', description: 'Left padding', example: 'pl=4' },\n { name: 'm', type: 'number', description: 'Margin (all sides)', example: 'm=4' },\n { name: 'mx', type: 'string', description: 'Horizontal margin (number or \"auto\")', example: 'mx=auto' },\n { name: 'my', type: 'number', description: 'Vertical margin', example: 'my=4' },\n { name: 'mt', type: 'number', description: 'Top margin', example: 'mt=4' },\n { name: 'mr', type: 'number', description: 'Right margin', example: 'mr=4' },\n { name: 'mb', type: 'number', description: 'Bottom margin', example: 'mb=4' },\n { name: 'ml', type: 'number', description: 'Left margin', example: 'ml=4' },\n { name: 'gap', type: 'number', description: 'Gap between children', example: 'gap=4' },\n\n // ============================================\n // Size Attributes\n // ============================================\n { name: 'w', type: 'string', description: 'Width (number, \"full\", \"auto\", \"screen\", \"fit\")', example: 'w=full' },\n { name: 'h', type: 'string', description: 'Height (number, \"full\", \"auto\", \"screen\")', example: 'h=full' },\n { name: 'width', type: 'number', description: 'Width in pixels (page only)', example: 'width=400' },\n { name: 'height', type: 'number', description: 'Height in pixels (page only)', example: 'height=300' },\n { name: 'minW', type: 'number', description: 'Minimum width', example: 'minW=200' },\n { name: 'maxW', type: 'number', description: 'Maximum width', example: 'maxW=600' },\n { name: 'minH', type: 'number', description: 'Minimum height', example: 'minH=100' },\n { name: 'maxH', type: 'number', description: 'Maximum height', example: 'maxH=400' },\n\n // ============================================\n // Flex/Grid Layout Attributes\n // ============================================\n { name: 'flex', type: 'boolean', description: 'Enable flexbox', example: 'flex' },\n { name: 'direction', type: 'enum', values: ['row', 'column', 'row-reverse', 'column-reverse'], description: 'Flex direction', example: 'direction=column' },\n { name: 'justify', type: 'enum', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], description: 'Main axis alignment', example: 'justify=center' },\n { name: 'align', type: 'enum', values: ['start', 'center', 'end', 'stretch', 'baseline'], description: 'Cross axis alignment', example: 'align=center' },\n { name: 'wrap', type: 'boolean', description: 'Enable flex wrap', example: 'wrap' },\n { name: 'span', type: 'number', description: 'Grid column span (1-12)', example: 'span=6' },\n { name: 'sm', type: 'number', description: 'Responsive span at 576px+', example: 'sm=6' },\n { name: 'md', type: 'number', description: 'Responsive span at 768px+', example: 'md=4' },\n { name: 'lg', type: 'number', description: 'Responsive span at 992px+', example: 'lg=3' },\n { name: 'xl', type: 'number', description: 'Responsive span at 1200px+', example: 'xl=2' },\n { name: 'order', type: 'number', description: 'Flex order', example: 'order=1' },\n\n // ============================================\n // Position Attributes\n // ============================================\n { name: 'x', type: 'number', description: 'Horizontal position', example: 'x=100' },\n { name: 'y', type: 'number', description: 'Vertical position', example: 'y=50' },\n { name: 'position', type: 'enum', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], description: 'Position preset', example: 'position=left' },\n\n // ============================================\n // Visual Attributes\n // ============================================\n { name: 'border', type: 'boolean', description: 'Show border', example: 'border' },\n { name: 'rounded', type: 'boolean', description: 'Apply border radius', example: 'rounded' },\n { name: 'shadow', type: 'enum', values: ['none', 'sm', 'md', 'lg', 'xl'], description: 'Box shadow', example: 'shadow=md' },\n { name: 'bg', type: 'enum', values: ['muted', 'primary', 'secondary'], description: 'Background variant', example: 'bg=muted' },\n\n // ============================================\n // Text Attributes\n // ============================================\n { name: 'size', type: 'enum', values: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl'], description: 'Size preset', example: 'size=lg' },\n { name: 'weight', type: 'enum', values: ['normal', 'medium', 'semibold', 'bold'], description: 'Font weight', example: 'weight=bold' },\n { name: 'level', type: 'number', description: 'Heading level (1-6)', example: 'level=2' },\n { name: 'muted', type: 'boolean', description: 'Muted/dimmed style', example: 'muted' },\n { name: 'bold', type: 'boolean', description: 'Bold text', example: 'bold' },\n\n // ============================================\n // Button Variant Attributes\n // ============================================\n { name: 'primary', type: 'boolean', description: 'Primary style', example: 'primary' },\n { name: 'secondary', type: 'boolean', description: 'Secondary style', example: 'secondary' },\n { name: 'outline', type: 'boolean', description: 'Outline style', example: 'outline' },\n { name: 'ghost', type: 'boolean', description: 'Ghost/transparent style', example: 'ghost' },\n { name: 'danger', type: 'boolean', description: 'Danger/destructive style', example: 'danger' },\n\n // ============================================\n // Status Variant Attributes\n // ============================================\n { name: 'variant', type: 'enum', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], description: 'Status variant', example: 'variant=success' },\n\n // ============================================\n // Form Attributes\n // ============================================\n { name: 'inputType', type: 'enum', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], description: 'Input field type', example: 'inputType=email' },\n { name: 'placeholder', type: 'string', description: 'Placeholder text', example: 'placeholder=\"Enter text\"' },\n { name: 'value', type: 'string', description: 'Default value', example: 'value=\"default\"' },\n { name: 'label', type: 'string', description: 'Field label', example: 'label=\"Name\"' },\n { name: 'name', type: 'string', description: 'Form field name', example: 'name=\"field\"' },\n { name: 'required', type: 'boolean', description: 'Required field', example: 'required' },\n { name: 'disabled', type: 'boolean', description: 'Disabled state', example: 'disabled' },\n { name: 'readonly', type: 'boolean', description: 'Read-only state', example: 'readonly' },\n { name: 'checked', type: 'boolean', description: 'Checked state', example: 'checked' },\n { name: 'loading', type: 'boolean', description: 'Loading state', example: 'loading' },\n { name: 'rows', type: 'number', description: 'Textarea rows', example: 'rows=4' },\n { name: 'min', type: 'number', description: 'Minimum value', example: 'min=0' },\n { name: 'max', type: 'number', description: 'Maximum value', example: 'max=100' },\n { name: 'step', type: 'number', description: 'Step increment', example: 'step=1' },\n\n // ============================================\n // Content Attributes\n // ============================================\n { name: 'title', type: 'string', description: 'Title text', example: 'title=\"Title\"' },\n { name: 'src', type: 'string', description: 'Source URL', example: 'src=\"/image.png\"' },\n { name: 'alt', type: 'string', description: 'Alt text', example: 'alt=\"Image\"' },\n { name: 'href', type: 'string', description: 'Link URL', example: 'href=\"/path\"' },\n { name: 'icon', type: 'string', description: 'Icon name', example: 'icon=\"home\"' },\n { name: 'external', type: 'boolean', description: 'External link', example: 'external' },\n\n // ============================================\n // State Attributes\n // ============================================\n { name: 'active', type: 'number', description: 'Active index', example: 'active=0' },\n { name: 'expanded', type: 'boolean', description: 'Expanded state', example: 'expanded' },\n { name: 'centered', type: 'boolean', description: 'Center content', example: 'centered' },\n { name: 'vertical', type: 'boolean', description: 'Vertical orientation', example: 'vertical' },\n { name: 'scroll', type: 'boolean', description: 'Enable scrolling', example: 'scroll' },\n\n // ============================================\n // Feedback Attributes\n // ============================================\n { name: 'dismissible', type: 'boolean', description: 'Can be dismissed', example: 'dismissible' },\n { name: 'indeterminate', type: 'boolean', description: 'Indeterminate state', example: 'indeterminate' },\n { name: 'pill', type: 'boolean', description: 'Pill/rounded style', example: 'pill' },\n\n // ============================================\n // Data Attributes\n // ============================================\n { name: 'striped', type: 'boolean', description: 'Striped rows', example: 'striped' },\n { name: 'bordered', type: 'boolean', description: 'Full borders', example: 'bordered' },\n { name: 'hover', type: 'boolean', description: 'Hover effect', example: 'hover' },\n { name: 'ordered', type: 'boolean', description: 'Ordered list', example: 'ordered' },\n { name: 'none', type: 'boolean', description: 'No list markers', example: 'none' },\n\n // ============================================\n // Page/Viewport Attributes\n // ============================================\n { name: 'viewport', type: 'string', description: 'Viewport size (e.g., \"1440x900\")', example: 'viewport=\"1440x900\"' },\n { name: 'device', type: 'string', description: 'Device preset', example: 'device=\"iphone14\"' },\n];\n\n/**\n * Map of attribute name to definition for quick lookup\n */\nexport const ATTRIBUTE_MAP: Map<string, AttributeDef> = new Map(\n ATTRIBUTES.map((attr) => [attr.name, attr])\n);\n\n/**\n * Set of all valid attribute names\n */\nexport const VALID_ATTRIBUTE_NAMES: ReadonlySet<string> = new Set(\n ATTRIBUTES.map((attr) => attr.name)\n);\n","/**\n * Component definitions for Wireweave DSL\n *\n * Complete component definitions for editor integrations.\n * This is the authoritative source for editor-related component data.\n */\n\nimport type { ComponentDef } from './types.js';\nimport { COMMON_ATTRIBUTES } from './attributes.js';\n\n/**\n * All components in Wireweave DSL\n */\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // ============================================\n // Layout Components\n // ============================================\n {\n name: 'page',\n nodeType: 'Page',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'width', 'height', 'viewport', 'device', 'centered'],\n hasChildren: true,\n description: 'Root container for a wireframe page',\n example: 'page \"Dashboard\" centered { ... }',\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n },\n {\n name: 'header',\n nodeType: 'Header',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page header section',\n example: 'header h=56 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'main',\n nodeType: 'Main',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'scroll'],\n hasChildren: true,\n description: 'Main content section',\n example: 'main p=6 scroll { ... }',\n validParents: ['page'],\n },\n {\n name: 'footer',\n nodeType: 'Footer',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page footer section',\n example: 'footer h=48 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'sidebar',\n nodeType: 'Sidebar',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'border', 'bg'],\n hasChildren: true,\n description: 'Side navigation or content area',\n example: 'sidebar w=240 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'section',\n nodeType: 'Section',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'expanded'],\n hasChildren: true,\n description: 'Grouped content section',\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // ============================================\n // Grid Components\n // ============================================\n {\n name: 'row',\n nodeType: 'Row',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'border', 'bg'],\n hasChildren: true,\n description: 'Horizontal flex container',\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n nodeType: 'Col',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'sm', 'md', 'lg', 'xl', 'order', 'border', 'bg', 'scroll'],\n hasChildren: true,\n description: 'Vertical flex container or grid column',\n example: 'col span=6 md=4 { ... }',\n },\n\n // ============================================\n // Container Components\n // ============================================\n {\n name: 'card',\n nodeType: 'Card',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'shadow', 'border', 'rounded'],\n hasChildren: true,\n description: 'Card container with optional title',\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n nodeType: 'Modal',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Modal dialog overlay',\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n nodeType: 'Drawer',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'position'],\n hasChildren: true,\n description: 'Slide-in drawer panel',\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n nodeType: 'Accordion',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Collapsible sections container',\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // ============================================\n // Text Components\n // ============================================\n {\n name: 'text',\n nodeType: 'Text',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'weight', 'muted', 'bold'],\n hasChildren: false,\n description: 'Text content',\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n nodeType: 'Title',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'level', 'size'],\n hasChildren: false,\n description: 'Heading element (h1-h6)',\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n nodeType: 'Link',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'href', 'external'],\n hasChildren: false,\n description: 'Hyperlink text',\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // ============================================\n // Input Components\n // ============================================\n {\n name: 'input',\n nodeType: 'Input',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'size', 'rounded'],\n hasChildren: false,\n description: 'Text input field',\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n nodeType: 'Textarea',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'rows', 'disabled', 'required'],\n hasChildren: false,\n description: 'Multi-line text input',\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n nodeType: 'Select',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'disabled', 'required'],\n hasChildren: false,\n description: 'Dropdown select',\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n nodeType: 'Checkbox',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Checkbox input',\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n nodeType: 'Radio',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'name', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Radio button input',\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n nodeType: 'Switch',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Toggle switch',\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n nodeType: 'Slider',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'min', 'max', 'value', 'step', 'disabled'],\n hasChildren: false,\n description: 'Range slider',\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n {\n name: 'button',\n nodeType: 'Button',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading'],\n hasChildren: false,\n description: 'Clickable button',\n example: 'button \"Submit\" primary icon=send',\n },\n\n // ============================================\n // Display Components\n // ============================================\n {\n name: 'image',\n nodeType: 'Image',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'src', 'alt'],\n hasChildren: false,\n description: 'Image placeholder',\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n nodeType: 'Placeholder',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'label'],\n hasChildren: true,\n description: 'Generic placeholder',\n example: 'placeholder \"Banner Image\" w=full h=200 { ... }',\n },\n {\n name: 'avatar',\n nodeType: 'Avatar',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'name', 'src', 'size'],\n hasChildren: false,\n description: 'User avatar',\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n nodeType: 'Badge',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n description: 'Status badge',\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n nodeType: 'Icon',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'muted'],\n hasChildren: false,\n description: 'Lucide icon',\n example: 'icon \"settings\" size=lg',\n },\n\n // ============================================\n // Data Components\n // ============================================\n {\n name: 'table',\n nodeType: 'Table',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'striped', 'bordered', 'hover'],\n hasChildren: false,\n description: 'Data table',\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n nodeType: 'List',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'ordered', 'none'],\n hasChildren: false,\n description: 'List of items',\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // ============================================\n // Feedback Components\n // ============================================\n {\n name: 'alert',\n nodeType: 'Alert',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'dismissible', 'icon'],\n hasChildren: false,\n description: 'Alert message',\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n nodeType: 'Toast',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'variant'],\n hasChildren: false,\n description: 'Toast notification',\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n nodeType: 'Progress',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n description: 'Progress bar',\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n nodeType: 'Spinner',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'size'],\n hasChildren: false,\n description: 'Loading spinner',\n example: 'spinner size=lg',\n },\n\n // ============================================\n // Overlay Components\n // ============================================\n {\n name: 'tooltip',\n nodeType: 'Tooltip',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'position'],\n hasChildren: false,\n description: 'Tooltip on hover',\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n nodeType: 'Popover',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Popover panel',\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n nodeType: 'Dropdown',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Dropdown menu',\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // ============================================\n // Navigation Components\n // ============================================\n {\n name: 'nav',\n nodeType: 'Nav',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Navigation menu',\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n nodeType: 'Tabs',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'active'],\n hasChildren: true,\n description: 'Tab navigation',\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n nodeType: 'Breadcrumb',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Breadcrumb navigation',\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // ============================================\n // Divider Component\n // ============================================\n {\n name: 'divider',\n nodeType: 'Divider',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Horizontal separator',\n example: 'divider my=4',\n },\n];\n\n/**\n * Map of component name to definition for quick lookup\n */\nexport const COMPONENT_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.name, comp])\n);\n\n/**\n * Map of AST node type to definition for quick lookup\n */\nexport const NODE_TYPE_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.nodeType, comp])\n);\n\n/**\n * Set of all valid component names\n */\nexport const VALID_COMPONENT_NAMES: ReadonlySet<string> = new Set(\n ALL_COMPONENTS.map((comp) => comp.name)\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, COMPONENT_MAP, NODE_TYPE_MAP } from './components.js';\nimport { ATTRIBUTES, ATTRIBUTE_MAP } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return COMPONENT_MAP.get(name.toLowerCase());\n}\n\n/**\n * Get component definition by AST node type\n */\nexport function getComponentByNodeType(nodeType: string): ComponentDef | undefined {\n return NODE_TYPE_MAP.get(nodeType);\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTE_MAP.get(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.type === 'boolean') return 'boolean';\n if (attr.type === 'number') return 'number';\n if (attr.type === 'string' || attr.type === 'string[]') return 'string';\n if (attr.type === 'enum' && attr.values) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return attr.type;\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.type === 'number') return 'Type: number';\n if (attr.type === 'string') return 'Type: string';\n if (attr.type === 'boolean') return 'Type: boolean (can be omitted)';\n if (attr.type === 'enum' && attr.values) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return `Type: ${attr.type}`;\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return COMPONENT_MAP.has(word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTE_MAP.has(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\n/**\n * Get all unique categories\n */\nexport function getCategories(): string[] {\n return [...new Set(ALL_COMPONENTS.map((c) => c.category))];\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/attributes.ts","../src/components.ts","../src/keywords.ts","../src/utils.ts"],"sourcesContent":["/**\n * Attribute definitions for Wireweave DSL\n *\n * Complete attribute definitions for editor integrations.\n * This is the authoritative source for editor-related attribute data.\n */\n\nimport type { AttributeDef } from './types.js';\n\n/**\n * Common attributes available to most components\n */\nexport const COMMON_ATTRIBUTES: readonly string[] = [\n // Spacing\n 'p', 'px', 'py', 'pt', 'pr', 'pb', 'pl',\n 'm', 'mx', 'my', 'mt', 'mr', 'mb', 'ml',\n 'gap',\n // Size\n 'w', 'h', 'minW', 'maxW', 'minH', 'maxH',\n // Flex\n 'flex', 'direction', 'justify', 'align', 'wrap',\n // Grid\n 'span',\n // Position\n 'x', 'y',\n];\n\n/**\n * All attributes in Wireweave DSL\n */\nexport const ATTRIBUTES: AttributeDef[] = [\n // ============================================\n // Spacing Attributes\n // ============================================\n { name: 'p', type: 'number', description: 'Padding (all sides)', example: 'p=4' },\n { name: 'px', type: 'number', description: 'Horizontal padding', example: 'px=4' },\n { name: 'py', type: 'number', description: 'Vertical padding', example: 'py=4' },\n { name: 'pt', type: 'number', description: 'Top padding', example: 'pt=4' },\n { name: 'pr', type: 'number', description: 'Right padding', example: 'pr=4' },\n { name: 'pb', type: 'number', description: 'Bottom padding', example: 'pb=4' },\n { name: 'pl', type: 'number', description: 'Left padding', example: 'pl=4' },\n { name: 'm', type: 'number', description: 'Margin (all sides)', example: 'm=4' },\n { name: 'mx', type: 'string', description: 'Horizontal margin (number or \"auto\")', example: 'mx=auto' },\n { name: 'my', type: 'number', description: 'Vertical margin', example: 'my=4' },\n { name: 'mt', type: 'number', description: 'Top margin', example: 'mt=4' },\n { name: 'mr', type: 'number', description: 'Right margin', example: 'mr=4' },\n { name: 'mb', type: 'number', description: 'Bottom margin', example: 'mb=4' },\n { name: 'ml', type: 'number', description: 'Left margin', example: 'ml=4' },\n { name: 'gap', type: 'number', description: 'Gap between children', example: 'gap=4' },\n\n // ============================================\n // Size Attributes\n // ============================================\n { name: 'w', type: 'string', description: 'Width (number, \"full\", \"auto\", \"screen\", \"fit\")', example: 'w=full' },\n { name: 'h', type: 'string', description: 'Height (number, \"full\", \"auto\", \"screen\")', example: 'h=full' },\n { name: 'width', type: 'number', description: 'Width in pixels (page only)', example: 'width=400' },\n { name: 'height', type: 'number', description: 'Height in pixels (page only)', example: 'height=300' },\n { name: 'minW', type: 'number', description: 'Minimum width', example: 'minW=200' },\n { name: 'maxW', type: 'number', description: 'Maximum width', example: 'maxW=600' },\n { name: 'minH', type: 'number', description: 'Minimum height', example: 'minH=100' },\n { name: 'maxH', type: 'number', description: 'Maximum height', example: 'maxH=400' },\n\n // ============================================\n // Flex/Grid Layout Attributes\n // ============================================\n { name: 'flex', type: 'boolean', description: 'Enable flexbox', example: 'flex' },\n { name: 'direction', type: 'enum', values: ['row', 'column', 'row-reverse', 'column-reverse'], description: 'Flex direction', example: 'direction=column' },\n { name: 'justify', type: 'enum', values: ['start', 'center', 'end', 'between', 'around', 'evenly'], description: 'Main axis alignment', example: 'justify=center' },\n { name: 'align', type: 'enum', values: ['start', 'center', 'end', 'stretch', 'baseline'], description: 'Cross axis alignment', example: 'align=center' },\n { name: 'wrap', type: 'boolean', description: 'Enable flex wrap', example: 'wrap' },\n { name: 'span', type: 'number', description: 'Grid column span (1-12)', example: 'span=6' },\n { name: 'sm', type: 'number', description: 'Responsive span at 576px+', example: 'sm=6' },\n { name: 'md', type: 'number', description: 'Responsive span at 768px+', example: 'md=4' },\n { name: 'lg', type: 'number', description: 'Responsive span at 992px+', example: 'lg=3' },\n { name: 'xl', type: 'number', description: 'Responsive span at 1200px+', example: 'xl=2' },\n { name: 'order', type: 'number', description: 'Flex order', example: 'order=1' },\n\n // ============================================\n // Position Attributes\n // ============================================\n { name: 'x', type: 'number', description: 'Horizontal position', example: 'x=100' },\n { name: 'y', type: 'number', description: 'Vertical position', example: 'y=50' },\n { name: 'position', type: 'enum', values: ['left', 'right', 'top', 'bottom', 'top-left', 'top-center', 'top-right', 'bottom-left', 'bottom-center', 'bottom-right'], description: 'Position preset', example: 'position=left' },\n\n // ============================================\n // Visual Attributes\n // ============================================\n { name: 'border', type: 'boolean', description: 'Show border', example: 'border' },\n { name: 'rounded', type: 'boolean', description: 'Apply border radius', example: 'rounded' },\n { name: 'shadow', type: 'enum', values: ['none', 'sm', 'md', 'lg', 'xl'], description: 'Box shadow', example: 'shadow=md' },\n { name: 'bg', type: 'enum', values: ['muted', 'primary', 'secondary'], description: 'Background variant', example: 'bg=muted' },\n\n // ============================================\n // Text Attributes\n // ============================================\n { name: 'size', type: 'enum', values: ['xs', 'sm', 'base', 'md', 'lg', 'xl', '2xl', '3xl'], description: 'Size preset', example: 'size=lg' },\n { name: 'weight', type: 'enum', values: ['normal', 'medium', 'semibold', 'bold'], description: 'Font weight', example: 'weight=bold' },\n { name: 'level', type: 'number', description: 'Heading level (1-6)', example: 'level=2' },\n { name: 'muted', type: 'boolean', description: 'Muted/dimmed style', example: 'muted' },\n { name: 'bold', type: 'boolean', description: 'Bold text', example: 'bold' },\n\n // ============================================\n // Button Variant Attributes\n // ============================================\n { name: 'primary', type: 'boolean', description: 'Primary style', example: 'primary' },\n { name: 'secondary', type: 'boolean', description: 'Secondary style', example: 'secondary' },\n { name: 'outline', type: 'boolean', description: 'Outline style', example: 'outline' },\n { name: 'ghost', type: 'boolean', description: 'Ghost/transparent style', example: 'ghost' },\n { name: 'danger', type: 'boolean', description: 'Danger/destructive style', example: 'danger' },\n\n // ============================================\n // Status Variant Attributes\n // ============================================\n { name: 'variant', type: 'enum', values: ['default', 'primary', 'secondary', 'success', 'warning', 'danger', 'info'], description: 'Status variant', example: 'variant=success' },\n\n // ============================================\n // Form Attributes\n // ============================================\n { name: 'inputType', type: 'enum', values: ['text', 'email', 'password', 'number', 'tel', 'url', 'search', 'date'], description: 'Input field type', example: 'inputType=email' },\n { name: 'placeholder', type: 'string', description: 'Placeholder text', example: 'placeholder=\"Enter text\"' },\n { name: 'value', type: 'string', description: 'Default value', example: 'value=\"default\"' },\n { name: 'label', type: 'string', description: 'Field label', example: 'label=\"Name\"' },\n { name: 'name', type: 'string', description: 'Form field name', example: 'name=\"field\"' },\n { name: 'required', type: 'boolean', description: 'Required field', example: 'required' },\n { name: 'disabled', type: 'boolean', description: 'Disabled state', example: 'disabled' },\n { name: 'readonly', type: 'boolean', description: 'Read-only state', example: 'readonly' },\n { name: 'checked', type: 'boolean', description: 'Checked state', example: 'checked' },\n { name: 'loading', type: 'boolean', description: 'Loading state', example: 'loading' },\n { name: 'rows', type: 'number', description: 'Textarea rows', example: 'rows=4' },\n { name: 'min', type: 'number', description: 'Minimum value', example: 'min=0' },\n { name: 'max', type: 'number', description: 'Maximum value', example: 'max=100' },\n { name: 'step', type: 'number', description: 'Step increment', example: 'step=1' },\n\n // ============================================\n // Content Attributes\n // ============================================\n { name: 'title', type: 'string', description: 'Title text', example: 'title=\"Title\"' },\n { name: 'src', type: 'string', description: 'Source URL', example: 'src=\"/image.png\"' },\n { name: 'alt', type: 'string', description: 'Alt text', example: 'alt=\"Image\"' },\n { name: 'href', type: 'string', description: 'Link URL', example: 'href=\"/path\"' },\n { name: 'icon', type: 'string', description: 'Icon name', example: 'icon=\"home\"' },\n { name: 'external', type: 'boolean', description: 'External link', example: 'external' },\n\n // ============================================\n // State Attributes\n // ============================================\n { name: 'active', type: 'number', description: 'Active index', example: 'active=0' },\n { name: 'expanded', type: 'boolean', description: 'Expanded state', example: 'expanded' },\n { name: 'centered', type: 'boolean', description: 'Center content', example: 'centered' },\n { name: 'vertical', type: 'boolean', description: 'Vertical orientation', example: 'vertical' },\n { name: 'scroll', type: 'boolean', description: 'Enable scrolling', example: 'scroll' },\n\n // ============================================\n // Feedback Attributes\n // ============================================\n { name: 'dismissible', type: 'boolean', description: 'Can be dismissed', example: 'dismissible' },\n { name: 'indeterminate', type: 'boolean', description: 'Indeterminate state', example: 'indeterminate' },\n { name: 'pill', type: 'boolean', description: 'Pill/rounded style', example: 'pill' },\n\n // ============================================\n // Data Attributes\n // ============================================\n { name: 'striped', type: 'boolean', description: 'Striped rows', example: 'striped' },\n { name: 'bordered', type: 'boolean', description: 'Full borders', example: 'bordered' },\n { name: 'hover', type: 'boolean', description: 'Hover effect', example: 'hover' },\n { name: 'ordered', type: 'boolean', description: 'Ordered list', example: 'ordered' },\n { name: 'none', type: 'boolean', description: 'No list markers', example: 'none' },\n\n // ============================================\n // Page/Viewport Attributes\n // ============================================\n { name: 'viewport', type: 'string', description: 'Viewport size (e.g., \"1440x900\")', example: 'viewport=\"1440x900\"' },\n { name: 'device', type: 'string', description: 'Device preset', example: 'device=\"iphone14\"' },\n\n // ============================================\n // Interactive Attributes\n // ============================================\n { name: 'navigate', type: 'string', description: 'Navigation target URL or page', example: 'navigate=\"/dashboard\"' },\n { name: 'opens', type: 'string', description: 'Opens a modal, drawer, or popup', example: 'opens=\"settings-modal\"' },\n { name: 'toggles', type: 'string', description: 'Toggles visibility of an element', example: 'toggles=\"menu\"' },\n { name: 'action', type: 'string', description: 'Action identifier for event handling', example: 'action=\"submit-form\"' },\n];\n\n/**\n * Map of attribute name to definition for quick lookup\n */\nexport const ATTRIBUTE_MAP: Map<string, AttributeDef> = new Map(\n ATTRIBUTES.map((attr) => [attr.name, attr])\n);\n\n/**\n * Set of all valid attribute names\n */\nexport const VALID_ATTRIBUTE_NAMES: ReadonlySet<string> = new Set(\n ATTRIBUTES.map((attr) => attr.name)\n);\n","/**\n * Component definitions for Wireweave DSL\n *\n * Complete component definitions for editor integrations.\n * This is the authoritative source for editor-related component data.\n */\n\nimport type { ComponentDef } from './types.js';\nimport { COMMON_ATTRIBUTES } from './attributes.js';\n\n/**\n * All components in Wireweave DSL\n */\nexport const ALL_COMPONENTS: ComponentDef[] = [\n // ============================================\n // Layout Components\n // ============================================\n {\n name: 'page',\n nodeType: 'Page',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'width', 'height', 'viewport', 'device', 'centered'],\n hasChildren: true,\n description: 'Root container for a wireframe page',\n example: 'page \"Dashboard\" centered { ... }',\n validChildren: ['header', 'main', 'footer', 'sidebar', 'section', 'nav', 'row', 'col', 'card'],\n validParents: [],\n },\n {\n name: 'header',\n nodeType: 'Header',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page header section',\n example: 'header h=56 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'main',\n nodeType: 'Main',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'scroll'],\n hasChildren: true,\n description: 'Main content section',\n example: 'main p=6 scroll { ... }',\n validParents: ['page'],\n },\n {\n name: 'footer',\n nodeType: 'Footer',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'border'],\n hasChildren: true,\n description: 'Page footer section',\n example: 'footer h=48 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'sidebar',\n nodeType: 'Sidebar',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'border', 'bg'],\n hasChildren: true,\n description: 'Side navigation or content area',\n example: 'sidebar w=240 border { ... }',\n validParents: ['page'],\n },\n {\n name: 'section',\n nodeType: 'Section',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'expanded'],\n hasChildren: true,\n description: 'Grouped content section',\n example: 'section \"Settings\" expanded { ... }',\n },\n\n // ============================================\n // Grid Components\n // ============================================\n {\n name: 'row',\n nodeType: 'Row',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'border', 'bg'],\n hasChildren: true,\n description: 'Horizontal flex container',\n example: 'row flex gap=4 justify=between { ... }',\n },\n {\n name: 'col',\n nodeType: 'Col',\n category: 'grid',\n attributes: [...COMMON_ATTRIBUTES, 'sm', 'md', 'lg', 'xl', 'order', 'border', 'bg', 'scroll'],\n hasChildren: true,\n description: 'Vertical flex container or grid column',\n example: 'col span=6 md=4 { ... }',\n },\n\n // ============================================\n // Container Components\n // ============================================\n {\n name: 'card',\n nodeType: 'Card',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'shadow', 'border', 'rounded'],\n hasChildren: true,\n description: 'Card container with optional title',\n example: 'card \"Settings\" p=4 shadow=md { ... }',\n },\n {\n name: 'modal',\n nodeType: 'Modal',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Modal dialog overlay',\n example: 'modal \"Confirm\" w=400 { ... }',\n },\n {\n name: 'drawer',\n nodeType: 'Drawer',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title', 'position'],\n hasChildren: true,\n description: 'Slide-in drawer panel',\n example: 'drawer \"Menu\" position=left { ... }',\n },\n {\n name: 'accordion',\n nodeType: 'Accordion',\n category: 'container',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Collapsible sections container',\n example: 'accordion { section \"FAQ 1\" { ... } }',\n },\n\n // ============================================\n // Text Components\n // ============================================\n {\n name: 'text',\n nodeType: 'Text',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'weight', 'muted', 'bold'],\n hasChildren: false,\n description: 'Text content',\n example: 'text \"Hello World\" size=lg weight=bold',\n },\n {\n name: 'title',\n nodeType: 'Title',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'level', 'size'],\n hasChildren: false,\n description: 'Heading element (h1-h6)',\n example: 'title \"Welcome\" level=2',\n },\n {\n name: 'link',\n nodeType: 'Link',\n category: 'text',\n attributes: [...COMMON_ATTRIBUTES, 'href', 'external'],\n hasChildren: false,\n description: 'Hyperlink text',\n example: 'link \"Learn more\" href=\"/docs\" external',\n },\n\n // ============================================\n // Input Components\n // ============================================\n {\n name: 'input',\n nodeType: 'Input',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'inputType', 'placeholder', 'value', 'disabled', 'required', 'readonly', 'icon', 'size', 'rounded'],\n hasChildren: false,\n description: 'Text input field',\n example: 'input \"Email\" inputType=email placeholder=\"user@example.com\" required',\n },\n {\n name: 'textarea',\n nodeType: 'Textarea',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'rows', 'disabled', 'required'],\n hasChildren: false,\n description: 'Multi-line text input',\n example: 'textarea \"Description\" rows=4 placeholder=\"Enter description...\"',\n },\n {\n name: 'select',\n nodeType: 'Select',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'placeholder', 'value', 'disabled', 'required'],\n hasChildren: false,\n description: 'Dropdown select',\n example: 'select \"Country\" [\"USA\", \"Canada\", \"UK\"] placeholder=\"Select...\"',\n },\n {\n name: 'checkbox',\n nodeType: 'Checkbox',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Checkbox input',\n example: 'checkbox \"I agree to terms\" checked',\n },\n {\n name: 'radio',\n nodeType: 'Radio',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'name', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Radio button input',\n example: 'radio \"Option A\" name=\"choice\" checked',\n },\n {\n name: 'switch',\n nodeType: 'Switch',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'checked', 'disabled'],\n hasChildren: false,\n description: 'Toggle switch',\n example: 'switch \"Dark mode\" checked',\n },\n {\n name: 'slider',\n nodeType: 'Slider',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'min', 'max', 'value', 'step', 'disabled'],\n hasChildren: false,\n description: 'Range slider',\n example: 'slider \"Volume\" min=0 max=100 value=50',\n },\n {\n name: 'button',\n nodeType: 'Button',\n category: 'input',\n attributes: [...COMMON_ATTRIBUTES, 'primary', 'secondary', 'outline', 'ghost', 'danger', 'size', 'icon', 'disabled', 'loading'],\n hasChildren: false,\n description: 'Clickable button',\n example: 'button \"Submit\" primary icon=send',\n },\n\n // ============================================\n // Display Components\n // ============================================\n {\n name: 'image',\n nodeType: 'Image',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'src', 'alt'],\n hasChildren: false,\n description: 'Image placeholder',\n example: 'image w=200 h=150',\n },\n {\n name: 'placeholder',\n nodeType: 'Placeholder',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'label'],\n hasChildren: true,\n description: 'Generic placeholder',\n example: 'placeholder \"Banner Image\" w=full h=200 { ... }',\n },\n {\n name: 'avatar',\n nodeType: 'Avatar',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'name', 'src', 'size'],\n hasChildren: false,\n description: 'User avatar',\n example: 'avatar \"John Doe\" size=lg',\n },\n {\n name: 'badge',\n nodeType: 'Badge',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'pill', 'icon', 'size'],\n hasChildren: false,\n description: 'Status badge',\n example: 'badge \"New\" variant=success pill',\n },\n {\n name: 'icon',\n nodeType: 'Icon',\n category: 'display',\n attributes: [...COMMON_ATTRIBUTES, 'size', 'muted'],\n hasChildren: false,\n description: 'Lucide icon',\n example: 'icon \"settings\" size=lg',\n },\n\n // ============================================\n // Data Components\n // ============================================\n {\n name: 'table',\n nodeType: 'Table',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'striped', 'bordered', 'hover'],\n hasChildren: false,\n description: 'Data table',\n example: 'table striped bordered { columns [\"Name\", \"Email\"] row [\"John\", \"john@example.com\"] }',\n },\n {\n name: 'list',\n nodeType: 'List',\n category: 'data',\n attributes: [...COMMON_ATTRIBUTES, 'ordered', 'none'],\n hasChildren: false,\n description: 'List of items',\n example: 'list ordered [\"First\", \"Second\", \"Third\"]',\n },\n\n // ============================================\n // Feedback Components\n // ============================================\n {\n name: 'alert',\n nodeType: 'Alert',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'variant', 'dismissible', 'icon'],\n hasChildren: false,\n description: 'Alert message',\n example: 'alert \"Changes saved!\" variant=success',\n },\n {\n name: 'toast',\n nodeType: 'Toast',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'position', 'variant'],\n hasChildren: false,\n description: 'Toast notification',\n example: 'toast \"Item deleted\" position=bottom-right variant=danger',\n },\n {\n name: 'progress',\n nodeType: 'Progress',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'value', 'max', 'label', 'indeterminate'],\n hasChildren: false,\n description: 'Progress bar',\n example: 'progress value=75 label=\"Uploading...\"',\n },\n {\n name: 'spinner',\n nodeType: 'Spinner',\n category: 'feedback',\n attributes: [...COMMON_ATTRIBUTES, 'label', 'size'],\n hasChildren: false,\n description: 'Loading spinner',\n example: 'spinner size=lg',\n },\n\n // ============================================\n // Overlay Components\n // ============================================\n {\n name: 'tooltip',\n nodeType: 'Tooltip',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'position'],\n hasChildren: false,\n description: 'Tooltip on hover',\n example: 'tooltip \"More info\" position=top { icon \"help-circle\" }',\n },\n {\n name: 'popover',\n nodeType: 'Popover',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES, 'title'],\n hasChildren: true,\n description: 'Popover panel',\n example: 'popover \"Details\" { ... }',\n },\n {\n name: 'dropdown',\n nodeType: 'Dropdown',\n category: 'overlay',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Dropdown menu',\n example: 'dropdown { item \"Edit\" icon=edit item \"Delete\" icon=trash danger }',\n },\n\n // ============================================\n // Navigation Components\n // ============================================\n {\n name: 'nav',\n nodeType: 'Nav',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Navigation menu',\n example: 'nav [{ label=\"Home\" icon=home active }, { label=\"Settings\" icon=settings }] vertical',\n },\n {\n name: 'tabs',\n nodeType: 'Tabs',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES, 'active'],\n hasChildren: true,\n description: 'Tab navigation',\n example: 'tabs { tab \"General\" active { ... } tab \"Advanced\" { ... } }',\n },\n {\n name: 'breadcrumb',\n nodeType: 'Breadcrumb',\n category: 'navigation',\n attributes: [...COMMON_ATTRIBUTES],\n hasChildren: false,\n description: 'Breadcrumb navigation',\n example: 'breadcrumb [{ label=\"Home\" href=\"/\" }, { label=\"Products\" }, { label=\"Details\" }]',\n },\n\n // ============================================\n // Divider Component\n // ============================================\n {\n name: 'divider',\n nodeType: 'Divider',\n category: 'layout',\n attributes: [...COMMON_ATTRIBUTES, 'vertical'],\n hasChildren: false,\n description: 'Horizontal separator',\n example: 'divider my=4',\n },\n];\n\n/**\n * Map of component name to definition for quick lookup\n */\nexport const COMPONENT_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.name, comp])\n);\n\n/**\n * Map of AST node type to definition for quick lookup\n */\nexport const NODE_TYPE_MAP: Map<string, ComponentDef> = new Map(\n ALL_COMPONENTS.map((comp) => [comp.nodeType, comp])\n);\n\n/**\n * Set of all valid component names\n */\nexport const VALID_COMPONENT_NAMES: ReadonlySet<string> = new Set(\n ALL_COMPONENTS.map((comp) => comp.name)\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, COMPONENT_MAP, NODE_TYPE_MAP } from './components.js';\nimport { ATTRIBUTES, ATTRIBUTE_MAP } from './attributes.js';\n\n/**\n * Get component definition by name\n */\nexport function getComponent(name: string): ComponentDef | undefined {\n return COMPONENT_MAP.get(name.toLowerCase());\n}\n\n/**\n * Get component definition by AST node type\n */\nexport function getComponentByNodeType(nodeType: string): ComponentDef | undefined {\n return NODE_TYPE_MAP.get(nodeType);\n}\n\n/**\n * Get attribute definition by name\n */\nexport function getAttribute(name: string): AttributeDef | undefined {\n return ATTRIBUTE_MAP.get(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.type === 'boolean') return 'boolean';\n if (attr.type === 'number') return 'number';\n if (attr.type === 'string' || attr.type === 'string[]') return 'string';\n if (attr.type === 'enum' && attr.values) {\n const preview = attr.values.slice(0, 3).join(' | ');\n return attr.values.length > 3 ? `${preview}...` : preview;\n }\n return attr.type;\n}\n\n/**\n * Format attribute values for display\n */\nexport function formatAttributeValues(attr: AttributeDef): string {\n if (attr.type === 'number') return 'Type: number';\n if (attr.type === 'string') return 'Type: string';\n if (attr.type === 'boolean') return 'Type: boolean (can be omitted)';\n if (attr.type === 'enum' && attr.values) {\n return `Values: ${attr.values.join(' | ')}`;\n }\n return `Type: ${attr.type}`;\n}\n\n/**\n * Check if a word is a known component\n */\nexport function isComponent(word: string): boolean {\n return COMPONENT_MAP.has(word.toLowerCase());\n}\n\n/**\n * Check if a word is a known attribute\n */\nexport function isAttribute(word: string): boolean {\n return ATTRIBUTE_MAP.has(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\n/**\n * Get all unique categories\n */\nexport function getCategories(): string[] {\n return [...new Set(ALL_COMPONENTS.map((c) => c.category))];\n}\n"],"mappings":"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","names":[]}
|
package/dist/monaco/index.cjs
CHANGED
|
@@ -200,7 +200,14 @@ var ATTRIBUTES = [
|
|
|
200
200
|
// Page/Viewport Attributes
|
|
201
201
|
// ============================================
|
|
202
202
|
{ name: "viewport", type: "string", description: 'Viewport size (e.g., "1440x900")', example: 'viewport="1440x900"' },
|
|
203
|
-
{ name: "device", type: "string", description: "Device preset", example: 'device="iphone14"' }
|
|
203
|
+
{ name: "device", type: "string", description: "Device preset", example: 'device="iphone14"' },
|
|
204
|
+
// ============================================
|
|
205
|
+
// Interactive Attributes
|
|
206
|
+
// ============================================
|
|
207
|
+
{ name: "navigate", type: "string", description: "Navigation target URL or page", example: 'navigate="/dashboard"' },
|
|
208
|
+
{ name: "opens", type: "string", description: "Opens a modal, drawer, or popup", example: 'opens="settings-modal"' },
|
|
209
|
+
{ name: "toggles", type: "string", description: "Toggles visibility of an element", example: 'toggles="menu"' },
|
|
210
|
+
{ name: "action", type: "string", description: "Action identifier for event handling", example: 'action="submit-form"' }
|
|
204
211
|
];
|
|
205
212
|
var ATTRIBUTE_MAP = new Map(
|
|
206
213
|
ATTRIBUTES.map((attr) => [attr.name, attr])
|