@protomarkdown/parser 1.0.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/LICENSE +201 -0
- package/README.md +25 -0
- package/dist/ShadcnCodeGenerator.d.ts +45 -0
- package/dist/ShadcnCodeGenerator.d.ts.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +820 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +823 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/MarkdownParser.d.ts +11 -0
- package/dist/parser/MarkdownParser.d.ts.map +1 -0
- package/dist/parser/index.d.ts +3 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/types.d.ts +30 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/parser/MarkdownParser.ts","../src/ShadcnCodeGenerator.ts"],"sourcesContent":["import { MarkdownNode, ParserOptions, ParseResult } from \"./types\";\n\nexport class MarkdownParser {\n private options: ParserOptions;\n\n constructor(options: ParserOptions = {}) {\n this.options = {\n strict: false,\n preserveWhitespace: false,\n ...options,\n };\n }\n\n parse(markdown: string): ParseResult {\n const lines = markdown.split(\"\\n\");\n const nodes: MarkdownNode[] = [];\n const errors: string[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n if (!line) {\n i++;\n continue;\n }\n\n // Check for table (line with pipes)\n if (line.includes(\"|\") && line.trim().startsWith(\"|\")) {\n const headers = line\n .split(\"|\")\n .map((h) => h.trim())\n .filter((h) => h.length > 0);\n\n i++;\n // Skip separator line (|---|---|)\n if (i < lines.length) {\n const separatorLine = this.options.preserveWhitespace\n ? lines[i]\n : lines[i].trim();\n if (separatorLine.includes(\"-\") && separatorLine.includes(\"|\")) {\n i++;\n }\n }\n\n // Parse table rows\n const rows: string[][] = [];\n while (i < lines.length) {\n const rowLine = this.options.preserveWhitespace\n ? lines[i]\n : lines[i].trim();\n\n if (!rowLine || !rowLine.includes(\"|\")) {\n break;\n }\n\n const cells = rowLine\n .split(\"|\")\n .map((c) => c.trim())\n .filter((c) => c.length > 0);\n rows.push(cells);\n i++;\n }\n\n nodes.push({\n type: \"table\",\n headers,\n rows,\n });\n continue;\n }\n\n // Check for card start\n const cardMatch = line.match(/^\\[--\\s*(.*)$/);\n if (cardMatch) {\n const result = this.parseCard(lines, i, cardMatch[1] || undefined);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for grid start ([grid cols-2 gap-4)\n const gridMatch = line.match(/^\\[grid\\s+(.*)$/);\n if (gridMatch) {\n const result = this.parseContainer(lines, i, 'grid', gridMatch[1]);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for plain div start ([ or [ class-name)\n const divMatch = line.match(/^\\[\\s*(.*)$/);\n if (divMatch && !line.includes(\"]\")) {\n const result = this.parseContainer(lines, i, 'div', divMatch[1] || '');\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n const node = this.parseLine(line);\n if (node) {\n nodes.push(node);\n } else if (this.options.strict) {\n errors.push(`Line ${i + 1}: Unable to parse \"${line}\"`);\n }\n i++;\n }\n\n return { nodes, errors: errors.length > 0 ? errors : undefined };\n }\n\n private parseCard(\n lines: string[],\n startIndex: number,\n title: string | undefined\n ): { node: MarkdownNode; nextIndex: number } {\n const cardChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse card content until we find the matching closing --]\n while (i < lines.length && depth > 0) {\n const cardLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for card closing\n if (cardLine === \"--]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening (must be before div check)\n if (cardLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = cardLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (cardLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = cardLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (cardLine.match(/^\\[\\s*(.*)$/) && !cardLine.includes(\"]\")) {\n const nestedConfig = cardLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (cardLine) {\n const childNode = this.parseLine(cardLine);\n if (childNode) {\n cardChildren.push(childNode);\n }\n }\n i++;\n }\n\n return {\n node: {\n type: \"card\",\n titleChildren: title ? this.parseInlineEmphasis(title) : undefined,\n children: cardChildren,\n },\n nextIndex: i + 1,\n };\n }\n\n private parseContainer(\n lines: string[],\n startIndex: number,\n type: 'grid' | 'div',\n config: string\n ): { node: MarkdownNode; nextIndex: number } {\n const containerChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse container content until we find the matching closing ]\n while (i < lines.length && depth > 0) {\n const containerLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for container closing\n if (containerLine === \"]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening (must be before div check)\n if (containerLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = containerLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (containerLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = containerLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (containerLine.match(/^\\[\\s*(.*)$/) && !containerLine.includes(\"]\")) {\n const nestedConfig = containerLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (containerLine) {\n const childNode = this.parseLine(containerLine);\n if (childNode) {\n containerChildren.push(childNode);\n }\n }\n i++;\n }\n\n const node: MarkdownNode = {\n type,\n children: containerChildren,\n };\n\n if (type === 'grid') {\n node.gridConfig = config;\n } else if (type === 'div' && config) {\n node.className = config;\n }\n\n return {\n node,\n nextIndex: i + 1,\n };\n }\n\n private parseLine(line: string): MarkdownNode | null {\n // Parse headers (# H1, ## H2, etc.)\n const headerMatch = line.match(/^(#{1,6})\\s+(.+)$/);\n if (headerMatch) {\n return {\n type: \"header\",\n level: headerMatch[1].length,\n children: this.parseInlineEmphasis(headerMatch[2]),\n };\n }\n\n // Parse multiple form fields on one line (inputs, textareas, dropdowns, checkboxes)\n // This must be checked BEFORE single field patterns\n const fieldPattern = /(.+?)\\s+(___|\\|___\\||__\\*|__>(?:\\s*\\[[^\\]]+\\])?|__\\[\\])/g;\n const fieldMatches = [...line.matchAll(fieldPattern)];\n\n if (fieldMatches.length > 1) {\n return {\n type: \"container\",\n children: fieldMatches.map((match) => {\n const label = match[1].trim();\n const marker = match[2];\n\n if (marker === '__*') {\n return {\n type: \"input\",\n label,\n inputType: \"password\",\n } as MarkdownNode;\n } else if (marker === '|___|') {\n return {\n type: \"textarea\",\n label,\n } as MarkdownNode;\n } else if (marker === '__[]') {\n return {\n type: \"checkbox\",\n label,\n } as MarkdownNode;\n } else if (marker.startsWith('__>')) {\n // Handle dropdown with or without options\n const optionsMatch = marker.match(/\\[([^\\]]+)\\]/);\n if (optionsMatch) {\n const options = optionsMatch[1]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"dropdown\",\n label,\n options,\n } as MarkdownNode;\n } else {\n return {\n type: \"dropdown\",\n label,\n } as MarkdownNode;\n }\n } else { // ___\n return {\n type: \"input\",\n label,\n inputType: \"text\",\n } as MarkdownNode;\n }\n }),\n };\n }\n\n // Parse password inputs (Label __*)\n const passwordMatch = line.match(/^(.+?)\\s+__\\*$/);\n if (passwordMatch) {\n return {\n type: \"input\",\n label: passwordMatch[1],\n inputType: \"password\",\n };\n }\n\n // Parse textarea (Label |___|)\n const textareaMatch = line.match(/^(.+?)\\s+\\|___\\|$/);\n if (textareaMatch) {\n return {\n type: \"textarea\",\n label: textareaMatch[1],\n };\n }\n\n // Parse text inputs (Label ___)\n const inputMatch = line.match(/^(.+?)\\s+___$/);\n if (inputMatch) {\n return {\n type: \"input\",\n label: inputMatch[1],\n inputType: \"text\",\n };\n }\n\n // Parse checkbox (Label __[])\n const checkboxMatch = line.match(/^(.+?)\\s+__\\[\\]$/);\n if (checkboxMatch) {\n return {\n type: \"checkbox\",\n label: checkboxMatch[1],\n };\n }\n\n // Parse radio group (Label __() [option1, option2, option3])\n const radioGroupMatch = line.match(/^(.+?)\\s+__\\(\\)\\s+\\[(.+?)\\]$/);\n if (radioGroupMatch) {\n const options = radioGroupMatch[2]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"radiogroup\",\n label: radioGroupMatch[1],\n options,\n };\n }\n\n // Parse dropdowns with options (Label __> [option1, option2, option3])\n const dropdownWithOptionsMatch = line.match(/^(.+?)\\s+__>\\s+\\[(.+?)\\]$/);\n if (dropdownWithOptionsMatch) {\n const options = dropdownWithOptionsMatch[2]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"dropdown\",\n label: dropdownWithOptionsMatch[1],\n options,\n };\n }\n\n // Parse dropdowns without options (Label __>)\n const dropdownMatch = line.match(/^(.+?)\\s+__>$/);\n if (dropdownMatch) {\n return {\n type: \"dropdown\",\n label: dropdownMatch[1],\n };\n }\n\n // Parse image ()\n const imageMatch = line.match(/^!\\[([^\\]]*)\\]\\(([^)]+)\\)$/);\n if (imageMatch) {\n return {\n type: \"image\",\n alt: imageMatch[1],\n src: imageMatch[2],\n };\n }\n\n // Parse multiple buttons on one line ([btn1][(btn2)])\n const multiButtonMatch = line.match(/^(\\[\\(?[^\\[\\]|]+\\)?\\]\\s*)+$/);\n if (multiButtonMatch) {\n const buttons = line.match(/\\[(\\(?)[^\\[\\]|]+?(\\)?)\\]/g);\n if (buttons && buttons.length > 1) {\n return {\n type: \"container\",\n children: buttons.map((btn) => {\n const innerMatch = btn.match(/\\[(\\(?)(.+?)(\\)?)\\]/);\n if (innerMatch) {\n const isDefault = innerMatch[1] === \"(\" && innerMatch[3] === \")\";\n const content = innerMatch[2];\n\n return {\n type: \"button\",\n content,\n variant: isDefault ? \"default\" : \"outline\",\n };\n }\n return {\n type: \"button\",\n content: btn.slice(1, -1),\n variant: \"outline\",\n };\n }),\n };\n }\n }\n\n // Parse default button [(button text)] or [(button text) | classes]\n const defaultButtonMatch = line.match(/^\\[\\((.+?)\\)(?:\\s*\\|\\s*(.+))?\\]$/);\n if (defaultButtonMatch) {\n const content = defaultButtonMatch[1];\n const className = defaultButtonMatch[2]?.trim();\n\n return {\n type: \"button\",\n content,\n variant: \"default\",\n ...(className && { className }),\n };\n }\n\n // Parse outline button [button text] or [button text | classes]\n const buttonMatch = line.match(/^\\[([^|]+?)(?:\\s*\\|\\s*(.+))?\\]$/);\n if (buttonMatch) {\n const content = buttonMatch[1].trim();\n const className = buttonMatch[2]?.trim();\n\n return {\n type: \"button\",\n content,\n variant: \"outline\",\n ...(className && { className }),\n };\n }\n\n // Plain text\n return {\n type: \"text\",\n children: this.parseInlineEmphasis(line),\n };\n }\n\n private parseInlineEmphasis(text: string): MarkdownNode[] {\n const nodes: MarkdownNode[] = [];\n let remaining = text;\n let position = 0;\n\n while (position < remaining.length) {\n // Try to match bold-italic (_*text*_)\n const boldItalicMatch = remaining\n .slice(position)\n .match(/^_\\*(.+?)\\*_/);\n if (boldItalicMatch) {\n const content = boldItalicMatch[1];\n nodes.push({\n type: \"bold\",\n children: [{ type: \"italic\", content }],\n });\n position += boldItalicMatch[0].length;\n continue;\n }\n\n // Try to match bold (*text*)\n const boldMatch = remaining.slice(position).match(/^\\*(.+?)\\*/);\n if (boldMatch) {\n nodes.push({\n type: \"bold\",\n content: boldMatch[1],\n });\n position += boldMatch[0].length;\n continue;\n }\n\n // Try to match italic (_text_)\n const italicMatch = remaining.slice(position).match(/^_(.+?)_/);\n if (italicMatch) {\n nodes.push({\n type: \"italic\",\n content: italicMatch[1],\n });\n position += italicMatch[0].length;\n continue;\n }\n\n // No emphasis found, consume until next emphasis marker or end of string\n const nextAsterisk = remaining.slice(position).indexOf(\"*\");\n const nextUnderscore = remaining.slice(position).indexOf(\"_\");\n\n // Find the nearest marker\n let nextMarker = -1;\n if (nextAsterisk !== -1 && nextUnderscore !== -1) {\n nextMarker = Math.min(nextAsterisk, nextUnderscore);\n } else if (nextAsterisk !== -1) {\n nextMarker = nextAsterisk;\n } else if (nextUnderscore !== -1) {\n nextMarker = nextUnderscore;\n }\n\n const textEnd =\n nextMarker === -1\n ? remaining.length\n : position + nextMarker;\n\n if (textEnd > position) {\n nodes.push({\n type: \"text\",\n content: remaining.slice(position, textEnd),\n });\n position = textEnd;\n } else {\n // Edge case: marker that doesn't form emphasis\n nodes.push({\n type: \"text\",\n content: remaining.slice(position, position + 1),\n });\n position++;\n }\n }\n\n return nodes;\n }\n}\n","import { MarkdownNode } from \"./parser/types\";\n\n/**\n * Generates React component code from a Proto Markdown AST using Shadcn UI components\n */\nexport class ShadcnCodeGenerator {\n private indentLevel = 0;\n private readonly indentSize = 2;\n private requiredImports = new Set<string>();\n\n /**\n * Generate complete React component code from markdown AST\n */\n generate(nodes: MarkdownNode[]): string {\n this.indentLevel = 0;\n this.requiredImports.clear();\n\n // Generate component body\n const componentBody = this.generateNodes(nodes);\n\n // Add base indentation (6 spaces = 3 levels for proper JSX nesting)\n const indentedBody = componentBody\n .split('\\n')\n .map(line => line ? ` ${line}` : line)\n .join('\\n');\n\n // Collect imports\n const imports = this.generateImports();\n\n return `${imports}\n\nexport function GeneratedComponent() {\n return (\n <div className=\"space-y-2\">\n${indentedBody}\n </div>\n );\n}\n`;\n }\n\n /**\n * Generate imports based on used components\n */\n private generateImports(): string {\n const imports: string[] = [];\n\n if (this.requiredImports.has(\"Button\")) {\n imports.push('import { Button } from \"@/components/ui/button\";');\n }\n if (this.requiredImports.has(\"Input\")) {\n imports.push('import { Input } from \"@/components/ui/input\";');\n }\n if (this.requiredImports.has(\"Textarea\")) {\n imports.push('import { Textarea } from \"@/components/ui/textarea\";');\n }\n if (this.requiredImports.has(\"Card\")) {\n imports.push('import { Card, CardHeader, CardTitle, CardContent } from \"@/components/ui/card\";');\n }\n if (this.requiredImports.has(\"Checkbox\")) {\n imports.push('import { Checkbox } from \"@/components/ui/checkbox\";');\n }\n if (this.requiredImports.has(\"RadioGroup\")) {\n imports.push('import { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\";');\n }\n if (this.requiredImports.has(\"Select\")) {\n imports.push('import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";');\n }\n if (this.requiredImports.has(\"Table\")) {\n imports.push('import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"@/components/ui/table\";');\n }\n if (this.requiredImports.has(\"Label\")) {\n imports.push('import { Label } from \"@/components/ui/label\";');\n }\n\n return imports.join(\"\\n\");\n }\n\n /**\n * Generate code for multiple nodes\n */\n private generateNodes(nodes: MarkdownNode[]): string {\n return nodes.map((node, index) => this.generateNode(node, index)).join(\"\\n\");\n }\n\n /**\n * Generate code for a single node\n */\n private generateNode(node: MarkdownNode, index: number): string {\n switch (node.type) {\n case \"header\":\n return this.generateHeader(node, index);\n case \"input\":\n return this.generateInput(node, index);\n case \"textarea\":\n return this.generateTextarea(node, index);\n case \"dropdown\":\n return this.generateDropdown(node, index);\n case \"checkbox\":\n return this.generateCheckbox(node, index);\n case \"radiogroup\":\n return this.generateRadioGroup(node, index);\n case \"button\":\n return this.generateButton(node, index);\n case \"container\":\n return this.generateContainer(node, index);\n case \"card\":\n return this.generateCard(node, index);\n case \"table\":\n return this.generateTable(node, index);\n case \"grid\":\n return this.generateGrid(node, index);\n case \"div\":\n return this.generateDiv(node, index);\n case \"text\":\n return this.generateText(node, index);\n case \"bold\":\n return this.generateBold(node, index);\n case \"italic\":\n return this.generateItalic(node, index);\n case \"image\":\n return this.generateImage(node, index);\n default:\n return \"\";\n }\n }\n\n private indent(): string {\n return \" \".repeat(this.indentLevel * this.indentSize);\n }\n\n private escapeJSX(text: string): string {\n return text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/{/g, \"{\")\n .replace(/}/g, \"}\");\n }\n\n private generateHeader(node: MarkdownNode, index: number): string {\n const Tag = `h${node.level}`;\n const className = `text-${node.level === 1 ? \"4xl\" : node.level === 2 ? \"3xl\" : node.level === 3 ? \"2xl\" : node.level === 4 ? \"xl\" : node.level === 5 ? \"lg\" : \"base\"} font-bold`;\n\n let content: string;\n if (node.children && node.children.length > 0) {\n // Inline children (emphasis)\n content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n } else {\n content = this.escapeJSX(node.content || \"\");\n }\n\n return `${this.indent()}<${Tag} key={${index}} className=\"${className}\">${content}</${Tag}>`;\n }\n\n private generateInlineNode(node: MarkdownNode, index: number): string {\n switch (node.type) {\n case \"bold\":\n const boldContent = node.children?.map((child, i) => this.generateInlineNode(child, i)).join(\"\") || this.escapeJSX(node.content || \"\");\n return `<strong key={${index}}>${boldContent}</strong>`;\n case \"italic\":\n const italicContent = node.children?.map((child, i) => this.generateInlineNode(child, i)).join(\"\") || this.escapeJSX(node.content || \"\");\n return `<em key={${index}}>${italicContent}</em>`;\n case \"text\":\n if (node.children && node.children.length > 0) {\n return node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n }\n return this.escapeJSX(node.content || \"\");\n default:\n return this.escapeJSX(node.content || \"\");\n }\n }\n\n private generateInput(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Input\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `input-${index}`;\n const type = node.inputType || \"text\";\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Input id=\"${id}\" type=\"${type}\" />\n${this.indent()}</div>`;\n }\n\n private generateTextarea(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Textarea\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `textarea-${index}`;\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Textarea id=\"${id}\" />\n${this.indent()}</div>`;\n }\n\n private generateDropdown(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Select\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `select-${index}`;\n const options = node.options || [];\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Select>\n${this.indent()} <SelectTrigger id=\"${id}\">\n${this.indent()} <SelectValue placeholder=\"Select an option\" />\n${this.indent()} </SelectTrigger>\n${this.indent()} <SelectContent>\n${options.map((opt, i) => `${this.indent()} <SelectItem key={${i}} value=\"${opt.toLowerCase().replace(/\\s+/g, \"-\")}\">${this.escapeJSX(opt)}</SelectItem>`).join(\"\\n\")}\n${this.indent()} </SelectContent>\n${this.indent()} </Select>\n${this.indent()}</div>`;\n }\n\n private generateCheckbox(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Checkbox\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `checkbox-${index}`;\n\n return `${this.indent()}<div key={${index}} className=\"flex items-center space-x-2\">\n${this.indent()} <Checkbox id=\"${id}\" />\n${this.indent()} <Label htmlFor=\"${id}\" className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n${this.indent()} ${this.escapeJSX(node.label || \"\")}\n${this.indent()} </Label>\n${this.indent()}</div>`;\n }\n\n private generateRadioGroup(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"RadioGroup\");\n this.requiredImports.add(\"Label\");\n const options = node.options || [];\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label>${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <RadioGroup>\n${options.map((opt, i) => {\n const optId = `radio-${index}-${i}`;\n const value = opt.toLowerCase().replace(/\\s+/g, \"-\");\n return `${this.indent()} <div className=\"flex items-center space-x-2\">\n${this.indent()} <RadioGroupItem id=\"${optId}\" value=\"${value}\" />\n${this.indent()} <Label htmlFor=\"${optId}\">${this.escapeJSX(opt)}</Label>\n${this.indent()} </div>`;\n }).join(\"\\n\")}\n${this.indent()} </RadioGroup>\n${this.indent()}</div>`;\n }\n\n private generateButton(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Button\");\n const variant = node.variant || \"default\";\n const className = node.className ? ` className=\"${node.className}\"` : \"\";\n\n return `${this.indent()}<Button key={${index}} variant=\"${variant}\"${className}>${this.escapeJSX(node.content || \"\")}</Button>`;\n }\n\n private generateContainer(node: MarkdownNode, index: number): string {\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"flex gap-2\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateCard(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Card\");\n\n let titleContent = \"\";\n if (node.titleChildren && node.titleChildren.length > 0) {\n titleContent = node.titleChildren.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n } else if (node.title) {\n titleContent = this.escapeJSX(node.title);\n }\n\n // Increment by 2 to account for Card wrapper + CardContent nesting\n this.indentLevel += 2;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel -= 2;\n\n const cardContent = titleContent\n ? `${this.indent()}<Card key={${index}}>\n${this.indent()} <CardHeader>\n${this.indent()} <CardTitle>${titleContent}</CardTitle>\n${this.indent()} </CardHeader>\n${this.indent()} <CardContent className=\"space-y-2\">\n${children}\n${this.indent()} </CardContent>\n${this.indent()}</Card>`\n : `${this.indent()}<Card key={${index}}>\n${this.indent()} <CardContent className=\"pt-6 space-y-2\">\n${children}\n${this.indent()} </CardContent>\n${this.indent()}</Card>`;\n\n return cardContent;\n }\n\n private generateTable(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Table\");\n const headers = node.headers || [];\n const rows = node.rows || [];\n\n return `${this.indent()}<Table key={${index}}>\n${this.indent()} <TableHeader>\n${this.indent()} <TableRow>\n${headers.map((header, i) => `${this.indent()} <TableHead key={${i}}>${this.escapeJSX(header)}</TableHead>`).join(\"\\n\")}\n${this.indent()} </TableRow>\n${this.indent()} </TableHeader>\n${this.indent()} <TableBody>\n${rows.map((row, i) => `${this.indent()} <TableRow key={${i}}>\n${row.map((cell, j) => `${this.indent()} <TableCell key={${j}}>${this.escapeJSX(cell)}</TableCell>`).join(\"\\n\")}\n${this.indent()} </TableRow>`).join(\"\\n\")}\n${this.indent()} </TableBody>\n${this.indent()}</Table>`;\n }\n\n private generateGrid(node: MarkdownNode, index: number): string {\n const gridClasses = `grid ${node.gridConfig || \"\"}`;\n\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"${gridClasses}\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateDiv(node: MarkdownNode, index: number): string {\n const className = node.className || \"\";\n\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"${className}\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateText(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n // Text with inline emphasis\n const inlineContent = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<p key={${index}}>${inlineContent}</p>`;\n }\n return `${this.indent()}<p key={${index}}>${this.escapeJSX(node.content || \"\")}</p>`;\n }\n\n private generateBold(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n const content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<strong key={${index}}>${content}</strong>`;\n }\n return `${this.indent()}<strong key={${index}}>${this.escapeJSX(node.content || \"\")}</strong>`;\n }\n\n private generateItalic(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n const content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<em key={${index}}>${content}</em>`;\n }\n return `${this.indent()}<em key={${index}}>${this.escapeJSX(node.content || \"\")}</em>`;\n }\n\n private generateImage(node: MarkdownNode, index: number): string {\n const src = node.src || \"\";\n const alt = node.alt || \"\";\n\n return `${this.indent()}<img key={${index}} src=\"${src}\" alt=\"${this.escapeJSX(alt)}\" className=\"max-w-full h-auto\" />`;\n }\n}\n"],"names":[],"mappings":"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"}
|