react-tailwind-email-editor 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -0
- package/dist/index.d.cts +694 -0
- package/dist/index.d.ts +694 -0
- package/dist/index.js +4679 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +4626 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/accordion.tsx","../src/components/editor/context.tsx","../src/components/editor/Toolbox.tsx","../src/components/ui/button.tsx","../src/components/ui/scroll-area.tsx","../src/components/editor/SettingsPanel.tsx","../src/components/editor/Paper.tsx","../src/components/editor/RenderNode.tsx","../src/components/editor/components/Container.tsx","../src/components/editor/components/EmailHeader.tsx","../src/components/editor/components/EmailFooter.tsx","../src/components/editor/components/EmailButton.tsx","../src/components/editor/components/TextBlock.tsx","../src/components/editor/components/ImageBlock.tsx","../src/components/editor/components/Divider.tsx","../src/components/editor/components/InvoiceTable.tsx","../src/components/editor/components/Spacer.tsx","../src/components/editor/components/SocialLinks.tsx","../src/components/editor/components/TwoColumn.tsx","../src/components/editor/components/Countdown.tsx","../src/components/editor/components/PromoCode.tsx","../src/components/editor/components/Testimonial.tsx","../src/components/editor/components/VideoPlaceholder.tsx","../src/components/editor/components/VariableText.tsx","../src/components/editor/components/IconList.tsx","../src/components/editor/defaultComponents.tsx","../src/lib/htmlExporter.ts","../src/components/ui/dialog.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/editor/EmailEditor.tsx"],"names":["React","jsx","jsxs","React4","React5","useEditor","selected","node","ChevronDown","useNode","query","dom","_a","Element","socialIcons","React8","useCallback","Fragment","LayoutTemplate","Check","Copy","useMemo"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n//@ts-ignore\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import React, { createContext, useContext, useMemo } from 'react';\nimport {\n EditorTheme,\n EditorSlots,\n ComponentRegistry,\n EditorCallbacks,\n EmailTemplate,\n HtmlRenderer,\n} from './types';\n\ninterface EditorContextValue {\n components: ComponentRegistry;\n theme: EditorTheme;\n slots: EditorSlots;\n templates: EmailTemplate[];\n callbacks: EditorCallbacks;\n htmlRenderers: Record<string, HtmlRenderer>;\n title: string;\n logo?: React.ReactNode;\n showToolbar: boolean;\n showToolbox: boolean;\n showSettingsPanel: boolean;\n}\n\nconst defaultTheme: EditorTheme = {\n paperWidth: 600,\n paperMinHeight: 800,\n paperBackground: '#ffffff',\n};\n\nconst EditorContext = createContext<EditorContextValue>({\n components: {},\n theme: defaultTheme,\n slots: {},\n templates: [],\n callbacks: {},\n htmlRenderers: {},\n title: 'Email Editor',\n showToolbar: true,\n showToolbox: true,\n showSettingsPanel: true,\n});\n\nexport const useEditorConfig = () => useContext(EditorContext);\n\ninterface EditorProviderProps {\n children: React.ReactNode;\n value: Omit<EditorContextValue, 'theme'> & { theme: EditorTheme };\n}\n\nexport const EditorProvider: React.FC<EditorProviderProps> = ({ children, value }) => {\n const mergedTheme = useMemo(\n () => ({ ...defaultTheme, ...value.theme }),\n [value.theme]\n );\n\n const ctx = useMemo(\n () => ({ ...value, theme: mergedTheme }),\n [value, mergedTheme]\n );\n\n return <EditorContext.Provider value={ctx}>{children}</EditorContext.Provider>;\n};\n","import React from \"react\";\nimport { useEditor, Element } from \"@craftjs/core\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"../ui/accordion\";\nimport { useEditorConfig } from \"./context\";\nimport type { EditorComponentConfig } from \"./types\";\n\ninterface ToolboxItemProps {\n name: string;\n config: EditorComponentConfig;\n}\n\nconst ToolboxItem = ({ name, config }: ToolboxItemProps) => {\n const { connectors } = useEditor();\n const Component = config.component;\n const element = config.createElement ? config.createElement() : <Component />;\n const IconComp = config.icon;\n\n return (\n <div\n ref={(ref) => ref && connectors.create(ref, element)}\n className=\"flex items-center gap-3 p-2.5 border rounded-lg cursor-grab hover:bg-accent hover:border-primary/50 transition-all group\"\n title={config.description}\n >\n <div className=\"flex-shrink-0 w-9 h-9 rounded-md bg-muted flex items-center justify-center text-muted-foreground group-hover:bg-primary/10 group-hover:text-primary transition-colors\">\n {IconComp && <IconComp className=\"h-4 w-4\" />}\n </div>\n <div className=\"flex-1 min-w-0\">\n <span className=\"text-sm font-medium text-foreground block truncate\">\n {config.label}\n </span>\n {config.description && (\n <span className=\"text-xs text-muted-foreground block truncate\">\n {config.description}\n </span>\n )}\n </div>\n </div>\n );\n};\n\nexport const Toolbox = () => {\n const { components } = useEditorConfig();\n\n // Group components by category\n const grouped = React.useMemo(() => {\n const map: Record<string, Array<[string, EditorComponentConfig]>> = {};\n for (const [name, config] of Object.entries(components)) {\n const cat = config.category || \"Other\";\n if (!map[cat]) map[cat] = [];\n map[cat].push([name, config]);\n }\n return map;\n }, [components]);\n\n const categoryKeys = Object.keys(grouped);\n\n return (\n <div className=\"p-3\">\n <Accordion type=\"multiple\" defaultValue={categoryKeys}>\n {categoryKeys.map((category, idx) => (\n <AccordionItem\n key={category}\n value={category}\n className={\n idx < categoryKeys.length - 1 ? \"border-b\" : \"border-b-0\"\n }\n >\n <AccordionTrigger className=\"py-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground hover:no-underline\">\n {category}\n </AccordionTrigger>\n <AccordionContent className=\"pb-3\">\n <div className=\"space-y-2\">\n {grouped[category].map(([name, config]) => (\n <ToolboxItem key={name} name={name} config={config} />\n ))}\n </div>\n {category === \"Dynamic\" && (\n <div className=\"mt-3 p-3 bg-muted/50 rounded-lg\">\n <p className=\"text-xs text-muted-foreground\">\n Use variables like{\" \"}\n <code className=\"bg-primary/10 text-primary px-1 rounded\">\n {\"{{first_name}}\"}\n </code>{\" \"}\n for personalized emails\n </p>\n </div>\n )}\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n </div>\n );\n};\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\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 },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import React from \"react\";\nimport { useEditor } from \"@craftjs/core\";\nimport {\n Trash2,\n Copy,\n ChevronUp,\n ChevronDown,\n Layers,\n Paintbrush,\n Settings2,\n} from \"lucide-react\";\nimport { Button } from \"../../components/ui/button\";\nimport { ScrollArea } from \"../../components/ui/scroll-area\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"../../components/ui/accordion\";\nimport { useEditorConfig } from \"./context\";\n\nexport const SettingsPanel = () => {\n const { slots } = useEditorConfig();\n\n const { selected, actions, query } = useEditor((state) => {\n const [currentNodeId] = state.events.selected;\n let selected;\n\n if (currentNodeId) {\n selected = {\n id: currentNodeId,\n name: state.nodes[currentNodeId].data.name,\n displayName:\n state.nodes[currentNodeId].data.displayName ||\n state.nodes[currentNodeId].data.name,\n settings: state.nodes[currentNodeId].related?.settings,\n isDeletable: state.nodes[currentNodeId].data.name !== \"Paper\",\n parent: state.nodes[currentNodeId].data.parent,\n props: state.nodes[currentNodeId].data.props,\n };\n }\n\n return { selected };\n });\n\n const handleDuplicate = () => {\n if (!selected || !selected.isDeletable) return;\n const node = query.node(selected.id).get();\n const parent = node.data.parent;\n if (parent) {\n try {\n const serializedNode = query.node(selected.id).toSerializedNode();\n const parentNode = query.node(parent).get();\n const siblings = parentNode.data.nodes || [];\n const currentIndex = siblings.indexOf(selected.id);\n const newNode = query\n .parseSerializedNode(serializedNode)\n .toNode((node) => {\n node.id = `${node.data.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n return node;\n });\n actions.addNodeTree(\n { rootNodeId: newNode.id, nodes: { [newNode.id]: newNode } },\n parent,\n currentIndex + 1,\n );\n } catch (e) {\n console.log(\"Duplicate error:\", e);\n }\n }\n };\n\n const handleMoveUp = () => {\n if (!selected || !selected.parent) return;\n const parentNode = query.node(selected.parent).get();\n const siblings = parentNode.data.nodes || [];\n const currentIndex = siblings.indexOf(selected.id);\n if (currentIndex > 0) {\n actions.move(selected.id, selected.parent, currentIndex - 1);\n }\n };\n\n const handleMoveDown = () => {\n if (!selected || !selected.parent) return;\n const parentNode = query.node(selected.parent).get();\n const siblings = parentNode.data.nodes || [];\n const currentIndex = siblings.indexOf(selected.id);\n if (currentIndex < siblings.length - 1) {\n actions.move(selected.id, selected.parent, currentIndex + 2);\n }\n };\n\n // Use custom slot for settings panel\n if (slots.settingsPanel && selected) {\n return React.createElement(slots.settingsPanel, {\n selectedId: selected.id,\n selectedName: selected.displayName || selected.name,\n //@ts-ignore\n selectedSettings: selected.settings,\n onDelete: selected.isDeletable\n ? () => actions.delete(selected.id)\n : undefined,\n onDuplicate: handleDuplicate,\n onMoveUp: handleMoveUp,\n onMoveDown: handleMoveDown,\n });\n }\n\n if (!selected) {\n if (slots.settingsEmptyState) {\n return React.createElement(slots.settingsEmptyState);\n }\n\n return (\n <div className=\"p-6 text-center\">\n <div className=\"w-16 h-16 mx-auto mb-4 rounded-full bg-muted flex items-center justify-center\">\n <Layers className=\"h-8 w-8 text-muted-foreground\" />\n </div>\n <h3 className=\"font-medium text-foreground mb-2\">\n No Element Selected\n </h3>\n <p className=\"text-sm text-muted-foreground\">\n Click on a component in the canvas to edit its properties\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"h-full flex flex-col\">\n <div className=\"p-4 border-b bg-muted/30\">\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-2 h-2 rounded-full bg-primary\" />\n <h3 className=\"font-semibold text-sm\">\n {selected.displayName || selected.name}\n </h3>\n </div>\n </div>\n\n {selected.isDeletable && (\n <div className=\"flex gap-1.5\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"flex-1 h-8 text-xs\"\n onClick={handleMoveUp}\n title=\"Move Up\"\n >\n <ChevronUp className=\"h-3.5 w-3.5 mr-1\" /> Up\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"flex-1 h-8 text-xs\"\n onClick={handleMoveDown}\n title=\"Move Down\"\n >\n <ChevronDown className=\"h-3.5 w-3.5 mr-1\" /> Down\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"flex-1 h-8 text-xs\"\n onClick={handleDuplicate}\n title=\"Duplicate\"\n >\n <Copy className=\"h-3.5 w-3.5 mr-1\" /> Copy\n </Button>\n <Button\n variant=\"destructive\"\n size=\"sm\"\n className=\"h-8 w-8 p-0\"\n onClick={() => actions.delete(selected.id)}\n title=\"Delete\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n )}\n </div>\n\n <ScrollArea className=\"flex-1\">\n <div className=\"p-4\">\n {selected.settings ? (\n <Accordion type=\"multiple\" defaultValue={[\"content\"]}>\n <AccordionItem value=\"content\" className=\"border-b\">\n <AccordionTrigger className=\"py-3 text-sm hover:no-underline\">\n <div className=\"flex items-center gap-2\">\n <Settings2 className=\"h-4 w-4 text-muted-foreground\" />\n <span>Properties</span>\n </div>\n </AccordionTrigger>\n <AccordionContent className=\"pb-4\">\n {React.createElement(selected.settings)}\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n ) : (\n <div className=\"text-center text-muted-foreground text-sm py-8\">\n <Paintbrush className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>No editable properties</p>\n </div>\n )}\n </div>\n </ScrollArea>\n\n <div className=\"p-3 border-t bg-muted/20 text-xs text-muted-foreground\">\n <div className=\"flex justify-between\">\n <span>Component: {selected.name}</span>\n <span className=\"font-mono text-[10px]\">\n {selected.id.slice(0, 8)}\n </span>\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\nimport { useEditorConfig } from './context';\n\ninterface PaperProps {\n children?: React.ReactNode;\n background?: string;\n}\n\nexport const Paper = ({ children, background }: PaperProps) => {\n const { connectors: { connect } } = useNode();\n const { theme } = useEditorConfig();\n\n const bg = background || theme.paperBackground || '#ffffff';\n\n return (\n <div\n ref={(ref) => connect(ref!)}\n style={{\n width: `${theme.paperWidth || 600}px`,\n minHeight: `${theme.paperMinHeight || 800}px`,\n margin: '0 auto',\n backgroundColor: bg,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n position: 'relative',\n }}\n >\n {children}\n </div>\n );\n};\n\nconst PaperSettings = () => {\n const { actions: { setProp }, background } = useNode((node) => ({\n background: node.data.props.background,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Email Background</label>\n <input\n type=\"color\"\n value={background || '#ffffff'}\n onChange={(e) => setProp((props: PaperProps) => (props.background = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n </div>\n );\n};\n\nPaper.craft = {\n props: {\n background: '#ffffff',\n },\n related: {\n settings: PaperSettings,\n },\n};\n","import React, { useCallback, useEffect } from 'react';\nimport { useNode, useEditor } from '@craftjs/core';\nimport { Move, ArrowUp } from 'lucide-react';\n\nexport const RenderNode = ({ render }: { render: React.ReactNode }) => {\n const { id } = useNode();\n const { actions, query, isActive } = useEditor((_, query) => ({\n isActive: query.getEvent('selected').contains(id),\n }));\n\n const {\n isHover,\n dom,\n name,\n moveable,\n deletable,\n connectors: { drag },\n parent,\n } = useNode((node) => ({\n isHover: node.events.hovered,\n dom: node.dom,\n name: node.data.custom.displayName || node.data.displayName,\n moveable: query.node(node.id).isDraggable(),\n deletable: query.node(node.id).isDeletable(),\n parent: node.data.parent,\n }));\n\n useEffect(() => {\n if (dom) {\n if (isActive || isHover) {\n dom.classList.add('component-selected');\n } else {\n dom.classList.remove('component-selected');\n }\n }\n }, [dom, isActive, isHover]);\n\n const getPos = useCallback((dom: HTMLElement | null) => {\n const { top, left, bottom } = dom ? dom.getBoundingClientRect() : { top: 0, left: 0, bottom: 0 };\n return {\n top: `${top > 0 ? top : bottom}px`,\n left: `${left}px`,\n };\n }, []);\n\n const scroll = useCallback(() => {\n const currentDOM = dom;\n if (!currentDOM) return;\n const { top, left } = getPos(currentDOM);\n // Update indicator position if needed\n }, [dom, getPos]);\n\n useEffect(() => {\n document.querySelector('.craftjs-renderer')?.addEventListener('scroll', scroll);\n return () => {\n document.querySelector('.craftjs-renderer')?.removeEventListener('scroll', scroll);\n };\n }, [scroll]);\n\n return (\n <>\n {isHover || isActive ? (\n <div\n className=\"absolute -top-7 left-0 bg-primary text-primary-foreground text-xs px-2 py-1 rounded flex items-center gap-1 z-50\"\n style={{\n pointerEvents: 'auto',\n }}\n >\n {moveable && (\n <span\n ref={(ref) => ref && drag(ref)}\n className=\"cursor-grab\"\n >\n <Move className=\"h-3 w-3\" />\n </span>\n )}\n <span>{name}</span>\n {parent && (\n <button\n onClick={() => actions.selectNode(parent)}\n className=\"ml-1 hover:bg-primary-foreground/20 rounded p-0.5\"\n >\n <ArrowUp className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n ) : null}\n {render}\n </>\n );\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface ContainerProps {\n background?: string;\n padding?: number;\n children?: React.ReactNode;\n}\n\nexport const Container = ({ background = '#ffffff', padding = 20, children }: ContainerProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n background,\n padding: `${padding}px`,\n minHeight: '50px',\n width: '100%',\n }}\n >\n {children}\n </div>\n );\n};\n\nconst ContainerSettings = () => {\n const { actions: { setProp }, background, padding } = useNode((node) => ({\n background: node.data.props.background,\n padding: node.data.props.padding,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={background || '#ffffff'}\n onChange={(e) => setProp((props: ContainerProps) => (props.background = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={60}\n value={padding || 20}\n onChange={(e) => setProp((props: ContainerProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nContainer.craft = {\n props: {\n background: '#ffffff',\n padding: 20,\n },\n related: {\n settings: ContainerSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface EmailHeaderProps {\n logoUrl?: string;\n companyName?: string;\n backgroundColor?: string;\n textColor?: string;\n padding?: number;\n}\n\nexport const EmailHeader = ({\n logoUrl = '',\n companyName = 'Your Company',\n backgroundColor = '#1a1a2e',\n textColor = '#ffffff',\n padding = 24,\n}: EmailHeaderProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n backgroundColor,\n padding: `${padding}px`,\n textAlign: 'center',\n }}\n >\n {logoUrl && (\n <img\n src={logoUrl}\n alt=\"Logo\"\n style={{ maxHeight: '60px', marginBottom: '12px' }}\n />\n )}\n <h1\n style={{\n color: textColor,\n fontSize: '24px',\n fontWeight: 'bold',\n margin: 0,\n fontFamily: 'Arial, sans-serif',\n }}\n >\n {companyName}\n </h1>\n </div>\n );\n};\n\nconst EmailHeaderSettings = () => {\n const { actions: { setProp }, logoUrl, companyName, backgroundColor, textColor, padding } = useNode((node) => ({\n logoUrl: node.data.props.logoUrl,\n companyName: node.data.props.companyName,\n backgroundColor: node.data.props.backgroundColor,\n textColor: node.data.props.textColor,\n padding: node.data.props.padding,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Company Name</label>\n <input\n type=\"text\"\n value={companyName || ''}\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.companyName = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Logo URL</label>\n <input\n type=\"text\"\n value={logoUrl || ''}\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.logoUrl = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"https://example.com/logo.png\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#1a1a2e'}\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\n <input\n type=\"color\"\n value={textColor || '#ffffff'}\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.textColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={60}\n value={padding || 24}\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nEmailHeader.craft = {\n props: {\n logoUrl: '',\n companyName: 'Your Company',\n backgroundColor: '#1a1a2e',\n textColor: '#ffffff',\n padding: 24,\n },\n related: {\n settings: EmailHeaderSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface EmailFooterProps {\n companyName?: string;\n address?: string;\n email?: string;\n phone?: string;\n backgroundColor?: string;\n textColor?: string;\n padding?: number;\n}\n\nexport const EmailFooter = ({\n companyName = 'Your Company',\n address = '123 Business St, City, Country',\n email = 'info@company.com',\n phone = '+1 234 567 890',\n backgroundColor = '#f5f5f5',\n textColor = '#666666',\n padding = 24,\n}: EmailFooterProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n backgroundColor,\n padding: `${padding}px`,\n textAlign: 'center',\n fontFamily: 'Arial, sans-serif',\n }}\n >\n <p style={{ color: textColor, fontSize: '14px', margin: '0 0 8px 0', fontWeight: 'bold' }}>\n {companyName}\n </p>\n <p style={{ color: textColor, fontSize: '12px', margin: '0 0 4px 0' }}>\n {address}\n </p>\n <p style={{ color: textColor, fontSize: '12px', margin: '0 0 4px 0' }}>\n Email: {email} | Phone: {phone}\n </p>\n <p style={{ color: textColor, fontSize: '11px', margin: '12px 0 0 0', opacity: 0.7 }}>\n © {new Date().getFullYear()} {companyName}. All rights reserved.\n </p>\n </div>\n );\n};\n\nconst EmailFooterSettings = () => {\n const { actions: { setProp }, companyName, address, email, phone, backgroundColor, textColor, padding } = useNode((node) => ({\n companyName: node.data.props.companyName,\n address: node.data.props.address,\n email: node.data.props.email,\n phone: node.data.props.phone,\n backgroundColor: node.data.props.backgroundColor,\n textColor: node.data.props.textColor,\n padding: node.data.props.padding,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Company Name</label>\n <input\n type=\"text\"\n value={companyName || ''}\n onChange={(e) => setProp((props: EmailFooterProps) => (props.companyName = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Address</label>\n <input\n type=\"text\"\n value={address || ''}\n onChange={(e) => setProp((props: EmailFooterProps) => (props.address = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Email</label>\n <input\n type=\"email\"\n value={email || ''}\n onChange={(e) => setProp((props: EmailFooterProps) => (props.email = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Phone</label>\n <input\n type=\"text\"\n value={phone || ''}\n onChange={(e) => setProp((props: EmailFooterProps) => (props.phone = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#f5f5f5'}\n onChange={(e) => setProp((props: EmailFooterProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\n <input\n type=\"color\"\n value={textColor || '#666666'}\n onChange={(e) => setProp((props: EmailFooterProps) => (props.textColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={60}\n value={padding || 24}\n onChange={(e) => setProp((props: EmailFooterProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nEmailFooter.craft = {\n props: {\n companyName: 'Your Company',\n address: '123 Business St, City, Country',\n email: 'info@company.com',\n phone: '+1 234 567 890',\n backgroundColor: '#f5f5f5',\n textColor: '#666666',\n padding: 24,\n },\n related: {\n settings: EmailFooterSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface EmailButtonProps {\n text?: string;\n href?: string;\n backgroundColor?: string;\n textColor?: string;\n borderRadius?: number;\n paddingX?: number;\n paddingY?: number;\n fontSize?: number;\n align?: 'left' | 'center' | 'right';\n}\n\nexport const EmailButton = ({\n text = 'Click Here',\n href = '#',\n backgroundColor = '#0066cc',\n textColor = '#ffffff',\n borderRadius = 6,\n paddingX = 24,\n paddingY = 12,\n fontSize = 16,\n align = 'center',\n}: EmailButtonProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n textAlign: align,\n padding: '10px 0',\n }}\n >\n <a\n href={href}\n style={{\n display: 'inline-block',\n backgroundColor,\n color: textColor,\n padding: `${paddingY}px ${paddingX}px`,\n borderRadius: `${borderRadius}px`,\n textDecoration: 'none',\n fontSize: `${fontSize}px`,\n fontWeight: 'bold',\n fontFamily: 'Arial, sans-serif',\n }}\n >\n {text}\n </a>\n </div>\n );\n};\n\nconst EmailButtonSettings = () => {\n const { actions: { setProp }, text, href, backgroundColor, textColor, borderRadius, paddingX, paddingY, fontSize, align } = useNode((node) => ({\n text: node.data.props.text,\n href: node.data.props.href,\n backgroundColor: node.data.props.backgroundColor,\n textColor: node.data.props.textColor,\n borderRadius: node.data.props.borderRadius,\n paddingX: node.data.props.paddingX,\n paddingY: node.data.props.paddingY,\n fontSize: node.data.props.fontSize,\n align: node.data.props.align,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Button Text</label>\n <input\n type=\"text\"\n value={text || ''}\n onChange={(e) => setProp((props: EmailButtonProps) => (props.text = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Link URL</label>\n <input\n type=\"text\"\n value={href || ''}\n onChange={(e) => setProp((props: EmailButtonProps) => (props.href = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\n <select\n value={align || 'center'}\n onChange={(e) => setProp((props: EmailButtonProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#0066cc'}\n onChange={(e) => setProp((props: EmailButtonProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\n <input\n type=\"color\"\n value={textColor || '#ffffff'}\n onChange={(e) => setProp((props: EmailButtonProps) => (props.textColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\n <input\n type=\"range\"\n min={0}\n max={30}\n value={borderRadius || 6}\n onChange={(e) => setProp((props: EmailButtonProps) => (props.borderRadius = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\n <input\n type=\"range\"\n min={12}\n max={24}\n value={fontSize || 16}\n onChange={(e) => setProp((props: EmailButtonProps) => (props.fontSize = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\n </div>\n </div>\n );\n};\n\nEmailButton.craft = {\n props: {\n text: 'Click Here',\n href: '#',\n backgroundColor: '#0066cc',\n textColor: '#ffffff',\n borderRadius: 6,\n paddingX: 24,\n paddingY: 12,\n fontSize: 16,\n align: 'center',\n },\n related: {\n settings: EmailButtonSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface TextBlockProps {\n text?: string;\n fontSize?: number;\n fontWeight?: 'normal' | 'bold';\n color?: string;\n align?: 'left' | 'center' | 'right';\n padding?: number;\n lineHeight?: number;\n}\n\nexport const TextBlock = ({\n text = 'Enter your text here...',\n fontSize = 14,\n fontWeight = 'normal',\n color = '#333333',\n align = 'left',\n padding = 10,\n lineHeight = 1.6,\n}: TextBlockProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n padding: `${padding}px`,\n }}\n >\n <p\n style={{\n fontSize: `${fontSize}px`,\n fontWeight,\n color,\n textAlign: align,\n lineHeight,\n margin: 0,\n fontFamily: 'Arial, sans-serif',\n }}\n >\n {text}\n </p>\n </div>\n );\n};\n\nconst TextBlockSettings = () => {\n const { actions: { setProp }, text, fontSize, fontWeight, color, align, padding, lineHeight } = useNode((node) => ({\n text: node.data.props.text,\n fontSize: node.data.props.fontSize,\n fontWeight: node.data.props.fontWeight,\n color: node.data.props.color,\n align: node.data.props.align,\n padding: node.data.props.padding,\n lineHeight: node.data.props.lineHeight,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Content</label>\n <textarea\n value={text || ''}\n onChange={(e) => setProp((props: TextBlockProps) => (props.text = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px]\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\n <input\n type=\"range\"\n min={10}\n max={32}\n value={fontSize || 14}\n onChange={(e) => setProp((props: TextBlockProps) => (props.fontSize = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Font Weight</label>\n <select\n value={fontWeight || 'normal'}\n onChange={(e) => setProp((props: TextBlockProps) => (props.fontWeight = e.target.value as 'normal' | 'bold'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"normal\">Normal</option>\n <option value=\"bold\">Bold</option>\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\n <input\n type=\"color\"\n value={color || '#333333'}\n onChange={(e) => setProp((props: TextBlockProps) => (props.color = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\n <select\n value={align || 'left'}\n onChange={(e) => setProp((props: TextBlockProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={padding || 10}\n onChange={(e) => setProp((props: TextBlockProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Line Height</label>\n <input\n type=\"range\"\n min={1}\n max={2.5}\n step={0.1}\n value={lineHeight || 1.6}\n onChange={(e) => setProp((props: TextBlockProps) => (props.lineHeight = parseFloat(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{lineHeight}</span>\n </div>\n </div>\n );\n};\n\nTextBlock.craft = {\n props: {\n text: 'Enter your text here...',\n fontSize: 14,\n fontWeight: 'normal',\n color: '#333333',\n align: 'left',\n padding: 10,\n lineHeight: 1.6,\n },\n related: {\n settings: TextBlockSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface ImageBlockProps {\n src?: string;\n alt?: string;\n width?: string;\n align?: 'left' | 'center' | 'right';\n padding?: number;\n borderRadius?: number;\n}\n\nexport const ImageBlock = ({\n src = 'https://via.placeholder.com/400x200',\n alt = 'Image',\n width = '100%',\n align = 'center',\n padding = 10,\n borderRadius = 0,\n}: ImageBlockProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n textAlign: align,\n padding: `${padding}px`,\n }}\n >\n <img\n src={src}\n alt={alt}\n style={{\n width,\n maxWidth: '100%',\n borderRadius: `${borderRadius}px`,\n display: 'inline-block',\n }}\n />\n </div>\n );\n};\n\nconst ImageBlockSettings = () => {\n const { actions: { setProp }, src, alt, width, align, padding, borderRadius } = useNode((node) => ({\n src: node.data.props.src,\n alt: node.data.props.alt,\n width: node.data.props.width,\n align: node.data.props.align,\n padding: node.data.props.padding,\n borderRadius: node.data.props.borderRadius,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Image URL</label>\n <input\n type=\"text\"\n value={src || ''}\n onChange={(e) => setProp((props: ImageBlockProps) => (props.src = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"https://example.com/image.png\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Alt Text</label>\n <input\n type=\"text\"\n value={alt || ''}\n onChange={(e) => setProp((props: ImageBlockProps) => (props.alt = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Width</label>\n <input\n type=\"text\"\n value={width || '100%'}\n onChange={(e) => setProp((props: ImageBlockProps) => (props.width = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"100% or 300px\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\n <select\n value={align || 'center'}\n onChange={(e) => setProp((props: ImageBlockProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={padding || 10}\n onChange={(e) => setProp((props: ImageBlockProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\n <input\n type=\"range\"\n min={0}\n max={30}\n value={borderRadius || 0}\n onChange={(e) => setProp((props: ImageBlockProps) => (props.borderRadius = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\n </div>\n </div>\n );\n};\n\nImageBlock.craft = {\n props: {\n src: 'https://via.placeholder.com/400x200',\n alt: 'Image',\n width: '100%',\n align: 'center',\n padding: 10,\n borderRadius: 0,\n },\n related: {\n settings: ImageBlockSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface DividerProps {\n color?: string;\n thickness?: number;\n margin?: number;\n width?: string;\n}\n\nexport const Divider = ({\n color = '#e0e0e0',\n thickness = 1,\n margin = 20,\n width = '100%',\n}: DividerProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n padding: `${margin}px 0`,\n textAlign: 'center',\n }}\n >\n <hr\n style={{\n border: 'none',\n borderTop: `${thickness}px solid ${color}`,\n width,\n margin: '0 auto',\n }}\n />\n </div>\n );\n};\n\nconst DividerSettings = () => {\n const { actions: { setProp }, color, thickness, margin, width } = useNode((node) => ({\n color: node.data.props.color,\n thickness: node.data.props.thickness,\n margin: node.data.props.margin,\n width: node.data.props.width,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Color</label>\n <input\n type=\"color\"\n value={color || '#e0e0e0'}\n onChange={(e) => setProp((props: DividerProps) => (props.color = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Thickness</label>\n <input\n type=\"range\"\n min={1}\n max={10}\n value={thickness || 1}\n onChange={(e) => setProp((props: DividerProps) => (props.thickness = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{thickness}px</span>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Margin (Top/Bottom)</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={margin || 20}\n onChange={(e) => setProp((props: DividerProps) => (props.margin = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{margin}px</span>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Width</label>\n <input\n type=\"text\"\n value={width || '100%'}\n onChange={(e) => setProp((props: DividerProps) => (props.width = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"100% or 80%\"\n />\n </div>\n </div>\n );\n};\n\nDivider.craft = {\n props: {\n color: '#e0e0e0',\n thickness: 1,\n margin: 20,\n width: '100%',\n },\n related: {\n settings: DividerSettings,\n },\n};\n","import React from \"react\";\nimport { useNode } from \"@craftjs/core\";\n\ninterface InvoiceItem {\n description: string;\n quantity: number;\n unitPrice: number;\n}\n\ninterface InvoiceTableProps {\n items?: InvoiceItem[];\n headerBg?: string;\n headerColor?: string;\n borderColor?: string;\n showTotal?: boolean;\n currency?: string;\n}\n\nexport const InvoiceTable = ({\n items = [\n { description: \"Service Item 1\", quantity: 1, unitPrice: 100 },\n { description: \"Service Item 2\", quantity: 2, unitPrice: 50 },\n ],\n headerBg = \"#1a1a2e\",\n headerColor = \"#ffffff\",\n borderColor = \"#e0e0e0\",\n showTotal = true,\n currency = \"$\",\n}: InvoiceTableProps) => {\n const {\n connectors: { connect, drag },\n } = useNode();\n\n const total = items.reduce(\n (sum, item) => sum + item.quantity * item.unitPrice,\n 0,\n );\n\n const cellStyle: React.CSSProperties = {\n padding: \"12px 16px\",\n borderBottom: `1px solid ${borderColor}`,\n fontFamily: \"Arial, sans-serif\",\n fontSize: \"14px\",\n };\n\n const headerStyle: React.CSSProperties = {\n ...cellStyle,\n backgroundColor: headerBg,\n color: headerColor,\n fontWeight: \"bold\",\n textAlign: \"left\",\n };\n\n return (\n <div ref={(ref) => connect(drag(ref!))} style={{ padding: \"10px\" }}>\n <table\n style={{\n width: \"100%\",\n borderCollapse: \"collapse\",\n border: `1px solid ${borderColor}`,\n }}\n >\n <thead>\n <tr>\n <th style={headerStyle}>Description</th>\n <th style={{ ...headerStyle, textAlign: \"center\", width: \"80px\" }}>\n Qty\n </th>\n <th style={{ ...headerStyle, textAlign: \"right\", width: \"100px\" }}>\n Unit Price\n </th>\n <th style={{ ...headerStyle, textAlign: \"right\", width: \"100px\" }}>\n Amount\n </th>\n </tr>\n </thead>\n <tbody>\n {items.map((item, index) => (\n <tr key={index}>\n <td style={cellStyle}>{item.description}</td>\n <td style={{ ...cellStyle, textAlign: \"center\" }}>\n {item.quantity}\n </td>\n <td style={{ ...cellStyle, textAlign: \"right\" }}>\n {currency}\n {item.unitPrice.toFixed(2)}\n </td>\n <td style={{ ...cellStyle, textAlign: \"right\" }}>\n {currency}\n {(item.quantity * item.unitPrice).toFixed(2)}\n </td>\n </tr>\n ))}\n </tbody>\n {showTotal && (\n <tfoot>\n <tr>\n <td\n colSpan={3}\n style={{ ...cellStyle, textAlign: \"right\", fontWeight: \"bold\" }}\n >\n Total:\n </td>\n <td\n style={{\n ...cellStyle,\n textAlign: \"right\",\n fontWeight: \"bold\",\n backgroundColor: \"#f5f5f5\",\n }}\n >\n {currency}\n {total.toFixed(2)}\n </td>\n </tr>\n </tfoot>\n )}\n </table>\n </div>\n );\n};\n\nconst InvoiceTableSettings = () => {\n const {\n actions: { setProp },\n items,\n headerBg,\n headerColor,\n borderColor,\n showTotal,\n currency,\n } = useNode((node) => ({\n items: node.data.props.items,\n headerBg: node.data.props.headerBg,\n headerColor: node.data.props.headerColor,\n borderColor: node.data.props.borderColor,\n showTotal: node.data.props.showTotal,\n currency: node.data.props.currency,\n }));\n\n const updateItem = (\n index: number,\n field: keyof InvoiceItem,\n value: string | number,\n ) => {\n setProp((props: InvoiceTableProps) => {\n const newItems = [...(props.items || [])];\n newItems[index] = { ...newItems[index], [field]: value };\n props.items = newItems;\n });\n };\n\n const addItem = () => {\n setProp((props: InvoiceTableProps) => {\n props.items = [\n ...(props.items || []),\n { description: \"New Item\", quantity: 1, unitPrice: 0 },\n ];\n });\n };\n\n const removeItem = (index: number) => {\n setProp((props: InvoiceTableProps) => {\n props.items = (props.items || []).filter((_, i) => i !== index);\n });\n };\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-2\">Invoice Items</label>\n {(items || []).map((item: any, index: any) => (\n <div key={index} className=\"mb-3 p-3 border rounded-md bg-muted/30\">\n <input\n type=\"text\"\n value={item.description}\n onChange={(e) => updateItem(index, \"description\", e.target.value)}\n className=\"w-full px-2 py-1 border rounded text-sm mb-2\"\n placeholder=\"Description\"\n />\n <div className=\"flex gap-2\">\n <input\n type=\"number\"\n value={item.quantity}\n onChange={(e) =>\n updateItem(index, \"quantity\", parseInt(e.target.value) || 0)\n }\n className=\"w-20 px-2 py-1 border rounded text-sm\"\n placeholder=\"Qty\"\n />\n <input\n type=\"number\"\n value={item.unitPrice}\n onChange={(e) =>\n updateItem(\n index,\n \"unitPrice\",\n parseFloat(e.target.value) || 0,\n )\n }\n className=\"flex-1 px-2 py-1 border rounded text-sm\"\n placeholder=\"Price\"\n />\n <button\n onClick={() => removeItem(index)}\n className=\"px-2 py-1 bg-destructive text-destructive-foreground rounded text-sm\"\n >\n ×\n </button>\n </div>\n </div>\n ))}\n <button\n onClick={addItem}\n className=\"w-full py-2 border-2 border-dashed rounded-md text-sm text-muted-foreground hover:bg-muted/50\"\n >\n + Add Item\n </button>\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">\n Currency Symbol\n </label>\n <input\n type=\"text\"\n value={currency || \"$\"}\n onChange={(e) =>\n setProp(\n (props: InvoiceTableProps) => (props.currency = e.target.value),\n )\n }\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">\n Header Background\n </label>\n <input\n type=\"color\"\n value={headerBg || \"#1a1a2e\"}\n onChange={(e) =>\n setProp(\n (props: InvoiceTableProps) => (props.headerBg = e.target.value),\n )\n }\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">\n Header Text Color\n </label>\n <input\n type=\"color\"\n value={headerColor || \"#ffffff\"}\n onChange={(e) =>\n setProp(\n (props: InvoiceTableProps) =>\n (props.headerColor = e.target.value),\n )\n }\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Border Color</label>\n <input\n type=\"color\"\n value={borderColor || \"#e0e0e0\"}\n onChange={(e) =>\n setProp(\n (props: InvoiceTableProps) =>\n (props.borderColor = e.target.value),\n )\n }\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <input\n type=\"checkbox\"\n checked={showTotal ?? true}\n onChange={(e) =>\n setProp(\n (props: InvoiceTableProps) =>\n (props.showTotal = e.target.checked),\n )\n }\n className=\"rounded\"\n />\n <label className=\"text-sm font-medium\">Show Total Row</label>\n </div>\n </div>\n );\n};\n\nInvoiceTable.craft = {\n props: {\n items: [\n { description: \"Service Item 1\", quantity: 1, unitPrice: 100 },\n { description: \"Service Item 2\", quantity: 2, unitPrice: 50 },\n ],\n headerBg: \"#1a1a2e\",\n headerColor: \"#ffffff\",\n borderColor: \"#e0e0e0\",\n showTotal: true,\n currency: \"$\",\n },\n related: {\n settings: InvoiceTableSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface SpacerProps {\n height?: number;\n}\n\nexport const Spacer = ({ height = 20 }: SpacerProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n height: `${height}px`,\n width: '100%',\n backgroundColor: 'transparent',\n }}\n />\n );\n};\n\nconst SpacerSettings = () => {\n const { actions: { setProp }, height } = useNode((node) => ({\n height: node.data.props.height,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Height</label>\n <input\n type=\"range\"\n min={5}\n max={100}\n value={height || 20}\n onChange={(e) => setProp((props: SpacerProps) => (props.height = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{height}px</span>\n </div>\n </div>\n );\n};\n\nSpacer.craft = {\n props: {\n height: 20,\n },\n related: {\n settings: SpacerSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface SocialLink {\n platform: 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'youtube' | 'tiktok';\n url: string;\n}\n\ninterface SocialLinksProps {\n links?: SocialLink[];\n iconSize?: number;\n iconColor?: string;\n backgroundColor?: string;\n align?: 'left' | 'center' | 'right';\n padding?: number;\n gap?: number;\n}\n\nconst socialIcons: Record<string, string> = {\n facebook: 'https://cdn-icons-png.flaticon.com/128/733/733547.png',\n twitter: 'https://cdn-icons-png.flaticon.com/128/733/733579.png',\n instagram: 'https://cdn-icons-png.flaticon.com/128/2111/2111463.png',\n linkedin: 'https://cdn-icons-png.flaticon.com/128/3536/3536505.png',\n youtube: 'https://cdn-icons-png.flaticon.com/128/1384/1384060.png',\n tiktok: 'https://cdn-icons-png.flaticon.com/128/3046/3046121.png',\n};\n\nexport const SocialLinks = ({\n links = [\n { platform: 'facebook', url: '#' },\n { platform: 'twitter', url: '#' },\n { platform: 'instagram', url: '#' },\n { platform: 'linkedin', url: '#' },\n ],\n iconSize = 32,\n iconColor = '#333333',\n backgroundColor = 'transparent',\n align = 'center',\n padding = 16,\n gap = 16,\n}: SocialLinksProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n textAlign: align,\n padding: `${padding}px`,\n backgroundColor,\n }}\n >\n <div style={{ display: 'inline-flex', gap: `${gap}px` }}>\n {links.map((link, index) => (\n <a\n key={index}\n href={link.url}\n style={{\n display: 'inline-block',\n width: iconSize,\n height: iconSize,\n }}\n >\n <img\n src={socialIcons[link.platform]}\n alt={link.platform}\n style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain',\n }}\n />\n </a>\n ))}\n </div>\n </div>\n );\n};\n\nconst SocialLinksSettings = () => {\n const { actions: { setProp }, links, iconSize, align, padding, gap, backgroundColor } = useNode((node) => ({\n links: node.data.props.links,\n iconSize: node.data.props.iconSize,\n align: node.data.props.align,\n padding: node.data.props.padding,\n gap: node.data.props.gap,\n backgroundColor: node.data.props.backgroundColor,\n }));\n\n const platforms = ['facebook', 'twitter', 'instagram', 'linkedin', 'youtube', 'tiktok'];\n const currentLinks = links || [];\n\n const togglePlatform = (platform: string) => {\n const exists = currentLinks.find((l: SocialLink) => l.platform === platform);\n if (exists) {\n setProp((props: SocialLinksProps) => {\n props.links = currentLinks.filter((l: SocialLink) => l.platform !== platform);\n });\n } else {\n setProp((props: SocialLinksProps) => {\n props.links = [...currentLinks, { platform: platform as SocialLink['platform'], url: '#' }];\n });\n }\n };\n\n const updateUrl = (platform: string, url: string) => {\n setProp((props: SocialLinksProps) => {\n props.links = currentLinks.map((l: SocialLink) =>\n l.platform === platform ? { ...l, url } : l\n );\n });\n };\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-2\">Platforms</label>\n <div className=\"grid grid-cols-2 gap-2\">\n {platforms.map((platform) => (\n <label key={platform} className=\"flex items-center gap-2 text-sm cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={currentLinks.some((l: SocialLink) => l.platform === platform)}\n onChange={() => togglePlatform(platform)}\n className=\"rounded\"\n />\n <span className=\"capitalize\">{platform}</span>\n </label>\n ))}\n </div>\n </div>\n\n {currentLinks.map((link: SocialLink) => (\n <div key={link.platform}>\n <label className=\"block text-sm font-medium mb-1 capitalize\">{link.platform} URL</label>\n <input\n type=\"text\"\n value={link.url}\n onChange={(e) => updateUrl(link.platform, e.target.value)}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"https://...\"\n />\n </div>\n ))}\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Icon Size</label>\n <input\n type=\"range\"\n min={20}\n max={48}\n value={iconSize || 32}\n onChange={(e) => setProp((props: SocialLinksProps) => (props.iconSize = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{iconSize}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Gap</label>\n <input\n type=\"range\"\n min={8}\n max={32}\n value={gap || 16}\n onChange={(e) => setProp((props: SocialLinksProps) => (props.gap = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{gap}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\n <select\n value={align || 'center'}\n onChange={(e) => setProp((props: SocialLinksProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#ffffff'}\n onChange={(e) => setProp((props: SocialLinksProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={padding || 16}\n onChange={(e) => setProp((props: SocialLinksProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nSocialLinks.craft = {\n props: {\n links: [\n { platform: 'facebook', url: '#' },\n { platform: 'twitter', url: '#' },\n { platform: 'instagram', url: '#' },\n { platform: 'linkedin', url: '#' },\n ],\n iconSize: 32,\n iconColor: '#333333',\n backgroundColor: 'transparent',\n align: 'center',\n padding: 16,\n gap: 16,\n },\n related: {\n settings: SocialLinksSettings,\n },\n};\n","import React from 'react';\nimport { useNode, useEditor, Element } from '@craftjs/core';\nimport { Container } from './Container';\n\ninterface TwoColumnProps {\n leftWidth?: number;\n gap?: number;\n padding?: number;\n backgroundColor?: string;\n children?: React.ReactNode;\n}\n\nexport const TwoColumn = ({\n leftWidth = 50,\n gap = 20,\n padding = 10,\n backgroundColor = '#ffffff',\n}: TwoColumnProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n display: 'flex',\n gap: `${gap}px`,\n padding: `${padding}px`,\n backgroundColor,\n width: '100%',\n }}\n >\n <div style={{ width: `${leftWidth}%` }}>\n <Element id=\"left-column\" is={Container} canvas background=\"#f9f9f9\" padding={10}>\n </Element>\n </div>\n <div style={{ width: `${100 - leftWidth}%` }}>\n <Element id=\"right-column\" is={Container} canvas background=\"#f9f9f9\" padding={10}>\n </Element>\n </div>\n </div>\n );\n};\n\nconst TwoColumnSettings = () => {\n const { actions: { setProp }, leftWidth, gap, padding, backgroundColor } = useNode((node) => ({\n leftWidth: node.data.props.leftWidth,\n gap: node.data.props.gap,\n padding: node.data.props.padding,\n backgroundColor: node.data.props.backgroundColor,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Left Column Width</label>\n <input\n type=\"range\"\n min={20}\n max={80}\n value={leftWidth || 50}\n onChange={(e) => setProp((props: TwoColumnProps) => (props.leftWidth = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <div className=\"flex justify-between text-sm text-muted-foreground\">\n <span>Left: {leftWidth}%</span>\n <span>Right: {100 - (leftWidth || 50)}%</span>\n </div>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Gap</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={gap || 20}\n onChange={(e) => setProp((props: TwoColumnProps) => (props.gap = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{gap}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={padding || 10}\n onChange={(e) => setProp((props: TwoColumnProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#ffffff'}\n onChange={(e) => setProp((props: TwoColumnProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n </div>\n );\n};\n\nTwoColumn.craft = {\n props: {\n leftWidth: 50,\n gap: 20,\n padding: 10,\n backgroundColor: '#ffffff',\n },\n related: {\n settings: TwoColumnSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface CountdownProps {\n title?: string;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n backgroundColor?: string;\n numberColor?: string;\n labelColor?: string;\n titleColor?: string;\n boxBackground?: string;\n padding?: number;\n}\n\nexport const Countdown = ({\n title = 'Sale Ends In',\n days = 3,\n hours = 12,\n minutes = 45,\n seconds = 30,\n backgroundColor = '#ff6b6b',\n numberColor = '#ffffff',\n labelColor = '#ffffff',\n titleColor = '#ffffff',\n boxBackground = 'rgba(0,0,0,0.2)',\n padding = 24,\n}: CountdownProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n const TimeBox = ({ value, label }: { value: number; label: string }) => (\n <div\n style={{\n background: boxBackground,\n padding: '12px 16px',\n borderRadius: '8px',\n textAlign: 'center',\n minWidth: '60px',\n }}\n >\n <div\n style={{\n fontSize: '28px',\n fontWeight: 'bold',\n color: numberColor,\n fontFamily: 'Arial, sans-serif',\n lineHeight: 1.2,\n }}\n >\n {String(value).padStart(2, '0')}\n </div>\n <div\n style={{\n fontSize: '11px',\n color: labelColor,\n textTransform: 'uppercase',\n letterSpacing: '1px',\n marginTop: '4px',\n }}\n >\n {label}\n </div>\n </div>\n );\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n backgroundColor,\n padding: `${padding}px`,\n textAlign: 'center',\n }}\n >\n {title && (\n <h3\n style={{\n color: titleColor,\n fontSize: '18px',\n fontWeight: 'bold',\n marginBottom: '16px',\n fontFamily: 'Arial, sans-serif',\n margin: '0 0 16px 0',\n }}\n >\n {title}\n </h3>\n )}\n <div\n style={{\n display: 'inline-flex',\n gap: '12px',\n justifyContent: 'center',\n }}\n >\n <TimeBox value={days} label=\"Days\" />\n <TimeBox value={hours} label=\"Hours\" />\n <TimeBox value={minutes} label=\"Mins\" />\n <TimeBox value={seconds} label=\"Secs\" />\n </div>\n </div>\n );\n};\n\nconst CountdownSettings = () => {\n const {\n actions: { setProp },\n title,\n days,\n hours,\n minutes,\n seconds,\n backgroundColor,\n numberColor,\n labelColor,\n titleColor,\n boxBackground,\n padding,\n } = useNode((node) => ({\n title: node.data.props.title,\n days: node.data.props.days,\n hours: node.data.props.hours,\n minutes: node.data.props.minutes,\n seconds: node.data.props.seconds,\n backgroundColor: node.data.props.backgroundColor,\n numberColor: node.data.props.numberColor,\n labelColor: node.data.props.labelColor,\n titleColor: node.data.props.titleColor,\n boxBackground: node.data.props.boxBackground,\n padding: node.data.props.padding,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Title</label>\n <input\n type=\"text\"\n value={title || ''}\n onChange={(e) => setProp((props: CountdownProps) => (props.title = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-2\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Days</label>\n <input\n type=\"number\"\n min={0}\n value={days || 0}\n onChange={(e) => setProp((props: CountdownProps) => (props.days = parseInt(e.target.value)))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Hours</label>\n <input\n type=\"number\"\n min={0}\n max={23}\n value={hours || 0}\n onChange={(e) => setProp((props: CountdownProps) => (props.hours = parseInt(e.target.value)))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Minutes</label>\n <input\n type=\"number\"\n min={0}\n max={59}\n value={minutes || 0}\n onChange={(e) => setProp((props: CountdownProps) => (props.minutes = parseInt(e.target.value)))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium mb-1\">Seconds</label>\n <input\n type=\"number\"\n min={0}\n max={59}\n value={seconds || 0}\n onChange={(e) => setProp((props: CountdownProps) => (props.seconds = parseInt(e.target.value)))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#ff6b6b'}\n onChange={(e) => setProp((props: CountdownProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Title Color</label>\n <input\n type=\"color\"\n value={titleColor || '#ffffff'}\n onChange={(e) => setProp((props: CountdownProps) => (props.titleColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Number Color</label>\n <input\n type=\"color\"\n value={numberColor || '#ffffff'}\n onChange={(e) => setProp((props: CountdownProps) => (props.numberColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={8}\n max={48}\n value={padding || 24}\n onChange={(e) => setProp((props: CountdownProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nCountdown.craft = {\n props: {\n title: 'Sale Ends In',\n days: 3,\n hours: 12,\n minutes: 45,\n seconds: 30,\n backgroundColor: '#ff6b6b',\n numberColor: '#ffffff',\n labelColor: '#ffffff',\n titleColor: '#ffffff',\n boxBackground: 'rgba(0,0,0,0.2)',\n padding: 24,\n },\n related: {\n settings: CountdownSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface PromoCodeProps {\n title?: string;\n code?: string;\n description?: string;\n backgroundColor?: string;\n borderColor?: string;\n codeBackground?: string;\n textColor?: string;\n codeColor?: string;\n padding?: number;\n borderStyle?: 'solid' | 'dashed' | 'dotted';\n}\n\nexport const PromoCode = ({\n title = '🎉 Special Offer!',\n code = 'SAVE20',\n description = 'Use this code at checkout to get 20% off your order',\n backgroundColor = '#fff8e1',\n borderColor = '#ffc107',\n codeBackground = '#ffffff',\n textColor = '#333333',\n codeColor = '#e65100',\n padding = 24,\n borderStyle = 'dashed',\n}: PromoCodeProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n backgroundColor,\n border: `2px ${borderStyle} ${borderColor}`,\n borderRadius: '8px',\n padding: `${padding}px`,\n textAlign: 'center',\n margin: '10px',\n }}\n >\n {title && (\n <div\n style={{\n fontSize: '18px',\n fontWeight: 'bold',\n color: textColor,\n marginBottom: '12px',\n fontFamily: 'Arial, sans-serif',\n }}\n >\n {title}\n </div>\n )}\n \n <div\n style={{\n display: 'inline-block',\n backgroundColor: codeBackground,\n border: `1px solid ${borderColor}`,\n borderRadius: '6px',\n padding: '12px 24px',\n marginBottom: '12px',\n }}\n >\n <span\n style={{\n fontSize: '24px',\n fontWeight: 'bold',\n fontFamily: 'monospace',\n letterSpacing: '3px',\n color: codeColor,\n }}\n >\n {code}\n </span>\n </div>\n\n {description && (\n <div\n style={{\n fontSize: '14px',\n color: textColor,\n fontFamily: 'Arial, sans-serif',\n opacity: 0.8,\n }}\n >\n {description}\n </div>\n )}\n </div>\n );\n};\n\nconst PromoCodeSettings = () => {\n const {\n actions: { setProp },\n title,\n code,\n description,\n backgroundColor,\n borderColor,\n codeBackground,\n textColor,\n codeColor,\n padding,\n borderStyle,\n } = useNode((node) => ({\n title: node.data.props.title,\n code: node.data.props.code,\n description: node.data.props.description,\n backgroundColor: node.data.props.backgroundColor,\n borderColor: node.data.props.borderColor,\n codeBackground: node.data.props.codeBackground,\n textColor: node.data.props.textColor,\n codeColor: node.data.props.codeColor,\n padding: node.data.props.padding,\n borderStyle: node.data.props.borderStyle,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Title</label>\n <input\n type=\"text\"\n value={title || ''}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.title = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Promo Code</label>\n <input\n type=\"text\"\n value={code || ''}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.code = e.target.value.toUpperCase()))}\n className=\"w-full px-3 py-2 border rounded-md text-sm font-mono\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Description</label>\n <textarea\n value={description || ''}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.description = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[60px]\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Border Style</label>\n <select\n value={borderStyle || 'dashed'}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.borderStyle = e.target.value as 'solid' | 'dashed' | 'dotted'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"solid\">Solid</option>\n <option value=\"dashed\">Dashed</option>\n <option value=\"dotted\">Dotted</option>\n </select>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#fff8e1'}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Border Color</label>\n <input\n type=\"color\"\n value={borderColor || '#ffc107'}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.borderColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Code Color</label>\n <input\n type=\"color\"\n value={codeColor || '#e65100'}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.codeColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={12}\n max={48}\n value={padding || 24}\n onChange={(e) => setProp((props: PromoCodeProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nPromoCode.craft = {\n props: {\n title: '🎉 Special Offer!',\n code: 'SAVE20',\n description: 'Use this code at checkout to get 20% off your order',\n backgroundColor: '#fff8e1',\n borderColor: '#ffc107',\n codeBackground: '#ffffff',\n textColor: '#333333',\n codeColor: '#e65100',\n padding: 24,\n borderStyle: 'dashed',\n },\n related: {\n settings: PromoCodeSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface TestimonialProps {\n quote?: string;\n authorName?: string;\n authorTitle?: string;\n authorImage?: string;\n backgroundColor?: string;\n quoteColor?: string;\n authorColor?: string;\n accentColor?: string;\n padding?: number;\n showQuoteIcon?: boolean;\n}\n\nexport const Testimonial = ({\n quote = \"This product has completely transformed how we do business. The results have been incredible!\",\n authorName = 'Sarah Johnson',\n authorTitle = 'CEO, TechCorp',\n authorImage = '',\n backgroundColor = '#f8f9fa',\n quoteColor = '#333333',\n authorColor = '#666666',\n accentColor = '#0066cc',\n padding = 24,\n showQuoteIcon = true,\n}: TestimonialProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n backgroundColor,\n padding: `${padding}px`,\n borderLeft: `4px solid ${accentColor}`,\n margin: '10px',\n }}\n >\n {showQuoteIcon && (\n <div\n style={{\n fontSize: '48px',\n color: accentColor,\n opacity: 0.3,\n lineHeight: 1,\n marginBottom: '-20px',\n fontFamily: 'Georgia, serif',\n }}\n >\n \"\n </div>\n )}\n \n <p\n style={{\n fontSize: '16px',\n fontStyle: 'italic',\n color: quoteColor,\n lineHeight: 1.7,\n margin: '0 0 16px 0',\n fontFamily: 'Georgia, serif',\n }}\n >\n {quote}\n </p>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n {authorImage && (\n <img\n src={authorImage}\n alt={authorName}\n style={{\n width: '48px',\n height: '48px',\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n )}\n <div>\n <div\n style={{\n fontSize: '14px',\n fontWeight: 'bold',\n color: quoteColor,\n fontFamily: 'Arial, sans-serif',\n }}\n >\n {authorName}\n </div>\n {authorTitle && (\n <div\n style={{\n fontSize: '12px',\n color: authorColor,\n fontFamily: 'Arial, sans-serif',\n }}\n >\n {authorTitle}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nconst TestimonialSettings = () => {\n const {\n actions: { setProp },\n quote,\n authorName,\n authorTitle,\n authorImage,\n backgroundColor,\n quoteColor,\n authorColor,\n accentColor,\n padding,\n showQuoteIcon,\n } = useNode((node) => ({\n quote: node.data.props.quote,\n authorName: node.data.props.authorName,\n authorTitle: node.data.props.authorTitle,\n authorImage: node.data.props.authorImage,\n backgroundColor: node.data.props.backgroundColor,\n quoteColor: node.data.props.quoteColor,\n authorColor: node.data.props.authorColor,\n accentColor: node.data.props.accentColor,\n padding: node.data.props.padding,\n showQuoteIcon: node.data.props.showQuoteIcon,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Quote</label>\n <textarea\n value={quote || ''}\n onChange={(e) => setProp((props: TestimonialProps) => (props.quote = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px]\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Author Name</label>\n <input\n type=\"text\"\n value={authorName || ''}\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorName = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Author Title</label>\n <input\n type=\"text\"\n value={authorTitle || ''}\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorTitle = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Author Image URL</label>\n <input\n type=\"text\"\n value={authorImage || ''}\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorImage = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"https://...\"\n />\n </div>\n\n <div>\n <label className=\"flex items-center gap-2 text-sm cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={showQuoteIcon !== false}\n onChange={(e) => setProp((props: TestimonialProps) => (props.showQuoteIcon = e.target.checked))}\n className=\"rounded\"\n />\n Show Quote Icon\n </label>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\n <input\n type=\"color\"\n value={backgroundColor || '#f8f9fa'}\n onChange={(e) => setProp((props: TestimonialProps) => (props.backgroundColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Accent Color</label>\n <input\n type=\"color\"\n value={accentColor || '#0066cc'}\n onChange={(e) => setProp((props: TestimonialProps) => (props.accentColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Quote Color</label>\n <input\n type=\"color\"\n value={quoteColor || '#333333'}\n onChange={(e) => setProp((props: TestimonialProps) => (props.quoteColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={12}\n max={48}\n value={padding || 24}\n onChange={(e) => setProp((props: TestimonialProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nTestimonial.craft = {\n props: {\n quote: \"This product has completely transformed how we do business. The results have been incredible!\",\n authorName: 'Sarah Johnson',\n authorTitle: 'CEO, TechCorp',\n authorImage: '',\n backgroundColor: '#f8f9fa',\n quoteColor: '#333333',\n authorColor: '#666666',\n accentColor: '#0066cc',\n padding: 24,\n showQuoteIcon: true,\n },\n related: {\n settings: TestimonialSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface VideoPlaceholderProps {\n thumbnailUrl?: string;\n videoUrl?: string;\n width?: string;\n align?: 'left' | 'center' | 'right';\n padding?: number;\n borderRadius?: number;\n playButtonColor?: string;\n overlayOpacity?: number;\n}\n\nexport const VideoPlaceholder = ({\n thumbnailUrl = 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=338&fit=crop',\n videoUrl = '#',\n width = '100%',\n align = 'center',\n padding = 10,\n borderRadius = 8,\n playButtonColor = '#ffffff',\n overlayOpacity = 0.3,\n}: VideoPlaceholderProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n textAlign: align,\n padding: `${padding}px`,\n }}\n >\n <a\n href={videoUrl}\n style={{\n display: 'inline-block',\n position: 'relative',\n width,\n maxWidth: '100%',\n }}\n >\n <div\n style={{\n position: 'relative',\n borderRadius: `${borderRadius}px`,\n overflow: 'hidden',\n }}\n >\n <img\n src={thumbnailUrl}\n alt=\"Video thumbnail\"\n style={{\n width: '100%',\n display: 'block',\n }}\n />\n \n {/* Overlay */}\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: `rgba(0,0,0,${overlayOpacity})`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n {/* Play Button */}\n <div\n style={{\n width: '64px',\n height: '64px',\n backgroundColor: 'rgba(0,0,0,0.6)',\n borderRadius: '50%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: `3px solid ${playButtonColor}`,\n }}\n >\n <div\n style={{\n width: 0,\n height: 0,\n borderTop: '12px solid transparent',\n borderBottom: '12px solid transparent',\n borderLeft: `20px solid ${playButtonColor}`,\n marginLeft: '4px',\n }}\n />\n </div>\n </div>\n </div>\n </a>\n </div>\n );\n};\n\nconst VideoPlaceholderSettings = () => {\n const {\n actions: { setProp },\n thumbnailUrl,\n videoUrl,\n width,\n align,\n padding,\n borderRadius,\n playButtonColor,\n overlayOpacity,\n } = useNode((node) => ({\n thumbnailUrl: node.data.props.thumbnailUrl,\n videoUrl: node.data.props.videoUrl,\n width: node.data.props.width,\n align: node.data.props.align,\n padding: node.data.props.padding,\n borderRadius: node.data.props.borderRadius,\n playButtonColor: node.data.props.playButtonColor,\n overlayOpacity: node.data.props.overlayOpacity,\n }));\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Thumbnail URL</label>\n <input\n type=\"text\"\n value={thumbnailUrl || ''}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.thumbnailUrl = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"https://...\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Video URL</label>\n <input\n type=\"text\"\n value={videoUrl || ''}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.videoUrl = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"https://youtube.com/watch?v=...\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Width</label>\n <input\n type=\"text\"\n value={width || '100%'}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.width = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n placeholder=\"100% or 400px\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\n <select\n value={align || 'center'}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Play Button Color</label>\n <input\n type=\"color\"\n value={playButtonColor || '#ffffff'}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.playButtonColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Overlay Opacity</label>\n <input\n type=\"range\"\n min={0}\n max={0.8}\n step={0.1}\n value={overlayOpacity || 0.3}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.overlayOpacity = parseFloat(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{(overlayOpacity || 0.3).toFixed(1)}</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\n <input\n type=\"range\"\n min={0}\n max={24}\n value={borderRadius || 8}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.borderRadius = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={padding || 10}\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nVideoPlaceholder.craft = {\n props: {\n thumbnailUrl: 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=338&fit=crop',\n videoUrl: '#',\n width: '100%',\n align: 'center',\n padding: 10,\n borderRadius: 8,\n playButtonColor: '#ffffff',\n overlayOpacity: 0.3,\n },\n related: {\n settings: VideoPlaceholderSettings,\n },\n};\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface VariableTextProps {\n text?: string;\n fontSize?: number;\n fontWeight?: 'normal' | 'bold';\n color?: string;\n align?: 'left' | 'center' | 'right';\n padding?: number;\n lineHeight?: number;\n}\n\nconst AVAILABLE_VARIABLES = [\n { key: '{{first_name}}', label: 'First Name', preview: 'John' },\n { key: '{{last_name}}', label: 'Last Name', preview: 'Doe' },\n { key: '{{full_name}}', label: 'Full Name', preview: 'John Doe' },\n { key: '{{email}}', label: 'Email', preview: 'john@example.com' },\n { key: '{{company}}', label: 'Company', preview: 'Acme Inc' },\n { key: '{{invoice_number}}', label: 'Invoice #', preview: 'INV-001' },\n { key: '{{invoice_date}}', label: 'Invoice Date', preview: '2024-01-15' },\n { key: '{{due_date}}', label: 'Due Date', preview: '2024-01-30' },\n { key: '{{total_amount}}', label: 'Total Amount', preview: '$1,500.00' },\n { key: '{{order_number}}', label: 'Order #', preview: 'ORD-12345' },\n];\n\nconst renderWithVariables = (text: string) => {\n let rendered = text;\n AVAILABLE_VARIABLES.forEach(({ key, preview }) => {\n rendered = rendered.replace(new RegExp(key.replace(/[{}]/g, '\\\\$&'), 'g'), \n `<span style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">${preview}</span>`\n );\n });\n return rendered;\n};\n\nexport const VariableText = ({\n text = 'Hello {{first_name}}, thank you for your order {{order_number}}!',\n fontSize = 14,\n fontWeight = 'normal',\n color = '#333333',\n align = 'left',\n padding = 10,\n lineHeight = 1.6,\n}: VariableTextProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n padding: `${padding}px`,\n }}\n >\n <p\n style={{\n fontSize: `${fontSize}px`,\n fontWeight,\n color,\n textAlign: align,\n lineHeight,\n margin: 0,\n fontFamily: 'Arial, sans-serif',\n }}\n dangerouslySetInnerHTML={{ __html: renderWithVariables(text) }}\n />\n </div>\n );\n};\n\nconst VariableTextSettings = () => {\n const { actions: { setProp }, text, fontSize, fontWeight, color, align, padding, lineHeight } = useNode((node) => ({\n text: node.data.props.text,\n fontSize: node.data.props.fontSize,\n fontWeight: node.data.props.fontWeight,\n color: node.data.props.color,\n align: node.data.props.align,\n padding: node.data.props.padding,\n lineHeight: node.data.props.lineHeight,\n }));\n\n const insertVariable = (variable: string) => {\n setProp((props: VariableTextProps) => {\n props.text = (props.text || '') + variable;\n });\n };\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Content</label>\n <textarea\n value={text || ''}\n onChange={(e) => setProp((props: VariableTextProps) => (props.text = e.target.value))}\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px] font-mono\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-2\">Insert Variable</label>\n <div className=\"flex flex-wrap gap-1\">\n {AVAILABLE_VARIABLES.map((v) => (\n <button\n key={v.key}\n onClick={() => insertVariable(v.key)}\n className=\"px-2 py-1 text-xs bg-primary/10 hover:bg-primary/20 text-primary rounded border border-primary/20 transition-colors\"\n >\n {v.label}\n </button>\n ))}\n </div>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\n <input\n type=\"range\"\n min={10}\n max={32}\n value={fontSize || 14}\n onChange={(e) => setProp((props: VariableTextProps) => (props.fontSize = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Font Weight</label>\n <select\n value={fontWeight || 'normal'}\n onChange={(e) => setProp((props: VariableTextProps) => (props.fontWeight = e.target.value as 'normal' | 'bold'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"normal\">Normal</option>\n <option value=\"bold\">Bold</option>\n </select>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\n <input\n type=\"color\"\n value={color || '#333333'}\n onChange={(e) => setProp((props: VariableTextProps) => (props.color = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\n <select\n value={align || 'left'}\n onChange={(e) => setProp((props: VariableTextProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={padding || 10}\n onChange={(e) => setProp((props: VariableTextProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Line Height</label>\n <input\n type=\"range\"\n min={1}\n max={2.5}\n step={0.1}\n value={lineHeight || 1.6}\n onChange={(e) => setProp((props: VariableTextProps) => (props.lineHeight = parseFloat(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{lineHeight}</span>\n </div>\n </div>\n );\n};\n\nVariableText.craft = {\n props: {\n text: 'Hello {{first_name}}, thank you for your order {{order_number}}!',\n fontSize: 14,\n fontWeight: 'normal',\n color: '#333333',\n align: 'left',\n padding: 10,\n lineHeight: 1.6,\n },\n related: {\n settings: VariableTextSettings,\n },\n};\n\nexport { AVAILABLE_VARIABLES };\n","import React from 'react';\nimport { useNode } from '@craftjs/core';\n\ninterface ListItem {\n icon: string;\n text: string;\n}\n\ninterface IconListProps {\n items?: ListItem[];\n iconColor?: string;\n textColor?: string;\n backgroundColor?: string;\n fontSize?: number;\n iconSize?: number;\n gap?: number;\n padding?: number;\n}\n\nconst ICONS = {\n check: '✓',\n star: '★',\n arrow: '→',\n bullet: '•',\n heart: '❤',\n fire: '🔥',\n rocket: '🚀',\n sparkle: '✨',\n gift: '🎁',\n clock: '⏰',\n};\n\nexport const IconList = ({\n items = [\n { icon: 'check', text: 'Fast and reliable delivery' },\n { icon: 'check', text: 'Premium quality products' },\n { icon: 'check', text: '24/7 customer support' },\n { icon: 'check', text: '30-day money back guarantee' },\n ],\n iconColor = '#22c55e',\n textColor = '#333333',\n backgroundColor = 'transparent',\n fontSize = 14,\n iconSize = 18,\n gap = 12,\n padding = 16,\n}: IconListProps) => {\n const { connectors: { connect, drag } } = useNode();\n\n return (\n <div\n ref={(ref) => connect(drag(ref!))}\n style={{\n padding: `${padding}px`,\n backgroundColor,\n }}\n >\n <ul\n style={{\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: `${gap}px`,\n }}\n >\n {items.map((item, index) => (\n <li\n key={index}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: '10px',\n fontFamily: 'Arial, sans-serif',\n }}\n >\n <span\n style={{\n color: iconColor,\n fontSize: `${iconSize}px`,\n lineHeight: 1.4,\n flexShrink: 0,\n }}\n >\n {ICONS[item.icon as keyof typeof ICONS] || item.icon}\n </span>\n <span\n style={{\n color: textColor,\n fontSize: `${fontSize}px`,\n lineHeight: 1.5,\n }}\n >\n {item.text}\n </span>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nconst IconListSettings = () => {\n const {\n actions: { setProp },\n items,\n iconColor,\n textColor,\n backgroundColor,\n fontSize,\n iconSize,\n gap,\n padding,\n } = useNode((node) => ({\n items: node.data.props.items,\n iconColor: node.data.props.iconColor,\n textColor: node.data.props.textColor,\n backgroundColor: node.data.props.backgroundColor,\n fontSize: node.data.props.fontSize,\n iconSize: node.data.props.iconSize,\n gap: node.data.props.gap,\n padding: node.data.props.padding,\n }));\n\n const currentItems = items || [];\n\n const updateItem = (index: number, field: 'icon' | 'text', value: string) => {\n setProp((props: IconListProps) => {\n props.items = currentItems.map((item: ListItem, i: number) =>\n i === index ? { ...item, [field]: value } : item\n );\n });\n };\n\n const addItem = () => {\n setProp((props: IconListProps) => {\n props.items = [...currentItems, { icon: 'check', text: 'New item' }];\n });\n };\n\n const removeItem = (index: number) => {\n setProp((props: IconListProps) => {\n props.items = currentItems.filter((_: ListItem, i: number) => i !== index);\n });\n };\n\n return (\n <div className=\"space-y-4\">\n <div>\n <label className=\"block text-sm font-medium mb-2\">List Items</label>\n <div className=\"space-y-3\">\n {currentItems.map((item: ListItem, index: number) => (\n <div key={index} className=\"flex gap-2 items-start\">\n <select\n value={item.icon}\n onChange={(e) => updateItem(index, 'icon', e.target.value)}\n className=\"w-16 px-2 py-2 border rounded-md text-sm\"\n >\n {Object.entries(ICONS).map(([key, icon]) => (\n <option key={key} value={key}>{icon}</option>\n ))}\n </select>\n <input\n type=\"text\"\n value={item.text}\n onChange={(e) => updateItem(index, 'text', e.target.value)}\n className=\"flex-1 px-3 py-2 border rounded-md text-sm\"\n />\n <button\n onClick={() => removeItem(index)}\n className=\"px-2 py-2 text-destructive hover:bg-destructive/10 rounded\"\n >\n ×\n </button>\n </div>\n ))}\n </div>\n <button\n onClick={addItem}\n className=\"mt-2 w-full py-2 text-sm border border-dashed rounded-md hover:bg-accent transition-colors\"\n >\n + Add Item\n </button>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Icon Color</label>\n <input\n type=\"color\"\n value={iconColor || '#22c55e'}\n onChange={(e) => setProp((props: IconListProps) => (props.iconColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\n <input\n type=\"color\"\n value={textColor || '#333333'}\n onChange={(e) => setProp((props: IconListProps) => (props.textColor = e.target.value))}\n className=\"w-full h-10 rounded border cursor-pointer\"\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\n <input\n type=\"range\"\n min={12}\n max={20}\n value={fontSize || 14}\n onChange={(e) => setProp((props: IconListProps) => (props.fontSize = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Icon Size</label>\n <input\n type=\"range\"\n min={14}\n max={28}\n value={iconSize || 18}\n onChange={(e) => setProp((props: IconListProps) => (props.iconSize = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{iconSize}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Gap</label>\n <input\n type=\"range\"\n min={4}\n max={24}\n value={gap || 12}\n onChange={(e) => setProp((props: IconListProps) => (props.gap = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{gap}px</span>\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\n <input\n type=\"range\"\n min={0}\n max={40}\n value={padding || 16}\n onChange={(e) => setProp((props: IconListProps) => (props.padding = parseInt(e.target.value)))}\n className=\"w-full\"\n />\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\n </div>\n </div>\n );\n};\n\nIconList.craft = {\n props: {\n items: [\n { icon: 'check', text: 'Fast and reliable delivery' },\n { icon: 'check', text: 'Premium quality products' },\n { icon: 'check', text: '24/7 customer support' },\n { icon: 'check', text: '30-day money back guarantee' },\n ],\n iconColor: '#22c55e',\n textColor: '#333333',\n backgroundColor: 'transparent',\n fontSize: 14,\n iconSize: 18,\n gap: 12,\n padding: 16,\n },\n related: {\n settings: IconListSettings,\n },\n};\n","import React from 'react';\nimport { Element } from '@craftjs/core';\nimport {\n PanelTop,\n PanelBottom,\n LayoutTemplate,\n Columns,\n ArrowUpDown,\n Minus,\n Type,\n Image,\n MousePointer2,\n PlayCircle,\n List,\n Share2,\n Timer,\n Tag,\n Quote,\n Variable,\n Table,\n} from 'lucide-react';\n\nimport { Container } from './components/Container';\nimport { EmailHeader } from './components/EmailHeader';\nimport { EmailFooter } from './components/EmailFooter';\nimport { EmailButton } from './components/EmailButton';\nimport { TextBlock } from './components/TextBlock';\nimport { ImageBlock } from './components/ImageBlock';\nimport { Divider } from './components/Divider';\nimport { InvoiceTable } from './components/InvoiceTable';\nimport { Spacer } from './components/Spacer';\nimport { SocialLinks } from './components/SocialLinks';\nimport { TwoColumn } from './components/TwoColumn';\nimport { Countdown } from './components/Countdown';\nimport { PromoCode } from './components/PromoCode';\nimport { Testimonial } from './components/Testimonial';\nimport { VideoPlaceholder } from './components/VideoPlaceholder';\nimport { VariableText } from './components/VariableText';\nimport { IconList } from './components/IconList';\n\nimport type { ComponentRegistry } from './types';\n\nexport const DEFAULT_COMPONENTS: ComponentRegistry = {\n EmailHeader: {\n component: EmailHeader,\n label: 'Header',\n description: 'Email header with logo',\n icon: PanelTop,\n category: 'Layout',\n },\n EmailFooter: {\n component: EmailFooter,\n label: 'Footer',\n description: 'Contact info & copyright',\n icon: PanelBottom,\n category: 'Layout',\n },\n Container: {\n component: Container,\n label: 'Container',\n description: 'Group elements together',\n icon: LayoutTemplate,\n category: 'Layout',\n createElement: () => <Element is={Container} canvas />,\n },\n TwoColumn: {\n component: TwoColumn,\n label: 'Two Columns',\n description: 'Side-by-side layout',\n icon: Columns,\n category: 'Layout',\n },\n Spacer: {\n component: Spacer,\n label: 'Spacer',\n description: 'Add vertical space',\n icon: ArrowUpDown,\n category: 'Layout',\n },\n Divider: {\n component: Divider,\n label: 'Divider',\n description: 'Horizontal line separator',\n icon: Minus,\n category: 'Layout',\n },\n TextBlock: {\n component: TextBlock,\n label: 'Text Block',\n description: 'Paragraph or heading',\n icon: Type,\n category: 'Content',\n },\n ImageBlock: {\n component: ImageBlock,\n label: 'Image',\n description: 'Add photos or graphics',\n icon: Image,\n category: 'Content',\n },\n EmailButton: {\n component: EmailButton,\n label: 'Button',\n description: 'Call-to-action button',\n icon: MousePointer2,\n category: 'Content',\n },\n VideoPlaceholder: {\n component: VideoPlaceholder,\n label: 'Video',\n description: 'Video thumbnail with play',\n icon: PlayCircle,\n category: 'Content',\n },\n IconList: {\n component: IconList,\n label: 'Icon List',\n description: 'List with icons',\n icon: List,\n category: 'Content',\n },\n SocialLinks: {\n component: SocialLinks,\n label: 'Social Links',\n description: 'Social media icons',\n icon: Share2,\n category: 'Content',\n },\n Countdown: {\n component: Countdown,\n label: 'Countdown',\n description: 'Urgency timer display',\n icon: Timer,\n category: 'Marketing',\n },\n PromoCode: {\n component: PromoCode,\n label: 'Promo Code',\n description: 'Discount code box',\n icon: Tag,\n category: 'Marketing',\n },\n Testimonial: {\n component: Testimonial,\n label: 'Testimonial',\n description: 'Customer review quote',\n icon: Quote,\n category: 'Marketing',\n },\n VariableText: {\n component: VariableText,\n label: 'Variable Text',\n description: 'Personalized content',\n icon: Variable,\n category: 'Dynamic',\n },\n InvoiceTable: {\n component: InvoiceTable,\n label: 'Invoice Table',\n description: 'Itemized billing table',\n icon: Table,\n category: 'Invoice',\n },\n};\n\n/** Helper to get the Craft.js resolver map from a ComponentRegistry */\nexport const buildResolver = (registry: ComponentRegistry): Record<string, React.ComponentType<any>> => {\n const resolver: Record<string, React.ComponentType<any>> = {};\n for (const [name, config] of Object.entries(registry)) {\n resolver[name] = config.component;\n }\n return resolver;\n};\n\n/** Helper to get unique sorted categories from a ComponentRegistry */\nexport const getCategories = (registry: ComponentRegistry): string[] => {\n const cats = new Set<string>();\n for (const config of Object.values(registry)) {\n if (config.category) cats.add(config.category);\n }\n return Array.from(cats);\n};\n","import { SerializedNodes } from '@craftjs/core';\nimport type { HtmlRenderer } from '../components/editor';\n\ninterface NodeData {\n type: { resolvedName: string };\n props: Record<string, unknown>;\n nodes: string[];\n linkedNodes?: Record<string, string>;\n}\n\nexport const generateEmailHtml = (\n nodes: SerializedNodes,\n customRenderers?: Record<string, HtmlRenderer>\n): string => {\n const renderNode = (nodeId: string): string => {\n const node = nodes[nodeId] as unknown as NodeData;\n if (!node) return '';\n\n const { type, props, nodes: childNodes, linkedNodes } = node;\n const typeName = type.resolvedName;\n\n let childrenHtml = '';\n if (childNodes && childNodes.length > 0) {\n childrenHtml = childNodes.map((childId: string) => renderNode(childId)).join('');\n }\n if (linkedNodes) {\n Object.values(linkedNodes).forEach((linkedId: string) => {\n childrenHtml += renderNode(linkedId);\n });\n }\n\n // Check custom renderers first\n if (customRenderers?.[typeName]) {\n const result = customRenderers[typeName](typeName, props, childrenHtml, linkedNodes);\n if (result !== null) return result;\n }\n\n switch (typeName) {\n case 'Paper':\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <title>Email Template</title>\n <!--[if mso]>\n <noscript>\n <xml>\n <o:OfficeDocumentSettings>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n </xml>\n </noscript>\n <![endif]-->\n</head>\n<body style=\"margin: 0; padding: 0; background-color: #f4f4f4; font-family: Arial, sans-serif;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color: #f4f4f4;\">\n <tr>\n <td align=\"center\" style=\"padding: 20px 0;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"background-color: ${props.background || '#ffffff'}; max-width: 600px;\">\n <tr>\n <td>\n${childrenHtml}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>`;\n\n case 'Container':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.background || '#ffffff'}; padding: ${props.padding || 20}px;\">\n${childrenHtml}\n </td>\n </tr>\n </table>`;\n\n case 'TwoColumn': {\n const leftWidth = (props.leftWidth as number) || 50;\n const rightWidth = 100 - leftWidth;\n const leftHtml = linkedNodes?.['left-column'] ? renderNode(linkedNodes['left-column']) : '';\n const rightHtml = linkedNodes?.['right-column'] ? renderNode(linkedNodes['right-column']) : '';\n \n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color: ${props.backgroundColor || '#ffffff'}; padding: ${props.padding || 10}px;\">\n <tr>\n <td width=\"${leftWidth}%\" valign=\"top\" style=\"padding-right: ${(props.gap as number) / 2 || 10}px;\">\n ${leftHtml}\n </td>\n <td width=\"${rightWidth}%\" valign=\"top\" style=\"padding-left: ${(props.gap as number) / 2 || 10}px;\">\n ${rightHtml}\n </td>\n </tr>\n </table>`;\n }\n\n case 'EmailHeader':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#1a1a2e'}; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.logoUrl ? `<img src=\"${props.logoUrl}\" alt=\"Logo\" style=\"max-height: 60px; margin-bottom: 12px;\">` : ''}\n <h1 style=\"color: ${props.textColor || '#ffffff'}; font-size: 24px; font-weight: bold; margin: 0; font-family: Arial, sans-serif;\">${props.companyName || 'Your Company'}</h1>\n </td>\n </tr>\n </table>`;\n\n case 'EmailFooter':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#f5f5f5'}; padding: ${props.padding || 24}px; text-align: center; font-family: Arial, sans-serif;\">\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 14px; margin: 0 0 8px 0; font-weight: bold;\">${props.companyName || 'Your Company'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 12px; margin: 0 0 4px 0;\">${props.address || '123 Business St, City, Country'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 12px; margin: 0 0 4px 0;\">Email: ${props.email || 'info@company.com'} | Phone: ${props.phone || '+1 234 567 890'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 11px; margin: 12px 0 0 0; opacity: 0.7;\">© ${new Date().getFullYear()} ${props.companyName || 'Your Company'}. All rights reserved.</p>\n </td>\n </tr>\n </table>`;\n\n case 'EmailButton':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: 10px 0;\">\n <a href=\"${props.href || '#'}\" style=\"display: inline-block; background-color: ${props.backgroundColor || '#0066cc'}; color: ${props.textColor || '#ffffff'}; padding: ${props.paddingY || 12}px ${props.paddingX || 24}px; border-radius: ${props.borderRadius || 6}px; text-decoration: none; font-size: ${props.fontSize || 16}px; font-weight: bold; font-family: Arial, sans-serif;\">${props.text || 'Click Here'}</a>\n </td>\n </tr>\n </table>`;\n\n case 'TextBlock':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 10}px;\">\n <p style=\"font-size: ${props.fontSize || 14}px; font-weight: ${props.fontWeight || 'normal'}; color: ${props.color || '#333333'}; text-align: ${props.align || 'left'}; line-height: ${props.lineHeight || 1.6}; margin: 0; font-family: Arial, sans-serif;\">${props.text || 'Enter your text here...'}</p>\n </td>\n </tr>\n </table>`;\n\n case 'VariableText':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 10}px;\">\n <p style=\"font-size: ${props.fontSize || 14}px; font-weight: ${props.fontWeight || 'normal'}; color: ${props.color || '#333333'}; text-align: ${props.align || 'left'}; line-height: ${props.lineHeight || 1.6}; margin: 0; font-family: Arial, sans-serif;\">${props.text || ''}</p>\n </td>\n </tr>\n </table>`;\n\n case 'ImageBlock':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 10}px;\">\n <img src=\"${props.src || 'https://via.placeholder.com/400x200'}\" alt=\"${props.alt || 'Image'}\" style=\"width: ${props.width || '100%'}; max-width: 100%; border-radius: ${props.borderRadius || 0}px; display: inline-block;\">\n </td>\n </tr>\n </table>`;\n\n case 'VideoPlaceholder':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 10}px;\">\n <a href=\"${props.videoUrl || '#'}\" style=\"display: inline-block; position: relative; text-decoration: none;\">\n <img src=\"${props.thumbnailUrl || 'https://via.placeholder.com/600x338'}\" alt=\"Video thumbnail\" style=\"width: ${props.width || '100%'}; max-width: 100%; border-radius: ${props.borderRadius || 8}px; display: block;\">\n <div style=\"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 64px; height: 64px; background: rgba(0,0,0,0.6); border-radius: 50%; border: 3px solid ${props.playButtonColor || '#ffffff'};\">\n <div style=\"position: absolute; top: 50%; left: 50%; transform: translate(-40%, -50%); width: 0; height: 0; border-top: 12px solid transparent; border-bottom: 12px solid transparent; border-left: 20px solid ${props.playButtonColor || '#ffffff'};\"></div>\n </div>\n </a>\n </td>\n </tr>\n </table>`;\n\n case 'Divider':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.margin || 20}px 0; text-align: center;\">\n <hr style=\"border: none; border-top: ${props.thickness || 1}px solid ${props.color || '#e0e0e0'}; width: ${props.width || '100%'}; margin: 0 auto;\">\n </td>\n </tr>\n </table>`;\n\n case 'Spacer':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"height: ${props.height || 20}px; line-height: ${props.height || 20}px; font-size: 1px;\"> </td>\n </tr>\n </table>`;\n\n case 'SocialLinks': {\n const links = (props.links as Array<{ platform: string; url: string }>) || [];\n const iconSize = (props.iconSize as number) || 32;\n const gap = (props.gap as number) || 16;\n \n const socialIcons: Record<string, string> = {\n facebook: 'https://cdn-icons-png.flaticon.com/128/733/733547.png',\n twitter: 'https://cdn-icons-png.flaticon.com/128/733/733579.png',\n instagram: 'https://cdn-icons-png.flaticon.com/128/2111/2111463.png',\n linkedin: 'https://cdn-icons-png.flaticon.com/128/3536/3536505.png',\n youtube: 'https://cdn-icons-png.flaticon.com/128/1384/1384060.png',\n tiktok: 'https://cdn-icons-png.flaticon.com/128/3046/3046121.png',\n };\n\n const iconsHtml = links.map((link) => `\n <a href=\"${link.url}\" style=\"display: inline-block; margin: 0 ${gap / 2}px;\">\n <img src=\"${socialIcons[link.platform] || ''}\" alt=\"${link.platform}\" style=\"width: ${iconSize}px; height: ${iconSize}px;\">\n </a>\n `).join('');\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 16}px; background-color: ${props.backgroundColor || 'transparent'};\">\n ${iconsHtml}\n </td>\n </tr>\n </table>`;\n }\n\n case 'Countdown': {\n const boxStyle = `background: ${props.boxBackground || 'rgba(0,0,0,0.2)'}; padding: 12px 16px; border-radius: 8px; text-align: center; display: inline-block; margin: 0 6px;`;\n const numberStyle = `font-size: 28px; font-weight: bold; color: ${props.numberColor || '#ffffff'}; font-family: Arial, sans-serif;`;\n const labelStyle = `font-size: 11px; color: ${props.labelColor || '#ffffff'}; text-transform: uppercase; letter-spacing: 1px;`;\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#ff6b6b'}; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.title ? `<h3 style=\"color: ${props.titleColor || '#ffffff'}; font-size: 18px; font-weight: bold; margin: 0 0 16px 0; font-family: Arial, sans-serif;\">${props.title}</h3>` : ''}\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\n <tr>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.days || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Days</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.hours || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Hours</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.minutes || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Mins</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.seconds || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Secs</div>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n case 'PromoCode':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <div style=\"background-color: ${props.backgroundColor || '#fff8e1'}; border: 2px ${props.borderStyle || 'dashed'} ${props.borderColor || '#ffc107'}; border-radius: 8px; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.title ? `<div style=\"font-size: 18px; font-weight: bold; color: ${props.textColor || '#333333'}; margin-bottom: 12px; font-family: Arial, sans-serif;\">${props.title}</div>` : ''}\n <div style=\"display: inline-block; background-color: ${props.codeBackground || '#ffffff'}; border: 1px solid ${props.borderColor || '#ffc107'}; border-radius: 6px; padding: 12px 24px; margin-bottom: 12px;\">\n <span style=\"font-size: 24px; font-weight: bold; font-family: monospace; letter-spacing: 3px; color: ${props.codeColor || '#e65100'};\">${props.code || 'SAVE20'}</span>\n </div>\n ${props.description ? `<div style=\"font-size: 14px; color: ${props.textColor || '#333333'}; font-family: Arial, sans-serif; opacity: 0.8;\">${props.description}</div>` : ''}\n </div>\n </td>\n </tr>\n </table>`;\n\n case 'Testimonial':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <div style=\"background-color: ${props.backgroundColor || '#f8f9fa'}; padding: ${props.padding || 24}px; border-left: 4px solid ${props.accentColor || '#0066cc'};\">\n ${props.showQuoteIcon !== false ? `<div style=\"font-size: 48px; color: ${props.accentColor || '#0066cc'}; opacity: 0.3; line-height: 1; margin-bottom: -20px; font-family: Georgia, serif;\">\"</div>` : ''}\n <p style=\"font-size: 16px; font-style: italic; color: ${props.quoteColor || '#333333'}; line-height: 1.7; margin: 0 0 16px 0; font-family: Georgia, serif;\">${props.quote || ''}</p>\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n ${props.authorImage ? `<td style=\"vertical-align: middle; padding-right: 12px;\"><img src=\"${props.authorImage}\" alt=\"${props.authorName}\" style=\"width: 48px; height: 48px; border-radius: 50%;\"></td>` : ''}\n <td style=\"vertical-align: middle;\">\n <div style=\"font-size: 14px; font-weight: bold; color: ${props.quoteColor || '#333333'}; font-family: Arial, sans-serif;\">${props.authorName || ''}</div>\n ${props.authorTitle ? `<div style=\"font-size: 12px; color: ${props.authorColor || '#666666'}; font-family: Arial, sans-serif;\">${props.authorTitle}</div>` : ''}\n </td>\n </tr>\n </table>\n </div>\n </td>\n </tr>\n </table>`;\n\n case 'IconList': {\n const items = (props.items as Array<{ icon: string; text: string }>) || [];\n const icons: Record<string, string> = {\n check: '✓', star: '★', arrow: '→', bullet: '•', heart: '❤',\n fire: '🔥', rocket: '🚀', sparkle: '✨', gift: '🎁', clock: '⏰',\n };\n\n const listHtml = items.map((item) => `\n <tr>\n <td style=\"vertical-align: top; padding-right: 10px; color: ${props.iconColor || '#22c55e'}; font-size: ${props.iconSize || 18}px; line-height: 1.5;\">${icons[item.icon] || item.icon}</td>\n <td style=\"vertical-align: top; color: ${props.textColor || '#333333'}; font-size: ${props.fontSize || 14}px; line-height: 1.5; padding-bottom: ${props.gap || 12}px; font-family: Arial, sans-serif;\">${item.text}</td>\n </tr>\n `).join('');\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 16}px; background-color: ${props.backgroundColor || 'transparent'};\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\">\n ${listHtml}\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n case 'InvoiceTable': {\n const items = (props.items as Array<{ description: string; quantity: number; unitPrice: number }>) || [];\n const currency = (props.currency as string) || '$';\n const total = items.reduce((sum, item) => sum + item.quantity * item.unitPrice, 0);\n \n const headerStyle = `background-color: ${props.headerBg || '#1a1a2e'}; color: ${props.headerColor || '#ffffff'}; padding: 12px 16px; font-weight: bold; text-align: left; border-bottom: 1px solid ${props.borderColor || '#e0e0e0'};`;\n const cellStyle = `padding: 12px 16px; border-bottom: 1px solid ${props.borderColor || '#e0e0e0'}; font-family: Arial, sans-serif; font-size: 14px;`;\n \n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"border-collapse: collapse; border: 1px solid ${props.borderColor || '#e0e0e0'};\">\n <tr>\n <th style=\"${headerStyle}\">Description</th>\n <th style=\"${headerStyle} text-align: center; width: 80px;\">Qty</th>\n <th style=\"${headerStyle} text-align: right; width: 100px;\">Unit Price</th>\n <th style=\"${headerStyle} text-align: right; width: 100px;\">Amount</th>\n </tr>\n ${items.map(item => `\n <tr>\n <td style=\"${cellStyle}\">${item.description}</td>\n <td style=\"${cellStyle} text-align: center;\">${item.quantity}</td>\n <td style=\"${cellStyle} text-align: right;\">${currency}${item.unitPrice.toFixed(2)}</td>\n <td style=\"${cellStyle} text-align: right;\">${currency}${(item.quantity * item.unitPrice).toFixed(2)}</td>\n </tr>`).join('')}\n ${props.showTotal !== false ? `\n <tr>\n <td colspan=\"3\" style=\"${cellStyle} text-align: right; font-weight: bold;\">Total:</td>\n <td style=\"${cellStyle} text-align: right; font-weight: bold; background-color: #f5f5f5;\">${currency}${total.toFixed(2)}</td>\n </tr>` : ''}\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n default:\n return childrenHtml;\n }\n };\n\n return renderNode('ROOT');\n};\n","import * as React from \"react\";\n//@ts-ignore\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent focus:bg-accent\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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 className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 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 className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","import React, { useState, useMemo, useCallback } from \"react\";\nimport { Editor, Frame, Element, useEditor } from \"@craftjs/core\";\nimport { Toolbox } from \"./Toolbox\";\nimport { SettingsPanel } from \"./SettingsPanel\";\nimport { Paper } from \"./Paper\";\nimport { RenderNode } from \"./RenderNode\";\nimport { EditorProvider, useEditorConfig } from \"./context\";\nimport { DEFAULT_COMPONENTS, buildResolver } from \"./defaultComponents\";\nimport { generateEmailHtml } from \"../../lib/htmlExporter\";\nimport { Button } from \"../../components/ui/button\";\nimport { ScrollArea } from \"../../components/ui/scroll-area\";\nimport {\n Code,\n Copy,\n Check,\n Undo2,\n Redo2,\n Eye,\n Palette,\n Settings,\n Download,\n FileText,\n Sparkles,\n LayoutTemplate,\n} from \"lucide-react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"../../components/ui/dialog\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n DropdownMenuSeparator,\n DropdownMenuLabel,\n} from \"../../components/ui/dropdown-menu\";\n\nimport type {\n EmailEditorProps,\n ComponentRegistry,\n EditorTheme,\n EditorSlots,\n EmailTemplate,\n EditorCallbacks,\n HtmlRenderer,\n} from \"./types\";\n\nimport {\n Container,\n EmailHeader,\n EmailFooter,\n EmailButton,\n TextBlock,\n ImageBlock,\n Divider,\n InvoiceTable,\n Spacer,\n SocialLinks,\n TwoColumn,\n Countdown,\n PromoCode,\n Testimonial,\n VideoPlaceholder,\n VariableText,\n IconList,\n} from \"./components\";\n\n// ─── TopBar (internal) ──────────────────────────────────────────────────────\n\nconst TopBar = () => {\n const { actions, query, canUndo, canRedo } = useEditor((state, query) => ({\n canUndo: state.options.enabled && query.history.canUndo(),\n canRedo: state.options.enabled && query.history.canRedo(),\n }));\n\n const { title, logo, templates, callbacks, slots, htmlRenderers } =\n useEditorConfig();\n\n const [showCode, setShowCode] = useState(false);\n const [showPreview, setShowPreview] = useState(false);\n const [copied, setCopied] = useState(false);\n const [htmlCode, setHtmlCode] = useState(\"\");\n const [previewDevice, setPreviewDevice] = useState<\"desktop\" | \"mobile\">(\n \"desktop\",\n );\n\n const getHtml = useCallback(() => {\n const json = query.serialize();\n const nodes = JSON.parse(json);\n return generateEmailHtml(nodes, htmlRenderers);\n }, [query, htmlRenderers]);\n\n const handleExport = () => {\n const html = getHtml();\n setHtmlCode(html);\n setShowCode(true);\n callbacks.onExport?.(html);\n };\n\n const handlePreview = () => {\n const html = getHtml();\n setHtmlCode(html);\n setShowPreview(true);\n };\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(htmlCode);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n const handleDownload = () => {\n const blob = new Blob([htmlCode], { type: \"text/html\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = \"email-template.html\";\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n\n const handleClearCanvas = () => {\n actions.clearEvents();\n actions.deserialize(`{\n \"ROOT\": {\n \"type\": {\"resolvedName\": \"Paper\"},\n \"isCanvas\": true,\n \"props\": {\"background\": \"#ffffff\"},\n \"displayName\": \"Paper\",\n \"custom\": {},\n \"hidden\": false,\n \"nodes\": [],\n \"linkedNodes\": {}\n }\n }`);\n callbacks.onClear?.();\n };\n\n const handleLoadTemplate = (template: EmailTemplate) => {\n try {\n actions.deserialize(template.data);\n callbacks.onTemplateLoad?.(template.id);\n } catch (e) {\n console.error(\"Failed to load template:\", e);\n }\n };\n\n // Custom toolbar slot\n if (slots.toolbar) {\n return React.createElement(slots.toolbar, {\n onExport: getHtml,\n onPreview: getHtml,\n onClear: handleClearCanvas,\n title,\n logo,\n });\n }\n\n return (\n <>\n <div className=\"flex items-center justify-between px-4 py-3 border-b bg-background\">\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center gap-2\">\n {logo || (\n <div className=\"w-8 h-8 rounded-lg bg-gradient-to-br from-primary to-primary/60 flex items-center justify-center\">\n <Palette className=\"h-4 w-4 text-primary-foreground\" />\n </div>\n )}\n <div>\n <h1 className=\"text-sm font-bold leading-tight\">{title}</h1>\n <p className=\"text-[10px] text-muted-foreground\">\n Drag & Drop Builder\n </p>\n </div>\n </div>\n\n <div className=\"h-6 w-px bg-border\" />\n\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"gap-2\">\n <LayoutTemplate className=\"h-4 w-4\" />\n Templates\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-56\">\n <DropdownMenuLabel>Quick Start Templates</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {templates.map((template) => (\n <DropdownMenuItem\n key={template.id}\n className=\"gap-2\"\n onClick={() => handleLoadTemplate(template)}\n >\n {template.icon &&\n React.createElement(template.icon, {\n className: \"h-4 w-4 text-muted-foreground\",\n })}\n <div>\n <div className=\"font-medium\">{template.name}</div>\n {template.description && (\n <div className=\"text-xs text-muted-foreground\">\n {template.description}\n </div>\n )}\n </div>\n </DropdownMenuItem>\n ))}\n {templates.length > 0 && <DropdownMenuSeparator />}\n <DropdownMenuItem\n onClick={handleClearCanvas}\n className=\"text-destructive\"\n >\n Clear Canvas\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-1 bg-muted rounded-md p-0.5\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={!canUndo}\n onClick={() => actions.history.undo()}\n className=\"h-8 w-8 p-0\"\n title=\"Undo\"\n >\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={!canRedo}\n onClick={() => actions.history.redo()}\n className=\"h-8 w-8 p-0\"\n title=\"Redo\"\n >\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"w-px h-6 bg-border\" />\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handlePreview}\n className=\"gap-2\"\n >\n <Eye className=\"h-4 w-4\" /> Preview\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={handleExport}\n className=\"gap-2\"\n >\n <Code className=\"h-4 w-4\" /> Export HTML\n </Button>\n </div>\n </div>\n\n {/* Export Dialog */}\n <Dialog open={showCode} onOpenChange={setShowCode}>\n <DialogContent className=\"max-w-4xl max-h-[80vh]\">\n <DialogHeader>\n <DialogTitle>Export HTML</DialogTitle>\n <DialogDescription>\n Copy this HTML code to use in your email client or system.\n </DialogDescription>\n </DialogHeader>\n {slots.exportDialog ? (\n React.createElement(slots.exportDialog, {\n html: htmlCode,\n onClose: () => setShowCode(false),\n })\n ) : (\n <>\n <div className=\"flex gap-2 mb-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleCopy}>\n {copied ? (\n <Check className=\"h-4 w-4 mr-2\" />\n ) : (\n <Copy className=\"h-4 w-4 mr-2\" />\n )}\n {copied ? \"Copied!\" : \"Copy\"}\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={handleDownload}>\n <Download className=\"h-4 w-4 mr-2\" /> Download\n </Button>\n </div>\n <ScrollArea className=\"h-[400px] border rounded-md\">\n <pre className=\"p-4 text-xs font-mono whitespace-pre-wrap\">\n {htmlCode}\n </pre>\n </ScrollArea>\n </>\n )}\n </DialogContent>\n </Dialog>\n\n {/* Preview Dialog */}\n <Dialog open={showPreview} onOpenChange={setShowPreview}>\n <DialogContent className=\"max-w-5xl max-h-[90vh]\">\n <DialogHeader>\n <DialogTitle className=\"flex items-center justify-between\">\n <span>Email Preview</span>\n <div className=\"flex gap-1 bg-muted rounded-lg p-1\">\n {/* <Button\n variant={previewDevice === \"desktop\" ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setPreviewDevice(\"desktop\")}\n className=\"h-7 px-3 text-xs\"\n >\n Desktop\n </Button> */}\n {/* <Button variant={previewDevice === 'mobile' ? 'secondary' : 'ghost'} size=\"sm\" onClick={() => setPreviewDevice('mobile')} className=\"h-7 px-3 text-xs\">Mobile</Button> */}\n </div>\n </DialogTitle>\n <DialogDescription>\n Preview how your email will look in email clients.\n </DialogDescription>\n </DialogHeader>\n {slots.previewDialog ? (\n React.createElement(slots.previewDialog, {\n html: htmlCode,\n onClose: () => setShowPreview(false),\n })\n ) : (\n <ScrollArea className=\"h-[600px]\">\n <div\n className={`mx-auto transition-all duration-300 ${previewDevice === \"mobile\" ? \"max-w-[375px]\" : \"max-w-full\"}`}\n >\n <div className=\"border rounded-lg bg-muted/30 overflow-hidden\">\n {/* {previewDevice === 'mobile' && (\n <div className=\"h-6 bg-muted flex items-center justify-center\">\n <div className=\"w-16 h-1 bg-muted-foreground/30 rounded-full\" />\n </div>\n )} */}\n <iframe\n srcDoc={htmlCode}\n className=\"w-full min-h-[500px] bg-white\"\n title=\"Email Preview\"\n style={{\n height: previewDevice === \"mobile\" ? \"667px\" : \"600px\",\n }}\n />\n </div>\n </div>\n </ScrollArea>\n )}\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\n// ─── Default content ────────────────────────────────────────────────────────\n\nconst defaultEmailContent = (\n <Element is={Paper} canvas>\n <EmailHeader />\n <Element is={Container} canvas>\n <TextBlock\n text=\"Thank you for your business! Please find your invoice details below.\"\n fontSize={16}\n align=\"center\"\n />\n <Spacer height={10} />\n <InvoiceTable />\n <Spacer height={20} />\n <EmailButton text=\"Pay Now\" href=\"#\" />\n </Element>\n <EmailFooter />\n </Element>\n);\n\n// ─── Main EmailEditor Component ─────────────────────────────────────────────\n\nexport const EmailEditor: React.FC<EmailEditorProps> = ({\n components: userComponents,\n replaceBuiltins = false,\n theme = {},\n slots = {},\n templates = [],\n callbacks = {},\n initialState,\n defaultContent,\n title = \"Email Editor\",\n logo,\n htmlRenderers = {},\n showToolbar = true,\n showToolbox = true,\n showSettingsPanel = true,\n className,\n style,\n}) => {\n // Merge component registries\n const mergedComponents = useMemo<ComponentRegistry>(() => {\n if (replaceBuiltins) return userComponents || {};\n return { ...DEFAULT_COMPONENTS, ...(userComponents || {}) };\n }, [userComponents, replaceBuiltins]);\n\n // Build the Craft.js resolver from registry\n const resolver = useMemo(() => {\n const res = buildResolver(mergedComponents);\n res.Paper = Paper;\n return res;\n }, [mergedComponents]);\n\n const renderNodeFn = (slots.renderNode || RenderNode) as any;\n\n return (\n <EditorProvider\n value={{\n components: mergedComponents,\n theme,\n slots,\n templates,\n callbacks,\n htmlRenderers,\n title,\n logo,\n showToolbar,\n showToolbox,\n showSettingsPanel,\n }}\n >\n <div\n className={`h-screen flex flex-col bg-muted/30 ${className || \"\"}`}\n style={style}\n >\n <Editor resolver={resolver} onRender={renderNodeFn}>\n {showToolbar && <TopBar />}\n <div className=\"flex-1 flex overflow-hidden\">\n {showToolbox && (\n <div className=\"w-72 border-r bg-background flex flex-col\">\n <div className=\"p-4 border-b\">\n <div className=\"flex items-center gap-2\">\n <Palette className=\"h-4 w-4 text-primary\" />\n <span className=\"font-semibold text-sm\">Components</span>\n </div>\n <p className=\"text-xs text-muted-foreground mt-1\">\n Drag components to canvas\n </p>\n </div>\n <ScrollArea className=\"flex-1\">\n {slots.toolbox ? (\n React.createElement(slots.toolbox, {\n components: mergedComponents,\n categories: Object.keys(mergedComponents).reduce<\n string[]\n >((acc, k) => {\n const cat = mergedComponents[k].category || \"Other\";\n if (!acc.includes(cat)) acc.push(cat);\n return acc;\n }, []),\n })\n ) : (\n <Toolbox />\n )}\n </ScrollArea>\n </div>\n )}\n\n <div\n className=\"flex-1 overflow-auto p-8 craftjs-renderer\"\n style={{ backgroundColor: \"#e5e5e5\" }}\n >\n {initialState ? (\n <Frame data={initialState}>{defaultEmailContent}</Frame>\n ) : (\n <Frame>{defaultContent || defaultEmailContent}</Frame>\n )}\n </div>\n\n {showSettingsPanel && (\n <div className=\"w-80 border-l bg-background flex flex-col\">\n <div className=\"p-4 border-b\">\n <div className=\"flex items-center gap-2\">\n <Settings className=\"h-4 w-4 text-primary\" />\n <span className=\"font-semibold text-sm\">Properties</span>\n </div>\n <p className=\"text-xs text-muted-foreground mt-1\">\n Edit selected component\n </p>\n </div>\n <SettingsPanel />\n </div>\n )}\n </div>\n </Editor>\n </div>\n </EditorProvider>\n );\n};\n\nexport default EmailEditor;\n"]}
|