@duongthiu/onex-core 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/animation.ts","../src/types/fields.ts","../src/types/section.ts","../src/types/component.ts","../src/types/editor.ts","../src/registry/block-registry.ts","../src/registry/component-registry.ts","../src/utils/generate-id.ts","../src/utils/block-finder.ts","../src/utils/component-finder.ts","../src/utils/component-updater.ts","../src/utils/section-helpers.ts","../src/utils/inspector-utils.ts","../src/utils/cn.ts","../src/utils/adapters.ts","../src/utils/section/validation.ts","../src/utils/section/extraction.ts","../src/utils/section/conversion.ts","../src/utils/section/index.ts","../src/utils/component/validation.ts","../src/utils/component/extraction.ts","../src/utils/component/conversion.ts","../src/utils/component/index.ts","../src/renderers/component-renderer.tsx","../src/renderers/block-renderer.tsx","../src/renderers/section-renderer.tsx","../src/contexts/cart-context.tsx","../src/contexts/theme-context.tsx","../src/contexts/viewport-context.tsx","../src/contexts/page-data-context.tsx","../src/components/grid-container.tsx","../src/components/heading/heading.tsx","../src/components/heading/heading.schema.ts","../src/components/paragraph/paragraph.tsx","../src/components/paragraph/paragraph.schema.ts","../src/components/button/button.tsx","../src/components/button/button.schema.ts","../src/components/link/link.tsx","../src/components/link/link.schema.ts","../src/components/divider/divider.tsx","../src/components/divider/divider.schema.ts","../src/components/spacer/spacer.tsx","../src/components/spacer/spacer.schema.ts","../src/components/quote/quote.tsx","../src/components/quote/quote.schema.ts","../src/components/badge/badge.tsx","../src/components/badge/badge.schema.ts","../src/components/image/image.tsx","../src/components/image/image.schema.ts","../src/components/icon/icon.tsx","../src/components/icon/icon.schema.ts","../src/components/video/video.tsx","../src/components/video/video.schema.ts","../src/components/list/list.tsx","../src/components/list/list.schema.ts","../src/components/container/container.tsx","../src/components/container/container.schema.ts","../src/components/grid/grid.tsx","../src/components/grid/grid.schema.ts","../src/components/columns/columns.tsx","../src/components/columns/columns.schema.ts","../src/components/card/card.tsx","../src/components/card/card.schema.ts","../src/components/gallery/gallery.tsx","../src/components/gallery/gallery.schema.ts","../src/components/input/input.tsx","../src/components/input/input.schema.ts","../src/components/textarea/textarea.tsx","../src/components/textarea/textarea.schema.ts","../src/components/checkbox/checkbox.tsx","../src/components/checkbox/checkbox.schema.ts","../src/components/select/select.tsx","../src/components/select/select.schema.ts","../src/components/rating/rating.tsx","../src/components/rating/rating.schema.ts","../src/components/progress/progress.tsx","../src/components/progress/progress.schema.ts","../src/components/alert/alert.tsx","../src/components/alert/alert.schema.ts","../src/components/accordion/accordion.tsx","../src/components/accordion/accordion.schema.ts","../src/components/tabs/tabs.tsx","../src/components/tabs/tabs.schema.ts","../src/components/timer/timer.tsx","../src/components/timer/timer.schema.ts","../src/components/table/table.tsx","../src/components/table/table.schema.ts","../src/components/map/map.tsx","../src/components/map/map.schema.ts","../src/components/code/code.tsx","../src/components/code/code.schema.ts","../src/client.ts"],"names":["EventEmitter","__spreadProps","__spreadValues","twMerge","clsx","validateFieldValue","autoConvertValue","createValueProxy","jsxs","jsx","React","Fragment","createContext","useState","useEffect","useContext","useMemo","fontSizeMap","fontWeightMap","textAlignMap","cva","SeparatorPrimitive","sizeMap","IconComponent","LucideIcons","alignItemsMap","gapMap","paddingMap","columnsMap","borderRadiusMap","objectFitMap","widthMap","LabelPrimitive","CheckboxPrimitive","Check","LabelPrimitive2","LabelPrimitive3","SelectPrimitive","ChevronDown","spacingMap","Star","heightMap","ProgressPrimitive","Info","CheckCircle","AlertTriangle","XCircle","X","content"],"mappings":"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","file":"chunk-WDY773GJ.js","sourcesContent":["/**\n * Animation Type Definitions\n * Defines animation settings for components\n */\n\nimport type { FieldDefinition } from \"./fields\";\n\n/**\n * Animation Types\n */\nexport type AnimationType =\n | \"fadeIn\"\n | \"fadeInUp\"\n | \"fadeInDown\"\n | \"fadeInLeft\"\n | \"fadeInRight\"\n | \"slideInUp\"\n | \"slideInDown\"\n | \"slideInLeft\"\n | \"slideInRight\"\n | \"scaleIn\"\n | \"scaleInUp\"\n | \"rotate\"\n | \"rotateIn\"\n | \"bounce\"\n | \"pulse\"\n | \"shake\"\n | \"flip\"\n | \"none\";\n\n/**\n * Animation Easing Functions\n */\nexport type AnimationEasing =\n | \"linear\"\n | \"easeIn\"\n | \"easeOut\"\n | \"easeInOut\"\n | \"easeInBack\"\n | \"easeOutBack\"\n | \"easeInOutBack\"\n | \"easeInElastic\"\n | \"easeOutElastic\"\n | \"easeInOutElastic\";\n\n/**\n * Animation Trigger\n */\nexport type AnimationTrigger =\n | \"onLoad\" // Animate when page loads\n | \"onScroll\" // Animate when element enters viewport\n | \"onHover\" // Animate on hover\n | \"onClick\"; // Animate on click\n\n/**\n * Animation Settings\n */\nexport interface AnimationSettings {\n /** Animation type */\n type: AnimationType;\n\n /** Duration in seconds */\n duration: number;\n\n /** Delay in seconds */\n delay: number;\n\n /** Easing function */\n easing: AnimationEasing;\n\n /** When to trigger the animation */\n trigger?: AnimationTrigger;\n\n /** Repeat infinitely */\n infinite?: boolean;\n\n /** Number of iterations (if not infinite) */\n iterations?: number;\n\n /** Stagger animation for child elements */\n stagger?: boolean;\n\n /** Stagger delay between children (seconds) */\n staggerDelay?: number;\n}\n\n/**\n * Animation Field Definitions\n * Use these in component schemas to add animation settings\n */\nexport const animationFieldDefinitions: FieldDefinition[] = [\n {\n id: \"animationType\",\n type: \"select\",\n label: \"Animation Type\",\n default: \"fadeInUp\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Fade In\", value: \"fadeIn\" },\n { label: \"Fade In Up\", value: \"fadeInUp\" },\n { label: \"Fade In Down\", value: \"fadeInDown\" },\n { label: \"Fade In Left\", value: \"fadeInLeft\" },\n { label: \"Fade In Right\", value: \"fadeInRight\" },\n { label: \"Slide In Up\", value: \"slideInUp\" },\n { label: \"Slide In Down\", value: \"slideInDown\" },\n { label: \"Slide In Left\", value: \"slideInLeft\" },\n { label: \"Slide In Right\", value: \"slideInRight\" },\n { label: \"Scale In\", value: \"scaleIn\" },\n { label: \"Scale In Up\", value: \"scaleInUp\" },\n { label: \"Rotate\", value: \"rotate\" },\n { label: \"Rotate In\", value: \"rotateIn\" },\n { label: \"Bounce\", value: \"bounce\" },\n { label: \"Pulse\", value: \"pulse\" },\n { label: \"Shake\", value: \"shake\" },\n { label: \"Flip\", value: \"flip\" },\n ],\n },\n {\n id: \"animationDuration\",\n type: \"number\",\n label: \"Duration (seconds)\",\n default: 0.6,\n min: 0,\n max: 5,\n step: 0.1,\n unit: \"s\",\n },\n {\n id: \"animationDelay\",\n type: \"number\",\n label: \"Delay (seconds)\",\n default: 0,\n min: 0,\n max: 3,\n step: 0.1,\n unit: \"s\",\n },\n {\n id: \"animationEasing\",\n type: \"select\",\n label: \"Easing\",\n default: \"easeOut\",\n options: [\n { label: \"Linear\", value: \"linear\" },\n { label: \"Ease In\", value: \"easeIn\" },\n { label: \"Ease Out\", value: \"easeOut\" },\n { label: \"Ease In Out\", value: \"easeInOut\" },\n { label: \"Ease In Back\", value: \"easeInBack\" },\n { label: \"Ease Out Back\", value: \"easeOutBack\" },\n { label: \"Ease In Out Back\", value: \"easeInOutBack\" },\n { label: \"Ease In Elastic\", value: \"easeInElastic\" },\n { label: \"Ease Out Elastic\", value: \"easeOutElastic\" },\n { label: \"Ease In Out Elastic\", value: \"easeInOutElastic\" },\n ],\n },\n {\n id: \"animationTrigger\",\n type: \"select\",\n label: \"Trigger\",\n default: \"onScroll\",\n options: [\n { label: \"On Page Load\", value: \"onLoad\" },\n { label: \"On Scroll (Enter Viewport)\", value: \"onScroll\" },\n { label: \"On Hover\", value: \"onHover\" },\n { label: \"On Click\", value: \"onClick\" },\n ],\n },\n {\n id: \"animationInfinite\",\n type: \"checkbox\",\n label: \"Repeat Infinitely\",\n default: false,\n },\n {\n id: \"animationIterations\",\n type: \"number\",\n label: \"Iterations\",\n info: \"Number of times to repeat (if not infinite)\",\n default: 1,\n min: 1,\n max: 10,\n },\n {\n id: \"animationStagger\",\n type: \"checkbox\",\n label: \"Stagger Children\",\n info: \"Animate child elements with delay\",\n default: false,\n },\n {\n id: \"animationStaggerDelay\",\n type: \"number\",\n label: \"Stagger Delay (seconds)\",\n default: 0.1,\n min: 0,\n max: 1,\n step: 0.05,\n unit: \"s\",\n },\n];\n\n/**\n * Default animation settings\n */\nexport const defaultAnimationSettings: AnimationSettings = {\n type: \"fadeInUp\",\n duration: 0.6,\n delay: 0,\n easing: \"easeOut\",\n trigger: \"onScroll\",\n infinite: false,\n iterations: 1,\n stagger: false,\n staggerDelay: 0.1,\n};\n","/**\n * Field Definition Types\n * Used for defining customizable settings in sections, blocks, and themes\n */\n\nimport type { WebsiteSettings } from \"./website-settings\";\n\n/**\n * Field types - all available field types for component settings\n */\nexport const FIELD_TYPES = {\n // Basic Inputs\n TEXT: \"text\",\n TEXTAREA: \"textarea\",\n NUMBER: \"number\",\n CHECKBOX: \"checkbox\",\n BOOLEAN: \"boolean\",\n SELECT: \"select\",\n RADIO: \"radio\",\n\n // Advanced Inputs\n RANGE: \"range\",\n URL: \"url\",\n RICHTEXT: \"richtext\",\n\n // Color & Style\n COLOR: \"color\",\n COLOR_BACKGROUND: \"color_background\",\n\n // Media\n IMAGE: \"image\",\n IMAGE_PICKER: \"image_picker\",\n VIDEO: \"video\",\n VIDEO_URL: \"video_url\",\n FONT: \"font\",\n FONT_PICKER: \"font_picker\",\n\n // Text Variants\n INLINE_RICHTEXT: \"inline_richtext\",\n TEXT_ALIGNMENT: \"text_alignment\",\n\n // Code Editors\n HTML: \"html\",\n\n // Complex Types\n ARRAY: \"array\",\n REPEATER: \"repeater\",\n\n // Content Types\n COLLECTION: \"collection\",\n PRODUCT: \"product\",\n BLOG: \"blog\",\n ARTICLE: \"article\",\n PAGE: \"page\",\n} as const;\n\nexport type FieldType = (typeof FIELD_TYPES)[keyof typeof FIELD_TYPES];\n\nexport interface BaseFieldDefinition {\n /** Unique identifier for the field */\n id: string;\n\n /** Field type */\n type: FieldType;\n\n /** Display label */\n label: string;\n\n /** Help text or description */\n info?: string;\n\n /** Whether the field is required */\n required?: boolean;\n\n /** Placeholder text */\n placeholder?: string;\n}\n\nexport interface TextFieldDefinition extends BaseFieldDefinition {\n type: \"text\";\n default?: string;\n maxLength?: number;\n}\n\nexport interface TextareaFieldDefinition extends BaseFieldDefinition {\n type: \"textarea\";\n default?: string;\n maxLength?: number;\n rows?: number;\n}\n\nexport interface NumberFieldDefinition extends BaseFieldDefinition {\n type: \"number\";\n default?: number;\n min?: number;\n max?: number;\n step?: number;\n unit?: string;\n}\n\nexport interface RangeFieldDefinition extends BaseFieldDefinition {\n type: \"range\";\n default?: number;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n}\n\nexport interface ColorFieldDefinition extends BaseFieldDefinition {\n type: \"color\";\n default?: string;\n}\n\nexport interface ImageFieldDefinition extends BaseFieldDefinition {\n type: \"image\";\n default?: string;\n accept?: string[];\n}\n\nexport interface SelectFieldDefinition extends BaseFieldDefinition {\n type: \"select\";\n default?: string;\n options: Array<{\n label: string;\n value: string;\n }>;\n}\n\nexport interface CheckboxFieldDefinition extends BaseFieldDefinition {\n type: \"checkbox\";\n default?: boolean;\n}\n\nexport interface BooleanFieldDefinition extends BaseFieldDefinition {\n type: \"boolean\";\n default?: boolean;\n}\n\nexport interface RadioFieldDefinition extends BaseFieldDefinition {\n type: \"radio\";\n default?: string;\n options: Array<{\n label: string;\n value: string;\n }>;\n}\n\nexport interface UrlFieldDefinition extends BaseFieldDefinition {\n type: \"url\";\n default?: string;\n}\n\nexport interface RichTextFieldDefinition extends BaseFieldDefinition {\n type: \"richtext\";\n default?: string;\n}\n\nexport interface VideoFieldDefinition extends BaseFieldDefinition {\n type: \"video\";\n default?: string;\n accept?: string[];\n}\n\nexport interface FontFieldDefinition extends BaseFieldDefinition {\n type: \"font\";\n default?: string;\n}\n\nexport interface ArrayFieldDefinition extends BaseFieldDefinition {\n type: \"array\";\n default?: unknown[];\n itemSchema?: Record<string, unknown>;\n}\n\nexport interface CollectionFieldDefinition extends BaseFieldDefinition {\n type: \"collection\";\n default?: string;\n}\n\nexport interface ProductFieldDefinition extends BaseFieldDefinition {\n type: \"product\";\n default?: string;\n}\n\nexport interface BlogFieldDefinition extends BaseFieldDefinition {\n type: \"blog\";\n default?: string;\n}\n\nexport interface ArticleFieldDefinition extends BaseFieldDefinition {\n type: \"article\";\n default?: string;\n}\n\nexport interface PageFieldDefinition extends BaseFieldDefinition {\n type: \"page\";\n default?: string;\n}\n\nexport interface RepeaterFieldDefinition extends BaseFieldDefinition {\n type: \"repeater\";\n default?: unknown[];\n itemFields?: FieldDefinition[];\n}\n\nexport interface TextAlignmentFieldDefinition extends BaseFieldDefinition {\n type: \"text_alignment\";\n default?: \"left\" | \"center\" | \"right\";\n}\n\nexport interface InlineRichTextFieldDefinition extends BaseFieldDefinition {\n type: \"inline_richtext\";\n default?: string;\n maxLength?: number;\n}\n\nexport interface VideoUrlFieldDefinition extends BaseFieldDefinition {\n type: \"video_url\";\n default?: string;\n accept?: (\"youtube\" | \"vimeo\")[];\n}\n\nexport interface HtmlFieldDefinition extends BaseFieldDefinition {\n type: \"html\";\n default?: string;\n}\n\nexport interface ColorBackgroundFieldDefinition extends BaseFieldDefinition {\n type: \"color_background\";\n default?: string;\n supportsGradient?: boolean;\n}\n\nexport interface FontPickerFieldDefinition extends BaseFieldDefinition {\n type: \"font_picker\";\n default?: string;\n}\n\nexport interface ImagePickerFieldDefinition extends BaseFieldDefinition {\n type: \"image_picker\";\n default?: string;\n accept?: string[];\n}\n\n/**\n * Union type of all field definitions\n */\nexport type FieldDefinition =\n | TextFieldDefinition\n | TextareaFieldDefinition\n | NumberFieldDefinition\n | RangeFieldDefinition\n | ColorFieldDefinition\n | ImageFieldDefinition\n | SelectFieldDefinition\n | CheckboxFieldDefinition\n | BooleanFieldDefinition\n | RadioFieldDefinition\n | UrlFieldDefinition\n | RichTextFieldDefinition\n | VideoFieldDefinition\n | FontFieldDefinition\n | ArrayFieldDefinition\n | RepeaterFieldDefinition\n | CollectionFieldDefinition\n | ProductFieldDefinition\n | BlogFieldDefinition\n | ArticleFieldDefinition\n | PageFieldDefinition\n | TextAlignmentFieldDefinition\n | InlineRichTextFieldDefinition\n | VideoUrlFieldDefinition\n | HtmlFieldDefinition\n | ColorBackgroundFieldDefinition\n | FontPickerFieldDefinition\n | ImagePickerFieldDefinition;\n\n/**\n * Setting Value Types\n */\nexport type SettingValue =\n | string\n | number\n | boolean\n | string[]\n | unknown[]\n | undefined;\n\n/**\n * Settings object - maps field IDs to their values\n * Extended with WebsiteSettings for dynamic website configuration\n */\nexport interface Settings extends WebsiteSettings {\n [key: string]: SettingValue | unknown;\n}\n","/**\n * Section Type Definitions\n * Sections are the main building blocks of pages\n */\n\nimport type { FieldDefinition, Settings } from \"./fields\";\nimport type { BlockDefinition, BlockInstance } from \"./block\";\nimport type { BaseEntity } from \"./base\";\n\n/**\n * Template Definition - A variant layout for a section type\n */\nexport interface TemplateDefinition {\n /** Unique template identifier (e.g., \"default\", \"minimal\", \"split\") */\n id: string;\n\n /** Display name */\n name: string;\n\n /** Description of this template variant */\n description?: string;\n\n /** Preview image URL */\n preview?: string;\n\n /** Template-specific settings (overrides section settings) */\n settings?: FieldDefinition[];\n\n /** Default settings for this template */\n defaults?: Settings;\n\n /** Whether this is the default template */\n isDefault?: boolean;\n}\n\n/**\n * Section Schema - Blueprint for a section type\n */\nexport interface SectionSchema {\n /** Unique section type identifier (e.g., \"hero\", \"features\") */\n type: string;\n\n /** Display name */\n name: string;\n\n /** Description */\n description?: string;\n\n /** Category for organization (e.g., \"headers\", \"content\", \"footers\") */\n category: string;\n\n /** Icon identifier for UI */\n icon?: string;\n\n /** Available templates for this section */\n templates: TemplateDefinition[];\n\n /** Base settings (applied to all templates) */\n settings: FieldDefinition[];\n\n /** Default settings values */\n defaults: Settings;\n\n /** Block types that can be added to this section */\n blocks?: BlockDefinition[];\n\n /** Maximum number of blocks allowed */\n maxBlocks?: number;\n\n /** Whether blocks are sortable */\n sortableBlocks?: boolean;\n\n /** Whether this section is a global section (e.g., header, footer) */\n global?: boolean;\n\n /** Tags for searching/filtering */\n tags?: string[];\n\n /** Whether this section can be disabled */\n disableable?: boolean;\n}\n\n/**\n * Component Instance - Individual UI element with own settings\n * Simplified version for sections - uses single settings object\n * For detailed component instances, see ComponentInstance in component.ts\n */\nexport interface SectionComponentInstance extends BaseEntity {\n /** Component type (e.g., \"heading\", \"button\", \"image\") */\n type: string;\n\n /** Component settings values (legacy - prefer content/style split) */\n settings?: Settings;\n\n /** Content settings (text, url, image src, etc.) */\n content?: Settings;\n\n /** Style settings */\n style?: Settings;\n\n /** Style mode - basic uses presets, advanced uses custom values */\n styleMode?: \"basic\" | \"advanced\";\n\n /** Display order in the section */\n order: number;\n\n /** Whether the component is enabled/visible */\n enabled?: boolean;\n}\n\n/**\n * Section Instance - Actual section data in a page\n */\nexport interface SectionInstance extends BaseEntity {\n /** Section type reference */\n type: string;\n\n /** Selected template ID */\n template: string;\n\n /** Custom name for this instance */\n name?: string;\n\n /** Current settings values */\n settings: Settings;\n\n /** Component instances in this section (individual UI elements) */\n components?: SectionComponentInstance[];\n\n /** Block instances in this section */\n blocks?: BlockInstance[];\n\n /** Display order on the page */\n order: number;\n\n /** Whether the section is enabled/visible */\n enabled?: boolean;\n}\n\n/**\n * Section Registration - Runtime registration info\n */\nexport interface SectionRegistration<TProps = SectionComponentProps> {\n /** Section schema */\n schema: SectionSchema;\n\n /** Base component (may be overridden by template) */\n component: React.ComponentType<TProps>;\n\n /** Template-specific components */\n templateComponents: Map<string, React.ComponentType<SectionComponentProps>>;\n\n /** Registration timestamp */\n registeredAt: Date;\n\n /** Category */\n category: string;\n\n /** Tags for searching */\n tags: string[];\n\n /** Lazy load function */\n lazyLoad?: () => Promise<React.ComponentType<TProps>>;\n}\n\n/**\n * Props passed to section components\n */\nexport interface SectionComponentProps {\n /** Section instance data */\n section: SectionInstance;\n\n /** Section schema */\n schema: SectionSchema;\n\n /** Selected template definition */\n template: TemplateDefinition;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Optional data for sections (e.g., API data in view mode) */\n data?: Record<string, unknown>;\n\n /** Callback when settings change */\n onSettingsChange?: (settings: Settings) => void;\n\n /** Callback when component is added */\n onComponentAdd?: (componentType: string) => void;\n\n /** Callback when component is updated */\n onComponentUpdate?: (\n componentId: string,\n updates: Partial<SectionComponentInstance>\n ) => void;\n\n /** Callback when component is removed */\n onComponentRemove?: (componentId: string) => void;\n\n /** Callback when components are reordered */\n onComponentsReorder?: (componentIds: string[]) => void;\n\n /** Callback when block is added */\n onBlockAdd?: (blockType: string) => void;\n\n /** Callback when block is updated */\n onBlockUpdate?: (blockId: string, settings: Settings) => void;\n\n /** Callback when block is removed */\n onBlockRemove?: (blockId: string) => void;\n\n /** Callback when blocks are reordered */\n onBlocksReorder?: (blockIds: string[]) => void;\n\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Section category definitions\n */\nexport const SECTION_CATEGORIES = {\n HEADER: \"header\",\n HERO: \"hero\",\n CONTENT: \"content\",\n FEATURES: \"features\",\n TESTIMONIALS: \"testimonials\",\n CTA: \"cta\",\n GALLERY: \"gallery\",\n PRICING: \"pricing\",\n FAQ: \"faq\",\n TEAM: \"team\",\n CONTACT: \"contact\",\n FOOTER: \"footer\",\n} as const;\n\nexport type SectionCategory =\n (typeof SECTION_CATEGORIES)[keyof typeof SECTION_CATEGORIES];\n","/**\n * Component Type Definitions\n * Types for the component registry system\n */\n\nimport type { FieldDefinition, Settings, SettingValue } from \"./fields\";\nimport type { BaseEntity } from \"./base\";\n\n/**\n * Responsive breakpoints\n */\nexport type Breakpoint = \"mobile\" | \"tablet\" | \"desktop\";\n\n/**\n * Style Settings\n * Supports basic and advanced CSS properties\n */\nexport interface StyleSettings {\n // Layout & Spacing (Basic)\n margin?: string;\n marginTop?: string;\n marginRight?: string;\n marginBottom?: string;\n marginLeft?: string;\n padding?: string;\n paddingTop?: string;\n paddingRight?: string;\n paddingBottom?: string;\n paddingLeft?: string;\n width?: string;\n height?: string;\n maxWidth?: string;\n minWidth?: string;\n minHeight?: string;\n\n // Colors (Basic)\n backgroundColor?: string;\n color?: string;\n borderColor?: string;\n\n // Typography (Basic)\n fontSize?: string;\n fontWeight?: string;\n lineHeight?: string;\n textAlign?: \"left\" | \"center\" | \"right\" | \"justify\";\n letterSpacing?: string;\n textTransform?: string;\n\n // Borders (Basic)\n borderWidth?: string;\n borderRadius?: string;\n borderStyle?: \"solid\" | \"dashed\" | \"dotted\" | \"none\";\n\n // Advanced CSS (only visible in advanced mode)\n display?: string;\n flexDirection?: string;\n justifyContent?: string;\n alignItems?: string;\n gap?: string;\n gridTemplateColumns?: string;\n gridTemplateRows?: string;\n position?: string;\n top?: string;\n right?: string;\n bottom?: string;\n left?: string;\n zIndex?: string;\n opacity?: string;\n transform?: string;\n transition?: string;\n boxShadow?: string;\n cursor?: string;\n overflow?: string;\n objectFit?: string;\n aspectRatio?: string;\n\n // Custom CSS classes\n customClasses?: string;\n\n // Allow any other CSS properties\n [key: string]: SettingValue;\n}\n\n/**\n * Responsive style settings\n */\nexport interface ResponsiveStyles {\n mobile?: Partial<StyleSettings>;\n tablet?: Partial<StyleSettings>;\n desktop?: Partial<StyleSettings>;\n}\n\n/**\n * Component Definition - Blueprint for a component type\n */\nexport interface ComponentDefinition {\n /** Unique type identifier (e.g., 'heading', 'button') */\n type: ComponentType;\n\n /** Display name */\n name: string;\n\n /** Description */\n description?: string;\n\n /** Icon identifier */\n icon?: string;\n\n /** Category (text, media, interactive, layout) */\n category: ComponentCategory;\n\n /** Content settings (text, url, etc.) */\n contentSettings: FieldDefinition[];\n\n /** Style settings - Basic styles shown by default */\n basicStyleSettings: FieldDefinition[];\n\n /** Advanced style settings - Shown when user toggles advanced mode */\n advancedStyleSettings: FieldDefinition[];\n\n /** Default content values */\n contentDefaults: Settings;\n\n /** Default style values */\n styleDefaults: StyleSettings;\n\n /** Whether this component supports responsive styles */\n supportsResponsive: boolean;\n\n /** Tags for search */\n tags?: string[];\n}\n\n/**\n * Component Instance - Actual component in a section\n */\nexport interface ComponentInstance extends BaseEntity {\n /** Component type reference */\n type: ComponentType;\n\n /** Content settings (text, url, image src, etc.) */\n content: Settings;\n\n /** Style settings */\n style: StyleSettings;\n\n /** Style mode - basic uses presets, advanced uses custom values */\n styleMode?: \"basic\" | \"advanced\";\n\n /** Responsive style overrides */\n responsiveStyle?: ResponsiveStyles;\n\n /** Display order */\n order: number;\n\n /** Whether enabled */\n enabled?: boolean;\n}\n\n/**\n * Component Registration - Runtime info\n */\nexport interface ComponentRegistration {\n /** Component definition */\n definition: ComponentDefinition;\n\n /** React component */\n component: React.ComponentType<ComponentProps>;\n\n /** Registration timestamp */\n registeredAt: Date;\n\n /** Category */\n category: ComponentCategory;\n\n /** Tags */\n tags: string[];\n}\n\n/**\n * Props passed to component React components\n */\nexport interface ComponentProps {\n /** Component instance data */\n component: ComponentInstance;\n\n /** Component definition */\n definition: ComponentDefinition;\n\n /** Section ID (for component detection) */\n sectionId?: string;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Additional data (e.g., website settings) */\n data?: Record<string, unknown>;\n\n /** Callback when content changes */\n onContentChange?: (content: Settings) => void;\n\n /** Callback when style changes */\n onStyleChange?: (style: StyleSettings, breakpoint?: Breakpoint) => void;\n\n /** Callback when component should be removed */\n onRemove?: () => void;\n\n /** Additional classes */\n className?: string;\n\n /** Children for container components */\n children?: React.ReactNode;\n}\n\n/**\n * Component categories\n */\nexport const COMPONENT_CATEGORIES = {\n TEXT: \"text\",\n MEDIA: \"media\",\n INTERACTIVE: \"interactive\",\n FORM: \"form\",\n LAYOUT: \"layout\",\n ADVANCED: \"advanced\",\n} as const;\n\nexport type ComponentCategory =\n (typeof COMPONENT_CATEGORIES)[keyof typeof COMPONENT_CATEGORIES];\n\n/**\n * Component types - all available component types\n */\nexport const COMPONENT_TYPES = {\n // Form\n INPUT: \"input\",\n TEXTAREA: \"textarea\",\n SELECT: \"select\",\n CHECKBOX: \"checkbox\",\n\n // Text\n HEADING: \"heading\",\n PARAGRAPH: \"paragraph\",\n QUOTE: \"quote\",\n BADGE: \"badge\",\n COMPANY_INFO: \"company-info\",\n\n // Media\n IMAGE: \"image\",\n VIDEO: \"video\",\n ICON: \"icon\",\n GALLERY: \"gallery\",\n\n // Interactive\n BUTTON: \"button\",\n LINK: \"link\",\n RATING: \"rating\",\n SOCIAL_LINKS: \"social-links\",\n HOTLINE_CONTACTS: \"hotline-contacts\",\n\n // Layout\n GRID: \"grid\",\n COLUMNS: \"columns\",\n CARD: \"card\",\n CONTAINER: \"container\",\n DIVIDER: \"divider\",\n SPACER: \"spacer\",\n MAP: \"map\",\n\n // Advanced\n PROGRESS: \"progress\",\n ALERT: \"alert\",\n CODE: \"code\",\n TIMER: \"timer\",\n ACCORDION: \"accordion\",\n TABS: \"tabs\",\n TABLE: \"table\",\n LIST: \"list\",\n\n // Blocks\n FEATURE_CARD: \"feature-card\",\n PRODUCT_CARD: \"product-card\",\n BLOG_CARD: \"blog-card\",\n} as const;\n\nexport type ComponentType =\n (typeof COMPONENT_TYPES)[keyof typeof COMPONENT_TYPES];\n\n/**\n * Apply scope - when changing component settings\n */\nexport type ApplyScope = \"instance\" | \"all\";\n\n/**\n * Apply scope dialog result\n */\nexport interface ApplyScopeResult {\n scope: ApplyScope;\n componentType: ComponentType;\n}\n","/**\n * Editor Type Definitions\n * Types for the visual editor and customization interface\n */\n\nimport type { SectionInstance } from \"./section\";\nimport type { BlockInstance } from \"./block\";\nimport type { Settings, FieldDefinition, SettingValue } from \"./fields\";\nimport type { ThemeLayoutConfig } from \"./page\";\n\n/**\n * JSON-serializable value type\n */\nexport type JSONValue =\n | string\n | number\n | boolean\n | null\n | JSONObject\n | JSONArray;\nexport interface JSONObject {\n [key: string]: JSONValue;\n}\nexport type JSONArray = JSONValue[];\n\n/**\n * Element Type Enumeration\n * Visual DOM element types that can be edited inline\n * (Different from FieldType which defines settings panel inputs)\n */\nexport type ElementType =\n | \"text\" // h1, h2, h3, h4, h5, h6, p, span\n | \"button\" // button, a with button styling\n | \"image\" // img tags\n | \"link\" // a tags\n | \"video\" // video, iframe (YouTube, Vimeo)\n | \"icon\" // svg icons, icon components\n | \"form\" // input, textarea, select\n | \"richtext\" // contentEditable divs\n | \"chart\" // extensible for future types\n | \"map\"\n | \"countdown\";\n\n/**\n * Element Metadata\n * Information about a selected editable element\n */\nexport interface ElementMetadata {\n /** Component instance ID (if element is a component instance) */\n componentId?: string;\n\n /** Field ID from section/component schema */\n fieldId: string;\n\n /** Human-readable field label */\n fieldLabel: string;\n\n /** Type of visual element */\n elementType: ElementType;\n\n /** Parent section ID */\n sectionId: string;\n\n /** Parent block ID (if element is inside a block) */\n blockId?: string;\n\n /** Whether to show inline popover editor */\n isInline: boolean;\n\n /** Element's bounding rectangle */\n bounds: DOMRect;\n\n /** Current field value */\n currentValue: SettingValue;\n}\n\n/**\n * Detection Priority\n * Defines the order in which elements are detected\n */\nexport type DetectionPriority = \"component\" | \"block\" | \"section\";\n\n/**\n * Detection Strategy\n * Controls how the inspector overlay detects selectable items\n */\nexport interface DetectionStrategy {\n /** Priority order for detection (element → component → block → section) */\n priority: DetectionPriority[];\n\n /** Whether to stop at first match or continue traversing */\n stopAtFirstMatch: boolean;\n\n /** Maximum depth to traverse up the DOM tree */\n maxDepth?: number;\n}\n\n/**\n * Detection Result\n * Result of DOM traversal detection\n */\nexport type DetectionResult =\n | {\n type: \"component\";\n sectionId: string;\n componentId: string;\n componentType: string;\n element: HTMLElement;\n }\n | {\n type: \"block\";\n sectionId: string;\n blockId: string;\n element: HTMLElement;\n }\n | { type: \"section\"; sectionId: string; element: HTMLElement }\n | { type: \"none\" };\n\n/**\n * Inline Editor State\n */\nexport interface InlineEditorState {\n /** Whether inline editor is visible */\n visible: boolean;\n\n /** Position for popover */\n position: { top: number; left: number };\n\n /** Type of element being edited */\n elementType: ElementType;\n\n /** Current value */\n currentValue: SettingValue;\n\n /** Field definition from schema */\n fieldDefinition?: FieldDefinition;\n}\n\n/**\n * Props for inline editor components\n */\nexport interface InlineEditorProps {\n /** Selected element info */\n selectedElement: SelectedElement;\n\n /** Current field value */\n currentValue: SettingValue;\n\n /** Field definition from schema */\n fieldDefinition: FieldDefinition;\n\n /** Update callback */\n onUpdate: (value: SettingValue) => void;\n\n /** Close callback */\n onClose: () => void;\n\n /** Popover position */\n position?: { top: number; left: number };\n}\n\n/**\n * Inspector Configuration\n */\nexport interface InspectorConfig {\n /** Detection strategy (element-first by default) */\n strategy: DetectionStrategy;\n\n /** Whether to show element outlines on hover */\n showElementOutlines: boolean;\n\n /** Whether to show element tooltips */\n showTooltips: boolean;\n\n /** Outline color for different types */\n outlineColors: {\n component: string;\n block: string;\n section: string;\n };\n}\n\n/**\n * Default Inspector Configuration\n * Detection priority: component → block → section\n */\nexport const DEFAULT_INSPECTOR_CONFIG: InspectorConfig = {\n strategy: {\n priority: [\"component\", \"block\", \"section\"],\n stopAtFirstMatch: true,\n maxDepth: 50,\n },\n showElementOutlines: true,\n showTooltips: true,\n outlineColors: {\n component: \"#14b8a6\", // Teal - component instances\n block: \"#f59e0b\", // Orange - block instances\n section: \"#3b82f6\", // Blue - section instances\n },\n};\n\n/**\n * Editor Mode\n */\nexport type EditorMode = \"view\" | \"edit\" | \"preview\";\n\n/**\n * Icon Sidebar View\n * Determines which panel is shown in the left sidebar\n */\nexport type IconSidebarView = \"sections\" | \"page-seo\" | \"theme-settings\";\n\n/**\n * Selected Element Type\n */\nexport type SelectedElementType = \"section\" | \"block\" | \"component\" | \"none\";\n\n/**\n * Selected Element Info\n */\nexport interface SelectedElement {\n /** Type of selected element */\n type: SelectedElementType;\n\n /** Element ID */\n id: string;\n\n /** Section ID (for section, component, block, and element selections) */\n sectionId: string;\n\n /** Component ID (only for component selections) */\n componentId?: string;\n\n /** Component type (only for component selections) */\n componentType?: string;\n\n /** Block ID (only for block selections) */\n blockId?: string;\n\n /** Block type (only for block selections) */\n blockType?: string;\n\n /** DOM element reference */\n element?: HTMLElement;\n\n /** Bounding rect for overlay positioning */\n rect?: DOMRect;\n}\n\n/**\n * Editor State\n */\nexport interface EditorState {\n /** Current editor mode */\n mode: EditorMode;\n\n /** Currently selected element */\n selected: SelectedElement | null;\n\n /** Whether the settings panel is open */\n settingsPanelOpen: boolean;\n\n /** Whether the sections panel is open */\n sectionsPanelOpen: boolean;\n\n /** Current page being edited */\n pageId: string | null;\n\n /** Whether there are unsaved changes */\n hasUnsavedChanges: boolean;\n\n /** Undo/redo stack depth */\n historyIndex: number;\n\n /** Total history entries */\n historyLength: number;\n\n /** Current icon sidebar view (sections or theme settings) */\n iconSidebarView: IconSidebarView;\n\n /** Current theme configuration */\n themeConfig: ThemeLayoutConfig | null;\n\n /** Left panel width (for persistence) */\n leftPanelWidth: number;\n\n /** Current company ID */\n companyId: string;\n\n /** Current theme ID */\n themeId: string;\n\n /** Available section schemas for the current theme */\n themeSchemas: import(\"./section\").SectionSchema[];\n\n /** Page SEO configuration */\n pageSeo: import(\"./page\").PageSEO | null;\n}\n\n/**\n * Editor Actions\n */\nexport interface EditorActions {\n /** Set editor mode */\n setMode: (mode: EditorMode) => void;\n\n /** Select an element */\n selectElement: (element: SelectedElement | null) => void;\n\n /** Toggle settings panel */\n toggleSettingsPanel: (open?: boolean) => void;\n\n /** Toggle sections panel */\n toggleSectionsPanel: (open?: boolean) => void;\n\n /** Update section settings */\n updateSectionSettings: (sectionId: string, settings: Settings) => void;\n\n /** Update component settings */\n updateComponentSettings: (\n sectionId: string,\n componentId: string,\n updates: Partial<{\n content: Settings;\n style: Settings;\n }>\n ) => void;\n\n /** Update block settings */\n updateBlockSettings: (\n sectionId: string,\n blockId: string,\n settings: Settings\n ) => void;\n\n /** Add section to page */\n addSection: (sectionType: string, templateId: string, order?: number) => void;\n\n /** Remove section from page */\n removeSection: (sectionId: string) => void;\n\n /** Reorder sections */\n reorderSections: (sectionIds: string[]) => void;\n\n /** Add component to section */\n addComponent: (sectionId: string, componentType: string) => void;\n\n /** Remove component from section */\n removeComponent: (sectionId: string, componentId: string) => void;\n\n /** Reorder components in section */\n reorderComponents: (sectionId: string, componentIds: string[]) => void;\n\n /** Add block to section */\n addBlock: (sectionId: string, blockType: string) => void;\n\n /** Remove block from section */\n removeBlock: (sectionId: string, blockId: string) => void;\n\n /** Reorder blocks in section */\n reorderBlocks: (sectionId: string, blockIds: string[]) => void;\n\n /** Duplicate section */\n duplicateSection: (sectionId: string) => void;\n\n /** Toggle section visibility */\n toggleSectionVisibility: (sectionId: string) => void;\n\n /** Change section template */\n changeSectionTemplate: (sectionId: string, templateId: string) => void;\n\n /** Replace all sections (used when switching page templates) */\n replaceAllSections: (newSections: SectionInstance[]) => void;\n\n /** Save changes */\n save: () => Promise<void>;\n\n /** Discard changes */\n discard: () => void;\n\n /** Undo last action */\n undo: () => void;\n\n /** Redo last undone action */\n redo: () => void;\n\n /** Check if can undo */\n canUndo: () => boolean;\n\n /** Check if can redo */\n canRedo: () => boolean;\n\n /** Set icon sidebar view */\n setIconSidebarView: (view: IconSidebarView) => void;\n\n /** Load theme configuration */\n loadThemeConfig: (themeId: string) => Promise<void>;\n\n /** Update theme global settings */\n updateThemeGlobalSettings: (settings: Record<string, unknown>) => void;\n\n /** Update theme metadata */\n updateThemeMetadata: (metadata: Partial<ThemeLayoutConfig>) => void;\n\n /** Save theme configuration */\n saveThemeConfig: () => Promise<void>;\n\n /** Add header section to theme */\n addHeaderSection: (sectionType: string, templateId: string) => void;\n\n /** Remove header section from theme */\n removeHeaderSection: (index: number) => void;\n\n /** Update header section in theme */\n updateHeaderSection: (\n index: number,\n updates: Record<string, unknown>\n ) => void;\n\n /** Add footer section to theme */\n addFooterSection: (sectionType: string, templateId: string) => void;\n\n /** Remove footer section from theme */\n removeFooterSection: (index: number) => void;\n\n /** Update footer section in theme */\n updateFooterSection: (\n index: number,\n updates: Record<string, unknown>\n ) => void;\n\n /** Set left panel width */\n setLeftPanelWidth: (width: number) => void;\n\n /** Update page SEO */\n updatePageSeo: (seo: Partial<import(\"./page\").PageSEO>) => void;\n}\n\n/**\n * Editor Context Value\n */\nexport interface EditorContextValue {\n /** Current state */\n state: EditorState;\n\n /** Available actions */\n actions: EditorActions;\n\n /** Current page sections */\n sections: SectionInstance[];\n}\n\n/**\n * Inspector Overlay State\n */\nexport interface InspectorOverlayState {\n /** Hovered element info */\n hovered: SelectedElement | null;\n\n /** Whether to show overlay */\n visible: boolean;\n}\n\n/**\n * Change History Entry\n */\nexport interface HistoryEntry {\n /** Unique entry ID */\n id: string;\n\n /** Action type */\n action: string;\n\n /** Previous state snapshot */\n before: JSONValue;\n\n /** New state snapshot */\n after: JSONValue;\n\n /** Timestamp */\n timestamp: Date;\n\n /** User-friendly description */\n description: string;\n}\n\n/**\n * Drag and Drop Context\n */\nexport interface DragDropContext {\n /** Item being dragged */\n draggedItem: {\n type: \"section\" | \"component\" | \"block\";\n id: string;\n data:\n | SectionInstance\n | import(\"./section\").SectionComponentInstance\n | BlockInstance;\n } | null;\n\n /** Drop target info */\n dropTarget: {\n type: \"section\" | \"component\" | \"block\";\n id: string;\n position: \"before\" | \"after\" | \"inside\";\n } | null;\n\n /** Start dragging */\n startDrag: (item: DragDropContext[\"draggedItem\"]) => void;\n\n /** Update drop target */\n updateDropTarget: (target: DragDropContext[\"dropTarget\"]) => void;\n\n /** End dragging */\n endDrag: () => void;\n}\n\n/**\n * Keyboard Shortcuts\n */\nexport interface KeyboardShortcut {\n /** Shortcut key combination */\n keys: string[];\n\n /** Action to perform */\n action: () => void;\n\n /** Description */\n description: string;\n\n /** Whether enabled */\n enabled?: boolean;\n}\n","/**\n * Block Registry Implementation\n * Registry for repeatable block components\n */\n\nimport type {\n BlockRegistry,\n RegistryConfig,\n RegistryEvent,\n RegistryEventType,\n RegistryEventHandler,\n BlockRegisteredPayload,\n BlockUnregisteredPayload,\n} from \"../types/registry\";\nimport type {\n BlockDefinition,\n BlockRegistration,\n BlockComponentProps,\n} from \"../types/block\";\nimport React from \"react\";\n\n/**\n * Create a new block registry instance\n */\nexport function createBlockRegistry(\n config: RegistryConfig = {}\n): BlockRegistry {\n const { debug = false, allowOverride = false, maxBlocks = 200 } = config;\n\n // Main registry\n const blocks = new Map<string, BlockRegistration>();\n const categories = new Map<string, Set<string>>();\n const tags = new Map<string, Set<string>>();\n\n // Event listeners\n const eventListeners = new Map<\n RegistryEventType,\n Set<RegistryEventHandler>\n >();\n\n /**\n * Emit an event\n */\n function emit<TPayload>(type: RegistryEventType, payload: TPayload): void {\n const event: RegistryEvent<TPayload> = {\n type,\n payload,\n timestamp: new Date(),\n };\n\n const listeners = eventListeners.get(type);\n if (listeners) {\n // Cast handler to accept any payload type\n listeners.forEach((handler) =>\n (handler as (event: RegistryEvent<TPayload>) => void)(event)\n );\n }\n\n if (debug) {\n }\n }\n\n /**\n * Register a block type\n */\n function register<T>(\n blockType: string,\n definition: BlockDefinition,\n component: React.ComponentType<T>,\n options?: {\n category?: string;\n tags?: string[];\n }\n ): void {\n // Validate\n if (!blockType) {\n throw new Error(\"Block type is required\");\n }\n\n if (blocks.has(blockType) && !allowOverride) {\n throw new Error(`Block \"${blockType}\" is already registered`);\n }\n\n if (blocks.size >= maxBlocks) {\n throw new Error(`Maximum number of blocks (${maxBlocks}) reached`);\n }\n\n // Create registration\n const registration: BlockRegistration = {\n definition,\n component: component as React.ComponentType<BlockComponentProps>,\n registeredAt: new Date(),\n tags: options?.tags || [],\n };\n\n // Store registration\n blocks.set(blockType, registration);\n\n // Index by category\n const category = options?.category || definition.category || \"general\";\n if (!categories.has(category)) {\n categories.set(category, new Set());\n }\n categories.get(category)!.add(blockType);\n\n // Index by tags\n if (options?.tags) {\n options.tags.forEach((tag) => {\n if (!tags.has(tag)) {\n tags.set(tag, new Set());\n }\n tags.get(tag)!.add(blockType);\n });\n }\n\n // Emit event\n emit<BlockRegisteredPayload>(\"block:registered\", {\n type: blockType,\n definition,\n });\n\n if (debug) {\n }\n }\n\n /**\n * Get a block registration\n */\n function get(blockType: string): BlockRegistration | undefined {\n return blocks.get(blockType);\n }\n\n /**\n * Check if a block is registered\n */\n function has(blockType: string): boolean {\n return blocks.has(blockType);\n }\n\n /**\n * Unregister a block\n */\n function unregister(blockType: string): boolean {\n const registration = blocks.get(blockType);\n\n if (!registration) {\n return false;\n }\n\n // Remove from maps\n blocks.delete(blockType);\n\n // Remove from category index\n categories.forEach((types) => {\n types.delete(blockType);\n });\n\n // Remove from tags index\n tags.forEach((types) => {\n types.delete(blockType);\n });\n\n // Emit event\n emit<BlockUnregisteredPayload>(\"block:unregistered\", {\n type: blockType,\n });\n\n if (debug) {\n }\n\n return true;\n }\n\n /**\n * Get all registrations\n */\n function getAll(): Map<string, BlockRegistration> {\n return new Map(blocks);\n }\n\n /**\n * Add event listener\n */\n function on<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n if (!eventListeners.has(eventType)) {\n eventListeners.set(eventType, new Set());\n }\n eventListeners.get(eventType)!.add(handler as RegistryEventHandler);\n }\n\n /**\n * Remove event listener\n */\n function off<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n eventListeners.get(eventType)?.delete(handler as RegistryEventHandler);\n }\n\n /**\n * Clear all registrations\n */\n function clear(): void {\n blocks.clear();\n categories.clear();\n tags.clear();\n\n if (debug) {\n }\n }\n\n return {\n register,\n get,\n has,\n unregister,\n getAll,\n on,\n off,\n clear,\n };\n}\n\n/**\n * Global block registry instance\n */\nexport const blockRegistry = createBlockRegistry({\n debug: process.env.NODE_ENV === \"development\",\n // Allow override in all environments to support theme block overrides\n allowOverride: true,\n});\n","/**\n * Component Registry\n * Central registry for all component types\n */\n\nimport type {\n ComponentDefinition,\n ComponentRegistration,\n ComponentCategory,\n ComponentProps,\n} from \"../types/component\";\nimport { EventEmitter } from \"events\";\n\n/**\n * Component Registry Class\n */\nclass ComponentRegistry {\n // Core storage\n private components = new Map<string, ComponentRegistration>();\n private categories = new Map<ComponentCategory, Set<string>>();\n private tags = new Map<string, Set<string>>();\n\n // Event emitter for registry changes\n private events = new EventEmitter();\n\n /**\n * Register a component type\n */\n register(\n type: string,\n definition: ComponentDefinition,\n component: React.ComponentType<ComponentProps>,\n options?: {\n category?: ComponentCategory;\n tags?: string[];\n }\n ): void {\n const registration: ComponentRegistration = {\n definition,\n component,\n registeredAt: new Date(),\n category: options?.category || definition.category,\n tags: options?.tags || definition.tags || [],\n };\n\n this.components.set(type, registration);\n\n // Index by category\n const categorySet = this.categories.get(registration.category) || new Set();\n categorySet.add(type);\n this.categories.set(registration.category, categorySet);\n\n // Index by tags\n registration.tags.forEach((tag) => {\n const tagSet = this.tags.get(tag) || new Set();\n tagSet.add(type);\n this.tags.set(tag, tagSet);\n });\n\n // Emit event\n this.events.emit(\"component:registered\", { type, registration });\n }\n\n /**\n * Unregister a component type\n */\n unregister(type: string): boolean {\n const registration = this.components.get(type);\n if (!registration) return false;\n\n // Remove from components\n this.components.delete(type);\n\n // Remove from category index\n const categorySet = this.categories.get(registration.category);\n if (categorySet) {\n categorySet.delete(type);\n if (categorySet.size === 0) {\n this.categories.delete(registration.category);\n }\n }\n\n // Remove from tag indexes\n registration.tags.forEach((tag) => {\n const tagSet = this.tags.get(tag);\n if (tagSet) {\n tagSet.delete(type);\n if (tagSet.size === 0) {\n this.tags.delete(tag);\n }\n }\n });\n\n // Emit event\n this.events.emit(\"component:unregistered\", { type });\n\n return true;\n }\n\n /**\n * Get component by type\n */\n get(type: string): ComponentRegistration | undefined {\n return this.components.get(type);\n }\n\n /**\n * Get component definition by type\n */\n getDefinition(type: string): ComponentDefinition | undefined {\n return this.components.get(type)?.definition;\n }\n\n /**\n * Get component React component by type\n */\n getComponent(type: string): React.ComponentType<ComponentProps> | undefined {\n return this.components.get(type)?.component;\n }\n\n /**\n * Get all components\n */\n getAll(): Map<string, ComponentRegistration> {\n return new Map(this.components);\n }\n\n /**\n * Get all component types\n */\n getAllTypes(): string[] {\n return Array.from(this.components.keys());\n }\n\n /**\n * Get components by category\n */\n getByCategory(category: ComponentCategory): ComponentRegistration[] {\n const types = this.categories.get(category);\n if (!types) return [];\n\n return Array.from(types)\n .map((type) => this.components.get(type))\n .filter((reg): reg is ComponentRegistration => reg !== undefined);\n }\n\n /**\n * Get components by tag\n */\n getByTag(tag: string): ComponentRegistration[] {\n const types = this.tags.get(tag);\n if (!types) return [];\n\n return Array.from(types)\n .map((type) => this.components.get(type))\n .filter((reg): reg is ComponentRegistration => reg !== undefined);\n }\n\n /**\n * Search components\n */\n search(query: string): ComponentRegistration[] {\n const lowerQuery = query.toLowerCase();\n return Array.from(this.components.values()).filter(\n (reg) =>\n reg.definition.name.toLowerCase().includes(lowerQuery) ||\n reg.definition.description?.toLowerCase().includes(lowerQuery) ||\n reg.tags.some((tag) => tag.toLowerCase().includes(lowerQuery))\n );\n }\n\n /**\n * Get all categories\n */\n getCategories(): ComponentCategory[] {\n return Array.from(this.categories.keys());\n }\n\n /**\n * Get all tags\n */\n getTags(): string[] {\n return Array.from(this.tags.keys());\n }\n\n /**\n * Check if component type exists\n */\n has(type: string): boolean {\n return this.components.has(type);\n }\n\n /**\n * Get component count\n */\n count(): number {\n return this.components.size;\n }\n\n /**\n * Get component count by category\n */\n countByCategory(category: ComponentCategory): number {\n return this.categories.get(category)?.size || 0;\n }\n\n /**\n * Subscribe to registry events\n */\n on(event: string, handler: (...args: unknown[]) => void): void {\n this.events.on(event, handler);\n }\n\n /**\n * Unsubscribe from registry events\n */\n off(event: string, handler: (...args: unknown[]) => void): void {\n this.events.off(event, handler);\n }\n\n /**\n * Clear all components (for testing)\n */\n clear(): void {\n this.components.clear();\n this.categories.clear();\n this.tags.clear();\n this.events.emit(\"registry:cleared\");\n }\n}\n\n// Export singleton instance\nexport const componentRegistry = new ComponentRegistry();\n\n// Export class for testing\nexport { ComponentRegistry };\n","/**\n * ID Generation Utilities\n * Generate unique IDs for pages, sections, and other entities\n */\n\n/**\n * Generate a random ID with prefix\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction generateRandomId(prefix: string, length: number = 8): string {\n const chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n let id = \"\";\n\n for (let i = 0; i < length; i++) {\n id += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return `${prefix}-${id}`;\n}\n\n/**\n * Generate a unique page ID\n *\n * @param prefix - Optional prefix (default: 'page')\n * @returns Unique page ID\n *\n * @example\n * ```ts\n * const pageId = generatePageId(); // 'page-a3b4c5d6'\n * const pageId = generatePageId('homepage'); // 'homepage-a3b4c5d6'\n * ```\n */\nexport function generatePageId(prefix: string = \"page\"): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * Generate a unique section ID\n *\n * @param sectionType - Section type (e.g., 'hero', 'features')\n * @returns Unique section ID\n *\n * @example\n * ```ts\n * const sectionId = generateSectionId('hero'); // 'hero-1234567890-a3b4c5d6'\n * ```\n */\nexport function generateSectionId(sectionType: string): string {\n return `${sectionType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * Generate a unique block ID\n *\n * @param blockType - Block type (e.g., 'text', 'image')\n * @returns Unique block ID\n *\n * @example\n * ```ts\n * const blockId = generateBlockId('text'); // 'text-1234567890-a3b4c5d6'\n * ```\n */\nexport function generateBlockId(blockType: string): string {\n return `${blockType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\n/**\n * Generate a URL-friendly handle from a title\n *\n * @param title - Page or section title\n * @returns URL-friendly handle\n *\n * @example\n * ```ts\n * const handle = generateHandle('My New Page'); // 'my-new-page'\n * const handle = generateHandle('About Us & Services'); // 'about-us-services'\n * ```\n */\nexport function generateHandle(title: string): string {\n return title\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\") // Remove special characters\n .replace(/\\s+/g, \"-\") // Replace spaces with hyphens\n .replace(/-+/g, \"-\") // Replace multiple hyphens with single hyphen\n .replace(/^-|-$/g, \"\"); // Remove leading/trailing hyphens\n}\n\n/**\n * Generate a unique theme ID\n *\n * @param name - Theme name\n * @returns Unique theme ID\n *\n * @example\n * ```ts\n * const themeId = generateThemeId('Dark Mode'); // 'dark-mode-1234567890'\n * ```\n */\nexport function generateThemeId(name: string): string {\n const handle = generateHandle(name);\n return `${handle}-${Date.now()}`;\n}\n\n/**\n * Generate a generic unique ID\n *\n * @param prefix - Optional prefix (default: 'id')\n * @returns Unique ID\n *\n * @example\n * ```ts\n * const id = generateId(); // 'id-1234567890-a3b4c5d6'\n * const id = generateId('comp'); // 'comp-1234567890-a3b4c5d6'\n * ```\n */\nexport function generateId(prefix: string = \"id\"): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n","/**\n * Block Finder Utilities\n * Recursive functions to find, update, and remove blocks at any nesting level\n */\n\nimport type { BlockInstance } from \"../types\";\nimport type { SectionInstance } from \"../types\";\n\n/**\n * Recursively find a block by ID in a section's block tree\n * @param section - The section to search in\n * @param blockId - The block ID to find\n * @returns The block if found, undefined otherwise\n */\nexport function findBlockInSection(\n section: SectionInstance | null | undefined,\n blockId: string\n): BlockInstance | undefined {\n if (!section?.blocks) return undefined;\n\n // Search through all blocks at this level\n for (const block of section.blocks) {\n // Direct match\n if (block.id === blockId) {\n return block;\n }\n\n // Recursively search nested blocks\n if (block.blocks && block.blocks.length > 0) {\n const found = findBlockInBlocks(block.blocks, blockId);\n if (found) return found;\n }\n }\n\n return undefined;\n}\n\n/**\n * Recursively search for a block in an array of blocks\n * @param blocks - Array of blocks to search\n * @param blockId - The block ID to find\n * @returns The block if found, undefined otherwise\n */\nfunction findBlockInBlocks(\n blocks: BlockInstance[],\n blockId: string\n): BlockInstance | undefined {\n for (const block of blocks) {\n if (block.id === blockId) {\n return block;\n }\n\n if (block.blocks && block.blocks.length > 0) {\n const found = findBlockInBlocks(block.blocks, blockId);\n if (found) return found;\n }\n }\n\n return undefined;\n}\n\n/**\n * Update a block at any nesting level in a section\n * @param section - The section containing the block\n * @param blockId - The block ID to update\n * @param updates - Partial updates to apply to the block\n * @returns Updated section with the block modified\n */\nexport function updateNestedBlock(\n section: SectionInstance,\n blockId: string,\n updates: Partial<BlockInstance>\n): SectionInstance {\n if (!section.blocks) return section;\n\n return {\n ...section,\n blocks: updateBlockInArray(section.blocks, blockId, updates),\n };\n}\n\n/**\n * Recursively update a block in an array of blocks\n */\nfunction updateBlockInArray(\n blocks: BlockInstance[],\n blockId: string,\n updates: Partial<BlockInstance>\n): BlockInstance[] {\n return blocks.map((block) => {\n // Direct match - update this block\n if (block.id === blockId) {\n return { ...block, ...updates };\n }\n\n // Has nested blocks - recursively search and update\n if (block.blocks && block.blocks.length > 0) {\n return {\n ...block,\n blocks: updateBlockInArray(block.blocks, blockId, updates),\n };\n }\n\n // No match, return unchanged\n return block;\n });\n}\n\n/**\n * Remove a block at any nesting level from a section\n * @param section - The section containing the block\n * @param blockId - The block ID to remove\n * @returns Updated section with the block removed\n */\nexport function removeNestedBlock(\n section: SectionInstance,\n blockId: string\n): SectionInstance {\n if (!section.blocks) return section;\n\n return {\n ...section,\n blocks: removeBlockFromArray(section.blocks, blockId),\n };\n}\n\n/**\n * Recursively remove a block from an array of blocks\n */\nfunction removeBlockFromArray(\n blocks: BlockInstance[],\n blockId: string\n): BlockInstance[] {\n return blocks\n .filter((block) => block.id !== blockId) // Remove if direct match\n .map((block) => {\n // Recursively remove from nested blocks\n if (block.blocks && block.blocks.length > 0) {\n return {\n ...block,\n blocks: removeBlockFromArray(block.blocks, blockId),\n };\n }\n return block;\n });\n}\n\n/**\n * Get the path to a block (useful for debugging)\n * @param section - The section to search in\n * @param blockId - The block ID to find\n * @returns Array of block IDs representing the path, or empty array if not found\n */\nexport function getBlockPath(\n section: SectionInstance | null | undefined,\n blockId: string\n): string[] {\n if (!section?.blocks) return [];\n\n for (const block of section.blocks) {\n if (block.id === blockId) {\n return [block.id];\n }\n\n if (block.blocks && block.blocks.length > 0) {\n const path = getBlockPathInBlocks(block.blocks, blockId);\n if (path.length > 0) {\n return [block.id, ...path];\n }\n }\n }\n\n return [];\n}\n\n/**\n * Recursively get block path in an array of blocks\n */\nfunction getBlockPathInBlocks(\n blocks: BlockInstance[],\n blockId: string\n): string[] {\n for (const block of blocks) {\n if (block.id === blockId) {\n return [block.id];\n }\n\n if (block.blocks && block.blocks.length > 0) {\n const path = getBlockPathInBlocks(block.blocks, blockId);\n if (path.length > 0) {\n return [block.id, ...path];\n }\n }\n }\n\n return [];\n}\n","/**\n * Component Finder Utilities\n * Recursive functions to find components at any nesting level (in sections and blocks)\n */\n\nimport type { SectionComponentInstance } from \"../types\";\nimport type { SectionInstance } from \"../types\";\nimport type { BlockInstance } from \"../types\";\n\n/**\n * Recursively find a component by ID in a section\n * Searches both direct section components and components nested in blocks\n * @param section - The section to search in\n * @param componentId - The component ID to find\n * @returns The component if found, null otherwise\n */\nexport function findComponentInSection(\n section: SectionInstance | null | undefined,\n componentId: string\n): SectionComponentInstance | null {\n if (!section) return null;\n\n // First, check direct section components\n if (section.components) {\n const directComponent = section.components.find(\n (c) => c.id === componentId\n );\n if (directComponent) {\n return directComponent;\n }\n }\n\n // Then search in nested blocks\n if (section.blocks && section.blocks.length > 0) {\n const found = findComponentInBlocks(section.blocks, componentId);\n if (found) return found;\n }\n\n return null;\n}\n\n/**\n * Recursively search for a component in an array of blocks\n * @param blocks - Array of blocks to search\n * @param componentId - The component ID to find\n * @returns The component if found, null otherwise\n */\nfunction findComponentInBlocks(\n blocks: BlockInstance[],\n componentId: string\n): SectionComponentInstance | null {\n for (const block of blocks) {\n // Check components in this block\n if (block.components) {\n const component = block.components.find((c) => c.id === componentId);\n if (component) {\n return component;\n }\n }\n\n // Recursively search nested blocks\n if (block.blocks && block.blocks.length > 0) {\n const found = findComponentInBlocks(block.blocks, componentId);\n if (found) return found;\n }\n }\n\n return null;\n}\n\n/**\n * Get the path to a component (useful for debugging)\n * @param section - The section to search in\n * @param componentId - The component ID to find\n * @returns Object with the path information, or null if not found\n */\nexport function getComponentPath(\n section: SectionInstance | null | undefined,\n componentId: string\n): {\n sectionId: string;\n blockPath: string[];\n componentId: string;\n} | null {\n if (!section) return null;\n\n // Check direct section components\n if (section.components) {\n const directComponent = section.components.find(\n (c) => c.id === componentId\n );\n if (directComponent) {\n return {\n sectionId: section.id,\n blockPath: [],\n componentId,\n };\n }\n }\n\n // Search in nested blocks\n if (section.blocks && section.blocks.length > 0) {\n const blockPath = getComponentPathInBlocks(section.blocks, componentId);\n if (blockPath.length > 0) {\n return {\n sectionId: section.id,\n blockPath,\n componentId,\n };\n }\n }\n\n return null;\n}\n\n/**\n * Recursively get component path in an array of blocks\n * Returns the array of block IDs leading to the component\n */\nfunction getComponentPathInBlocks(\n blocks: BlockInstance[],\n componentId: string\n): string[] {\n for (const block of blocks) {\n // Check if component is in this block\n if (block.components) {\n const component = block.components.find((c) => c.id === componentId);\n if (component) {\n return [block.id];\n }\n }\n\n // Recursively search nested blocks\n if (block.blocks && block.blocks.length > 0) {\n const path = getComponentPathInBlocks(block.blocks, componentId);\n if (path.length > 0) {\n return [block.id, ...path];\n }\n }\n }\n\n return [];\n}\n","/**\n * Component Updater Utilities\n * Recursive functions to update components at any nesting level (in sections and blocks)\n */\n\nimport type { SectionInstance, SectionComponentInstance } from \"../types\";\nimport type { BlockInstance } from \"../types\";\nimport type { ComponentInstance } from \"../types\";\n\n/**\n * Update a component at any nesting level in a section\n * Searches both direct section components and components nested in blocks\n * @param section - The section containing the component\n * @param componentId - The component ID to update\n * @param updates - Partial updates to apply to the component\n * @returns Updated section with the component modified\n */\nexport function updateNestedComponent(\n section: SectionInstance,\n componentId: string,\n updates: Partial<SectionComponentInstance>\n): SectionInstance {\n // Update direct section components\n let updatedComponents = section.components;\n if (updatedComponents && updatedComponents.length > 0) {\n updatedComponents = updatedComponents.map((component) => {\n if (component.id === componentId) {\n return {\n ...component,\n ...updates,\n // Deep merge content and style if provided\n content: updates.content\n ? { ...(component.content ?? {}), ...updates.content }\n : component.content,\n style: updates.style\n ? { ...(component.style ?? {}), ...updates.style }\n : component.style,\n };\n }\n return component;\n });\n }\n\n // Update components nested in blocks\n let updatedBlocks = section.blocks;\n if (updatedBlocks && updatedBlocks.length > 0) {\n updatedBlocks = updateComponentInBlocks(\n updatedBlocks,\n componentId,\n updates\n );\n }\n\n return {\n ...section,\n components: updatedComponents,\n blocks: updatedBlocks,\n };\n}\n\n/**\n * Recursively update a component in an array of blocks\n * @param blocks - Array of blocks to search\n * @param componentId - The component ID to update\n * @param updates - Partial updates to apply to the component\n * @returns Updated array of blocks\n */\nfunction updateComponentInBlocks(\n blocks: BlockInstance[],\n componentId: string,\n updates: Partial<SectionComponentInstance>\n): BlockInstance[] {\n return blocks.map((block) => {\n const updatedBlock = { ...block };\n\n // Update components in this block\n if (block.components && block.components.length > 0) {\n updatedBlock.components = block.components.map((component) => {\n if (component.id === componentId) {\n return {\n ...component,\n ...updates,\n type: component.type,\n // Deep merge content and style if provided\n content: updates.content\n ? { ...(component.content ?? {}), ...updates.content }\n : component.content,\n style: updates.style\n ? { ...(component.style ?? {}), ...updates.style }\n : component.style,\n } as ComponentInstance;\n }\n return component;\n });\n }\n\n // Recursively update in nested blocks\n if (block.blocks && block.blocks.length > 0) {\n updatedBlock.blocks = updateComponentInBlocks(\n block.blocks,\n componentId,\n updates\n );\n }\n\n return updatedBlock;\n });\n}\n","/**\n * Section Helper Utilities\n * Auto-rendering utilities for sections with component grouping and slot-based layouts\n */\n\nimport type { ComponentInstance, SectionComponentInstance } from \"../types\";\nimport type { BlockInstance } from \"../types\";\n\n/**\n * Sort components by order field\n */\nexport function sortComponents<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[]): T[] {\n return [...components].sort((a, b) => (a.order || 0) - (b.order || 0));\n}\n\n/**\n * Filter enabled components only\n */\nexport function filterEnabledComponents<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[]): T[] {\n return components.filter((component) => component.enabled !== false);\n}\n\n/**\n * Get components sorted and filtered\n */\nexport function getActiveComponents<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[]): T[] {\n return sortComponents(filterEnabledComponents(components));\n}\n\n/**\n * Slot configuration for grouping components\n */\nexport interface SlotConfig {\n [slotName: string]: string[]; // slot name -> array of component types\n}\n\n/**\n * Grouped components by slot\n */\nexport interface GroupedComponents<\n T extends ComponentInstance | SectionComponentInstance = ComponentInstance,\n> {\n slots: Record<string, T[]>;\n ungrouped: T[];\n}\n\n/**\n * Group components by slot based on their types\n * Useful for layout-based rendering (header, content, footer, etc.)\n *\n * @example\n * ```tsx\n * const slotConfig = {\n * header: ['heading', 'badge'],\n * content: ['paragraph', 'image'],\n * actions: ['button']\n * };\n * const { slots, ungrouped } = groupBySlot(components, slotConfig);\n * ```\n */\nexport function groupBySlot<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], slotConfig: SlotConfig): GroupedComponents<T> {\n const slots: Record<string, T[]> = {};\n const ungrouped: T[] = [];\n\n // Initialize slots\n for (const slotName in slotConfig) {\n slots[slotName] = [];\n }\n\n // Create a reverse lookup: component type -> slot name\n const typeToSlot: Record<string, string> = {};\n for (const [slotName, types] of Object.entries(slotConfig)) {\n for (const type of types) {\n typeToSlot[type] = slotName;\n }\n }\n\n // Group components\n for (const component of components) {\n if (component.enabled === false) continue;\n\n const slotName = typeToSlot[component.type];\n if (slotName) {\n slots[slotName].push(component);\n } else {\n ungrouped.push(component);\n }\n }\n\n // Sort each slot by order\n for (const slotName in slots) {\n slots[slotName] = sortComponents(slots[slotName]);\n }\n ungrouped.sort((a, b) => (a.order || 0) - (b.order || 0));\n\n return { slots, ungrouped };\n}\n\n/**\n * Get components by type\n * Useful for finding specific component types in a section\n *\n * @example\n * ```tsx\n * const headings = getComponentsByType(components, 'heading');\n * const buttons = getComponentsByType(components, ['button', 'link']);\n * ```\n */\nexport function getComponentsByType<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], types: string | string[]): T[] {\n const typeArray = Array.isArray(types) ? types : [types];\n return components\n .filter(\n (component) =>\n component.enabled !== false && typeArray.includes(component.type)\n )\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n}\n\n/**\n * Get first component by type\n * Useful for getting a specific component like the main heading\n *\n * @example\n * ```tsx\n * const heading = getFirstComponentByType(components, 'heading');\n * ```\n */\nexport function getFirstComponentByType<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], types: string | string[]): T | undefined {\n const typeArray = Array.isArray(types) ? types : [types];\n return components.find(\n (component) =>\n component.enabled !== false && typeArray.includes(component.type)\n );\n}\n\n/**\n * Check if section has any components of given type\n */\nexport function hasComponentType<\n T extends ComponentInstance | SectionComponentInstance,\n>(components: T[], types: string | string[]): boolean {\n const typeArray = Array.isArray(types) ? types : [types];\n return components.some(\n (component) =>\n component.enabled !== false && typeArray.includes(component.type)\n );\n}\n\n/**\n * Sort blocks by order field\n */\nexport function sortBlocks(blocks: BlockInstance[]): BlockInstance[] {\n return [...blocks].sort((a, b) => (a.order || 0) - (b.order || 0));\n}\n\n/**\n * Filter enabled blocks only\n */\nexport function filterEnabledBlocks(blocks: BlockInstance[]): BlockInstance[] {\n return blocks.filter((block) => block.enabled !== false);\n}\n\n/**\n * Get blocks sorted and filtered\n */\nexport function getActiveBlocks(blocks: BlockInstance[]): BlockInstance[] {\n return sortBlocks(filterEnabledBlocks(blocks));\n}\n\n/**\n * Count enabled items (components or blocks)\n */\nexport function countEnabledItems<T extends { enabled?: boolean }>(\n items: T[]\n): number {\n return items.filter((item) => item.enabled !== false).length;\n}\n\n/**\n * Check if array has any enabled items\n */\nexport function hasEnabledItems<T extends { enabled?: boolean }>(\n items: T[] | undefined\n): boolean {\n return !!items && countEnabledItems(items) > 0;\n}\n","import type { DetectionResult } from \"../types\";\nimport { DEFAULT_INSPECTOR_CONFIG } from \"../types\";\n\n/**\n * Get display label for a detection result\n * Formats section/block/component names for the inspector overlay\n */\nexport function getElementLabel(result: DetectionResult): string {\n switch (result.type) {\n case \"component\":\n return result.componentType || \"Component\";\n case \"block\": {\n // Get the block element to read its type\n const blockElement =\n result.element ||\n document.querySelector(`[data-block-id=\"${result.blockId}\"]`);\n const blockType = blockElement?.getAttribute(\"data-block-type\");\n\n // Format block type name (e.g., \"feature-card\" → \"Feature Card\")\n if (blockType) {\n return blockType\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n }\n return \"Block\";\n }\n case \"section\": {\n // Use element from detection result if available\n const element =\n result.element ||\n document.querySelector(`[data-section-id=\"${result.sectionId}\"]`);\n\n // Try to get section name from data attribute\n const sectionName = element?.getAttribute(\"data-section-name\");\n if (sectionName) {\n return sectionName;\n }\n\n // Fallback: format section type (e.g., \"features\" → \"Features\")\n const sectionType = element?.getAttribute(\"data-section-type\");\n if (sectionType) {\n return sectionType\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n }\n\n return \"Section\";\n }\n default:\n return \"Unknown\";\n }\n}\n\n/**\n * Get color for a detection type\n * Returns the appropriate outline color from the inspector config\n */\nexport function getSelectionColor(type: string): string {\n return (\n DEFAULT_INSPECTOR_CONFIG.outlineColors[\n type as keyof typeof DEFAULT_INSPECTOR_CONFIG.outlineColors\n ] || \"#999999\"\n );\n}\n\n/**\n * Format a kebab-case name to Title Case\n * e.g., \"feature-card\" → \"Feature Card\"\n */\nexport function formatBlockName(name: string): string {\n return name\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n","/**\n * Class Name Utility\n * Merge Tailwind CSS classes with proper conflict resolution\n */\n\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Combines class names with Tailwind CSS conflict resolution\n *\n * @param inputs - Class names to merge\n * @returns Merged class string\n *\n * @example\n * cn(\"px-2 py-1\", \"px-4\") // => \"py-1 px-4\"\n * cn(\"text-red-500\", condition && \"text-blue-500\") // => \"text-blue-500\" (if condition is true)\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/**\n * Data Adapters\n * Convert between different data formats for compatibility\n */\n\nimport type {\n SectionComponentInstance,\n ComponentInstance,\n StyleSettings,\n ComponentType,\n} from \"../types\";\n\n/**\n * Adapt a SectionComponentInstance to a full ComponentInstance\n * so it can be rendered via the component registry.\n *\n * - Ensures content/style objects always exist\n * - Preserves ordering and metadata\n *\n * @param component - Section component instance to adapt\n * @returns Full component instance ready for rendering\n *\n * @example\n * const sectionComp = { id: \"1\", type: \"heading\", settings: { text: \"Hello\" } };\n * const fullComp = toComponentInstance(sectionComp);\n * // fullComp.content = { text: \"Hello\" }\n * // fullComp.style = {}\n */\nexport function toComponentInstance(\n component: SectionComponentInstance\n): ComponentInstance {\n const content = (component.content ??\n component.settings ??\n {}) as ComponentInstance[\"content\"];\n\n const style = (component.style ?? {}) as StyleSettings;\n\n return {\n id: component.id,\n type: component.type as ComponentType,\n content,\n style,\n responsiveStyle: undefined,\n styleMode: \"basic\",\n order: component.order,\n enabled: component.enabled,\n createdAt: component.createdAt,\n updatedAt: component.updatedAt,\n };\n}\n","/**\n * Section Helpers - Validation\n * Validates section field values against schema definitions\n * @module utils/section/validation\n */\n\nimport type { FieldDefinition, SettingValue } from \"../../types\";\nimport type { SectionSchema, SectionInstance } from \"../../types\";\nimport type { ValidationError, ValidationResult } from \"./types\";\nimport { FIELD_TYPES } from \"../../types/fields\";\n\n/**\n * Validate a single field value against its definition\n *\n * @param fieldDef - Field definition from schema\n * @param value - Value to validate\n * @returns ValidationError if invalid, null if valid\n * @internal\n */\nexport function validateFieldValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): ValidationError | null {\n // Check required fields\n if (fieldDef.required && (value === undefined || value === null)) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' is required but was not provided`,\n };\n }\n\n // Skip validation for optional fields with no value\n if (value === undefined || value === null) {\n return null;\n }\n\n // Validate by field type\n switch (fieldDef.type) {\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO: {\n const options = fieldDef.options || [];\n const allowedValues = options.map((opt) => opt.value);\n if (!allowedValues.includes(value as string)) {\n return {\n field: fieldDef.id,\n value,\n message: `Value '${value}' for field '${fieldDef.id}' is not in allowed options`,\n allowedValues,\n };\n }\n break;\n }\n\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE: {\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' must be a number, got '${typeof value}'`,\n };\n }\n\n if (fieldDef.min !== undefined && value < fieldDef.min) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${value} for field '${fieldDef.id}' is below minimum ${fieldDef.min}`,\n };\n }\n\n if (fieldDef.max !== undefined && value > fieldDef.max) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${value} for field '${fieldDef.id}' is above maximum ${fieldDef.max}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA: {\n const strValue = String(value);\n if (fieldDef.maxLength && strValue.length > fieldDef.maxLength) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' exceeds maximum length of ${fieldDef.maxLength}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.URL: {\n const urlValue = String(value);\n // Basic URL validation: must start with /, http://, https://, or #\n if (\n !urlValue.startsWith(\"/\") &&\n !urlValue.startsWith(\"http://\") &&\n !urlValue.startsWith(\"https://\") &&\n !urlValue.startsWith(\"#\")\n ) {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' with value '${urlValue}' is not a valid URL`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX: {\n if (typeof value !== \"boolean\") {\n return {\n field: fieldDef.id,\n value,\n message: `Field '${fieldDef.id}' must be a boolean, got '${typeof value}'`,\n };\n }\n break;\n }\n\n // Other types: no specific validation needed\n default:\n break;\n }\n\n return null;\n}\n\n/**\n * Validate all settings in a section\n *\n * @param section - Section instance\n * @param schema - Section schema\n * @returns Validation result with errors\n * @internal\n */\nexport function validateSettings(\n section: SectionInstance,\n schema: SectionSchema\n): ValidationResult {\n const errors: ValidationError[] = [];\n\n for (const fieldDef of schema.settings) {\n const value = section.settings?.[fieldDef.id] as SettingValue;\n const error = validateFieldValue(fieldDef, value);\n\n if (error) {\n errors.push(error);\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n\n/**\n * Validate entire section (settings)\n *\n * @param section - Section instance\n * @param schema - Section schema\n * @returns Validation result\n */\nexport function validateSection(\n section: SectionInstance,\n schema: SectionSchema\n): ValidationResult {\n return validateSettings(section, schema);\n}\n","/**\n * Section Helpers - Value Extraction\n * Extracts and validates values from section instances\n * @module utils/section/extraction\n */\n\nimport type { SectionSchema, SectionInstance } from \"../../types\";\nimport type { SettingValue } from \"../../types\";\nimport { validateFieldValue } from \"./validation\";\n\n/**\n * Extract all settings values from schema with validation\n *\n * For each field in settings:\n * 1. Get runtime value from section.settings\n * 2. Validate against field definition\n * 3. If valid, use runtime value\n * 4. If invalid or missing, use default from schema\n *\n * @param section - Section instance (runtime data)\n * @param schema - Section schema (definition)\n * @returns Object with all settings field values\n * @internal\n */\nexport function extractSettings(\n section: SectionInstance,\n schema: SectionSchema\n): Record<string, SettingValue> {\n const result: Record<string, SettingValue> = {};\n\n for (const fieldDef of schema.settings) {\n const fieldId = fieldDef.id;\n const runtimeValue = section.settings?.[fieldId] as SettingValue;\n const defaultValue =\n (schema.defaults[fieldId] as SettingValue) ??\n fieldDef.default ??\n undefined;\n\n if (runtimeValue !== undefined && runtimeValue !== null) {\n // Runtime value exists - validate it\n const error = validateFieldValue(fieldDef, runtimeValue);\n if (error) {\n // Invalid - use default and warn in dev mode\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[Section Validation] ${error.message}. Using default: \"${defaultValue}\"`\n );\n }\n result[fieldId] = defaultValue;\n } else {\n // Valid - use runtime value\n result[fieldId] = runtimeValue;\n }\n } else {\n // No runtime value - use default\n result[fieldId] = defaultValue;\n }\n }\n\n return result;\n}\n","/**\n * Section Helpers - Type Conversion\n * Auto-converts values based on schema field type\n * @module utils/section/conversion\n */\n\nimport type { FieldDefinition, SettingValue } from \"../../types\";\nimport { FIELD_TYPES } from \"../../types/fields\";\n\n/**\n * Auto-convert value based on field type from schema\n *\n * Maps field type to appropriate JavaScript type:\n * - text, select, etc. → string\n * - number, range → number\n * - boolean, checkbox → boolean\n * - array, repeater → array\n *\n * @param fieldDef - Field definition from schema\n * @param value - Value to convert\n * @returns Converted value\n * @internal\n */\nexport function autoConvertValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): SettingValue {\n if (value == null) return value;\n\n switch (fieldDef.type) {\n // String types\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA:\n case FIELD_TYPES.URL:\n case FIELD_TYPES.COLOR:\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO:\n case FIELD_TYPES.RICHTEXT:\n case FIELD_TYPES.IMAGE:\n case FIELD_TYPES.VIDEO:\n case FIELD_TYPES.FONT:\n return String(value);\n\n // Number types\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE:\n return Number(value);\n\n // Boolean types\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX:\n return Boolean(value);\n\n // Array types\n case FIELD_TYPES.ARRAY:\n case FIELD_TYPES.REPEATER:\n return Array.isArray(value) ? value : [];\n\n // Complex types (return as-is)\n case FIELD_TYPES.COLLECTION:\n case FIELD_TYPES.PRODUCT:\n case FIELD_TYPES.BLOG:\n case FIELD_TYPES.ARTICLE:\n case FIELD_TYPES.PAGE:\n return value;\n\n default:\n return value;\n }\n}\n\n/**\n * Create Proxy object with auto-type conversion on property access\n *\n * Returns a Proxy that intercepts property access and automatically\n * converts values based on their field type in the schema.\n *\n * @param values - Raw values object\n * @param definitions - Field definitions from schema\n * @returns Proxied object with auto-conversion\n * @internal\n */\nexport function createValueProxy(\n values: Record<string, SettingValue>,\n definitions: FieldDefinition[]\n): Record<string, SettingValue> {\n return new Proxy(values, {\n get(target, prop: string) {\n const value = target[prop];\n const fieldDef = definitions.find((f) => f.id === prop);\n\n if (!fieldDef) {\n // No definition found - return raw value\n return value;\n }\n\n // Auto-convert based on field type from schema\n return autoConvertValue(fieldDef, value);\n },\n }) as Record<string, SettingValue>;\n}\n","/**\n * Section Helpers - Main API\n *\n * Provides schema-driven validation and value extraction for sections.\n * Auto-extracts all fields from schema with type detection and validation.\n *\n * @example\n * ```typescript\n * import { getSectionValues } from '@onex/core';\n *\n * export function MySection({ section, schema }: SectionComponentProps) {\n * const { settings } = getSectionValues(section, schema);\n *\n * // Direct property access - auto-typed!\n * const { title, subtitle, backgroundColor } = settings;\n *\n * return <div style={{ backgroundColor }}>{title}</div>;\n * }\n * ```\n *\n * @module utils/section\n */\n\nimport type { SectionSchema, SectionInstance } from \"../../types\";\nimport type { SectionValues } from \"./types\";\nimport { validateSection } from \"./validation\";\nimport { extractSettings } from \"./extraction\";\nimport { createValueProxy } from \"./conversion\";\n\n/**\n * Get all section values with validation and auto-type conversion\n *\n * This is the primary API for sections. It:\n * - Auto-extracts ALL fields from schema (no need to specify field names)\n * - Validates runtime values against schema definitions\n * - Auto-converts types based on field type (text→string, number→number, etc.)\n * - Falls back to schema defaults for missing/invalid values\n * - Provides direct property access: settings.title, settings.backgroundColor\n *\n * @param section - Section instance (runtime data)\n * @param schema - Section schema (definition)\n * @returns Object with settings, isValid, and errors\n *\n * @example\n * ```typescript\n * const { settings } = getSectionValues(section, schema);\n *\n * // Direct property access - auto-typed!\n * const title = settings.title; // string (auto-detected from schema)\n * const enabled = settings.enabled; // boolean (auto-detected from schema)\n * const padding = settings.padding; // number (auto-detected from schema)\n *\n * // Or destructure\n * const { title, subtitle, backgroundColor, padding } = settings;\n * ```\n */\nexport function getSectionValues(\n section: SectionInstance,\n schema: SectionSchema\n): SectionValues {\n // Extract and validate all values from schema\n const settingsValues = extractSettings(section, schema);\n const validation = validateSection(section, schema);\n\n // Return Proxy object for auto-typed property access\n return {\n settings: createValueProxy(settingsValues, schema.settings),\n isValid: validation.valid,\n errors: validation.errors,\n };\n}\n\n// Re-export types and utilities\nexport type { SectionValues, ValidationError, ValidationResult } from \"./types\";\nexport { validateSection, validateSettings } from \"./validation\";\n","/**\n * Component Helpers - Validation\n * Validates component values against schema definitions\n * @module utils/component/validation\n */\n\nimport type {\n ComponentDefinition,\n ComponentInstance,\n FieldDefinition,\n SettingValue,\n} from \"../../types\";\nimport { FIELD_TYPES } from \"../../types\";\nimport type { ValidationError, ValidationResult } from \"./types\";\n\n/**\n * Validate a single field value against its definition\n * @internal\n */\nexport function validateFieldValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): ValidationError | null {\n // If value is undefined/null and field is not required, it's valid\n if (value === undefined || value === null) {\n if (fieldDef.required) {\n return {\n field: fieldDef.id,\n value,\n message: `Field \"${fieldDef.label}\" is required`,\n };\n }\n return null; // Not required, undefined is ok\n }\n\n // Validate based on field type\n switch (fieldDef.type) {\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO: {\n const selectDef = fieldDef as Extract<\n FieldDefinition,\n { type: \"select\" | \"radio\" }\n >;\n const allowedValues = selectDef.options.map((opt) => opt.value);\n if (!allowedValues.includes(String(value))) {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" is not in allowed options for field \"${fieldDef.label}\"`,\n allowedValues,\n };\n }\n break;\n }\n\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE: {\n const numberDef = fieldDef as Extract<\n FieldDefinition,\n { type: \"number\" | \"range\" }\n >;\n const numValue = Number(value);\n if (isNaN(numValue)) {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" for field \"${fieldDef.label}\" must be a number`,\n };\n }\n if (numberDef.min !== undefined && numValue < numberDef.min) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${numValue} for field \"${fieldDef.label}\" is below minimum ${numberDef.min}`,\n };\n }\n if (numberDef.max !== undefined && numValue > numberDef.max) {\n return {\n field: fieldDef.id,\n value,\n message: `Value ${numValue} for field \"${fieldDef.label}\" is above maximum ${numberDef.max}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA: {\n const textDef = fieldDef as Extract<\n FieldDefinition,\n { type: \"text\" | \"textarea\" }\n >;\n const strValue = String(value);\n if (textDef.maxLength && strValue.length > textDef.maxLength) {\n return {\n field: fieldDef.id,\n value,\n message: `Text for field \"${fieldDef.label}\" exceeds maximum length of ${textDef.maxLength}`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX: {\n if (typeof value !== \"boolean\") {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" for field \"${fieldDef.label}\" must be a boolean`,\n };\n }\n break;\n }\n\n case FIELD_TYPES.URL: {\n const strValue = String(value);\n // Allow relative URLs, anchors, and full URLs\n if (\n !strValue.startsWith(\"#\") &&\n !strValue.startsWith(\"/\") &&\n !strValue.startsWith(\"http\")\n ) {\n return {\n field: fieldDef.id,\n value,\n message: `Value \"${value}\" for field \"${fieldDef.label}\" is not a valid URL`,\n };\n }\n break;\n }\n }\n\n return null;\n}\n\n/**\n * Validate component content against schema\n */\nexport function validateContent(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ValidationResult {\n const errors: ValidationError[] = [];\n\n for (const fieldDef of definition.contentSettings) {\n const value = component.content[fieldDef.id] as SettingValue;\n const error = validateFieldValue(fieldDef, value);\n if (error) {\n errors.push(error);\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n\n/**\n * Validate component style against schema\n */\nexport function validateStyle(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ValidationResult {\n const errors: ValidationError[] = [];\n\n const allStyleSettings = [\n ...definition.basicStyleSettings,\n ...definition.advancedStyleSettings,\n ];\n\n for (const fieldDef of allStyleSettings) {\n const value = component.style[fieldDef.id] as SettingValue;\n const error = validateFieldValue(fieldDef, value);\n if (error) {\n errors.push(error);\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n\n/**\n * Validate entire component instance against its definition\n */\nexport function validateComponent(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ValidationResult {\n const contentValidation = validateContent(component, definition);\n const styleValidation = validateStyle(component, definition);\n\n return {\n valid: contentValidation.valid && styleValidation.valid,\n errors: [...contentValidation.errors, ...styleValidation.errors],\n };\n}\n","/**\n * Component Helpers - Value Extraction\n * Extracts and validates values from component instances\n * @module utils/component/extraction\n */\n\nimport type {\n ComponentDefinition,\n ComponentInstance,\n SettingValue,\n} from \"../../types\";\nimport { validateFieldValue } from \"./validation\";\n\n/**\n * Extract all content values from schema with validation\n *\n * For each field in contentSettings:\n * 1. Get runtime value from component.content\n * 2. Validate against field definition\n * 3. If valid, use runtime value\n * 4. If invalid or missing, use default from schema\n *\n * @param component - Component instance (runtime data)\n * @param definition - Component definition (schema)\n * @returns Object with all content field values\n * @internal\n */\nexport function extractContent(\n component: ComponentInstance,\n definition: ComponentDefinition\n): Record<string, SettingValue> {\n const result: Record<string, SettingValue> = {};\n\n for (const fieldDef of definition.contentSettings) {\n const fieldId = fieldDef.id;\n const runtimeValue = component.content[fieldId] as SettingValue;\n const defaultValue =\n (definition.contentDefaults[fieldId] as SettingValue) ??\n fieldDef.default ??\n undefined;\n\n if (runtimeValue !== undefined && runtimeValue !== null) {\n // Runtime value exists - validate it\n const error = validateFieldValue(fieldDef, runtimeValue);\n if (error) {\n // Invalid - use default and warn in dev mode\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[Component Validation] ${error.message}. Using default: \"${defaultValue}\"`\n );\n }\n result[fieldId] = defaultValue;\n } else {\n // Valid - use runtime value\n result[fieldId] = runtimeValue;\n }\n } else {\n // No runtime value - use default\n result[fieldId] = defaultValue;\n }\n }\n\n return result;\n}\n\n/**\n * Extract all style values from schema with validation\n *\n * For each field in styleSettings (basic + advanced):\n * 1. Get runtime value from component.style\n * 2. Validate against field definition\n * 3. If valid, use runtime value\n * 4. If invalid or missing, use default from schema\n *\n * @param component - Component instance (runtime data)\n * @param definition - Component definition (schema)\n * @returns Object with all style field values\n * @internal\n */\nexport function extractStyle(\n component: ComponentInstance,\n definition: ComponentDefinition\n): Record<string, SettingValue> {\n const result: Record<string, SettingValue> = {};\n\n const allStyleSettings = [\n ...definition.basicStyleSettings,\n ...definition.advancedStyleSettings,\n ];\n\n for (const fieldDef of allStyleSettings) {\n const fieldId = fieldDef.id;\n const runtimeValue = component.style[fieldId] as SettingValue;\n const defaultValue =\n (definition.styleDefaults[fieldId] as SettingValue) ??\n fieldDef.default ??\n undefined;\n\n if (runtimeValue !== undefined && runtimeValue !== null) {\n // Runtime value exists - validate it\n const error = validateFieldValue(fieldDef, runtimeValue);\n if (error) {\n // Invalid - use default and warn in dev mode\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[Component Validation] ${error.message}. Using default: \"${defaultValue}\"`\n );\n }\n result[fieldId] = defaultValue;\n } else {\n // Valid - use runtime value\n result[fieldId] = runtimeValue;\n }\n } else {\n // No runtime value - use default\n result[fieldId] = defaultValue;\n }\n }\n\n return result;\n}\n","/**\n * Component Helpers - Type Conversion\n * Auto-converts values based on schema field type\n * @module utils/component/conversion\n */\n\nimport type { FieldDefinition, SettingValue } from \"../../types\";\nimport { FIELD_TYPES } from \"../../types\";\n\n/**\n * Auto-convert value based on field type from schema\n *\n * Maps field type to appropriate JavaScript type:\n * - text, select, etc. → string\n * - number, range → number\n * - boolean, checkbox → boolean\n * - array, repeater → array\n *\n * @param fieldDef - Field definition from schema\n * @param value - Value to convert\n * @returns Converted value\n * @internal\n */\nexport function autoConvertValue(\n fieldDef: FieldDefinition,\n value: SettingValue\n): SettingValue {\n if (value == null) return value;\n\n switch (fieldDef.type) {\n // String types\n case FIELD_TYPES.TEXT:\n case FIELD_TYPES.TEXTAREA:\n case FIELD_TYPES.URL:\n case FIELD_TYPES.COLOR:\n case FIELD_TYPES.SELECT:\n case FIELD_TYPES.RADIO:\n case FIELD_TYPES.RICHTEXT:\n case FIELD_TYPES.IMAGE:\n case FIELD_TYPES.VIDEO:\n case FIELD_TYPES.FONT:\n return String(value);\n\n // Number types\n case FIELD_TYPES.NUMBER:\n case FIELD_TYPES.RANGE:\n return Number(value);\n\n // Boolean types\n case FIELD_TYPES.BOOLEAN:\n case FIELD_TYPES.CHECKBOX:\n return Boolean(value);\n\n // Array types\n case FIELD_TYPES.ARRAY:\n case FIELD_TYPES.REPEATER:\n return Array.isArray(value) ? value : [];\n\n // Complex types (return as-is)\n case FIELD_TYPES.COLLECTION:\n case FIELD_TYPES.PRODUCT:\n case FIELD_TYPES.BLOG:\n case FIELD_TYPES.ARTICLE:\n case FIELD_TYPES.PAGE:\n return value;\n\n default:\n return value;\n }\n}\n\n/**\n * Create Proxy object with auto-type conversion on property access\n *\n * Returns a Proxy that intercepts property access and automatically\n * converts values based on their field type in the schema.\n *\n * @param values - Raw values object\n * @param definitions - Field definitions from schema\n * @returns Proxied object with auto-conversion\n * @internal\n */\nexport function createValueProxy(\n values: Record<string, SettingValue>,\n definitions: FieldDefinition[]\n): Record<string, SettingValue> {\n return new Proxy(values, {\n get(target, prop: string) {\n const value = target[prop];\n const fieldDef = definitions.find((f) => f.id === prop);\n\n if (!fieldDef) {\n // No definition found - return raw value\n return value;\n }\n\n // Auto-convert based on field type from schema\n return autoConvertValue(fieldDef, value);\n },\n }) as Record<string, SettingValue>;\n}\n","/**\n * Component Helpers - Main API\n *\n * Provides schema-driven validation and value extraction for components.\n * Auto-extracts all fields from schema with type detection and validation.\n *\n * @example\n * ```typescript\n * import { getComponentValues } from '@onex/core';\n *\n * export function MyComponent({ component, definition }: ComponentProps) {\n * const { content, style } = getComponentValues(component, definition);\n *\n * // Direct property access - auto-typed!\n * const { text, url } = content;\n * const { variant, size } = style;\n *\n * return <div>{text}</div>;\n * }\n * ```\n *\n * @module utils/component\n */\n\nimport type { ComponentDefinition, ComponentInstance } from \"../../types\";\nimport type { ComponentValues } from \"./types\";\nimport { validateComponent } from \"./validation\";\nimport { extractContent, extractStyle } from \"./extraction\";\nimport { createValueProxy } from \"./conversion\";\n\n/**\n * Get all component values with validation and auto-type conversion\n *\n * This is the primary API for components. It:\n * - Auto-extracts ALL fields from schema (no need to specify field names)\n * - Validates runtime values against schema definitions\n * - Auto-converts types based on field type (text→string, number→number, etc.)\n * - Falls back to schema defaults for missing/invalid values\n * - Provides direct property access: content.text, style.variant\n *\n * @param component - Component instance (runtime data)\n * @param definition - Component definition (schema)\n * @returns Object with content, style, isValid, and errors\n *\n * @example\n * ```typescript\n * const { content, style } = getComponentValues(component, definition);\n *\n * // Direct property access - auto-typed!\n * const text = content.text; // string (auto-detected from schema)\n * const enabled = content.enabled; // boolean (auto-detected from schema)\n * const variant = style.variant; // string (auto-detected from schema)\n *\n * // Or destructure\n * const { text, url, target } = content;\n * const { variant, size } = style;\n * ```\n */\nexport function getComponentValues(\n component: ComponentInstance,\n definition: ComponentDefinition\n): ComponentValues {\n // Extract and validate all values from schema\n const contentValues = extractContent(component, definition);\n const styleValues = extractStyle(component, definition);\n const validation = validateComponent(component, definition);\n\n // Return Proxy objects for auto-typed property access\n return {\n content: createValueProxy(contentValues, definition.contentSettings),\n style: createValueProxy(styleValues, [\n ...definition.basicStyleSettings,\n ...definition.advancedStyleSettings,\n ]),\n isValid: validation.valid,\n errors: validation.errors,\n };\n}\n\n// Re-export types and utilities (prefixed to avoid conflicts with section module)\nexport type {\n ComponentValues,\n ValidationError as ComponentValidationError,\n ValidationResult as ComponentValidationResult,\n} from \"./types\";\nexport {\n validateComponent,\n validateContent,\n validateStyle,\n} from \"./validation\";\n","/**\n * Component Renderer Utility\n * Generic renderer for component instances\n */\n\nimport React from \"react\";\nimport { componentRegistry } from \"../registry/component-registry\";\nimport type { ComponentInstance } from \"../types\";\n\nexport interface ComponentRendererProps {\n /** Component instance to render */\n instance: ComponentInstance;\n\n /** Section ID (required for click detection) */\n sectionId?: string;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Additional wrapper classes */\n className?: string;\n\n /** Fallback when component not found */\n fallback?: React.ReactNode;\n}\n\n/**\n * Render a single component instance\n */\nexport function ComponentRenderer({\n instance,\n sectionId,\n isEditing = false,\n className,\n fallback,\n}: ComponentRendererProps): React.ReactElement | null {\n // Get component from registry\n const registration = componentRegistry.get(instance.type);\n if (!registration) {\n console.warn(`Component type \"${instance.type}\" not found in registry`);\n\n if (fallback) {\n return <>{fallback}</>;\n }\n\n // Default fallback in edit mode\n if (isEditing) {\n return (\n <div\n className=\"border-2 border-dashed border-red-500 bg-red-50 p-4 rounded\"\n data-component-id={instance.id}\n data-component-type={instance.type}\n data-section-id={sectionId}\n >\n <p className=\"text-sm text-red-600 font-medium\">\n Component &quot;{instance.type}&quot; not found\n </p>\n <p className=\"text-xs text-red-500 mt-1\">ID: {instance.id}</p>\n </div>\n );\n }\n\n return null;\n }\n\n const { component: Component, definition } = registration;\n // Render component with wrapper (layout context only)\n // Component content elements have the actual detection attributes\n return (\n <div\n className={className}\n data-inspector-target=\"component\"\n data-component-id={instance.id}\n data-component-type={instance.type}\n data-section-id={sectionId}\n data-order={instance.order}\n style={{\n position: \"relative\",\n pointerEvents: \"auto\",\n }}\n >\n <Component\n component={instance}\n definition={definition}\n sectionId={sectionId}\n isEditing={isEditing}\n className={className}\n />\n </div>\n );\n}\n\n/**\n * Render multiple component instances\n */\nexport interface ComponentListRendererProps {\n /** Component instances to render */\n instances: ComponentInstance[];\n\n /** Section ID (required for click detection) */\n sectionId?: string;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Container class */\n containerClassName?: string;\n\n /** Item wrapper class */\n itemClassName?: string;\n}\n\nexport function ComponentListRenderer({\n instances,\n sectionId,\n isEditing = false,\n containerClassName,\n itemClassName,\n}: ComponentListRendererProps): React.ReactElement {\n // Sort by order\n const sortedInstances = [...instances].sort((a, b) => a.order - b.order);\n\n // Filter enabled\n const visibleInstances = sortedInstances.filter(\n (instance) => instance.enabled !== false\n );\n\n return (\n <div className={containerClassName} data-component-list=\"true\">\n {visibleInstances.map((instance) => (\n <ComponentRenderer\n key={instance.id}\n instance={instance}\n sectionId={sectionId}\n isEditing={isEditing}\n className={itemClassName}\n />\n ))}\n </div>\n );\n}\n\n/**\n * Hook to get a component registration\n */\nexport function useComponentRegistration(componentType: string) {\n return React.useMemo(\n () => componentRegistry.get(componentType),\n [componentType]\n );\n}\n\n/**\n * Hook to render a component instance\n */\nexport function useComponentInstance(instance: ComponentInstance | undefined) {\n const registration = useComponentRegistration(instance?.type || \"\");\n\n return React.useMemo(() => {\n if (!instance || !registration) return null;\n\n const { component: Component, definition } = registration;\n\n return { Component, definition, instance };\n }, [instance, registration]);\n}\n","/**\n * Block Renderer Utility\n * Recursive renderer for block instances with support for nested blocks and components\n */\n\nimport React from \"react\";\nimport { blockRegistry } from \"../registry/block-registry\";\nimport type { BlockInstance } from \"../types\";\nimport { ComponentListRenderer } from \"./component-renderer\";\n\nexport interface BlockRendererProps {\n /** Block instance to render */\n block: BlockInstance;\n\n /** Section ID (for context) */\n sectionId?: string;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Additional data (e.g., website settings) */\n data?: Record<string, unknown>;\n\n /** Additional wrapper classes */\n className?: string;\n\n /** Fallback when block not found */\n fallback?: React.ReactNode;\n}\n\n/**\n * Render a single block instance with recursive support\n * Handles both registered block components and generic fallback\n */\nexport function BlockRenderer({\n block,\n sectionId,\n isEditing = false,\n data,\n className,\n fallback,\n}: BlockRendererProps): React.ReactElement | null {\n // Skip disabled blocks\n if (block.enabled === false) {\n return null;\n }\n\n // Try to get registered block component\n const registration = blockRegistry.get(block.type);\n\n // DEBUG: Enhanced logging when block not found\n if (typeof window !== \"undefined\" && !registration) {\n const allBlocks = Array.from(blockRegistry.getAll().keys());\n console.warn(\n `[BlockRenderer] ⚠️ Block \"${block.type}\" not found in registry!`,\n {\n blockId: block.id,\n blockType: block.type,\n sectionId,\n isEditing,\n blockEnabled: block.enabled === undefined || block.enabled === true,\n hasNestedBlocks: block.blocks?.length || 0,\n hasComponents: block.components?.length || 0,\n availableBlocks: allBlocks,\n registrySize: allBlocks.length,\n suggestion: allBlocks.find((type) =>\n type.includes(block.type.split(\"-\")[0])\n )\n ? `Did you mean \"${allBlocks.find((type) => type.includes(block.type.split(\"-\")[0]))}\"?`\n : \"No similar blocks found\",\n }\n );\n }\n\n if (registration) {\n // Use registered component\n const Component = registration.component;\n\n // Wrap with section ID and block ID for proper detection in editor\n // Block components have their own data-block-id, but we need both attributes on the same wrapper\n // for the block matcher to work correctly\n if (sectionId) {\n return (\n <div\n data-section-id={sectionId}\n data-block-id={block.id}\n data-block-type={block.type}\n style={{\n position: \"relative\",\n display: \"block\",\n width: \"100%\",\n minHeight: \"1px\",\n backgroundColor: \"transparent\",\n pointerEvents: \"auto\",\n }}\n className=\"block-wrapper\"\n >\n <Component\n block={block}\n definition={registration.definition}\n isEditing={isEditing}\n data={data}\n className={className}\n sectionId={sectionId}\n />\n </div>\n );\n }\n\n return (\n <Component\n block={block}\n definition={registration.definition}\n isEditing={isEditing}\n data={data}\n className={className}\n sectionId={sectionId}\n />\n );\n }\n\n // Fallback: Generic renderer with recursive support\n return (\n <div\n data-section-id={sectionId}\n data-block-id={block.id}\n data-block-type={block.type}\n className={className}\n style={block.style as React.CSSProperties}\n >\n {/* Render block's direct components */}\n {block.components && block.components.length > 0 && (\n <ComponentListRenderer\n instances={block.components}\n sectionId={sectionId}\n isEditing={isEditing}\n />\n )}\n\n {/* Recursively render nested blocks */}\n {block.blocks && block.blocks.length > 0 && (\n <BlockListRenderer\n blocks={block.blocks}\n sectionId={sectionId}\n isEditing={isEditing}\n data={data}\n />\n )}\n\n {/* Fallback content if no components or blocks */}\n {(!block.components || block.components.length === 0) &&\n (!block.blocks || block.blocks.length === 0) &&\n fallback && <>{fallback}</>}\n\n {/* Debug info - show in both edit and view mode if block not found */}\n {(!block.components || block.components.length === 0) &&\n (!block.blocks || block.blocks.length === 0) && (\n <>\n {isEditing ? (\n <div className=\"border-2 border-dashed border-yellow-500 bg-yellow-50 p-4 rounded text-sm\">\n <p className=\"font-semibold text-yellow-800\">\n Block: {block.type}\n </p>\n <p className=\"text-yellow-600 text-xs\">\n No registered component found. Add components or nested blocks\n to this block.\n </p>\n </div>\n ) : // View mode: Show subtle indicator in dev, silent in production\n process.env.NODE_ENV === \"development\" ? (\n <div className=\"min-h-[20px] border border-dashed border-gray-300 bg-gray-50 p-2 text-xs text-gray-500\">\n ⚠️ Block &quot;{block.type}&quot; not registered (check console)\n </div>\n ) : null}\n </>\n )}\n </div>\n );\n}\n\nexport interface BlockListRendererProps {\n /** Array of block instances to render */\n blocks: BlockInstance[];\n\n /** Section ID (for context) */\n sectionId?: string;\n\n /** Whether in edit mode */\n isEditing?: boolean;\n\n /** Additional data (e.g., website settings) */\n data?: Record<string, unknown>;\n\n /** Container class name */\n containerClassName?: string;\n\n /** Individual block class name */\n blockClassName?: string;\n}\n\n/**\n * Render a list of blocks with auto-sorting\n * Automatically sorts by order field and filters enabled blocks\n */\nexport function BlockListRenderer({\n blocks,\n sectionId,\n isEditing = false,\n data,\n containerClassName,\n blockClassName,\n}: BlockListRendererProps): React.ReactElement | null {\n if (!blocks || blocks.length === 0) {\n return null;\n }\n\n // Filter enabled blocks and sort by order\n const sortedBlocks = blocks\n .filter((block) => block.enabled !== false)\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n\n if (sortedBlocks.length === 0) {\n return null;\n }\n\n return (\n <div className={containerClassName}>\n {sortedBlocks.map((block) => (\n <BlockRenderer\n key={block.id}\n block={block}\n sectionId={sectionId}\n isEditing={isEditing}\n data={data}\n className={blockClassName}\n />\n ))}\n </div>\n );\n}\n\n/**\n * Simple helper to render a block\n * Convenience wrapper around BlockRenderer\n */\nexport function renderBlock(\n block: BlockInstance,\n isEditing = false,\n className?: string,\n sectionId?: string\n): React.ReactElement | null {\n return (\n <BlockRenderer\n block={block}\n isEditing={isEditing}\n className={className}\n sectionId={sectionId}\n />\n );\n}\n","/**\n * Section Renderer\n * Universal renderer for section instances with theme components\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type {\n SectionInstance,\n SectionComponentProps,\n SectionSchema,\n TemplateDefinition,\n} from \"../types\";\n\nexport interface SectionRendererProps {\n /** The section instance to render */\n section: SectionInstance;\n /** The React component to render the section */\n Component: React.ComponentType<SectionComponentProps>;\n /** Section schema for metadata */\n schema?: SectionSchema;\n /** Template definition */\n template?: TemplateDefinition;\n /** Whether in editing mode */\n isEditing?: boolean;\n /** Additional data to pass to the component */\n data?: Record<string, unknown>;\n /** Fallback component if rendering fails */\n fallback?: React.ReactNode;\n /** Additional className for the wrapper */\n className?: string;\n}\n\n/**\n * Render a section with proper wrapping and error handling\n */\nexport function SectionRenderer({\n section,\n Component,\n schema,\n template,\n isEditing = false,\n data,\n fallback,\n className = \"\",\n}: SectionRendererProps): React.ReactElement | null {\n // Don't render disabled sections in view mode\n if (!section.enabled && !isEditing) {\n return null;\n }\n\n // Show fallback if component is missing\n if (!Component) {\n if (fallback) {\n return <>{fallback}</>;\n }\n return null;\n }\n\n // Render the section with proper wrapper\n return (\n <div\n id={`section-${section.id}`}\n data-section-id={section.id}\n data-section-type={section.type}\n data-section-template={section.template || \"default\"}\n data-section-enabled={section.enabled}\n className={`section section-${section.type} ${className}`.trim()}\n >\n <Component\n section={section}\n schema={schema as SectionSchema}\n template={template as TemplateDefinition}\n isEditing={isEditing}\n data={data}\n />\n </div>\n );\n}\n\nexport interface SectionListRendererProps {\n /** Array of sections to render */\n sections: SectionInstance[];\n /** Function to get component for a section */\n getComponent: (\n sectionType: string,\n template: string\n ) => {\n Component: React.ComponentType<SectionComponentProps>;\n schema?: SectionSchema;\n template?: TemplateDefinition;\n } | null;\n /** Whether in editing mode */\n isEditing?: boolean;\n /** Additional data to pass to components */\n data?: Record<string, unknown>;\n /** Fallback for missing sections */\n fallback?: (section: SectionInstance) => React.ReactNode;\n /** Additional className for wrappers */\n className?: string;\n}\n\n/**\n * Render a list of sections with automatic filtering and sorting\n */\nexport function SectionListRenderer({\n sections,\n getComponent,\n isEditing = false,\n data,\n fallback,\n className,\n}: SectionListRendererProps): React.ReactElement {\n // Filter enabled sections (or all in edit mode) and sort by order\n const visibleSections = sections\n .filter((section) => isEditing || section.enabled)\n .sort((a, b) => a.order - b.order);\n\n return (\n <>\n {visibleSections.map((section) => {\n const template = section.template || \"default\";\n const registration = getComponent(section.type, template);\n\n if (!registration) {\n return fallback ? (\n <React.Fragment key={section.id}>\n {fallback(section)}\n </React.Fragment>\n ) : null;\n }\n\n return (\n <SectionRenderer\n key={section.id}\n section={section}\n Component={registration.Component}\n schema={registration.schema}\n template={registration.template}\n isEditing={isEditing}\n data={data}\n className={className}\n />\n );\n })}\n </>\n );\n}\n\n/**\n * Helper function to render a single section (non-component version)\n * Useful for server components or static rendering\n */\nexport function renderSection(\n props: SectionRendererProps\n): React.ReactElement | null {\n return <SectionRenderer {...props} />;\n}\n","\"use client\";\n\n/**\n * Cart Context\n * Full shopping cart functionality with localStorage persistence\n * Supports product variants (size, color, SKU, location)\n */\n\nimport React, { createContext, useContext, useState, useEffect } from \"react\";\nimport type { CartItem, CartContextType } from \"../types\";\n\nconst CartContext = createContext<CartContextType | undefined>(undefined);\n\nconst CART_STORAGE_KEY = \"onex-cart\";\n\n/**\n * Load cart from localStorage (client-side only)\n */\nfunction getInitialCart(): CartItem[] {\n if (typeof window === \"undefined\") return [];\n\n try {\n const savedCart = localStorage.getItem(CART_STORAGE_KEY);\n if (savedCart) {\n return JSON.parse(savedCart);\n }\n } catch (error) {\n console.error(\n \"[CartContext] Failed to load cart from localStorage:\",\n error\n );\n }\n return [];\n}\n\nexport function CartProvider({ children }: { children: React.ReactNode }) {\n // Use lazy initialization to load from localStorage\n const [items, setItems] = useState<CartItem[]>(() => getInitialCart());\n\n // Save cart to localStorage whenever it changes\n useEffect(() => {\n localStorage.setItem(CART_STORAGE_KEY, JSON.stringify(items));\n }, [items]);\n\n /**\n * Add item to cart\n * Checks for duplicates based on productId, size, color, and locationId\n */\n const addItem = (newItem: Omit<CartItem, \"id\" | \"quantity\">) => {\n setItems((currentItems) => {\n // Check if item already exists (same product, size, color, and location)\n const existingItem = currentItems.find(\n (item) =>\n item.productId === newItem.productId &&\n (item.size || \"\") === (newItem.size || \"\") &&\n (item.color || \"\") === (newItem.color || \"\") &&\n (item.locationId || \"\") === (newItem.locationId || \"\")\n );\n\n if (existingItem) {\n // Increase quantity\n return currentItems.map((item) =>\n item.id === existingItem.id\n ? { ...item, quantity: item.quantity + 1 }\n : item\n );\n } else {\n // Add new item\n return [\n ...currentItems,\n {\n ...newItem,\n id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n quantity: 1,\n },\n ];\n }\n });\n };\n\n /**\n * Remove item from cart by ID\n */\n const removeItem = (id: string) => {\n setItems((currentItems) => currentItems.filter((item) => item.id !== id));\n };\n\n /**\n * Update item quantity\n * Removes item if quantity < 1\n */\n const updateQuantity = (id: string, quantity: number) => {\n if (quantity < 1) {\n removeItem(id);\n return;\n }\n\n setItems((currentItems) =>\n currentItems.map((item) =>\n item.id === id ? { ...item, quantity } : item\n )\n );\n };\n\n /**\n * Clear all items from cart\n */\n const clearCart = () => {\n setItems([]);\n };\n\n // Calculate totals\n const itemCount = items.reduce((sum, item) => sum + item.quantity, 0);\n const subtotal = items.reduce(\n (sum, item) => sum + item.price * item.quantity,\n 0\n );\n\n return (\n <CartContext.Provider\n value={{\n items,\n addItem,\n removeItem,\n updateQuantity,\n clearCart,\n itemCount,\n subtotal,\n }}\n >\n {children}\n </CartContext.Provider>\n );\n}\n\n/**\n * Hook to access cart context\n */\nexport function useCart() {\n const context = useContext(CartContext);\n if (context === undefined) {\n throw new Error(\"useCart must be used within a CartProvider\");\n }\n return context;\n}\n\n// Re-export types for convenience\nexport type { CartItem, CartContextType };\n","/**\n * Theme Context\n * Provides theme ID to component tree without prop drilling\n */\n\n\"use client\";\n\nimport React, { createContext, useContext, useState } from \"react\";\n\ninterface ThemeContextValue {\n themeId: string;\n setThemeId: (id: string) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue>({\n themeId: \"default\",\n setThemeId: () => {},\n});\n\nexport interface ThemeContextProviderProps {\n children: React.ReactNode;\n themeId: string;\n}\n\nexport function ThemeContextProvider({\n children,\n themeId: initialThemeId,\n}: ThemeContextProviderProps) {\n const [themeId, setThemeId] = useState(initialThemeId);\n\n return (\n <ThemeContext.Provider value={{ themeId, setThemeId }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useThemeContext() {\n const context = useContext(ThemeContext);\n\n if (!context) {\n throw new Error(\"useThemeContext must be used within ThemeContextProvider\");\n }\n\n return context;\n}\n","/**\n * Viewport Context\n * Provides viewport mode for editor preview responsiveness\n */\n\n\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport type ViewportMode = \"desktop\" | \"tablet\" | \"mobile\";\n\ninterface ViewportContextType {\n /** Whether in editor mode */\n isEditing: boolean;\n /** Current viewport mode */\n viewportMode: ViewportMode;\n}\n\nconst ViewportContext = createContext<ViewportContextType>({\n isEditing: false,\n viewportMode: \"desktop\",\n});\n\nexport function ViewportProvider({\n children,\n isEditing,\n viewportMode,\n}: {\n children: React.ReactNode;\n isEditing: boolean;\n viewportMode: ViewportMode;\n}) {\n return (\n <ViewportContext.Provider value={{ isEditing, viewportMode }}>\n {children}\n </ViewportContext.Provider>\n );\n}\n\nexport function useViewport() {\n return useContext(ViewportContext);\n}\n\n/**\n * Hook to get responsive class based on viewport mode\n * Returns mobile class when in mobile preview, tablet class when in tablet preview, etc.\n */\nexport function useResponsiveClass(classes: {\n mobile: string;\n tablet: string;\n desktop: string;\n}): string {\n const { isEditing, viewportMode } = useViewport();\n\n if (!isEditing) {\n // On live site, return desktop class (CSS media queries will handle responsiveness)\n return classes.desktop;\n }\n\n // In editor, return class based on viewport mode\n switch (viewportMode) {\n case \"mobile\":\n return classes.mobile;\n case \"tablet\":\n return classes.tablet;\n case \"desktop\":\n default:\n return classes.desktop;\n }\n}\n","/**\n * Page Data Context\n * Generic context provider for sharing server-fetched data throughout the component tree\n * Provides access to websiteSettings, pageData, and any other server-side data\n */\n\n\"use client\";\n\nimport React, { createContext, useContext, useMemo } from \"react\";\nimport type { WebsiteSettings } from \"../types\";\n\n/**\n * Generic page data structure\n */\nexport interface PageData {\n /** Website settings (social connections, hotlines, etc.) */\n websiteSettings?: WebsiteSettings;\n /** Any other dynamic data needed by the page */\n [key: string]: unknown;\n}\n\n/**\n * Page Data Context\n */\nconst PageDataContext = createContext<PageData | undefined>(undefined);\n\n/**\n * Page Data Provider Props\n */\nexport interface PageDataProviderProps {\n /** Server-fetched data to provide to children */\n data?: PageData;\n /** Child components */\n children: React.ReactNode;\n}\n\n/**\n * Page Data Provider Component\n * Wraps pages/components to provide server-fetched data via context\n *\n * @example\n * ```tsx\n * <PageDataProvider data={{ websiteSettings }}>\n * <YourPage />\n * </PageDataProvider>\n * ```\n */\nexport function PageDataProvider({\n data = {},\n children,\n}: PageDataProviderProps) {\n // Memoize data to prevent unnecessary re-renders\n const value = useMemo(() => data, [data]);\n\n return (\n <PageDataContext.Provider value={value}>\n {children}\n </PageDataContext.Provider>\n );\n}\n\n/**\n * Hook to access page data\n * Returns all page data provided by PageDataProvider\n *\n * @throws Error if used outside PageDataProvider\n *\n * @example\n * ```tsx\n * const pageData = usePageData();\n * const customData = pageData.myCustomField;\n * ```\n */\nexport function usePageData(): PageData {\n const context = useContext(PageDataContext);\n\n if (context === undefined) {\n throw new Error(\"usePageData must be used within a PageDataProvider\");\n }\n\n return context;\n}\n\n/**\n * Hook to access website settings from page data\n * Convenience hook that extracts websiteSettings from page data\n *\n * @returns WebsiteSettings object (empty object if not available)\n *\n * @example\n * ```tsx\n * function MyBlock() {\n * const websiteSettings = useWebsiteSettings();\n * const socials = useSocialConnections(websiteSettings);\n * // ...\n * }\n * ```\n */\nexport function useWebsiteSettings(): WebsiteSettings {\n const pageData = usePageData();\n return (pageData.websiteSettings || {}) as WebsiteSettings;\n}\n","/**\n * Grid Container Components\n * Layout primitives for responsive grid-based layouts\n */\n\nimport { ReactNode } from \"react\";\n\nexport interface GridContainerProps {\n /** Content to render inside the container */\n children: ReactNode;\n\n /** Additional CSS classes */\n className?: string;\n\n /** HTML element to render as */\n as?: \"div\" | \"section\" | \"header\" | \"footer\" | \"main\";\n}\n\n/**\n * Grid Container Component\n * Implements a 12-column grid system with proper gutters and max-width\n * All content should be wrapped in this container for consistent layout\n *\n * Breakpoints and padding:\n * - Mobile (< 768px): 20px padding (16px + 4px gutter)\n * - Tablet (768px - 1023px): 32px padding\n * - Desktop (1024px - 1279px): 40px padding\n * - Large (1280px - 1919px): 140px padding\n * - XL (>= 1920px): max 1640px content width (1920px - 280px padding)\n *\n * @example\n * ```tsx\n * <GridContainer>\n * <h1>My Content</h1>\n * </GridContainer>\n * ```\n */\nexport function GridContainer({\n children,\n className = \"\",\n as: Component = \"div\",\n}: GridContainerProps) {\n return (\n <Component\n className={`\n w-full\n mx-auto\n px-5\n sm:px-6\n md:px-8\n lg:px-10\n xl:px-[140px]\n ${className}\n `\n .trim()\n .replace(/\\s+/g, \" \")}\n style={{\n maxWidth: \"1920px\", // Max container width\n }}\n >\n {children}\n </Component>\n );\n}\n\nexport interface FullWidthSectionProps {\n /** Content to render inside the section */\n children: ReactNode;\n\n /** Additional CSS classes */\n className?: string;\n\n /** Background color (can be any valid CSS color) */\n backgroundColor?: string;\n}\n\n/**\n * Full Width Container (for backgrounds that extend full width)\n * Content inside should still use GridContainer for proper content width\n *\n * @example\n * ```tsx\n * <FullWidthSection backgroundColor=\"#f5f5f5\">\n * <GridContainer>\n * <h1>Full-width background, constrained content</h1>\n * </GridContainer>\n * </FullWidthSection>\n * ```\n */\nexport function FullWidthSection({\n children,\n className = \"\",\n backgroundColor = \"transparent\",\n}: FullWidthSectionProps) {\n return (\n <section className={`w-full ${className}`} style={{ backgroundColor }}>\n {children}\n </section>\n );\n}\n","/**\n * Heading Component\n * Renders text headings (H1-H6) with customizable typography\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n \"4xl\": \"text-4xl\",\n \"5xl\": \"text-5xl\",\n \"6xl\": \"text-6xl\",\n};\n\n// Font weight mapping\nconst fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n black: \"font-black\",\n};\n\n// Text align mapping\nconst textAlignMap: Record<string, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\nexport function HeadingComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { text, tag } = content;\n const {\n fontSize,\n fontWeight,\n color,\n textAlign,\n marginBottom,\n lineHeight,\n letterSpacing,\n textTransform,\n maxWidth,\n customClasses,\n } = style;\n\n // Build Tailwind classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const fontWeightClass = fontWeightMap[String(fontWeight)];\n const textAlignClass = textAlignMap[String(textAlign)];\n\n // Build inline style for advanced properties (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(marginBottom && { marginBottom: String(marginBottom) }),\n ...(lineHeight && { lineHeight: String(lineHeight) }),\n ...(letterSpacing && { letterSpacing: String(letterSpacing) }),\n ...(textTransform && {\n textTransform: String(\n textTransform\n ) as React.CSSProperties[\"textTransform\"],\n }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n };\n\n // Build classes\n const classes = cn(\n \"component-heading\",\n fontSizeClass,\n fontWeightClass,\n textAlignClass,\n customClasses,\n className\n );\n\n // Render as appropriate tag\n const Tag = (tag as keyof React.JSX.IntrinsicElements) || \"h2\";\n\n return (\n <Tag\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Heading Text\"\n >\n {String(text)}\n </Tag>\n );\n}\n","/**\n * Heading Component Schema\n * Text heading (H1-H6) with typography controls\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const headingComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.HEADING,\n name: \"Heading\",\n description: \"Text heading (H1-H6)\",\n icon: \"heading\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n // Content settings (what the component displays)\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Heading Text\",\n info: \"The text content of the heading\",\n default: \"Welcome\",\n required: true,\n maxLength: 200,\n },\n {\n id: \"tag\",\n type: FIELD_TYPES.SELECT,\n label: \"Heading Level\",\n info: \"HTML heading tag\",\n default: \"h2\",\n options: [\n { label: \"H1 (Largest)\", value: \"h1\" },\n { label: \"H2\", value: \"h2\" },\n { label: \"H3\", value: \"h3\" },\n { label: \"H4\", value: \"h4\" },\n { label: \"H5\", value: \"h5\" },\n { label: \"H6 (Smallest)\", value: \"h6\" },\n ],\n },\n ],\n\n // Basic style settings (always visible)\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"2xl\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"2XL\", value: \"2xl\" },\n { label: \"3XL\", value: \"3xl\" },\n { label: \"4XL\", value: \"4xl\" },\n { label: \"5XL\", value: \"5xl\" },\n { label: \"6XL\", value: \"6xl\" },\n ],\n },\n {\n id: \"fontWeight\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Weight\",\n default: \"bold\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Medium\", value: \"medium\" },\n { label: \"Semibold\", value: \"semibold\" },\n { label: \"Bold\", value: \"bold\" },\n { label: \"Black\", value: \"black\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.TEXT_ALIGNMENT,\n label: \"Text Alignment\",\n default: \"left\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Bottom Spacing\",\n info: \"e.g., 1rem, 20px\",\n default: \"1rem\",\n },\n ],\n\n // Advanced style settings (shown when user enables advanced mode)\n advancedStyleSettings: [\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Line Height\",\n default: \"1.2\",\n },\n {\n id: \"letterSpacing\",\n type: FIELD_TYPES.TEXT,\n label: \"Letter Spacing\",\n default: \"normal\",\n },\n {\n id: \"textTransform\",\n type: FIELD_TYPES.SELECT,\n label: \"Text Transform\",\n default: \"none\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Uppercase\", value: \"uppercase\" },\n { label: \"Lowercase\", value: \"lowercase\" },\n { label: \"Capitalize\", value: \"capitalize\" },\n ],\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n info: \"Space-separated classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"Welcome\",\n tag: \"h2\",\n },\n\n styleDefaults: {\n fontSize: \"2xl\",\n fontWeight: \"bold\",\n textAlign: \"left\",\n marginBottom: \"1rem\",\n // Color default removed - use theme default\n },\n\n supportsResponsive: true,\n\n tags: [\"heading\", \"text\", \"title\", \"h1\", \"h2\", \"h3\"],\n};\n","/**\n * Paragraph Component\n * Renders text paragraph with typography controls\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n};\n\n// Font weight mapping\nconst fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\n// Line height mapping\nconst lineHeightMap: Record<string, string> = {\n \"1.25\": \"leading-tight\",\n \"1.5\": \"leading-normal\",\n \"1.75\": \"leading-relaxed\",\n \"2\": \"leading-loose\",\n};\n\n// Text align mapping\nconst textAlignMap: Record<string, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n justify: \"text-justify\",\n};\n\nexport function ParagraphComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { text } = content;\n const {\n fontSize,\n fontWeight,\n color,\n lineHeight,\n textAlign,\n marginBottom,\n maxWidth,\n letterSpacing,\n customClasses,\n } = style;\n\n // Build Tailwind classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const fontWeightClass = fontWeight ? fontWeightMap[String(fontWeight)] : \"\";\n const lineHeightClass = lineHeightMap[String(lineHeight)];\n const textAlignClass = textAlignMap[String(textAlign)];\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(marginBottom && { marginBottom: String(marginBottom) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n ...(letterSpacing && { letterSpacing: String(letterSpacing) }),\n };\n\n // Build classes\n const classes = cn(\n \"component-paragraph\",\n fontSizeClass,\n fontWeightClass,\n lineHeightClass,\n textAlignClass,\n customClasses,\n className\n );\n\n return (\n <p\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Paragraph Text\"\n >\n {String(text)}\n </p>\n );\n}\n","/**\n * Paragraph Component Schema\n * Text paragraph with typography controls\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const paragraphComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.PARAGRAPH,\n name: \"Paragraph\",\n description: \"Text paragraph content\",\n icon: \"text\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Paragraph Text\",\n info: \"The text content\",\n default: \"This is a paragraph of text.\",\n required: true,\n maxLength: 2000,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"base\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.SELECT,\n label: \"Line Height\",\n default: \"1.5\",\n options: [\n { label: \"Tight\", value: \"1.25\" },\n { label: \"Normal\", value: \"1.5\" },\n { label: \"Relaxed\", value: \"1.75\" },\n { label: \"Loose\", value: \"2\" },\n ],\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.TEXT_ALIGNMENT,\n label: \"Text Alignment\",\n default: \"left\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Bottom Spacing\",\n default: \"1rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"letterSpacing\",\n type: FIELD_TYPES.TEXT,\n label: \"Letter Spacing\",\n default: \"normal\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"This is a paragraph of text.\",\n },\n\n styleDefaults: {\n fontSize: \"base\",\n lineHeight: \"1.5\",\n textAlign: \"left\",\n marginBottom: \"0\",\n // Color default removed - use theme default\n },\n\n supportsResponsive: true,\n tags: [\"paragraph\", \"text\", \"content\", \"body\"],\n};\n","/**\n * Button Component\n * Renders clickable button with link\n *\n * ✅ Framework-agnostic version using native <a> tag\n * Note: Apps using Next.js should wrap with Link component in their theme override\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n \"icon-sm\": \"h-8 w-8\",\n \"icon-lg\": \"h-12 w-12\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\ntype ButtonVariant = VariantProps<typeof buttonVariants>[\"variant\"];\ntype ButtonSize = VariantProps<typeof buttonVariants>[\"size\"];\n\nexport function ButtonComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, url, target } = content;\n const {\n variant,\n size,\n backgroundColor,\n color,\n borderRadius,\n padding,\n width,\n display,\n boxShadow,\n transition,\n customClasses,\n } = style;\n\n // Handle backward compatibility: md → default\n const normalizedSize = size === \"md\" ? \"default\" : size;\n\n // Build inline style for custom properties\n const inlineStyle: React.CSSProperties = {\n backgroundColor:\n variant === \"default\" && backgroundColor\n ? String(backgroundColor)\n : undefined,\n color: color ? String(color) : undefined,\n borderRadius: borderRadius ? String(borderRadius) : undefined,\n padding: padding ? String(padding) : undefined,\n width: width ? String(width) : undefined,\n display: display as React.CSSProperties[\"display\"],\n boxShadow: boxShadow ? String(boxShadow) : undefined,\n transition: transition ? String(transition) : undefined,\n };\n\n return (\n <a\n href={String(url)}\n target={String(target)}\n className={cn(\n buttonVariants({\n variant: variant as ButtonVariant,\n size: normalizedSize as ButtonSize,\n }),\n \"component-button no-underline\",\n customClasses,\n className\n )}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"button\"\n data-field-label=\"Button Text\"\n >\n {String(text)}\n </a>\n );\n}\n","/**\n * Button Component Schema\n * Clickable button with link and styling options\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const buttonComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.BUTTON,\n name: \"Button\",\n description: \"Clickable button with link\",\n icon: \"mouse-pointer-click\",\n category: COMPONENT_CATEGORIES.INTERACTIVE,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Button Text\",\n default: \"Click me\",\n required: true,\n maxLength: 50,\n },\n {\n id: \"url\",\n type: FIELD_TYPES.URL,\n label: \"Link URL\",\n default: \"#\",\n required: true,\n },\n {\n id: \"target\",\n type: FIELD_TYPES.SELECT,\n label: \"Open In\",\n default: \"_self\",\n options: [\n { label: \"Same Tab\", value: \"_self\" },\n { label: \"New Tab\", value: \"_blank\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Style Variant\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Destructive\", value: \"destructive\" },\n { label: \"Outline\", value: \"outline\" },\n { label: \"Secondary\", value: \"secondary\" },\n { label: \"Ghost\", value: \"ghost\" },\n { label: \"Link\", value: \"link\" },\n ],\n },\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Icon\", value: \"icon\" },\n { label: \"Icon Small\", value: \"icon-sm\" },\n { label: \"Icon Large\", value: \"icon-lg\" },\n ],\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"#ffffff\",\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0.375rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"padding\",\n type: FIELD_TYPES.TEXT,\n label: \"Padding\",\n default: \"0.5rem 1rem\",\n },\n {\n id: \"width\",\n type: FIELD_TYPES.TEXT,\n label: \"Width\",\n default: \"auto\",\n },\n {\n id: \"display\",\n type: FIELD_TYPES.SELECT,\n label: \"Display\",\n default: \"inline-flex\",\n options: [\n { label: \"Inline Flex\", value: \"inline-flex\" },\n { label: \"Block\", value: \"block\" },\n { label: \"Flex\", value: \"flex\" },\n ],\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"none\",\n },\n {\n id: \"transition\",\n type: FIELD_TYPES.TEXT,\n label: \"Transition\",\n default: \"all 0.2s\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n info: \"Space-separated classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"Click me\",\n url: \"#\",\n target: \"_self\",\n },\n\n styleDefaults: {\n variant: \"default\",\n size: \"default\",\n // Color defaults removed - use shadcn variant colors\n borderRadius: \"0.375rem\",\n },\n\n supportsResponsive: true,\n tags: [\"button\", \"cta\", \"link\", \"action\"],\n};\n","/**\n * Link Component\n * Renders text hyperlink\n *\n * ✅ Framework-agnostic version using native <a> tag\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n};\n\n// Font weight mapping\nconst fontWeightMap: Record<string, string> = {\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\nexport function LinkComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, url, target, underline } = content;\n const {\n color,\n hoverColor,\n fontSize,\n fontWeight,\n textDecoration,\n customClasses,\n } = style;\n\n // Build Tailwind classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const fontWeightClass = fontWeightMap[String(fontWeight)];\n const underlineClass = underline ? \"underline\" : \"no-underline\";\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(textDecoration && { textDecoration: String(textDecoration) }),\n };\n\n // Build classes\n const classes = cn(\n \"component-link text-primary transition-colors hover:opacity-80\",\n fontSizeClass,\n fontWeightClass,\n underlineClass,\n customClasses,\n className\n );\n\n return (\n <a\n href={String(url)}\n target={String(target)}\n rel={target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"text\"\n data-element-type=\"link\"\n data-field-label=\"Link Text\"\n >\n {String(text)}\n </a>\n );\n}\n","/**\n * Link Component Schema\n * Text link with styling options\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const linkComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.LINK,\n name: \"Link\",\n description: \"Text hyperlink\",\n icon: \"link\",\n category: COMPONENT_CATEGORIES.INTERACTIVE,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Link Text\",\n default: \"Click here\",\n required: true,\n maxLength: 200,\n },\n {\n id: \"url\",\n type: FIELD_TYPES.URL,\n label: \"Link URL\",\n default: \"#\",\n required: true,\n },\n {\n id: \"target\",\n type: FIELD_TYPES.SELECT,\n label: \"Open In\",\n default: \"_self\",\n options: [\n { label: \"Same Tab\", value: \"_self\" },\n { label: \"New Tab\", value: \"_blank\" },\n ],\n },\n {\n id: \"underline\",\n type: FIELD_TYPES.CHECKBOX,\n label: \"Show Underline\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default (primary color)\",\n },\n {\n id: \"hoverColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Hover Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"base\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"fontWeight\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Weight\",\n default: \"normal\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Medium\", value: \"medium\" },\n { label: \"Semibold\", value: \"semibold\" },\n { label: \"Bold\", value: \"bold\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"textDecoration\",\n type: FIELD_TYPES.SELECT,\n label: \"Text Decoration\",\n default: \"underline\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Underline\", value: \"underline\" },\n { label: \"Overline\", value: \"overline\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"Click here\",\n url: \"#\",\n target: \"_self\",\n underline: true,\n },\n\n styleDefaults: {\n fontSize: \"base\",\n fontWeight: \"normal\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"link\", \"hyperlink\", \"anchor\", \"url\"],\n};\n","/**\n * Divider Component\n * Horizontal line separator with optional center text\n *\n * ✅ Uses Radix UI Separator primitive\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\nexport function DividerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, lineStyle } = content;\n const {\n color,\n thickness,\n width,\n marginTop,\n marginBottom,\n opacity,\n customClasses,\n } = style;\n\n // Map thickness to height classes\n const thicknessMap: Record<string, string> = {\n \"1px\": \"h-px\",\n \"2px\": \"h-0.5\",\n \"3px\": \"h-[3px]\",\n \"4px\": \"h-1\",\n };\n\n const heightClass = thicknessMap[String(thickness)] || thicknessMap[\"1px\"];\n\n // Build container style for spacing and sizing\n const containerStyle: React.CSSProperties = {\n width: String(width),\n marginTop: marginTop ? String(marginTop) : undefined,\n marginBottom: marginBottom ? String(marginBottom) : undefined,\n opacity: opacity ? Number(opacity) / 100 : 1,\n };\n\n // Build separator style for color and line style\n const separatorStyle: React.CSSProperties = {\n backgroundColor: String(color),\n ...(String(lineStyle) !== \"solid\" && {\n backgroundImage:\n String(lineStyle) === \"dashed\"\n ? `repeating-linear-gradient(to right, ${String(color)} 0, ${String(color)} 8px, transparent 8px, transparent 14px)`\n : `repeating-linear-gradient(to right, ${String(color)} 0, ${String(color)} 2px, transparent 2px, transparent 6px)`,\n backgroundColor: \"transparent\",\n }),\n };\n\n // Build classes\n const containerClasses = cn(\"component-divider\", customClasses, className);\n\n // If no text, render simple Separator\n if (!text) {\n return (\n <div\n className={containerClasses}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <SeparatorPrimitive.Root\n orientation=\"horizontal\"\n className={cn(\"shrink-0 bg-border\", heightClass)}\n style={separatorStyle}\n />\n </div>\n );\n }\n\n // If text exists, render with center text\n return (\n <div\n className={cn(containerClasses, \"flex items-center gap-4\")}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <SeparatorPrimitive.Root\n orientation=\"horizontal\"\n className={cn(\"shrink-0 bg-border flex-1\", heightClass)}\n style={separatorStyle}\n />\n <span\n className=\"text-sm text-muted-foreground px-2 whitespace-nowrap\"\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Divider Text\"\n >\n {String(text)}\n </span>\n <SeparatorPrimitive.Root\n orientation=\"horizontal\"\n className={cn(\"shrink-0 bg-border flex-1\", heightClass)}\n style={separatorStyle}\n />\n </div>\n );\n}\n","/**\n * Divider Component Schema\n * Horizontal line separator\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const dividerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.DIVIDER,\n name: \"Divider\",\n description: \"Horizontal line separator\",\n icon: \"minus\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Center Text (Optional)\",\n info: \"Text to display in center of divider\",\n default: \"\",\n maxLength: 50,\n },\n {\n id: \"lineStyle\",\n type: FIELD_TYPES.SELECT,\n label: \"Line Style\",\n default: \"solid\",\n options: [\n { label: \"Solid\", value: \"solid\" },\n { label: \"Dashed\", value: \"dashed\" },\n { label: \"Dotted\", value: \"dotted\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Line Color\",\n default: \"#e5e7eb\",\n },\n {\n id: \"thickness\",\n type: FIELD_TYPES.SELECT,\n label: \"Thickness\",\n default: \"1px\",\n options: [\n { label: \"Thin (1px)\", value: \"1px\" },\n { label: \"Medium (2px)\", value: \"2px\" },\n { label: \"Thick (3px)\", value: \"3px\" },\n { label: \"Extra Thick (4px)\", value: \"4px\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"100%\",\n options: [\n { label: \"Full Width\", value: \"100%\" },\n { label: \"75%\", value: \"75%\" },\n { label: \"50%\", value: \"50%\" },\n { label: \"25%\", value: \"25%\" },\n ],\n },\n {\n id: \"marginTop\",\n type: FIELD_TYPES.TEXT,\n label: \"Top Spacing\",\n default: \"2rem\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Bottom Spacing\",\n default: \"2rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"opacity\",\n type: FIELD_TYPES.RANGE,\n label: \"Opacity\",\n default: 100,\n min: 0,\n max: 100,\n step: 10,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"\",\n lineStyle: \"solid\",\n },\n\n styleDefaults: {\n thickness: \"1px\",\n width: \"100%\",\n marginTop: \"2rem\",\n marginBottom: \"2rem\",\n // Color default removed - use shadcn theme default\n },\n\n supportsResponsive: false,\n tags: [\"divider\", \"separator\", \"line\", \"hr\"],\n};\n","/**\n * Spacer Component\n * Vertical spacing element\n *\n * ✅ Framework-agnostic spacing component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Height mapping\nconst heightMap: Record<string, string> = {\n xs: \"0.5rem\",\n sm: \"1rem\",\n md: \"2rem\",\n lg: \"3rem\",\n xl: \"4rem\",\n \"2xl\": \"6rem\",\n \"3xl\": \"8rem\",\n};\n\nexport function SpacerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n height,\n customHeight,\n showDivider,\n dividerColor,\n dividerWidth,\n dividerThickness,\n customClasses,\n } = style;\n\n // Get height value\n const heightValue = customHeight\n ? String(customHeight)\n : heightMap[String(height)] || heightMap.md;\n\n // Build container style\n const containerStyle: React.CSSProperties = {\n height: heightValue,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // Build divider style\n const dividerStyle: React.CSSProperties = {\n width: String(dividerWidth),\n height: String(dividerThickness),\n backgroundColor: String(dividerColor),\n };\n\n // Build classes\n const classes = cn(\"component-spacer\", customClasses, className);\n\n return (\n <div\n className={classes}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {showDivider && <div style={dividerStyle} />}\n </div>\n );\n}\n","/**\n * Spacer Component Schema\n * Empty vertical space for layout\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const spacerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.SPACER,\n name: \"Spacer\",\n description: \"Vertical spacing element\",\n icon: \"space\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"height\",\n type: FIELD_TYPES.SELECT,\n label: \"Height\",\n default: \"md\",\n required: true,\n options: [\n { label: \"XS (0.5rem)\", value: \"xs\" },\n { label: \"Small (1rem)\", value: \"sm\" },\n { label: \"Medium (2rem)\", value: \"md\" },\n { label: \"Large (3rem)\", value: \"lg\" },\n { label: \"XL (4rem)\", value: \"xl\" },\n { label: \"2XL (6rem)\", value: \"2xl\" },\n { label: \"3XL (8rem)\", value: \"3xl\" },\n ],\n },\n {\n id: \"showDivider\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Center Divider\",\n default: false,\n },\n {\n id: \"dividerColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Divider Color\",\n default: \"#e5e7eb\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"customHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Height\",\n default: \"\",\n info: \"Override preset height (e.g., 5rem, 100px)\",\n },\n {\n id: \"dividerWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Divider Width\",\n default: \"100%\",\n },\n {\n id: \"dividerThickness\",\n type: FIELD_TYPES.TEXT,\n label: \"Divider Thickness\",\n default: \"1px\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n height: \"md\",\n showDivider: false,\n customHeight: \"\",\n dividerWidth: \"100%\",\n dividerThickness: \"1px\",\n // Color default removed - use shadcn theme default\n },\n\n supportsResponsive: true,\n tags: [\"spacer\", \"spacing\", \"gap\", \"margin\", \"layout\"],\n};\n","/**\n * Quote Component\n * Blockquote with optional citation\n *\n * ✅ Framework-agnostic blockquote component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n};\n\nexport function QuoteComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, author, source, showQuoteMarks } = content;\n const {\n fontSize,\n fontStyle,\n textAlign,\n color,\n borderLeft,\n borderColor,\n backgroundColor,\n lineHeight,\n padding,\n borderWidth,\n borderRadius,\n maxWidth,\n customClasses,\n } = style;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(fontStyle && {\n fontStyle: fontStyle === \"italic\" ? \"italic\" : \"normal\",\n }),\n ...(textAlign && {\n textAlign: String(textAlign) as React.CSSProperties[\"textAlign\"],\n }),\n ...(lineHeight && { lineHeight: String(lineHeight) }),\n ...(padding && { padding: String(padding) }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(borderLeft && {\n borderLeft: `${String(borderWidth)} solid ${borderColor ? String(borderColor) : \"hsl(var(--primary))\"}`,\n }),\n };\n\n // Build classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n\n const classes = cn(\n \"component-quote\",\n fontSizeClass,\n customClasses,\n className\n );\n\n return (\n <blockquote\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {showQuoteMarks ? (\n <span className=\"text-4xl leading-none opacity-30 mr-2\">&ldquo;</span>\n ) : null}\n <span\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Quote Text\"\n >\n {String(text)}\n </span>\n {showQuoteMarks ? (\n <span className=\"text-4xl leading-none opacity-30 ml-2\">&rdquo;</span>\n ) : null}\n\n {author || source ? (\n <footer className=\"mt-4 text-sm opacity-70\">\n {author ? (\n <cite\n className=\"not-italic font-medium\"\n data-field-id=\"author\"\n data-element-type=\"text\"\n data-field-label=\"Author\"\n >\n {String(author)}\n </cite>\n ) : null}\n {author && source ? <span className=\"mx-1\">—</span> : null}\n {source ? (\n <span\n data-field-id=\"source\"\n data-element-type=\"text\"\n data-field-label=\"Source\"\n >\n {String(source)}\n </span>\n ) : null}\n </footer>\n ) : null}\n </blockquote>\n );\n}\n","/**\n * Quote Component Schema\n * Blockquote with optional citation and styling\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const quoteComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.QUOTE,\n name: \"Quote\",\n description: \"Blockquote with citation\",\n icon: \"quote\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Quote Text\",\n default:\n \"The future belongs to those who believe in the beauty of their dreams.\",\n required: true,\n },\n {\n id: \"author\",\n type: FIELD_TYPES.TEXT,\n label: \"Author\",\n default: \"\",\n },\n {\n id: \"source\",\n type: FIELD_TYPES.TEXT,\n label: \"Source\",\n default: \"\",\n info: \"e.g., Book title, article name\",\n },\n {\n id: \"showQuoteMarks\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Quote Marks\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"lg\",\n options: [\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"2XL\", value: \"2xl\" },\n { label: \"3XL\", value: \"3xl\" },\n ],\n },\n {\n id: \"fontStyle\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Style\",\n default: \"italic\",\n options: [\n { label: \"Normal\", value: \"normal\" },\n { label: \"Italic\", value: \"italic\" },\n ],\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.TEXT_ALIGNMENT,\n label: \"Text Align\",\n default: \"left\",\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"borderLeft\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Left Border\",\n default: true,\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default (primary color)\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Line Height\",\n default: \"1.8\",\n },\n {\n id: \"padding\",\n type: FIELD_TYPES.TEXT,\n label: \"Padding\",\n default: \"1.5rem\",\n },\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"4px\",\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0\",\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"The future belongs to those who believe in the beauty of their dreams.\",\n author: \"\",\n source: \"\",\n showQuoteMarks: true,\n },\n\n styleDefaults: {\n fontSize: \"lg\",\n fontStyle: \"italic\",\n textAlign: \"left\",\n borderLeft: true,\n lineHeight: \"1.8\",\n padding: \"1.5rem\",\n borderWidth: \"4px\",\n borderRadius: \"0\",\n maxWidth: \"100%\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"quote\", \"blockquote\", \"citation\", \"testimonial\"],\n};\n","/**\n * Badge Component\n * Small colored label or tag\n *\n * ✅ Standalone badge component with shadcn-style variants\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\n// Size mapping (shadcn badge is fixed size, we add customization)\nconst sizeMap: Record<string, string> = {\n sm: \"text-xs px-2 py-0.5\",\n md: \"text-sm px-2.5 py-0.5\",\n lg: \"text-base px-3 py-1\",\n};\n\n// Rounded mapping\nconst roundedMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\ntype BadgeVariant = VariantProps<typeof badgeVariants>[\"variant\"];\n\nexport function BadgeComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { text, icon } = content;\n const {\n variant,\n size,\n rounded,\n backgroundColor,\n textColor,\n borderColor,\n borderWidth,\n customClasses,\n } = style;\n\n // Map legacy variants to shadcn variants\n const mapVariant = (v: string): string => {\n const variantMapping: Record<string, string> = {\n primary: \"default\",\n success: \"secondary\",\n warning: \"outline\",\n danger: \"destructive\",\n };\n return variantMapping[v] || v;\n };\n\n const mappedVariant = mapVariant(String(variant));\n\n // Build inline style for custom properties\n const inlineStyle: React.CSSProperties = {\n backgroundColor: backgroundColor ? String(backgroundColor) : undefined,\n color: textColor ? String(textColor) : undefined,\n ...(borderColor && {\n borderColor: String(borderColor),\n borderWidth: String(borderWidth || \"1px\"),\n borderStyle: \"solid\" as const,\n }),\n };\n\n // Build size and rounded classes (only when not using defaults)\n const sizeClass = String(size) !== \"default\" ? sizeMap[String(size)] : \"\";\n const roundedClass =\n String(rounded) !== \"full\" ? roundedMap[String(rounded)] : \"\";\n\n return (\n <div\n className={cn(\n badgeVariants({ variant: mappedVariant as BadgeVariant }),\n \"component-badge\",\n sizeClass,\n roundedClass,\n customClasses,\n className\n )}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <span\n data-field-id=\"text\"\n data-element-type=\"text\"\n data-field-label=\"Badge Text\"\n >\n {String(text)}\n </span>\n </div>\n );\n}\n","/**\n * Badge Component Schema\n * Small colored label or tag\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const badgeComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.BADGE,\n name: \"Badge\",\n description: \"Small colored label or tag\",\n icon: \"tag\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"text\",\n type: FIELD_TYPES.TEXT,\n label: \"Badge Text\",\n default: \"New\",\n required: true,\n },\n {\n id: \"icon\",\n type: FIELD_TYPES.TEXT,\n label: \"Icon Name (Optional)\",\n info: \"Lucide icon name\",\n default: \"\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Secondary\", value: \"secondary\" },\n { label: \"Destructive\", value: \"destructive\" },\n { label: \"Outline\", value: \"outline\" },\n // Legacy variants for backward compatibility\n { label: \"Primary (Legacy)\", value: \"primary\" },\n { label: \"Success (Legacy)\", value: \"success\" },\n { label: \"Warning (Legacy)\", value: \"warning\" },\n { label: \"Danger (Legacy)\", value: \"danger\" },\n ],\n },\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (shadcn)\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"rounded\",\n type: FIELD_TYPES.SELECT,\n label: \"Rounded\",\n default: \"full\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Full (Default)\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n info: \"Override variant background\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Override variant text color\",\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n },\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"1px\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n text: \"New\",\n icon: \"\",\n },\n\n styleDefaults: {\n variant: \"default\",\n size: \"default\",\n rounded: \"full\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"badge\", \"tag\", \"label\", \"pill\", \"chip\"],\n};\n","/**\n * Image Component\n * Renders image with optional caption and link\n *\n * ✅ Framework-agnostic version using native <img> tag\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Object fit mapping\nconst objectFitMap: Record<string, string> = {\n cover: \"object-cover\",\n contain: \"object-contain\",\n fill: \"object-fill\",\n none: \"object-none\",\n};\n\nexport function ImageComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { src, alt, caption, link } = content;\n const {\n width,\n height,\n objectFit,\n borderRadius,\n aspectRatio,\n boxShadow,\n customClasses,\n } = style;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(width && { width: String(width) }),\n ...(height && { height: String(height) }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(aspectRatio &&\n String(aspectRatio) !== \"auto\" && { aspectRatio: String(aspectRatio) }),\n ...(boxShadow &&\n String(boxShadow) !== \"none\" && { boxShadow: String(boxShadow) }),\n };\n\n // Build classes\n const objectFitClass = objectFitMap[String(objectFit)];\n const classes = cn(\n \"component-image\",\n objectFitClass,\n customClasses,\n className\n );\n\n // Render image\n const imageElement = src ? (\n <img\n src={String(src)}\n alt={String(alt || \"\")}\n style={inlineStyle}\n className={classes}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n data-field-id=\"src\"\n data-element-type=\"image\"\n data-field-label=\"Image\"\n />\n ) : (\n <div\n style={inlineStyle}\n className={cn(\"flex items-center justify-center bg-gray-100\", classes)}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n >\n <span className=\"text-gray-400\">No image</span>\n </div>\n );\n\n return (\n <figure className=\"component-image-wrapper\">\n {link ? (\n <a href={String(link)} target=\"_blank\" rel=\"noopener noreferrer\">\n {imageElement}\n </a>\n ) : (\n imageElement\n )}\n {caption ? (\n <figcaption className=\"mt-2 text-sm text-gray-600 text-center\">\n {String(caption)}\n </figcaption>\n ) : null}\n </figure>\n );\n}\n","/**\n * Image Component Schema\n * Image with alt text, sizing, and styling options\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const imageComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.IMAGE,\n name: \"Image\",\n description: \"Image with caption\",\n icon: \"image\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"src\",\n type: FIELD_TYPES.IMAGE,\n label: \"Image URL\",\n info: \"Image source URL\",\n required: true,\n accept: [\"image/jpeg\", \"image/png\", \"image/webp\", \"image/gif\"],\n },\n {\n id: \"alt\",\n type: FIELD_TYPES.TEXT,\n label: \"Alt Text\",\n info: \"Alternative text for accessibility\",\n required: true,\n maxLength: 200,\n },\n {\n id: \"caption\",\n type: FIELD_TYPES.TEXT,\n label: \"Caption\",\n info: \"Optional caption below image\",\n maxLength: 200,\n },\n {\n id: \"link\",\n type: FIELD_TYPES.URL,\n label: \"Link URL\",\n info: \"Optional link when image is clicked\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"100%\",\n options: [\n { label: \"Full Width\", value: \"100%\" },\n { label: \"75%\", value: \"75%\" },\n { label: \"50%\", value: \"50%\" },\n { label: \"25%\", value: \"25%\" },\n { label: \"Custom\", value: \"custom\" },\n ],\n },\n {\n id: \"height\",\n type: FIELD_TYPES.TEXT,\n label: \"Height\",\n info: \"e.g., auto, 300px, 20rem\",\n default: \"auto\",\n },\n {\n id: \"objectFit\",\n type: FIELD_TYPES.SELECT,\n label: \"Object Fit\",\n default: \"cover\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n { label: \"Fill\", value: \"fill\" },\n { label: \"None\", value: \"none\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0.5rem\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"aspectRatio\",\n type: FIELD_TYPES.SELECT,\n label: \"Aspect Ratio\",\n default: \"auto\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"16:9\", value: \"16/9\" },\n { label: \"4:3\", value: \"4/3\" },\n { label: \"1:1 (Square)\", value: \"1/1\" },\n { label: \"21:9\", value: \"21/9\" },\n ],\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"none\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n src: \"\",\n alt: \"\",\n caption: \"\",\n link: \"\",\n },\n\n styleDefaults: {\n width: \"100%\",\n height: \"auto\",\n objectFit: \"cover\",\n borderRadius: \"0.5rem\",\n },\n\n supportsResponsive: true,\n tags: [\"image\", \"photo\", \"picture\", \"media\"],\n};\n","/**\n * Icon Component\n * Displays icon from Lucide icon library\n *\n * ✅ Uses lucide-react (peer dependency)\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport * as LucideIcons from \"lucide-react\";\n\n// Size mapping\nconst sizeMap: Record<string, number> = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 48,\n \"2xl\": 64,\n};\n\nexport function IconComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { iconName, ariaLabel } = content;\n const { size, color, strokeWidth, rotation, opacity, customClasses } = style;\n\n // Get icon size\n const iconSize = sizeMap[String(size)];\n const iconStrokeWidth = Number(strokeWidth);\n const iconRotation = Number(rotation);\n const iconOpacity = opacity ? Number(opacity) / 100 : 1;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(iconOpacity !== 1 && { opacity: iconOpacity }),\n ...(iconRotation && { transform: `rotate(${iconRotation}deg)` }),\n };\n\n // Build classes\n const classes = cn(\"component-icon inline-block\", customClasses, className);\n\n // Get the icon component dynamically\n const IconComponent =\n (\n LucideIcons as unknown as Record<\n string,\n React.ComponentType<{ size?: number; strokeWidth?: number }>\n >\n )[\n String(iconName)\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\"\")\n ] || LucideIcons.HelpCircle;\n\n return (\n <span\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n role={ariaLabel ? \"img\" : undefined}\n aria-label={ariaLabel ? String(ariaLabel) : undefined}\n >\n <IconComponent size={iconSize} strokeWidth={iconStrokeWidth} />\n </span>\n );\n}\n","/**\n * Icon Component Schema\n * Displays icon from icon library\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const iconComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.ICON,\n name: \"Icon\",\n description: \"Display icon from library\",\n icon: \"sparkles\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"iconName\",\n type: FIELD_TYPES.TEXT,\n label: \"Icon Name\",\n info: 'Lucide icon name (e.g., \"heart\", \"star\", \"check\")',\n default: \"star\",\n required: true,\n },\n {\n id: \"ariaLabel\",\n type: FIELD_TYPES.TEXT,\n label: \"Accessibility Label\",\n info: \"Screen reader description\",\n default: \"\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"md\",\n options: [\n { label: \"XS (12px)\", value: \"xs\" },\n { label: \"Small (16px)\", value: \"sm\" },\n { label: \"Medium (24px)\", value: \"md\" },\n { label: \"Large (32px)\", value: \"lg\" },\n { label: \"XL (48px)\", value: \"xl\" },\n { label: \"2XL (64px)\", value: \"2xl\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Icon Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"strokeWidth\",\n type: FIELD_TYPES.SELECT,\n label: \"Stroke Width\",\n default: \"2\",\n options: [\n { label: \"Thin (1)\", value: \"1\" },\n { label: \"Regular (2)\", value: \"2\" },\n { label: \"Bold (3)\", value: \"3\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"rotation\",\n type: FIELD_TYPES.SELECT,\n label: \"Rotation\",\n default: \"0\",\n options: [\n { label: \"None\", value: \"0\" },\n { label: \"90°\", value: \"90\" },\n { label: \"180°\", value: \"180\" },\n { label: \"270°\", value: \"270\" },\n ],\n },\n {\n id: \"opacity\",\n type: FIELD_TYPES.RANGE,\n label: \"Opacity\",\n default: 100,\n min: 0,\n max: 100,\n step: 10,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n iconName: \"star\",\n ariaLabel: \"\",\n },\n\n styleDefaults: {\n size: \"md\",\n strokeWidth: \"2\",\n rotation: \"0\",\n opacity: \"100\",\n // Color default removed - use theme default\n },\n\n supportsResponsive: false,\n tags: [\"icon\", \"symbol\", \"graphic\", \"lucide\"],\n};\n","/**\n * Video Component\n * Embeds video from YouTube, Vimeo, or self-hosted\n *\n * ✅ Framework-agnostic video component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\nexport function VideoComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const {\n videoType,\n videoUrl,\n poster,\n title,\n autoplay,\n loop,\n muted,\n controls,\n } = content;\n const {\n aspectRatio,\n width,\n maxWidth,\n marginTop,\n marginBottom,\n borderRadius,\n boxShadow,\n customClasses,\n } = style;\n\n // Build container style (only when values are provided)\n const containerStyle: React.CSSProperties = {\n ...(width && { width: String(width) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n ...(marginTop && { marginTop: String(marginTop) }),\n ...(marginBottom && { marginBottom: String(marginBottom) }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(boxShadow && { boxShadow: String(boxShadow) }),\n overflow: \"hidden\",\n };\n\n // Build classes\n const classes = cn(\"component-video relative\", customClasses, className);\n\n // Get aspect ratio padding\n const aspectRatioPadding =\n {\n \"16/9\": \"56.25%\",\n \"4/3\": \"75%\",\n \"1/1\": \"100%\",\n \"21/9\": \"42.86%\",\n }[String(aspectRatio)] || \"56.25%\";\n\n // Build embed URL\n const getEmbedUrl = (): string => {\n const urlString = String(videoUrl);\n\n if (videoType === \"youtube\") {\n // Extract YouTube ID\n let videoId = urlString;\n if (urlString.includes(\"youtube.com\") || urlString.includes(\"youtu.be\")) {\n const match = urlString.match(\n /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/)([^&\\s]+)/\n );\n videoId = match ? match[1] : urlString;\n }\n const params = new URLSearchParams({\n ...(Boolean(autoplay) && { autoplay: \"1\" }),\n ...(Boolean(loop) && { loop: \"1\", playlist: videoId }),\n ...(Boolean(muted) && { mute: \"1\" }),\n ...(!Boolean(controls) && { controls: \"0\" }),\n });\n return `https://www.youtube.com/embed/${videoId}?${params.toString()}`;\n }\n\n if (videoType === \"vimeo\") {\n // Extract Vimeo ID\n let videoId = urlString;\n if (urlString.includes(\"vimeo.com\")) {\n const match = urlString.match(/vimeo\\.com\\/(\\d+)/);\n videoId = match ? match[1] : urlString;\n }\n const params = new URLSearchParams({\n ...(Boolean(autoplay) && { autoplay: \"1\" }),\n ...(Boolean(loop) && { loop: \"1\" }),\n ...(Boolean(muted) && { muted: \"1\" }),\n });\n return `https://player.vimeo.com/video/${videoId}?${params.toString()}`;\n }\n\n // Self-hosted\n return urlString;\n };\n\n // For self-hosted video\n if (videoType === \"hosted\") {\n return (\n <div\n className={classes}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <video\n src={String(videoUrl)}\n poster={poster ? String(poster) : undefined}\n autoPlay={!!autoplay}\n loop={!!loop}\n muted={!!muted}\n controls={!!controls}\n className=\"w-full h-auto\"\n title={title ? String(title) : undefined}\n >\n Your browser does not support the video tag.\n </video>\n </div>\n );\n }\n\n // For embedded video (YouTube/Vimeo)\n return (\n <div\n className={classes}\n style={containerStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <div\n className=\"relative w-full\"\n style={{ paddingBottom: aspectRatioPadding }}\n >\n <iframe\n src={getEmbedUrl()}\n title={title ? String(title) : \"Video player\"}\n className=\"absolute top-0 left-0 w-full h-full\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n </div>\n </div>\n );\n}\n","/**\n * Video Component Schema\n * Embeds video from YouTube, Vimeo, or self-hosted\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const videoComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.VIDEO,\n name: \"Video\",\n description: \"Embed video player\",\n icon: \"video\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"videoType\",\n type: FIELD_TYPES.SELECT,\n label: \"Video Type\",\n default: \"youtube\",\n required: true,\n options: [\n { label: \"YouTube\", value: \"youtube\" },\n { label: \"Vimeo\", value: \"vimeo\" },\n { label: \"Self-Hosted\", value: \"hosted\" },\n ],\n },\n {\n id: \"videoUrl\",\n type: FIELD_TYPES.VIDEO_URL,\n label: \"Video URL\",\n info: \"YouTube or Vimeo URL - thumbnail will be shown automatically\",\n default: \"\",\n required: true,\n accept: [\"youtube\", \"vimeo\"],\n },\n {\n id: \"poster\",\n type: FIELD_TYPES.IMAGE_PICKER,\n label: \"Poster Image (Thumbnail)\",\n info: \"Preview image before video plays (optional if using YouTube/Vimeo)\",\n default: \"\",\n },\n {\n id: \"title\",\n type: FIELD_TYPES.TEXT,\n label: \"Video Title\",\n info: \"For accessibility\",\n default: \"\",\n },\n {\n id: \"autoplay\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Autoplay\",\n default: false,\n },\n {\n id: \"loop\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Loop\",\n default: false,\n },\n {\n id: \"muted\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Muted\",\n default: false,\n },\n {\n id: \"controls\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Controls\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"aspectRatio\",\n type: FIELD_TYPES.SELECT,\n label: \"Aspect Ratio\",\n default: \"16/9\",\n options: [\n { label: \"16:9 (Widescreen)\", value: \"16/9\" },\n { label: \"4:3 (Standard)\", value: \"4/3\" },\n { label: \"1:1 (Square)\", value: \"1/1\" },\n { label: \"21:9 (Cinematic)\", value: \"21/9\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.TEXT,\n label: \"Width\",\n default: \"100%\",\n info: \"e.g., 100%, 800px, 50vw\",\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"100%\",\n },\n {\n id: \"marginTop\",\n type: FIELD_TYPES.TEXT,\n label: \"Margin Top\",\n default: \"0\",\n },\n {\n id: \"marginBottom\",\n type: FIELD_TYPES.TEXT,\n label: \"Margin Bottom\",\n default: \"0\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0\",\n info: \"e.g., 8px, 1rem\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"\",\n info: \"CSS box-shadow value\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n videoType: \"youtube\",\n videoUrl: \"\",\n poster: \"\",\n title: \"\",\n autoplay: false,\n loop: false,\n muted: false,\n controls: true,\n },\n\n styleDefaults: {\n aspectRatio: \"16/9\",\n width: \"100%\",\n maxWidth: \"100%\",\n marginTop: \"0\",\n marginBottom: \"0\",\n borderRadius: \"0\",\n boxShadow: \"\",\n },\n\n supportsResponsive: true,\n tags: [\"video\", \"youtube\", \"vimeo\", \"embed\", \"media\"],\n};\n","/**\n * List Component\n * Renders ordered or unordered list\n *\n * ✅ Framework-agnostic list component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n base: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n};\n\n// Spacing mapping\nconst spacingMap: Record<string, string> = {\n tight: \"space-y-1\",\n normal: \"space-y-2\",\n loose: \"space-y-4\",\n};\n\nexport function ListComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { listType, items, markerStyle } = content;\n const {\n fontSize,\n color,\n spacing,\n markerColor,\n lineHeight,\n paddingLeft,\n maxWidth,\n customClasses,\n } = style;\n\n // Parse items array\n const itemsArray = Array.isArray(items)\n ? items\n : String(items || \"\")\n .split(\"\\n\")\n .filter(Boolean);\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(color && { color: String(color) }),\n ...(lineHeight && { lineHeight: String(lineHeight) }),\n ...(paddingLeft && { paddingLeft: String(paddingLeft) }),\n ...(maxWidth && { maxWidth: String(maxWidth) }),\n listStyleType:\n markerStyle === \"default\"\n ? listType === \"ul\"\n ? \"disc\"\n : \"decimal\"\n : String(markerStyle),\n };\n\n // Build classes\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const spacingClass = spacingMap[String(spacing)];\n\n const classes = cn(\n \"component-list\",\n fontSizeClass,\n spacingClass,\n customClasses,\n className\n );\n\n const ListTag = (\n listType === \"ol\" ? \"ol\" : \"ul\"\n ) as keyof React.JSX.IntrinsicElements;\n\n return (\n <ListTag\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {itemsArray.map((item, index) => (\n <li\n key={index}\n style={{\n ...(markerColor && { color: String(markerColor) }),\n }}\n data-field-id=\"items\"\n data-element-type=\"text\"\n data-field-label={`List Item ${index + 1}`}\n >\n <span style={{ ...(color && { color: String(color) }) }}>\n {String(item)}\n </span>\n </li>\n ))}\n </ListTag>\n );\n}\n","/**\n * List Component Schema\n * Ordered or unordered list with customizable items\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const listComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.LIST,\n name: \"List\",\n description: \"Ordered or unordered list\",\n icon: \"list\",\n category: COMPONENT_CATEGORIES.TEXT,\n\n contentSettings: [\n {\n id: \"listType\",\n type: FIELD_TYPES.SELECT,\n label: \"List Type\",\n default: \"ul\",\n required: true,\n options: [\n { label: \"Unordered (Bullets)\", value: \"ul\" },\n { label: \"Ordered (Numbers)\", value: \"ol\" },\n ],\n },\n {\n id: \"items\",\n type: FIELD_TYPES.ARRAY,\n label: \"List Items\",\n default: [\"Item 1\", \"Item 2\", \"Item 3\"],\n required: true,\n info: \"One item per line\",\n },\n {\n id: \"markerStyle\",\n type: FIELD_TYPES.SELECT,\n label: \"Marker Style\",\n default: \"default\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Circle\", value: \"circle\" },\n { label: \"Square\", value: \"square\" },\n { label: \"Decimal\", value: \"decimal\" },\n { label: \"Lower Alpha\", value: \"lower-alpha\" },\n { label: \"Upper Alpha\", value: \"upper-alpha\" },\n { label: \"Lower Roman\", value: \"lower-roman\" },\n { label: \"Upper Roman\", value: \"upper-roman\" },\n { label: \"None\", value: \"none\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"base\",\n options: [\n { label: \"XS\", value: \"xs\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"spacing\",\n type: FIELD_TYPES.SELECT,\n label: \"Item Spacing\",\n default: \"normal\",\n options: [\n { label: \"Tight\", value: \"tight\" },\n { label: \"Normal\", value: \"normal\" },\n { label: \"Loose\", value: \"loose\" },\n ],\n },\n {\n id: \"markerColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Marker Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"lineHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Line Height\",\n default: \"1.6\",\n },\n {\n id: \"paddingLeft\",\n type: FIELD_TYPES.TEXT,\n label: \"Padding Left\",\n default: \"1.5rem\",\n info: \"Indentation from left edge\",\n },\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Width\",\n default: \"\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n listType: \"ul\",\n items: [\"Item 1\", \"Item 2\", \"Item 3\"],\n markerStyle: \"default\",\n },\n\n styleDefaults: {\n fontSize: \"base\",\n spacing: \"normal\",\n lineHeight: \"1.6\",\n paddingLeft: \"1.5rem\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"list\", \"bullet\", \"numbered\", \"ul\", \"ol\", \"items\"],\n};\n","/**\n * Container Component\n * Wrapper element for grouping content\n *\n * ✅ Framework-agnostic container component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Max width mapping\nconst maxWidthMap: Record<string, string> = {\n none: \"\",\n sm: \"max-w-screen-sm\",\n md: \"max-w-screen-md\",\n lg: \"max-w-screen-lg\",\n xl: \"max-w-screen-xl\",\n \"2xl\": \"max-w-screen-2xl\",\n full: \"max-w-full\",\n};\n\n// Padding mapping\nconst paddingMap: Record<string, string> = {\n none: \"\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n// Text align mapping\nconst textAlignMap: Record<string, string> = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n};\n\n// Display mapping\nconst displayMap: Record<string, string> = {\n block: \"block\",\n flex: \"flex\",\n grid: \"grid\",\n \"inline-block\": \"inline-block\",\n};\n\n// Flex direction mapping\nconst flexDirectionMap: Record<string, string> = {\n row: \"flex-row\",\n column: \"flex-col\",\n};\n\n// Justify content mapping\nconst justifyContentMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n \"space-between\": \"justify-between\",\n \"space-around\": \"justify-around\",\n};\n\n// Align items mapping\nconst alignItemsMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport function ContainerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { tag } = content;\n const {\n maxWidth,\n padding,\n backgroundColor,\n textAlign,\n display,\n flexDirection,\n justifyContent,\n alignItems,\n gap,\n borderWidth,\n borderColor,\n borderRadius,\n boxShadow,\n customClasses,\n } = style;\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(gap && { gap: String(gap) }),\n ...(borderWidth &&\n String(borderWidth) !== \"0\" && {\n borderWidth: String(borderWidth),\n ...(borderColor && { borderColor: String(borderColor) }),\n borderStyle: \"solid\",\n }),\n ...(borderRadius && { borderRadius: String(borderRadius) }),\n ...(boxShadow && { boxShadow: String(boxShadow) }),\n };\n\n // Build classes\n const maxWidthClass = maxWidthMap[String(maxWidth)];\n const paddingClass = paddingMap[String(padding)];\n const textAlignClass = textAlignMap[String(textAlign)];\n const displayClass = displayMap[String(display)];\n const flexDirectionClass =\n display === \"flex\" ? flexDirectionMap[String(flexDirection)] : \"\";\n const justifyContentClass =\n display === \"flex\" ? justifyContentMap[String(justifyContent)] : \"\";\n const alignItemsClass =\n display === \"flex\" ? alignItemsMap[String(alignItems)] : \"\";\n\n const classes = cn(\n \"component-container\",\n maxWidthClass,\n paddingClass,\n textAlignClass,\n displayClass,\n flexDirectionClass,\n justifyContentClass,\n alignItemsClass,\n customClasses,\n className\n );\n\n const Tag = tag as keyof React.JSX.IntrinsicElements;\n\n return React.createElement(\n Tag || \"div\",\n {\n className: classes,\n style: inlineStyle,\n \"data-component-id\": component.id,\n \"data-component-type\": component.type,\n \"data-section-id\": sectionId,\n \"data-editable\": isEditing ? \"true\" : undefined,\n },\n children\n );\n}\n","/**\n * Container Component Schema\n * Wrapper element for grouping content with layout controls\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const containerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CONTAINER,\n name: \"Container\",\n description: \"Wrapper for grouping content\",\n icon: \"box\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [\n {\n id: \"tag\",\n type: FIELD_TYPES.SELECT,\n label: \"HTML Tag\",\n default: \"div\",\n options: [\n { label: \"Div\", value: \"div\" },\n { label: \"Section\", value: \"section\" },\n { label: \"Article\", value: \"article\" },\n { label: \"Aside\", value: \"aside\" },\n { label: \"Nav\", value: \"nav\" },\n { label: \"Header\", value: \"header\" },\n { label: \"Footer\", value: \"footer\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"maxWidth\",\n type: FIELD_TYPES.SELECT,\n label: \"Max Width\",\n default: \"full\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small (640px)\", value: \"sm\" },\n { label: \"Medium (768px)\", value: \"md\" },\n { label: \"Large (1024px)\", value: \"lg\" },\n { label: \"XL (1280px)\", value: \"xl\" },\n { label: \"2XL (1536px)\", value: \"2xl\" },\n { label: \"Full Width\", value: \"full\" },\n ],\n },\n {\n id: \"padding\",\n type: FIELD_TYPES.SELECT,\n label: \"Padding\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n },\n {\n id: \"textAlign\",\n type: FIELD_TYPES.SELECT,\n label: \"Text Align\",\n default: \"left\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"display\",\n type: FIELD_TYPES.SELECT,\n label: \"Display\",\n default: \"block\",\n options: [\n { label: \"Block\", value: \"block\" },\n { label: \"Flex\", value: \"flex\" },\n { label: \"Grid\", value: \"grid\" },\n { label: \"Inline Block\", value: \"inline-block\" },\n ],\n },\n {\n id: \"flexDirection\",\n type: FIELD_TYPES.SELECT,\n label: \"Flex Direction\",\n default: \"row\",\n options: [\n { label: \"Row\", value: \"row\" },\n { label: \"Column\", value: \"column\" },\n ],\n },\n {\n id: \"justifyContent\",\n type: FIELD_TYPES.SELECT,\n label: \"Justify Content\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Space Between\", value: \"space-between\" },\n { label: \"Space Around\", value: \"space-around\" },\n ],\n },\n {\n id: \"alignItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Align Items\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.TEXT,\n label: \"Gap\",\n default: \"\",\n info: \"Space between flex/grid items\",\n },\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"0\",\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Radius\",\n default: \"0\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n tag: \"div\",\n },\n\n styleDefaults: {\n maxWidth: \"full\",\n padding: \"md\",\n backgroundColor: \"\",\n textAlign: \"left\",\n display: \"block\",\n flexDirection: \"row\",\n justifyContent: \"start\",\n alignItems: \"start\",\n gap: \"\",\n borderWidth: \"0\",\n borderRadius: \"0\",\n boxShadow: \"\",\n // borderColor default removed - use theme default\n },\n\n supportsResponsive: true,\n tags: [\"container\", \"wrapper\", \"box\", \"layout\", \"group\"],\n};\n","/**\n * Grid Component\n * CSS Grid layout container\n *\n * ✅ Framework-agnostic grid component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Gap mapping\nconst gapMap: Record<string, string> = {\n none: \"gap-0\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n};\n\n// Align items mapping\nconst alignItemsMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\n// Justify items mapping\nconst justifyItemsMap: Record<string, string> = {\n start: \"justify-items-start\",\n center: \"justify-items-center\",\n end: \"justify-items-end\",\n stretch: \"justify-items-stretch\",\n};\n\n// Columns mapping\nconst columnsMap: Record<string, string> = {\n \"1\": \"grid-cols-1\",\n \"2\": \"grid-cols-2\",\n \"3\": \"grid-cols-3\",\n \"4\": \"grid-cols-4\",\n \"5\": \"grid-cols-5\",\n \"6\": \"grid-cols-6\",\n};\n\nexport function GridComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n columns,\n gap,\n alignItems,\n justifyItems,\n gridTemplateColumns,\n gridTemplateRows,\n gridAutoFlow,\n minColumnWidth,\n customClasses,\n } = style;\n\n // Get values\n const columnsValue = String(columns);\n const gapClass = gapMap[String(gap)];\n const alignItemsClass = alignItemsMap[String(alignItems)];\n const justifyItemsClass = justifyItemsMap[String(justifyItems)];\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n display: \"grid\",\n ...(gridAutoFlow && {\n gridAutoFlow: gridAutoFlow as React.CSSProperties[\"gridAutoFlow\"],\n }),\n };\n\n // Handle custom grid template\n if (gridTemplateColumns) {\n inlineStyle.gridTemplateColumns = String(gridTemplateColumns);\n } else if (columnsValue === \"auto\") {\n // Auto-fit columns\n const minWidth = String(minColumnWidth);\n inlineStyle.gridTemplateColumns = `repeat(auto-fit, minmax(${minWidth}, 1fr))`;\n }\n\n if (gridTemplateRows) {\n inlineStyle.gridTemplateRows = String(gridTemplateRows);\n }\n\n // Build classes\n const columnsClass =\n !gridTemplateColumns && columnsValue !== \"auto\"\n ? columnsMap[columnsValue] || \"grid-cols-3\"\n : \"\";\n\n const classes = cn(\n \"component-grid grid\",\n columnsClass,\n gapClass,\n alignItemsClass,\n justifyItemsClass,\n customClasses,\n className\n );\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {children}\n </div>\n );\n}\n","/**\n * Grid Component Schema\n * CSS Grid layout container\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const gridComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.GRID,\n name: \"Grid\",\n description: \"CSS Grid layout container\",\n icon: \"grid-3x3\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.SELECT,\n label: \"Columns\",\n default: \"3\",\n options: [\n { label: \"1 Column\", value: \"1\" },\n { label: \"2 Columns\", value: \"2\" },\n { label: \"3 Columns\", value: \"3\" },\n { label: \"4 Columns\", value: \"4\" },\n { label: \"5 Columns\", value: \"5\" },\n { label: \"6 Columns\", value: \"6\" },\n { label: \"Auto Fit\", value: \"auto\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.SELECT,\n label: \"Gap\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small (0.5rem)\", value: \"sm\" },\n { label: \"Medium (1rem)\", value: \"md\" },\n { label: \"Large (1.5rem)\", value: \"lg\" },\n { label: \"XL (2rem)\", value: \"xl\" },\n ],\n },\n {\n id: \"alignItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Align Items\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n {\n id: \"justifyItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Justify Items\",\n default: \"start\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"gridTemplateColumns\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Grid Template Columns\",\n default: \"\",\n info: \"CSS grid-template-columns value (overrides columns preset)\",\n },\n {\n id: \"gridTemplateRows\",\n type: FIELD_TYPES.TEXT,\n label: \"Grid Template Rows\",\n default: \"\",\n info: \"CSS grid-template-rows value\",\n },\n {\n id: \"gridAutoFlow\",\n type: FIELD_TYPES.SELECT,\n label: \"Grid Auto Flow\",\n default: \"row\",\n options: [\n { label: \"Row\", value: \"row\" },\n { label: \"Column\", value: \"column\" },\n { label: \"Dense\", value: \"dense\" },\n ],\n },\n {\n id: \"minColumnWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Min Column Width\",\n default: \"250px\",\n info: \"For auto-fit columns\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n columns: \"3\",\n gap: \"md\",\n alignItems: \"start\",\n justifyItems: \"start\",\n gridTemplateColumns: \"\",\n gridTemplateRows: \"\",\n gridAutoFlow: \"row\",\n minColumnWidth: \"250px\",\n },\n\n supportsResponsive: true,\n tags: [\"grid\", \"layout\", \"container\", \"css-grid\"],\n};\n","/**\n * Columns Component\n * Flexbox column layout container\n *\n * ✅ Framework-agnostic columns component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Gap mapping\nconst gapMap: Record<string, string> = {\n none: \"gap-0\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n};\n\n// Align items mapping\nconst alignItemsMap: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n};\n\nexport function ColumnsComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n columns,\n gap,\n alignItems,\n reverse,\n wrap,\n columnWidths,\n customClasses,\n } = style;\n\n // Get values\n const columnsNumber = Number(columns);\n const gapClass = gapMap[String(gap)];\n const alignItemsClass = alignItemsMap[String(alignItems)];\n const isReverse = !!reverse;\n const shouldWrap = wrap !== false;\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n display: \"flex\",\n };\n\n // Handle custom column widths\n if (columnWidths) {\n const widths = String(columnWidths)\n .split(\",\")\n .map((w) => w.trim());\n inlineStyle.gridTemplateColumns = String(widths.join(\" \"));\n inlineStyle.display = \"grid\";\n }\n\n // Build classes\n const classes = cn(\n \"component-columns flex\",\n gapClass,\n alignItemsClass,\n {\n \"flex-row-reverse\": isReverse,\n \"flex-wrap\": shouldWrap,\n },\n customClasses,\n className\n );\n\n // Render children with flex-basis if using flexbox\n const renderChildren = () => {\n if (columnWidths || !children) {\n return children;\n }\n\n const childrenArray = React.Children.toArray(children);\n const columnWidth = `${100 / columnsNumber}%`;\n\n return childrenArray.map((child, index) => (\n <div\n key={index}\n style={{\n flexBasis: columnWidth,\n minWidth: shouldWrap ? \"200px\" : columnWidth,\n }}\n >\n {child}\n </div>\n ));\n };\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {renderChildren()}\n </div>\n );\n}\n","/**\n * Columns Component Schema\n * Flexbox column layout container\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const columnsComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.COLUMNS,\n name: \"Columns\",\n description: \"Flexbox column layout\",\n icon: \"columns\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.SELECT,\n label: \"Number of Columns\",\n default: \"2\",\n options: [\n { label: \"1 Column\", value: \"1\" },\n { label: \"2 Columns\", value: \"2\" },\n { label: \"3 Columns\", value: \"3\" },\n { label: \"4 Columns\", value: \"4\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.SELECT,\n label: \"Gap\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small (0.5rem)\", value: \"sm\" },\n { label: \"Medium (1rem)\", value: \"md\" },\n { label: \"Large (1.5rem)\", value: \"lg\" },\n { label: \"XL (2rem)\", value: \"xl\" },\n ],\n },\n {\n id: \"alignItems\",\n type: FIELD_TYPES.SELECT,\n label: \"Align Items\",\n default: \"stretch\",\n options: [\n { label: \"Start\", value: \"start\" },\n { label: \"Center\", value: \"center\" },\n { label: \"End\", value: \"end\" },\n { label: \"Stretch\", value: \"stretch\" },\n ],\n },\n {\n id: \"reverse\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Reverse Order\",\n default: false,\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"columnWidths\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Column Widths\",\n default: \"\",\n info: 'Comma-separated widths (e.g., \"1fr,2fr,1fr\")',\n },\n {\n id: \"wrap\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Allow Wrap\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n columns: \"2\",\n gap: \"md\",\n alignItems: \"stretch\",\n reverse: false,\n columnWidths: \"\",\n wrap: true,\n },\n\n supportsResponsive: true,\n tags: [\"columns\", \"layout\", \"flex\", \"flexbox\", \"container\"],\n};\n","/**\n * Card Component\n * Container with border, shadow, and padding\n *\n * ✅ Framework-agnostic card component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Padding mapping\nconst paddingMap: Record<string, string> = {\n none: \"p-0\",\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\",\n xl: \"p-12\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n};\n\n// Box shadow mapping\nconst boxShadowMap: Record<string, string> = {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n};\n\nexport function CardComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n children,\n}: ComponentProps): React.ReactElement {\n const { style } = getComponentValues(component, definition);\n\n const {\n variant,\n padding,\n borderRadius,\n backgroundColor,\n borderWidth,\n borderColor,\n boxShadow,\n hoverEffect,\n customClasses,\n } = style;\n\n // Get style classes\n const paddingClass = paddingMap[String(padding)] || paddingMap.md;\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius)] || borderRadiusMap.md;\n const boxShadowClass = boxShadowMap[String(boxShadow)] || boxShadowMap.md;\n const variantStr = String(variant);\n const hoverEffectStr = String(hoverEffect);\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n backgroundColor: String(backgroundColor),\n };\n\n // Apply variant-specific border styles\n if (variantStr === \"outlined\") {\n inlineStyle.borderWidth = String(borderWidth);\n inlineStyle.borderColor = String(borderColor);\n inlineStyle.borderStyle = \"solid\";\n }\n\n // Build card classes\n const cardClasses = cn(\n \"component-card transition-all duration-200\",\n paddingClass,\n borderRadiusClass,\n {\n [boxShadowClass]: variantStr === \"elevated\",\n \"hover:-translate-y-1 hover:shadow-lg\": hoverEffectStr === \"lift\",\n \"hover:shadow-xl\": hoverEffectStr === \"shadow\",\n \"bg-gray-50\": variantStr === \"filled\",\n },\n customClasses,\n className\n );\n\n return (\n <div\n className={cardClasses}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {children}\n </div>\n );\n}\n","/**\n * Card Component Schema\n * Container with border, shadow, and padding\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const cardComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CARD,\n name: \"Card\",\n description: \"Card container with styling\",\n icon: \"square\",\n category: COMPONENT_CATEGORIES.LAYOUT,\n\n contentSettings: [],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"elevated\",\n options: [\n { label: \"Elevated\", value: \"elevated\" },\n { label: \"Outlined\", value: \"outlined\" },\n { label: \"Filled\", value: \"filled\" },\n ],\n },\n {\n id: \"padding\",\n type: FIELD_TYPES.SELECT,\n label: \"Padding\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#ffffff\",\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderWidth\",\n type: FIELD_TYPES.TEXT,\n label: \"Border Width\",\n default: \"1px\",\n },\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"#e5e7eb\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.SELECT,\n label: \"Box Shadow\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n },\n {\n id: \"hoverEffect\",\n type: FIELD_TYPES.SELECT,\n label: \"Hover Effect\",\n default: \"none\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Lift\", value: \"lift\" },\n { label: \"Shadow\", value: \"shadow\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {},\n\n styleDefaults: {\n variant: \"elevated\",\n padding: \"md\",\n borderRadius: \"xl\",\n boxShadow: \"sm\",\n hoverEffect: \"none\",\n // Color/border defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"card\", \"container\", \"box\", \"panel\"],\n};\n","/**\n * Gallery Component\n * Image gallery with grid layout\n *\n * ✅ Framework-agnostic gallery component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Columns mapping\nconst columnsMap: Record<string, string> = {\n \"2\": \"grid-cols-2\",\n \"3\": \"grid-cols-3\",\n \"4\": \"grid-cols-4\",\n \"5\": \"grid-cols-5\",\n};\n\n// Gap mapping\nconst gapMap: Record<string, string> = {\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n};\n\n// Aspect ratio mapping\nconst aspectRatioMap: Record<string, string> = {\n square: \"aspect-square\",\n landscape: \"aspect-[4/3]\",\n portrait: \"aspect-[3/4]\",\n wide: \"aspect-video\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\n// Object fit mapping\nconst objectFitMap: Record<string, string> = {\n cover: \"object-cover\",\n contain: \"object-contain\",\n fill: \"object-fill\",\n};\n\nexport function GalleryComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { images } = content;\n const {\n columns,\n gap,\n aspectRatio,\n borderRadius,\n objectFit,\n showCaptions,\n hoverEffect,\n customClasses,\n } = style;\n\n // Parse images array\n const imagesArray = Array.isArray(images) ? images : [];\n\n // Get style values\n const columnsClass =\n columnsMap[String(columns) as keyof typeof columnsMap] || columnsMap[\"3\"];\n const gapClass = gapMap[String(gap) as keyof typeof gapMap] || gapMap.md;\n const aspectRatioClass =\n aspectRatioMap[String(aspectRatio) as keyof typeof aspectRatioMap] ||\n aspectRatioMap.square;\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius) as keyof typeof borderRadiusMap] ||\n borderRadiusMap.md;\n const objectFitClass =\n objectFitMap[String(objectFit) as keyof typeof objectFitMap] ||\n objectFitMap.cover;\n const showCaptionsValue = !!showCaptions;\n const hoverEffectValue = String(hoverEffect);\n\n // Build container classes\n const containerClasses = cn(\n \"component-gallery grid\",\n columnsClass,\n gapClass,\n customClasses,\n className\n );\n\n if (imagesArray.length === 0) {\n return (\n <div\n className={cn(containerClasses, \"bg-gray-100 p-8 text-center\")}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <p className=\"text-gray-500\">No images in gallery</p>\n </div>\n );\n }\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {imagesArray.map((image, index: number) => {\n const imageObj = image as Record<string, unknown>;\n const src = String(imageObj.src || \"\");\n const alt = String(imageObj.alt || `Gallery image ${index + 1}`);\n const caption = String(imageObj.caption || \"\");\n\n return (\n <div\n key={index}\n className={cn(\"gallery-item overflow-hidden\", borderRadiusClass)}\n >\n <div\n className={cn(\n \"relative w-full transition-transform duration-300\",\n aspectRatioClass,\n {\n \"hover:scale-110\": hoverEffectValue === \"zoom\",\n \"hover:opacity-80\": hoverEffectValue === \"opacity\",\n }\n )}\n >\n <img\n src={src}\n alt={alt}\n className={cn(\"h-full w-full\", objectFitClass)}\n />\n </div>\n {showCaptionsValue && caption ? (\n <p className=\"mt-2 text-sm text-gray-600\">{caption}</p>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * Gallery Component Schema\n * Image gallery with grid layout\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const galleryComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.GALLERY,\n name: \"Gallery\",\n description: \"Image gallery grid\",\n icon: \"grid\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"images\",\n type: FIELD_TYPES.ARRAY,\n label: \"Images\",\n default: [],\n required: true,\n info: \"Array of {src, alt, caption} objects\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.SELECT,\n label: \"Columns\",\n default: \"3\",\n options: [\n { label: \"2 Columns\", value: \"2\" },\n { label: \"3 Columns\", value: \"3\" },\n { label: \"4 Columns\", value: \"4\" },\n { label: \"5 Columns\", value: \"5\" },\n ],\n },\n {\n id: \"gap\",\n type: FIELD_TYPES.SELECT,\n label: \"Gap\",\n default: \"md\",\n options: [\n { label: \"Small (0.5rem)\", value: \"sm\" },\n { label: \"Medium (1rem)\", value: \"md\" },\n { label: \"Large (1.5rem)\", value: \"lg\" },\n ],\n },\n {\n id: \"aspectRatio\",\n type: FIELD_TYPES.SELECT,\n label: \"Image Aspect Ratio\",\n default: \"square\",\n options: [\n { label: \"Square (1:1)\", value: \"square\" },\n { label: \"Landscape (4:3)\", value: \"landscape\" },\n { label: \"Portrait (3:4)\", value: \"portrait\" },\n { label: \"Wide (16:9)\", value: \"wide\" },\n ],\n },\n {\n id: \"objectFit\",\n type: FIELD_TYPES.SELECT,\n label: \"Image Fit\",\n default: \"cover\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n { label: \"Fill\", value: \"fill\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"showCaptions\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Captions\",\n default: false,\n },\n {\n id: \"hoverEffect\",\n type: FIELD_TYPES.SELECT,\n label: \"Hover Effect\",\n default: \"zoom\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Zoom\", value: \"zoom\" },\n { label: \"Opacity\", value: \"opacity\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n images: [],\n },\n\n styleDefaults: {\n columns: \"3\",\n gap: \"md\",\n aspectRatio: \"square\",\n objectFit: \"cover\",\n borderRadius: \"md\",\n showCaptions: false,\n hoverEffect: \"zoom\",\n },\n\n supportsResponsive: true,\n tags: [\"gallery\", \"images\", \"photos\", \"grid\"],\n};\n","/**\n * Input Component\n * Text input field for forms\n *\n * ✅ Framework-agnostic input component\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap: Record<string, string> = {\n sm: \"h-8 px-3 py-1.5 text-sm\",\n md: \"h-9 px-4 py-2 text-base md:text-sm\",\n lg: \"h-10 px-5 py-3 text-base\",\n};\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n auto: \"w-auto\",\n \"50\": \"w-1/2\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport function InputComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const { content, style } = getComponentValues(component, definition);\n\n const { type, name, label, placeholder, defaultValue, required, disabled } =\n content;\n const {\n size,\n width,\n borderRadius,\n borderColor,\n focusBorderColor,\n backgroundColor,\n textColor,\n customClasses,\n } = style;\n\n // Get size classes (only when not using defaults)\n const sizeClass = String(size) !== \"default\" ? sizeMap[String(size)] : \"\";\n const widthClass = widthMap[String(width)] || widthMap.full;\n const borderRadiusClass =\n String(borderRadius) !== \"md\" ? borderRadiusMap[String(borderRadius)] : \"\";\n\n // Build container classes\n const containerClasses = cn(\"component-input\", widthClass, className);\n\n // Build input classes (matching shadcn/ui input styles)\n const inputClasses = cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n sizeClass,\n borderRadiusClass,\n customClasses\n );\n\n // Build inline styles for custom colors\n const inputStyle: React.CSSProperties = {\n ...(borderColor && { borderColor: String(borderColor) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(textColor && { color: String(textColor) }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `input-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {label ? (\n <label\n htmlFor={fieldId}\n className=\"mb-1.5 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Input Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </label>\n ) : null}\n <input\n type={String(type)}\n id={fieldId}\n name={String(name)}\n placeholder={placeholder ? String(placeholder) : undefined}\n defaultValue={defaultValue ? String(defaultValue) : undefined}\n required={!!required}\n disabled={!!disabled}\n className={inputClasses}\n style={inputStyle}\n onFocus={(e) => {\n if (focusBorderColor) {\n e.currentTarget.style.borderColor = String(focusBorderColor);\n }\n }}\n onBlur={(e) => {\n if (borderColor) {\n e.currentTarget.style.borderColor = String(borderColor);\n }\n }}\n />\n </div>\n );\n}\n","/**\n * Input Component Schema\n * Text input field for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const inputComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.INPUT,\n name: \"Input\",\n description: \"Text input field\",\n icon: \"type\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"type\",\n type: FIELD_TYPES.SELECT,\n label: \"Input Type\",\n default: \"text\",\n required: true,\n options: [\n { label: \"Text\", value: \"text\" },\n { label: \"Email\", value: \"email\" },\n { label: \"Password\", value: \"password\" },\n { label: \"Number\", value: \"number\" },\n { label: \"Tel\", value: \"tel\" },\n { label: \"URL\", value: \"url\" },\n { label: \"Search\", value: \"search\" },\n { label: \"Date\", value: \"date\" },\n { label: \"Time\", value: \"time\" },\n ],\n },\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"placeholder\",\n type: FIELD_TYPES.TEXT,\n label: \"Placeholder\",\n default: \"\",\n },\n {\n id: \"defaultValue\",\n type: FIELD_TYPES.TEXT,\n label: \"Default Value\",\n default: \"\",\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (h-9)\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Half (50%)\", value: \"50\" },\n { label: \"Full (100%)\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium (Default)\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Full\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"focusBorderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Focus Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n info: \"Leave empty to use theme default (transparent)\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n type: \"text\",\n name: \"\",\n label: \"\",\n placeholder: \"\",\n defaultValue: \"\",\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n size: \"default\",\n width: \"full\",\n borderRadius: \"md\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"input\", \"form\", \"field\", \"text\"],\n};\n","/**\n * Textarea Component\n * Multi-line text input for forms\n *\n * ✅ Framework-agnostic textarea using Radix UI Label\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n auto: \"w-auto\",\n \"50\": \"w-1/2\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function TextareaComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { name, label, placeholder, defaultValue, rows, required, disabled } =\n content;\n const {\n width,\n borderRadius,\n borderColor,\n focusBorderColor,\n backgroundColor,\n textColor,\n customClasses,\n } = style;\n\n // Get width and border radius classes (only when not using defaults)\n const widthClass = widthMap[String(width)] || widthMap.full;\n const borderRadiusClass =\n String(borderRadius) !== \"md\" ? borderRadiusMap[String(borderRadius)] : \"\";\n\n // Build container classes\n const containerClasses = cn(\"component-textarea\", widthClass, className);\n\n // Build textarea classes (shadcn textarea styles)\n const textareaClasses = cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n \"resize-y\",\n borderRadiusClass,\n customClasses\n );\n\n // Build inline styles for custom colors\n const textareaStyle: React.CSSProperties = {\n ...(borderColor && { borderColor: String(borderColor) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(textColor && { color: String(textColor) }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `textarea-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {label ? (\n <LabelPrimitive.Root\n htmlFor={fieldId}\n className=\"mb-1.5 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Textarea Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </LabelPrimitive.Root>\n ) : null}\n <textarea\n id={fieldId}\n name={String(name)}\n placeholder={placeholder ? String(placeholder) : undefined}\n defaultValue={defaultValue ? String(defaultValue) : undefined}\n rows={Number(rows)}\n required={!!required}\n disabled={!!disabled}\n className={textareaClasses}\n style={textareaStyle}\n onFocus={(e) => {\n if (focusBorderColor) {\n e.currentTarget.style.borderColor = String(focusBorderColor);\n }\n }}\n onBlur={(e) => {\n if (borderColor) {\n e.currentTarget.style.borderColor = String(borderColor);\n }\n }}\n />\n </div>\n );\n}\n","/**\n * Textarea Component Schema\n * Multi-line text input for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const textareaComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TEXTAREA,\n name: \"Textarea\",\n description: \"Multi-line text input\",\n icon: \"align-left\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"placeholder\",\n type: FIELD_TYPES.TEXT,\n label: \"Placeholder\",\n default: \"\",\n },\n {\n id: \"defaultValue\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Default Value\",\n default: \"\",\n },\n {\n id: \"rows\",\n type: FIELD_TYPES.NUMBER,\n label: \"Rows\",\n default: 4,\n min: 2,\n max: 20,\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Half (50%)\", value: \"50\" },\n { label: \"Full (100%)\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium (Default)\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"focusBorderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Focus Border Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"\",\n info: \"Leave empty to use theme default (transparent)\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n name: \"\",\n label: \"\",\n placeholder: \"\",\n defaultValue: \"\",\n rows: 4,\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n width: \"full\",\n borderRadius: \"md\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"textarea\", \"form\", \"field\", \"text\", \"multiline\"],\n};\n","/**\n * Checkbox Component\n * Checkbox input for forms\n *\n * ✅ Framework-agnostic checkbox using Radix UI primitives\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Check } from \"lucide-react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping for checkbox and label\nconst sizeMap: Record<string, { checkbox: string; label: string }> = {\n sm: { checkbox: \"size-4\", label: \"text-sm\" },\n md: { checkbox: \"size-5\", label: \"text-base\" },\n lg: { checkbox: \"size-6\", label: \"text-lg\" },\n};\n\nexport function CheckboxComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { name, label, value, defaultChecked, required, disabled } = content;\n const {\n size,\n checkColor,\n labelPosition,\n borderColor,\n textColor,\n customClasses,\n } = style;\n\n // Get size classes (only when not using default)\n const sizeClasses =\n String(size) !== \"default\" && sizeMap[String(size)]\n ? sizeMap[String(size)]\n : { checkbox: \"\", label: \"\" };\n\n // Build container classes\n const containerClasses = cn(\n \"component-checkbox inline-flex items-center gap-2\",\n {\n \"flex-row-reverse\": labelPosition === \"left\",\n },\n customClasses,\n className\n );\n\n // Build checkbox style for custom colors\n const checkboxStyle: React.CSSProperties & Record<string, string> = {\n ...(checkColor && {\n \"--checkbox-check-color\": String(checkColor),\n }),\n ...(borderColor && {\n borderColor: String(borderColor),\n }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `checkbox-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <CheckboxPrimitive.Root\n id={fieldId}\n name={String(name)}\n value={String(value)}\n defaultChecked={!!defaultChecked}\n required={!!required}\n disabled={!!disabled}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n sizeClasses.checkbox\n )}\n style={checkboxStyle}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label ? (\n <LabelPrimitive.Root\n htmlFor={fieldId}\n className={cn(\n \"cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n sizeClasses.label\n )}\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Checkbox Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </LabelPrimitive.Root>\n ) : null}\n </div>\n );\n}\n","/**\n * Checkbox Component Schema\n * Checkbox input for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const checkboxComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CHECKBOX,\n name: \"Checkbox\",\n description: \"Checkbox input field\",\n icon: \"check-square\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"Accept terms and conditions\",\n },\n {\n id: \"value\",\n type: FIELD_TYPES.TEXT,\n label: \"Value\",\n default: \"on\",\n },\n {\n id: \"defaultChecked\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Default Checked\",\n default: false,\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (shadcn)\", value: \"default\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"checkColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Check Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"labelPosition\",\n type: FIELD_TYPES.SELECT,\n label: \"Label Position\",\n default: \"right\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"#d1d5db\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"#000000\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n name: \"\",\n label: \"Accept terms and conditions\",\n value: \"on\",\n defaultChecked: false,\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n size: \"default\",\n labelPosition: \"right\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"checkbox\", \"form\", \"field\", \"input\", \"toggle\"],\n};\n","/**\n * Select Component\n * Dropdown select input for forms\n *\n * ✅ Framework-agnostic select using Radix UI primitives\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { ChevronDown, Check } from \"lucide-react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap: Record<string, string> = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-4 py-2 text-base\",\n lg: \"px-5 py-3 text-lg\",\n};\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n auto: \"w-auto\",\n \"50\": \"w-1/2\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n};\n\nexport function SelectComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const {\n name,\n label,\n options,\n placeholder,\n defaultValue,\n required,\n disabled,\n } = content;\n const {\n size,\n width,\n borderRadius,\n borderColor,\n focusBorderColor,\n backgroundColor,\n textColor,\n customClasses,\n } = style;\n\n // Parse options array\n const optionsArray = Array.isArray(options) ? options : [];\n\n // Map size to shadcn size (sm | default) - only pass when not default\n const selectSize =\n String(size) === \"sm\"\n ? \"sm\"\n : String(size) === \"default\"\n ? \"default\"\n : \"default\";\n\n // Get width class\n const widthClass = widthMap[String(width)] || widthMap.full;\n\n // Get border radius class (only when not using default)\n const borderRadiusClass =\n String(borderRadius) !== \"md\" ? borderRadiusMap[String(borderRadius)] : \"\";\n\n // Build container classes\n const containerClasses = cn(\"component-select\", widthClass, className);\n\n // Build trigger classes\n const triggerClasses = cn(borderRadiusClass, customClasses);\n\n // Build inline styles for custom colors\n const triggerStyle: React.CSSProperties = {\n ...(borderColor && { borderColor: String(borderColor) }),\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n ...(textColor && { color: String(textColor) }),\n };\n\n // Generate unique ID for accessibility\n const fieldId = String(name) || `select-${component.id}`;\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {label ? (\n <LabelPrimitive.Root\n htmlFor={fieldId}\n className=\"mb-1.5 text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n style={{ color: textColor ? String(textColor) : undefined }}\n >\n <span\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Select Label\"\n >\n {String(label)}\n </span>\n {required ? <span className=\"text-destructive ml-1\">*</span> : null}\n </LabelPrimitive.Root>\n ) : null}\n <SelectPrimitive.Root\n name={String(name)}\n defaultValue={defaultValue ? String(defaultValue) : undefined}\n required={!!required}\n disabled={!!disabled}\n >\n <SelectPrimitive.Trigger\n id={fieldId}\n className={cn(\n \"flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n triggerClasses\n )}\n style={triggerStyle}\n onFocus={(e) => {\n if (focusBorderColor) {\n e.currentTarget.style.borderColor = String(focusBorderColor);\n }\n }}\n onBlur={(e) => {\n if (borderColor) {\n e.currentTarget.style.borderColor = String(borderColor);\n }\n }}\n >\n <SelectPrimitive.Value\n placeholder={placeholder ? String(placeholder) : undefined}\n />\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className=\"relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\"\n position=\"popper\"\n >\n <SelectPrimitive.Viewport className=\"p-1\">\n {optionsArray.map((option, index: number) => {\n const optionObj = option as Record<string, unknown>;\n const value = String(optionObj.value || \"\");\n const optionLabel = String(optionObj.label || \"\");\n return (\n <SelectPrimitive.Item\n key={index}\n value={value}\n className=\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <SelectPrimitive.ItemText>\n {optionLabel}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n })}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n );\n}\n","/**\n * Select Component Schema\n * Dropdown select input for forms\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_CATEGORIES,\n COMPONENT_TYPES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const selectComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.SELECT,\n name: \"Select\",\n description: \"Dropdown select input\",\n icon: \"chevron-down\",\n category: COMPONENT_CATEGORIES.FORM,\n\n contentSettings: [\n {\n id: \"name\",\n type: FIELD_TYPES.TEXT,\n label: \"Field Name\",\n default: \"\",\n required: true,\n info: \"Form field name attribute\",\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"options\",\n type: FIELD_TYPES.ARRAY,\n label: \"Options\",\n default: [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n { label: \"Option 3\", value: \"option3\" },\n ],\n required: true,\n info: \"Array of {label, value} objects\",\n },\n {\n id: \"placeholder\",\n type: FIELD_TYPES.TEXT,\n label: \"Placeholder\",\n default: \"Select an option...\",\n },\n {\n id: \"defaultValue\",\n type: FIELD_TYPES.TEXT,\n label: \"Default Value\",\n default: \"\",\n },\n {\n id: \"required\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Required\",\n default: false,\n },\n {\n id: \"disabled\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Disabled\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"default\",\n options: [\n { label: \"Default (h-9)\", value: \"default\" },\n { label: \"Small (h-8)\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Half (50%)\", value: \"50\" },\n { label: \"Full (100%)\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Full\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"borderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Border Color\",\n default: \"#d1d5db\",\n },\n {\n id: \"focusBorderColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Focus Border Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#ffffff\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"#000000\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n name: \"\",\n label: \"\",\n options: [\n { label: \"Option 1\", value: \"option1\" },\n { label: \"Option 2\", value: \"option2\" },\n { label: \"Option 3\", value: \"option3\" },\n ],\n placeholder: \"Select an option...\",\n defaultValue: \"\",\n required: false,\n disabled: false,\n },\n\n styleDefaults: {\n size: \"default\",\n width: \"full\",\n borderRadius: \"md\",\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"select\", \"dropdown\", \"form\", \"field\", \"input\"],\n};\n","/**\n * Rating Component\n * Star rating display\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { Star } from \"lucide-react\";\n\n// Size mapping\nconst sizeMap: Record<string, number> = {\n sm: 16,\n md: 24,\n lg: 32,\n xl: 40,\n};\n\n// Spacing mapping\nconst spacingMap: Record<string, string> = {\n tight: \"gap-0.5\",\n normal: \"gap-1\",\n loose: \"gap-2\",\n};\n\nexport function RatingComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { rating, maxRating, showValue, reviewCount } = content;\n const {\n size,\n starColor,\n emptyStarColor,\n textColor,\n spacing,\n variant,\n allowHalfStars,\n customClasses,\n } = style;\n\n // Get values\n const ratingValue = Number(rating);\n const maxValue = Number(maxRating);\n const reviewCountValue = Number(reviewCount);\n const sizeValue = sizeMap[String(size)];\n const starColorValue = starColor ? String(starColor) : \"#fbbf24\";\n const emptyStarColorValue = emptyStarColor\n ? String(emptyStarColor)\n : \"#d1d5db\";\n const textColorValue = textColor ? String(textColor) : undefined;\n const spacingClass = spacingMap[String(spacing)];\n const variantValue = String(variant);\n const allowHalfStarsValue = !!allowHalfStars;\n\n // Build container classes\n const containerClasses = cn(\n \"component-rating inline-flex items-center gap-2\",\n customClasses,\n className\n );\n\n // Render stars\n const renderStars = () => {\n const stars = [];\n for (let i = 1; i <= maxValue; i++) {\n const diff = ratingValue - (i - 1);\n let fillPercentage = 0;\n\n if (diff >= 1) {\n fillPercentage = 100;\n } else if (diff > 0 && diff < 1 && allowHalfStarsValue) {\n fillPercentage = Math.round(diff * 100);\n }\n\n stars.push(\n <div\n key={i}\n className=\"relative inline-block\"\n style={{ width: sizeValue, height: sizeValue }}\n >\n {/* Empty star */}\n <Star\n size={sizeValue}\n strokeWidth={variantValue === \"outline\" ? 2 : 0}\n fill={variantValue === \"outline\" ? \"none\" : emptyStarColorValue}\n stroke={variantValue === \"outline\" ? emptyStarColorValue : \"none\"}\n className=\"absolute top-0 left-0\"\n />\n {/* Filled star */}\n {fillPercentage > 0 ? (\n <div\n className=\"absolute top-0 left-0 overflow-hidden\"\n style={{ width: `${fillPercentage}%`, height: sizeValue }}\n >\n <Star\n size={sizeValue}\n strokeWidth={variantValue === \"outline\" ? 2 : 0}\n fill={variantValue === \"outline\" ? \"none\" : starColorValue}\n stroke={variantValue === \"outline\" ? starColorValue : \"none\"}\n />\n </div>\n ) : null}\n </div>\n );\n }\n return stars;\n };\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {/* Stars */}\n <div className={cn(\"flex items-center\", spacingClass)}>\n {renderStars()}\n </div>\n\n {/* Rating value */}\n {showValue ? (\n <span\n className=\"font-medium\"\n style={{\n ...(textColorValue && { color: textColorValue }),\n fontSize: Math.max(12, sizeValue * 0.6),\n }}\n >\n {ratingValue.toFixed(1)}\n </span>\n ) : null}\n\n {/* Review count */}\n {reviewCountValue > 0 ? (\n <span\n className=\"text-sm opacity-70\"\n style={{ ...(textColorValue && { color: textColorValue }) }}\n >\n ({reviewCountValue})\n </span>\n ) : null}\n </div>\n );\n}\n","/**\n * Rating Component Schema\n * Star rating display\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const ratingComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.RATING,\n name: \"Rating\",\n description: \"Star rating display\",\n icon: \"star\",\n category: COMPONENT_CATEGORIES.INTERACTIVE,\n\n contentSettings: [\n {\n id: \"rating\",\n type: FIELD_TYPES.NUMBER,\n label: \"Rating Value\",\n default: 4.5,\n min: 0,\n max: 5,\n step: 0.5,\n required: true,\n },\n {\n id: \"maxRating\",\n type: FIELD_TYPES.NUMBER,\n label: \"Max Rating\",\n default: 5,\n min: 1,\n max: 10,\n required: true,\n },\n {\n id: \"showValue\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Rating Value\",\n default: true,\n },\n {\n id: \"reviewCount\",\n type: FIELD_TYPES.NUMBER,\n label: \"Review Count\",\n default: 0,\n info: \"Number of reviews (0 to hide)\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Star Size\",\n default: \"md\",\n options: [\n { label: \"Small (16px)\", value: \"sm\" },\n { label: \"Medium (24px)\", value: \"md\" },\n { label: \"Large (32px)\", value: \"lg\" },\n { label: \"XL (40px)\", value: \"xl\" },\n ],\n },\n {\n id: \"starColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Star Color\",\n default: \"\",\n info: \"Leave empty to use theme default (yellow)\",\n },\n {\n id: \"emptyStarColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Empty Star Color\",\n default: \"\",\n info: \"Leave empty to use theme default (gray)\",\n },\n {\n id: \"textColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Text Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"spacing\",\n type: FIELD_TYPES.SELECT,\n label: \"Star Spacing\",\n default: \"normal\",\n options: [\n { label: \"Tight\", value: \"tight\" },\n { label: \"Normal\", value: \"normal\" },\n { label: \"Loose\", value: \"loose\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"filled\",\n options: [\n { label: \"Filled\", value: \"filled\" },\n { label: \"Outline\", value: \"outline\" },\n ],\n },\n {\n id: \"allowHalfStars\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Allow Half Stars\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n rating: 4.5,\n maxRating: 5,\n showValue: true,\n reviewCount: 0,\n },\n\n styleDefaults: {\n size: \"md\",\n spacing: \"normal\",\n variant: \"filled\",\n allowHalfStars: true,\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"rating\", \"stars\", \"review\", \"score\"],\n};\n","/**\n * Progress Component\n * Progress bar indicator\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n * ✅ Extends shadcn Progress component (Radix-based)\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Height mapping\nconst heightMap: Record<string, string> = {\n xs: \"h-1\",\n sm: \"h-2\",\n md: \"h-3\",\n lg: \"h-4\",\n};\n\n// Color mapping\nconst colorMap: Record<string, string> = {\n primary: \"bg-blue-500\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n full: \"rounded-full\",\n};\n\nexport function ProgressComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { value, label, showPercentage } = content;\n const {\n height,\n color,\n borderRadius,\n customColor,\n backgroundColor,\n animated,\n customClasses,\n } = style;\n\n // Get progress value (0-100)\n const progressValue = Math.min(100, Math.max(0, Number(value)));\n\n // Get height class (only when not using default)\n const heightClass =\n String(height) !== \"default\" ? heightMap[String(height)] : \"\";\n\n // Get border radius class (only when not using default)\n const borderRadiusClass =\n String(borderRadius) !== \"full\"\n ? borderRadiusMap[String(borderRadius)]\n : \"\";\n\n // Build container classes\n const containerClasses = cn(\n \"component-progress w-full\",\n customClasses,\n className\n );\n\n // Build progress bar classes (override shadcn defaults)\n const progressClasses = cn(heightClass, borderRadiusClass, {\n \"animate-pulse\": animated,\n });\n\n // Get color class for indicator\n const indicatorColorClass =\n String(color) !== \"custom\"\n ? colorMap[String(color)] || colorMap.primary\n : \"\";\n\n // Build inline styles for custom colors\n const progressStyle: React.CSSProperties = {\n ...(backgroundColor && { backgroundColor: String(backgroundColor) }),\n };\n\n const indicatorStyle: React.CSSProperties = {\n ...(String(color) === \"custom\" && {\n backgroundColor: String(customColor),\n }),\n };\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {/* Label and percentage */}\n {label || showPercentage ? (\n <div className=\"flex justify-between items-center mb-2 text-sm\">\n {label ? (\n <span\n className=\"font-medium\"\n data-field-id=\"label\"\n data-element-type=\"text\"\n data-field-label=\"Progress Label\"\n >\n {String(label)}\n </span>\n ) : null}\n {showPercentage ? (\n <span className=\"text-muted-foreground\">{progressValue}%</span>\n ) : null}\n </div>\n ) : null}\n\n {/* Progress bar - using Radix UI Progress */}\n <ProgressPrimitive.Root\n value={progressValue}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n progressClasses\n )}\n style={progressStyle}\n >\n <ProgressPrimitive.Indicator\n className={cn(\n \"h-full w-full flex-1 transition-all\",\n indicatorColorClass\n )}\n style={{\n transform: `translateX(-${100 - progressValue}%)`,\n ...indicatorStyle,\n }}\n />\n </ProgressPrimitive.Root>\n </div>\n );\n}\n","/**\n * Progress Component Schema\n * Progress bar indicator\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const progressComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.PROGRESS,\n name: \"Progress\",\n description: \"Progress bar indicator\",\n icon: \"trending-up\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"value\",\n type: FIELD_TYPES.NUMBER,\n label: \"Progress Value\",\n default: 50,\n min: 0,\n max: 100,\n required: true,\n },\n {\n id: \"label\",\n type: FIELD_TYPES.TEXT,\n label: \"Label\",\n default: \"\",\n },\n {\n id: \"showPercentage\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Percentage\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"height\",\n type: FIELD_TYPES.SELECT,\n label: \"Height\",\n default: \"default\",\n options: [\n { label: \"Default (h-2)\", value: \"default\" },\n { label: \"Thin (4px)\", value: \"xs\" },\n { label: \"Small (8px)\", value: \"sm\" },\n { label: \"Medium (12px)\", value: \"md\" },\n { label: \"Large (16px)\", value: \"lg\" },\n ],\n },\n {\n id: \"color\",\n type: FIELD_TYPES.SELECT,\n label: \"Color\",\n default: \"primary\",\n options: [\n { label: \"Primary (Blue)\", value: \"primary\" },\n { label: \"Success (Green)\", value: \"success\" },\n { label: \"Warning (Yellow)\", value: \"warning\" },\n { label: \"Danger (Red)\", value: \"danger\" },\n { label: \"Custom\", value: \"custom\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"full\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Full\", value: \"full\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"customColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Custom Progress Color\",\n default: \"#3b82f6\",\n },\n {\n id: \"backgroundColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Background Color\",\n default: \"#e5e7eb\",\n },\n {\n id: \"animated\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Animated\",\n default: false,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n value: 50,\n label: \"\",\n showPercentage: true,\n },\n\n styleDefaults: {\n height: \"default\",\n color: \"primary\",\n borderRadius: \"full\",\n animated: false,\n // Color defaults removed - use shadcn theme defaults\n },\n\n supportsResponsive: false,\n tags: [\"progress\", \"bar\", \"indicator\", \"loading\"],\n};\n","/**\n * Alert Component\n * Alert/notification message box\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n * ✅ Extends shadcn Alert component\n */\n\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { Info, CheckCircle, AlertTriangle, XCircle, X } from \"lucide-react\";\n\n// Type icon mapping\nconst iconMap = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: XCircle,\n};\n\n// Type color mapping for filled variant\nconst filledColorMap: Record<string, string> = {\n info: \"bg-blue-100 text-blue-800 border-blue-200\",\n success: \"bg-green-100 text-green-800 border-green-200\",\n warning: \"bg-yellow-100 text-yellow-800 border-yellow-200\",\n error: \"bg-red-100 text-red-800 border-red-200\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function AlertComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { title, message, type, dismissible } = content;\n const { variant, borderRadius, showIcon, customClasses } = style;\n\n const [dismissed, setDismissed] = useState(false);\n\n if (dismissed) return <></>;\n\n // Get type for icon and colors\n const typeStr = String(type);\n const IconComponent = iconMap[typeStr as keyof typeof iconMap] || Info;\n\n // Map to shadcn variant (default or destructive)\n const shadcnVariant = typeStr === \"error\" ? \"destructive\" : \"default\";\n\n // Get color class based on type (for custom styling beyond shadcn variants)\n const colorClass = filledColorMap[typeStr] || filledColorMap.info;\n\n // Get border radius class\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius)] || borderRadiusMap.md;\n\n // Build alert classes\n const alertClasses = cn(\n \"component-alert relative\",\n borderRadiusClass,\n // Apply type-specific colors if not using shadcn destructive\n typeStr !== \"error\" && colorClass,\n customClasses,\n className\n );\n\n return (\n <div\n className=\"relative\"\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <div\n className={cn(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n typeStr === \"error\" &&\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n alertClasses\n )}\n >\n {showIcon && <IconComponent className=\"h-4 w-4\" />}\n {title ? (\n <h5 className=\"mb-1 font-medium leading-none tracking-tight\">\n <span\n data-field-id=\"title\"\n data-element-type=\"text\"\n data-field-label=\"Alert Title\"\n >\n {String(title)}\n </span>\n </h5>\n ) : null}\n <div className=\"text-sm [&_p]:leading-relaxed\">\n <span\n data-field-id=\"message\"\n data-element-type=\"text\"\n data-field-label=\"Alert Message\"\n >\n {String(message)}\n </span>\n </div>\n {dismissible ? (\n <button\n onClick={() => setDismissed(true)}\n className=\"absolute top-3 right-3 opacity-70 hover:opacity-100 transition-opacity\"\n aria-label=\"Dismiss alert\"\n >\n <X size={18} />\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n","/**\n * Alert Component Schema\n * Alert/notification message box\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const alertComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.ALERT,\n name: \"Alert\",\n description: \"Alert message box\",\n icon: \"alert-circle\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"title\",\n type: FIELD_TYPES.TEXT,\n label: \"Title\",\n default: \"\",\n },\n {\n id: \"message\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Message\",\n default: \"This is an alert message\",\n required: true,\n },\n {\n id: \"type\",\n type: FIELD_TYPES.SELECT,\n label: \"Type\",\n default: \"info\",\n options: [\n { label: \"Info\", value: \"info\" },\n { label: \"Success\", value: \"success\" },\n { label: \"Warning\", value: \"warning\" },\n { label: \"Error\", value: \"error\" },\n ],\n },\n {\n id: \"dismissible\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Dismissible\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"filled\",\n options: [\n { label: \"Filled\", value: \"filled\" },\n { label: \"Outlined\", value: \"outlined\" },\n { label: \"Subtle\", value: \"subtle\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"showIcon\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Icon\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n title: \"\",\n message: \"This is an alert message\",\n type: \"info\",\n dismissible: false,\n },\n\n styleDefaults: {\n variant: \"filled\",\n borderRadius: \"md\",\n showIcon: true,\n },\n\n supportsResponsive: false,\n tags: [\"alert\", \"notification\", \"message\", \"banner\"],\n};\n","/**\n * Accordion Component\n * Collapsible content panels\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\nimport { ChevronDown } from \"lucide-react\";\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function AccordionComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { items, allowMultiple } = content;\n const { variant, borderRadius, iconPosition, customClasses } = style;\n\n // Parse items array\n const itemsArray = Array.isArray(items) ? items : [];\n\n // Type for accordion items\n type AccordionItem = {\n title?: string;\n content?: string;\n defaultOpen?: boolean;\n };\n\n // Initialize open items based on defaultOpen\n const [openItems, setOpenItems] = useState<Set<number>>(\n new Set(\n itemsArray\n .map((item, index: number) => {\n const itemObj = item as AccordionItem;\n return itemObj.defaultOpen ? index : -1;\n })\n .filter((i: number) => i >= 0)\n )\n );\n\n const toggleItem = (index: number) => {\n setOpenItems((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(index)) {\n newSet.delete(index);\n } else {\n if (!allowMultiple) {\n newSet.clear();\n }\n newSet.add(index);\n }\n return newSet;\n });\n };\n\n // Get values\n const variantValue = String(variant);\n const borderRadiusClass =\n borderRadiusMap[String(borderRadius) as keyof typeof borderRadiusMap] ||\n borderRadiusMap.md;\n const iconPositionValue = String(iconPosition);\n\n // Build container classes\n const containerClasses = cn(\n \"component-accordion\",\n {\n border: variantValue === \"bordered\",\n \"space-y-2\": variantValue === \"separated\",\n },\n borderRadiusClass,\n customClasses,\n className\n );\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {itemsArray.map((item, index: number) => {\n const itemObj = item as AccordionItem;\n const isOpen = openItems.has(index);\n const title = String(itemObj.title || \"\");\n const content = String(itemObj.content || \"\");\n\n return (\n <div\n key={index}\n className={cn({\n \"border-b last:border-b-0\": variantValue === \"bordered\",\n \"border rounded-md\": variantValue === \"separated\",\n \"border-b last:border-b-0 border-gray-200\":\n variantValue === \"minimal\",\n })}\n >\n {/* Header */}\n <button\n onClick={() => toggleItem(index)}\n className={cn(\n \"w-full px-4 py-3 flex items-center justify-between text-left font-medium hover:bg-gray-50 transition-colors\",\n {\n \"flex-row-reverse\": iconPositionValue === \"left\",\n }\n )}\n >\n <span>{title}</span>\n <ChevronDown\n size={20}\n className={cn(\"transition-transform duration-200\", {\n \"rotate-180\": isOpen,\n })}\n />\n </button>\n\n {/* Content */}\n {isOpen ? (\n <div className=\"px-4 py-3 text-gray-700 border-t\">{content}</div>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n","/**\n * Accordion Component Schema\n * Collapsible content panels\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const accordionComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.ACCORDION,\n name: \"Accordion\",\n description: \"Collapsible panels\",\n icon: \"list\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"items\",\n type: FIELD_TYPES.ARRAY,\n label: \"Items\",\n default: [\n { title: \"Item 1\", content: \"Content for item 1\", defaultOpen: false },\n { title: \"Item 2\", content: \"Content for item 2\", defaultOpen: false },\n ],\n required: true,\n info: \"Array of {title, content, defaultOpen} objects\",\n },\n {\n id: \"allowMultiple\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Allow Multiple Open\",\n default: false,\n info: \"Allow multiple panels open simultaneously\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"bordered\",\n options: [\n { label: \"Bordered\", value: \"bordered\" },\n { label: \"Separated\", value: \"separated\" },\n { label: \"Minimal\", value: \"minimal\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"iconPosition\",\n type: FIELD_TYPES.SELECT,\n label: \"Icon Position\",\n default: \"right\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n items: [\n { title: \"Item 1\", content: \"Content for item 1\", defaultOpen: false },\n { title: \"Item 2\", content: \"Content for item 2\", defaultOpen: false },\n ],\n allowMultiple: false,\n },\n\n styleDefaults: {\n variant: \"bordered\",\n borderRadius: \"md\",\n iconPosition: \"right\",\n },\n\n supportsResponsive: false,\n tags: [\"accordion\", \"collapse\", \"panel\", \"faq\"],\n};\n","/**\n * Tabs Component\n * Tabbed interface for content\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React, { useState } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\nexport function TabsComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { tabs, defaultTab } = content;\n const { variant, alignment, activeColor, customClasses } = style;\n\n // Parse tabs array\n const tabsArray = Array.isArray(tabs) ? tabs : [];\n\n // Type for tab items\n type TabItem = { label?: string; content?: string };\n\n const [activeTab, setActiveTab] = useState(Number(defaultTab) || 0);\n\n // Get values\n const variantValue = String(variant);\n const alignmentValue = String(alignment);\n const activeColorValue = activeColor ? String(activeColor) : \"#3b82f6\";\n\n // Build tab list classes\n const tabListClasses = cn(\"flex border-b\", {\n \"justify-start\": alignmentValue === \"left\",\n \"justify-center\": alignmentValue === \"center\",\n \"justify-end\": alignmentValue === \"right\",\n });\n\n // Build tab button classes\n const getTabButtonClasses = (isActive: boolean) =>\n cn(\"px-4 py-2 font-medium transition-colors\", {\n // Underline variant\n \"border-b-2\": variantValue === \"underline\",\n \"border-transparent\": variantValue === \"underline\" && !isActive,\n \"hover:border-gray-300\": variantValue === \"underline\" && !isActive,\n\n // Pills variant\n \"rounded-full\": variantValue === \"pills\",\n \"bg-gray-100\": variantValue === \"pills\" && !isActive,\n \"hover:bg-gray-200\": variantValue === \"pills\" && !isActive,\n\n // Enclosed variant\n \"border border-b-0 rounded-t-md\": variantValue === \"enclosed\",\n \"border-gray-300 bg-gray-50\": variantValue === \"enclosed\" && !isActive,\n \"border-gray-300 bg-white\": variantValue === \"enclosed\" && isActive,\n });\n\n // Build container classes\n const containerClasses = cn(\"component-tabs\", customClasses, className);\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {/* Tab list */}\n <div className={tabListClasses}>\n {tabsArray.map((tab, index: number) => {\n const tabObj = tab as TabItem;\n const isActive = activeTab === index;\n const label = String(tabObj.label || `Tab ${index + 1}`);\n\n return (\n <button\n key={index}\n onClick={() => setActiveTab(index)}\n className={getTabButtonClasses(isActive)}\n style={{\n ...(isActive &&\n variantValue === \"underline\" && {\n borderBottomColor: activeColorValue,\n color: activeColorValue,\n }),\n ...(isActive &&\n variantValue === \"pills\" && {\n backgroundColor: activeColorValue,\n color: \"#ffffff\",\n }),\n }}\n >\n {label}\n </button>\n );\n })}\n </div>\n\n {/* Tab content */}\n <div className=\"p-4\">\n {tabsArray[activeTab]\n ? String((tabsArray[activeTab] as TabItem).content || \"\")\n : \"\"}\n </div>\n </div>\n );\n}\n","/**\n * Tabs Component Schema\n * Tabbed interface for content\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const tabsComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TABS,\n name: \"Tabs\",\n description: \"Tabbed interface\",\n icon: \"tabs\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"tabs\",\n type: FIELD_TYPES.ARRAY,\n label: \"Tabs\",\n default: [\n { label: \"Tab 1\", content: \"Content for tab 1\" },\n { label: \"Tab 2\", content: \"Content for tab 2\" },\n ],\n required: true,\n info: \"Array of {label, content} objects\",\n },\n {\n id: \"defaultTab\",\n type: FIELD_TYPES.NUMBER,\n label: \"Default Tab Index\",\n default: 0,\n min: 0,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"underline\",\n options: [\n { label: \"Underline\", value: \"underline\" },\n { label: \"Pills\", value: \"pills\" },\n { label: \"Enclosed\", value: \"enclosed\" },\n ],\n },\n {\n id: \"alignment\",\n type: FIELD_TYPES.SELECT,\n label: \"Alignment\",\n default: \"left\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"activeColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Active Tab Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n tabs: [\n { label: \"Tab 1\", content: \"Content for tab 1\" },\n { label: \"Tab 2\", content: \"Content for tab 2\" },\n ],\n defaultTab: 0,\n },\n\n styleDefaults: {\n variant: \"underline\",\n alignment: \"left\",\n // activeColor default removed - use theme default\n },\n\n supportsResponsive: false,\n tags: [\"tabs\", \"tabbed\", \"interface\", \"navigation\"],\n};\n","/**\n * Timer Component\n * Countdown timer\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React, { useState, useEffect } from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap = {\n sm: { number: \"text-2xl\", label: \"text-xs\" },\n md: { number: \"text-4xl\", label: \"text-sm\" },\n lg: { number: \"text-6xl\", label: \"text-base\" },\n};\n\nexport function TimerComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { targetDate, showDays, showHours, showMinutes, showSeconds } = content;\n const { size, layout, numberColor, labelColor, customClasses } = style;\n\n const [timeLeft, setTimeLeft] = useState({\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n });\n\n useEffect(() => {\n if (!targetDate) return;\n\n const calculateTimeLeft = () => {\n const difference =\n new Date(String(targetDate)).getTime() - new Date().getTime();\n\n if (difference > 0) {\n setTimeLeft({\n days: Math.floor(difference / (1000 * 60 * 60 * 24)),\n hours: Math.floor((difference / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((difference / 1000 / 60) % 60),\n seconds: Math.floor((difference / 1000) % 60),\n });\n } else {\n setTimeLeft({ days: 0, hours: 0, minutes: 0, seconds: 0 });\n }\n };\n\n calculateTimeLeft();\n const interval = setInterval(calculateTimeLeft, 1000);\n\n return () => clearInterval(interval);\n }, [targetDate]);\n\n // Get values\n const sizeClasses =\n sizeMap[String(size) as keyof typeof sizeMap] || sizeMap.md;\n const layoutValue = String(layout);\n const numberColorValue = numberColor ? String(numberColor) : undefined;\n const labelColorValue = labelColor ? String(labelColor) : undefined;\n\n // Build container classes\n const containerClasses = cn(\n \"component-timer flex gap-4\",\n {\n \"flex-row\": layoutValue === \"horizontal\",\n \"flex-col\": layoutValue === \"vertical\",\n },\n customClasses,\n className\n );\n\n // Render time unit\n const renderUnit = (value: number, label: string) => (\n <div className=\"flex flex-col items-center\">\n <div\n className={cn(\"font-bold\", sizeClasses.number)}\n style={{ ...(numberColorValue && { color: numberColorValue }) }}\n >\n {String(value).padStart(2, \"0\")}\n </div>\n <div\n className={cn(\"font-medium\", sizeClasses.label)}\n style={{ ...(labelColorValue && { color: labelColorValue }) }}\n >\n {label}\n </div>\n </div>\n );\n\n return (\n <div\n className={containerClasses}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n {showDays ? renderUnit(timeLeft.days, \"Days\") : null}\n {showHours ? renderUnit(timeLeft.hours, \"Hours\") : null}\n {showMinutes ? renderUnit(timeLeft.minutes, \"Minutes\") : null}\n {showSeconds ? renderUnit(timeLeft.seconds, \"Seconds\") : null}\n </div>\n );\n}\n","/**\n * Timer Component Schema\n * Countdown timer\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const timerComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TIMER,\n name: \"Timer\",\n description: \"Countdown timer\",\n icon: \"clock\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"targetDate\",\n type: FIELD_TYPES.TEXT,\n label: \"Target Date\",\n default: \"\",\n info: \"ISO date string (e.g., 2024-12-31T23:59:59)\",\n },\n {\n id: \"showDays\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Days\",\n default: true,\n },\n {\n id: \"showHours\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Hours\",\n default: true,\n },\n {\n id: \"showMinutes\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Minutes\",\n default: true,\n },\n {\n id: \"showSeconds\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Seconds\",\n default: true,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"md\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n {\n id: \"layout\",\n type: FIELD_TYPES.SELECT,\n label: \"Layout\",\n default: \"horizontal\",\n options: [\n { label: \"Horizontal\", value: \"horizontal\" },\n { label: \"Vertical\", value: \"vertical\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"numberColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Number Color\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"labelColor\",\n type: FIELD_TYPES.COLOR,\n label: \"Label Color\",\n default: \"\",\n info: \"Leave empty to use theme default (muted)\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n targetDate: \"\",\n showDays: true,\n showHours: true,\n showMinutes: true,\n showSeconds: true,\n },\n\n styleDefaults: {\n size: \"md\",\n layout: \"horizontal\",\n // Color defaults removed - use theme defaults\n },\n\n supportsResponsive: true,\n tags: [\"timer\", \"countdown\", \"clock\", \"time\"],\n};\n","/**\n * Table Component\n * Data table display\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Size mapping\nconst sizeMap = {\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n};\n\nconst paddingMap = {\n sm: \"px-2 py-1\",\n md: \"px-4 py-2\",\n lg: \"px-6 py-3\",\n};\n\nexport function TableComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { columns, rows, caption } = content;\n const { variant, size, headerBackground, hoverHighlight, customClasses } =\n style;\n\n // Parse arrays\n const columnsArray = Array.isArray(columns) ? columns : [];\n const rowsArray = Array.isArray(rows) ? rows : [];\n\n // Type for table columns and rows\n type TableColumn = { label?: string; key: string };\n type TableRow = Record<string, unknown>;\n\n // Get values\n const variantValue = String(variant);\n const sizeValue = String(size);\n const textClass = sizeMap[sizeValue as keyof typeof sizeMap] || sizeMap.md;\n const paddingClass =\n paddingMap[sizeValue as keyof typeof paddingMap] || paddingMap.md;\n const hoverHighlightValue = hoverHighlight !== false;\n const headerBgValue = headerBackground ? String(headerBackground) : \"#f3f4f6\";\n\n // Build classes\n const tableClasses = cn(\n \"component-table w-full border-collapse\",\n textClass,\n {\n \"border border-gray-300\": variantValue === \"bordered\",\n },\n customClasses,\n className\n );\n\n return (\n <div\n className=\"overflow-x-auto\"\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <table className={tableClasses}>\n {caption ? (\n <caption className=\"text-sm text-gray-600 mb-2\">\n {String(caption)}\n </caption>\n ) : null}\n\n {/* Header */}\n <thead>\n <tr\n style={{\n backgroundColor: headerBgValue,\n }}\n >\n {columnsArray.map((column, index: number) => {\n const columnObj = column as TableColumn;\n return (\n <th\n key={index}\n className={cn(\"font-semibold text-left\", paddingClass, {\n \"border border-gray-300\": variantValue === \"bordered\",\n })}\n >\n {String(columnObj.label || columnObj.key || \"\")}\n </th>\n );\n })}\n </tr>\n </thead>\n\n {/* Body */}\n <tbody>\n {rowsArray.map((row, rowIndex: number) => {\n const rowObj = row as TableRow;\n return (\n <tr\n key={rowIndex}\n className={cn({\n \"border-b border-gray-200\":\n variantValue === \"bordered\" || variantValue === \"simple\",\n \"bg-gray-50\":\n variantValue === \"striped\" && rowIndex % 2 === 1,\n \"hover:bg-gray-100 transition-colors\": hoverHighlightValue,\n })}\n >\n {columnsArray.map((column, colIndex: number) => {\n const columnObj = column as TableColumn;\n return (\n <td\n key={colIndex}\n className={cn(paddingClass, {\n \"border border-gray-300\": variantValue === \"bordered\",\n })}\n >\n {String(rowObj[columnObj.key] || \"\")}\n </td>\n );\n })}\n </tr>\n );\n })}\n\n {rowsArray.length === 0 ? (\n <tr>\n <td\n colSpan={columnsArray.length}\n className={cn(\"text-center text-gray-500\", paddingClass)}\n >\n No data\n </td>\n </tr>\n ) : null}\n </tbody>\n </table>\n </div>\n );\n}\n","/**\n * Table Component Schema\n * Data table display\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const tableComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.TABLE,\n name: \"Table\",\n description: \"Data table\",\n icon: \"table\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"columns\",\n type: FIELD_TYPES.ARRAY,\n label: \"Columns\",\n default: [\n { key: \"name\", label: \"Name\" },\n { key: \"email\", label: \"Email\" },\n ],\n required: true,\n info: \"Array of {key, label} objects\",\n },\n {\n id: \"rows\",\n type: FIELD_TYPES.ARRAY,\n label: \"Rows\",\n default: [],\n required: true,\n info: \"Array of data objects\",\n },\n {\n id: \"caption\",\n type: FIELD_TYPES.TEXT,\n label: \"Table Caption\",\n default: \"\",\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"variant\",\n type: FIELD_TYPES.SELECT,\n label: \"Variant\",\n default: \"bordered\",\n options: [\n { label: \"Bordered\", value: \"bordered\" },\n { label: \"Striped\", value: \"striped\" },\n { label: \"Simple\", value: \"simple\" },\n ],\n },\n {\n id: \"size\",\n type: FIELD_TYPES.SELECT,\n label: \"Size\",\n default: \"md\",\n options: [\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"headerBackground\",\n type: FIELD_TYPES.COLOR,\n label: \"Header Background\",\n default: \"\",\n info: \"Leave empty to use theme default\",\n },\n {\n id: \"hoverHighlight\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Row Hover Highlight\",\n default: true,\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n columns: [\n { key: \"name\", label: \"Name\" },\n { key: \"email\", label: \"Email\" },\n ],\n rows: [],\n caption: \"\",\n },\n\n styleDefaults: {\n variant: \"bordered\",\n size: \"md\",\n hoverHighlight: true,\n // headerBackground default removed - use theme default\n },\n\n supportsResponsive: true,\n tags: [\"table\", \"data\", \"grid\", \"spreadsheet\"],\n};\n","/**\n * Map Component\n * Embedded Google Maps\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\n\n// Height mapping\nconst heightMap: Record<string, string> = {\n sm: \"300px\",\n md: \"450px\",\n lg: \"600px\",\n xl: \"800px\",\n};\n\n// Width mapping\nconst widthMap: Record<string, string> = {\n \"50\": \"w-1/2\",\n \"75\": \"w-3/4\",\n full: \"w-full\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function MapComponent({\n component,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n const {\n address = \"\",\n embedUrl = \"\",\n zoom = 15,\n mapType = \"roadmap\",\n } = component.content;\n\n const style = component.style;\n\n // Get dimensions\n const height = style.customHeight\n ? String(style.customHeight)\n : heightMap[String(style.height || \"md\")] || \"450px\";\n const widthClass = widthMap[String(style.width || \"full\")] || \"w-full\";\n const borderRadiusClass =\n borderRadiusMap[String(style.borderRadius || \"md\")] || \"rounded-md\";\n\n // Build Google Maps embed URL\n const getMapUrl = (): string => {\n // If custom embed URL provided, use it\n if (embedUrl) {\n return String(embedUrl);\n }\n\n // Otherwise, build URL from address\n if (!address) {\n return \"\";\n }\n\n const encodedAddress = encodeURIComponent(String(address));\n return `https://www.google.com/maps/embed/v1/place?key=YOUR_API_KEY&q=${encodedAddress}&zoom=${zoom}&maptype=${mapType}`;\n };\n\n const mapUrl = getMapUrl();\n\n // Build classes\n const classes = cn(\n \"component-map overflow-hidden\",\n widthClass,\n borderRadiusClass,\n style.customClasses,\n className\n );\n\n // Build inline style\n const inlineStyle: React.CSSProperties = {\n height: String(height),\n boxShadow: style.boxShadow ? String(style.boxShadow) : undefined,\n };\n\n if (!mapUrl) {\n return (\n <div\n className={cn(classes, \"bg-gray-100 flex items-center justify-center\")}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <p className=\"text-gray-500\">No map address provided</p>\n </div>\n );\n }\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <iframe\n src={mapUrl}\n width=\"100%\"\n height=\"100%\"\n style={{ border: 0 }}\n allowFullScreen\n loading=\"lazy\"\n referrerPolicy=\"no-referrer-when-downgrade\"\n title={`Map of ${address}`}\n />\n </div>\n );\n}\n","/**\n * Map Component Schema\n * Google Maps embed\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const mapComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.MAP,\n name: \"Map\",\n description: \"Embedded Google Maps\",\n icon: \"map-pin\",\n category: COMPONENT_CATEGORIES.MEDIA,\n\n contentSettings: [\n {\n id: \"address\",\n type: FIELD_TYPES.TEXT,\n label: \"Address or Location\",\n default: \"\",\n required: true,\n info: \"Address or coordinates to display\",\n },\n {\n id: \"embedUrl\",\n type: FIELD_TYPES.TEXT,\n label: \"Google Maps Embed URL\",\n default: \"\",\n info: \"Optional: Full iframe embed URL from Google Maps\",\n },\n {\n id: \"zoom\",\n type: FIELD_TYPES.NUMBER,\n label: \"Zoom Level\",\n default: 15,\n min: 1,\n max: 20,\n },\n {\n id: \"mapType\",\n type: FIELD_TYPES.SELECT,\n label: \"Map Type\",\n default: \"roadmap\",\n options: [\n { label: \"Roadmap\", value: \"roadmap\" },\n { label: \"Satellite\", value: \"satellite\" },\n { label: \"Hybrid\", value: \"hybrid\" },\n { label: \"Terrain\", value: \"terrain\" },\n ],\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"height\",\n type: FIELD_TYPES.SELECT,\n label: \"Height\",\n default: \"md\",\n options: [\n { label: \"Small (300px)\", value: \"sm\" },\n { label: \"Medium (450px)\", value: \"md\" },\n { label: \"Large (600px)\", value: \"lg\" },\n { label: \"XL (800px)\", value: \"xl\" },\n ],\n },\n {\n id: \"width\",\n type: FIELD_TYPES.SELECT,\n label: \"Width\",\n default: \"full\",\n options: [\n { label: \"50%\", value: \"50\" },\n { label: \"75%\", value: \"75\" },\n { label: \"Full Width\", value: \"full\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"customHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom Height\",\n default: \"\",\n info: \"Override preset height (e.g., 500px, 50vh)\",\n },\n {\n id: \"boxShadow\",\n type: FIELD_TYPES.TEXT,\n label: \"Box Shadow\",\n default: \"\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n address: \"\",\n embedUrl: \"\",\n zoom: 15,\n mapType: \"roadmap\",\n },\n\n styleDefaults: {\n height: \"md\",\n width: \"full\",\n borderRadius: \"md\",\n customHeight: \"\",\n boxShadow: \"\",\n },\n\n supportsResponsive: true,\n tags: [\"map\", \"google-maps\", \"location\", \"embed\"],\n};\n","/**\n * Code Component\n * Code block display\n *\n * ✅ Now uses component-helpers for auto-typed values with validation\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport type { ComponentProps } from \"../../types\";\nimport { cn } from \"../../utils/cn\";\nimport { getComponentValues } from \"../../utils/component\";\n\n// Font size mapping\nconst fontSizeMap: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n base: \"text-base\",\n};\n\n// Border radius mapping\nconst borderRadiusMap: Record<string, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n};\n\nexport function CodeComponent({\n component,\n definition,\n sectionId,\n isEditing,\n className,\n}: ComponentProps): React.ReactElement {\n // ✅ Auto-extract all fields from schema with validation\n const { content, style } = getComponentValues(component, definition);\n\n // ✅ Destructure - auto-typed, no casting needed!\n const { code, language, showLineNumbers } = content;\n const { theme, fontSize, borderRadius, maxHeight, customClasses } = style;\n\n // Get values\n const themeValue = String(theme);\n const fontSizeClass = fontSizeMap[String(fontSize)];\n const borderRadiusClass = borderRadiusMap[String(borderRadius)];\n\n // Split code into lines if showing line numbers\n const codeLines = String(code).split(\"\\n\");\n\n // Build classes\n const classes = cn(\n \"component-code overflow-x-auto\",\n borderRadiusClass,\n {\n \"bg-gray-900 text-gray-100\": themeValue === \"dark\",\n \"bg-gray-50 text-gray-900 border border-gray-200\": themeValue === \"light\",\n },\n customClasses,\n className\n );\n\n // Build inline style (only when values are provided)\n const inlineStyle: React.CSSProperties = {\n ...(maxHeight && {\n maxHeight: String(maxHeight),\n overflowY: \"auto\" as const,\n }),\n };\n\n return (\n <div\n className={classes}\n style={inlineStyle}\n data-component-id={component.id}\n data-component-type={component.type}\n data-section-id={sectionId}\n data-editable={isEditing ? \"true\" : undefined}\n >\n <pre className={cn(\"p-4\", fontSizeClass)}>\n <code className={`language-${String(language)}`}>\n {showLineNumbers ? (\n <table className=\"w-full\">\n <tbody>\n {codeLines.map((line, index) => (\n <tr key={index}>\n <td className=\"pr-4 text-right select-none opacity-50 w-10\">\n {index + 1}\n </td>\n <td>{line || \"\\n\"}</td>\n </tr>\n ))}\n </tbody>\n </table>\n ) : (\n String(code)\n )}\n </code>\n </pre>\n </div>\n );\n}\n","/**\n * Code Component Schema\n * Code block with syntax highlighting\n */\n\nimport type { ComponentDefinition } from \"../../types\";\nimport {\n COMPONENT_TYPES,\n COMPONENT_CATEGORIES,\n FIELD_TYPES,\n} from \"../../types\";\n\nexport const codeComponentDefinition: ComponentDefinition = {\n type: COMPONENT_TYPES.CODE,\n name: \"Code\",\n description: \"Code block display\",\n icon: \"code\",\n category: COMPONENT_CATEGORIES.ADVANCED,\n\n contentSettings: [\n {\n id: \"code\",\n type: FIELD_TYPES.TEXTAREA,\n label: \"Code\",\n default: 'console.log(\"Hello World\");',\n required: true,\n },\n {\n id: \"language\",\n type: FIELD_TYPES.SELECT,\n label: \"Language\",\n default: \"javascript\",\n options: [\n { label: \"JavaScript\", value: \"javascript\" },\n { label: \"TypeScript\", value: \"typescript\" },\n { label: \"Python\", value: \"python\" },\n { label: \"HTML\", value: \"html\" },\n { label: \"CSS\", value: \"css\" },\n { label: \"JSON\", value: \"json\" },\n { label: \"Bash\", value: \"bash\" },\n ],\n },\n {\n id: \"showLineNumbers\",\n type: FIELD_TYPES.BOOLEAN,\n label: \"Show Line Numbers\",\n default: false,\n },\n ],\n\n basicStyleSettings: [\n {\n id: \"theme\",\n type: FIELD_TYPES.SELECT,\n label: \"Theme\",\n default: \"dark\",\n options: [\n { label: \"Dark\", value: \"dark\" },\n { label: \"Light\", value: \"light\" },\n ],\n },\n {\n id: \"fontSize\",\n type: FIELD_TYPES.SELECT,\n label: \"Font Size\",\n default: \"sm\",\n options: [\n { label: \"XS\", value: \"xs\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Base\", value: \"base\" },\n ],\n },\n {\n id: \"borderRadius\",\n type: FIELD_TYPES.SELECT,\n label: \"Border Radius\",\n default: \"md\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" },\n ],\n },\n ],\n\n advancedStyleSettings: [\n {\n id: \"maxHeight\",\n type: FIELD_TYPES.TEXT,\n label: \"Max Height\",\n default: \"\",\n info: \"e.g., 400px - enables scrolling\",\n },\n {\n id: \"customClasses\",\n type: FIELD_TYPES.TEXT,\n label: \"Custom CSS Classes\",\n default: \"\",\n },\n ],\n\n contentDefaults: {\n code: 'console.log(\"Hello World\");',\n language: \"javascript\",\n showLineNumbers: false,\n },\n\n styleDefaults: {\n theme: \"dark\",\n fontSize: \"sm\",\n borderRadius: \"md\",\n maxHeight: \"\",\n },\n\n supportsResponsive: false,\n tags: [\"code\", \"syntax\", \"highlight\", \"pre\", \"programming\"],\n};\n","\"use client\";\n\n/**\n * @onex/core/client - Client-Safe Exports\n *\n * This entry point exports only client-safe code that can be used in:\n * - Client Components (\"use client\")\n * - Server Components\n * - Shared utilities\n *\n * Does NOT include:\n * - ThemeRegistryManager (server-only, uses fs/promises)\n */\n\nexport const version = \"0.1.0\";\n\n// Type Definitions (all safe)\nexport * from \"./types\";\n\n// Registry Factories (client-safe - no fs operations)\nexport * from \"./registry/section-registry\";\nexport * from \"./registry/block-registry\";\nexport * from \"./registry/component-registry\";\n// NOTE: theme-registry-manager is NOT exported here (server-only)\n\n// Utility Functions (all pure functions, client-safe)\nexport * from \"./utils\";\n\n// Rendering Engine (all client components)\nexport * from \"./renderers\";\n\n// React Contexts (all client-safe)\nexport * from \"./contexts\";\n\n// Layout Components (all client-safe)\nexport * from \"./components\";\n"]}