@kontakto/email-template-editor 1.5.0 → 1.5.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/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/blocks/text.tsx","../src/blocks/avatar.tsx","../src/blocks/button.tsx","../src/blocks/columns-container.tsx","../src/blocks/container.tsx","../src/blocks/divider.tsx","../src/blocks/heading.tsx","../src/blocks/html.tsx","../src/blocks/image.tsx","../src/blocks/signature.tsx","../src/blocks/spacer.tsx","../src/core/builders/build-block-component.tsx","../src/core/builders/build-block-configuration-schema.ts","../src/core/builders/build-block-configuration-dictionary.ts","../src/core/utils.ts","../src/email-builder/blocks/columns-container/columns-container-props-schema.ts","../src/email-builder/blocks/columns-container/columns-container-reader.tsx","../src/email-builder/blocks/container/container-props-schema.ts","../src/email-builder/blocks/container/container-reader.tsx","../src/email-builder/blocks/email-layout/email-layout-props-schema.ts","../src/email-builder/blocks/email-layout/email-layout-reader.tsx","../src/email-builder/reader/core.tsx","../src/email-builder/renderers/render-to-static-markup.tsx","../src/email-builder/renderers/render-to-text.ts","../src/theme.ts","../src/editor/editor-context.tsx","../src/app/context.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/base-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/radio-group-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/raw/raw-slider-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/slider-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/text-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/swatch.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/picker.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/base-color-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/index.tsx","../src/editor/blocks/helpers/font-family.ts","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/font-family.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/font-size-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/font-weight-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/padding-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/text-align-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/style-inputs/single-style-property-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/style-inputs/multi-style-property-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/avatar-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/button-sidebar-panel.tsx","../src/editor/blocks/columns-container/columns-container-props-schema.ts","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/text-dimension-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/column-widths-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/columns-container-sidebar-panel.tsx","../src/editor/blocks/container/container-props-schema.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/container-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/divider-sidebar-panel.tsx","../src/editor/blocks/email-layout/email-layout-props-schema.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/email-layout-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/heading-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/html-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/image-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/signature-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/spacer-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/boolean-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/text-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/index.tsx","../src/app/inspector-drawer/styles-panel.tsx","../src/app/inspector-drawer/template-panel-download-button.tsx","../src/app/inspector-drawer/template-panel.tsx","../src/app/inspector-drawer/index.tsx","../src/app/templates-drawer/sidebar-button.tsx","../sample-templates/empty-email-message.ts","../src/app/templates-drawer/index.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/block-button.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/buttons.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/blocks-menu.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/divider-button.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/placeholder-button.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/index.tsx","../src/editor/blocks/helpers/editor-children-ids/index.tsx","../src/editor/blocks/columns-container/columns-container-editor.tsx","../src/editor/blocks/container/container-editor.tsx","../src/editor/blocks/email-layout/email-layout-editor.tsx","../src/editor/blocks/helpers/block-wrappers/tune-menu.tsx","../src/editor/blocks/helpers/block-wrappers/editor-block-wrapper.tsx","../src/editor/blocks/button/button-editor.tsx","../src/editor/blocks/heading/heading-editor.tsx","../src/editor/blocks/html/html-editor.tsx","../src/editor/blocks/signature/signature-editor.tsx","../src/editor/blocks/text/text-editor.tsx","../src/editor/core.tsx","../src/editor/editor-block.tsx","../src/app/inspector-drawer/toggle-inspector-panel-button.tsx","../src/app/templates-drawer/toggle-samples-panel-button.tsx","../src/app/email-canvas/helper/html-formatter.ts","../src/app/email-canvas/helper/highlighters.tsx","../src/app/email-canvas/helper/highlighted-code-panel.tsx","../src/app/email-canvas/html-panel.tsx","../src/app/email-canvas/json-panel.tsx","../src/app/email-canvas/text-panel.tsx","../src/app/email-canvas/main-tabs-group.tsx","../src/app/email-canvas/snackbar-provider.tsx","../src/app/email-canvas/save-template-dialog.tsx","../src/app/email-canvas/save-button.tsx","../src/app/email-canvas/new-template-button.tsx","../src/app/email-canvas/index.tsx","../src/app/index.tsx"],"names":["html","DOMPurify","Renderer","marked","useMemo","React","z","PADDING_SCHEMA","getPadding","FONT_FAMILY_SCHEMA","getFontFamily","COLOR_SCHEMA","ColumnsContainerPropsSchema","ContainerPropsSchema","getBorder","createContext","useContext","document","baseRenderToStaticMarkup","createTheme","lighten","darken","alpha","create","useState","useRef","useCallback","Box","Typography","Stack","useEffect","InputLabel","ToggleButtonGroup","Slider","value","InputProps","TextField","renderButton","Button","HexColorPicker","HexColorInput","ButtonBase","CloseOutlined","AddOutlined","Menu","ColorInput","MenuItem","TextFieldsOutlined","ToggleButton","AlignVerticalTopOutlined","AlignVerticalBottomOutlined","AlignHorizontalLeftOutlined","AlignHorizontalRightOutlined","FormatAlignLeftOutlined","FormatAlignCenterOutlined","FormatAlignRightOutlined","RoundedCornerOutlined","AspectRatioOutlined","size","shape","imageUrl","alt","text","url","buttonStyle","buttonTextColor","buttonBackgroundColor","BasePropsShape","columns_container_props_schema_default","SpaceBarOutlined","VerticalAlignTopOutlined","VerticalAlignCenterOutlined","VerticalAlignBottomOutlined","lineColor","HeightOutlined","lineHeight","EmailLayoutPropsSchema","greeting","name","title","company","address","email","phone","website","imageSize","imageShape","layout","nameColor","textColor","linkColor","FormControlLabel","Switch","data","FileDownloadOutlined","ContentCopyOutlined","DeleteOutlined","Drawer","Tabs","Tab","sx","CircularProgress","Divider","BUTTON_SX","HMobiledataOutlined","NotesOutlined","SmartButtonOutlined","ImageOutlined","AccountCircleOutlined","ContactMailOutlined","BusinessOutlined","HorizontalRuleOutlined","Crop32Outlined","HtmlOutlined","ViewColumnOutlined","LibraryAddOutlined","Fade","IconButton","Fragment","childrenIds","generateId","_a","_b","_c","e","collectBlock","Paper","Tooltip","ArrowUpwardOutlined","ArrowDownwardOutlined","getRoundedCorners","getButtonSizePadding","getFontSize","getImageBorderRadius","EditorBlock","LastPageOutlined","AppRegistrationOutlined","FirstPageOutlined","MenuOutlined","prettify","hljs","jsonHighlighter","xmlHighlighter","EditOutlined","PreviewOutlined","CodeOutlined","SubjectOutlined","DataObjectOutlined","Snackbar","Dialog","DialogTitle","DialogContent","DialogActions","SaveOutlined","AddIcon","TemplatePanel","MonitorOutlined","PhoneIphoneOutlined","useTheme","forwardRef","useImperativeHandle","ThemeProvider","CssBaseline"],"mappings":"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","file":"index.cjs","sourcesContent":["import DOMPurify from 'dompurify';\nimport { marked, Renderer } from 'marked';\nimport React, { CSSProperties, useMemo } from 'react';\nimport { z } from 'zod';\n\n// EmailMarkdown Component\nconst ALLOWED_TAGS = [\n 'a',\n 'article',\n 'b',\n 'blockquote',\n 'br',\n 'caption',\n 'code',\n 'del',\n 'details',\n 'div',\n 'em',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'ins',\n 'kbd',\n 'li',\n 'main',\n 'ol',\n 'p',\n 'pre',\n 'section',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'th',\n 'thead',\n 'tr',\n 'u',\n 'ul',\n];\nconst ALLOWED_ATTR = [\n 'style',\n 'title',\n 'src',\n 'srcset',\n 'alt',\n 'width',\n 'height',\n 'href',\n 'target',\n 'align',\n 'start',\n];\n\nfunction sanitizer(html: string): string {\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS,\n ALLOWED_ATTR,\n });\n}\n\nclass CustomRenderer extends Renderer {\n table(header: string, body: string) {\n return `<table width=\"100%\">\n<thead>\n${header}</thead>\n<tbody>\n${body}</tbody>\n</table>`;\n }\n\n link(href: string, title: string | null, text: string) {\n if (!title) {\n return `<a href=\"${href}\" target=\"_blank\">${text}</a>`;\n }\n return `<a href=\"${href}\" title=\"${title}\" target=\"_blank\">${text}</a>`;\n }\n}\n\nfunction renderMarkdownString(str: string): string {\n const html = marked.parse(str, {\n async: false,\n breaks: true,\n gfm: true,\n pedantic: false,\n silent: false,\n renderer: new CustomRenderer(),\n });\n if (typeof html !== 'string') {\n throw new Error('marked.parse did not return a string');\n }\n return sanitizer(html);\n}\n\ntype EmailMarkdownProps = {\n style: CSSProperties;\n markdown: string;\n};\n\nfunction EmailMarkdown({ markdown, ...props }: EmailMarkdownProps) {\n const data = useMemo(() => renderMarkdownString(markdown), [markdown]);\n return <div {...props} dangerouslySetInnerHTML={{ __html: data }} />;\n}\n\n// Text Component\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const TextPropsSchema = z.object({\n style: z\n .object({\n color: COLOR_SCHEMA,\n backgroundColor: COLOR_SCHEMA,\n fontSize: z.number().gte(0).optional().nullable(),\n fontFamily: FONT_FAMILY_SCHEMA,\n fontWeight: z.enum(['bold', 'normal']).optional().nullable(),\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n markdown: z.boolean().optional().nullable(),\n text: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type TextProps = z.infer<typeof TextPropsSchema>;\n// Export for runtime usage\nexport const TextProps = TextPropsSchema;\n\nexport const TextPropsDefaults = {\n text: '',\n};\n\nexport function Text({ style, props }: TextProps) {\n const wStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontSize: style?.fontSize ?? undefined,\n fontFamily: getFontFamily(style?.fontFamily),\n fontWeight: style?.fontWeight ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n\n const text = props?.text ?? TextPropsDefaults.text;\n if (props?.markdown) {\n return <EmailMarkdown style={wStyle} markdown={text} />;\n }\n return <div style={wStyle}>{text}</div>;\n}\n\n// Export the Text component as default\nexport default Text;\n\n// Also export the EmailMarkdown component for direct use if needed\nexport { EmailMarkdown }; ","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const AvatarPropsSchema = z.object({\n style: z\n .object({\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n size: z.number().gt(0).optional().nullable(),\n shape: z.enum(['circle', 'square', 'rounded']).optional().nullable(),\n imageUrl: z.string().optional().nullable(),\n alt: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type AvatarProps = z.infer<typeof AvatarPropsSchema>;\nexport const AvatarProps = AvatarPropsSchema;\n\nfunction getBorderRadius(shape: 'circle' | 'square' | 'rounded', size: number): number | undefined {\n switch (shape) {\n case 'rounded':\n return size * 0.125;\n case 'circle':\n return size;\n case 'square':\n default:\n return undefined;\n }\n}\n\nexport const AvatarPropsDefaults = {\n size: 64,\n imageUrl: '',\n alt: '',\n shape: 'square',\n} as const;\n\nexport function Avatar({ style, props }: AvatarProps) {\n const size = props?.size ?? AvatarPropsDefaults.size;\n const imageUrl = props?.imageUrl ?? AvatarPropsDefaults.imageUrl;\n const alt = props?.alt ?? AvatarPropsDefaults.alt;\n const shape = props?.shape ?? AvatarPropsDefaults.shape;\n\n const sectionStyle: CSSProperties = {\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n return (\n <div style={sectionStyle}>\n <img\n alt={alt}\n src={imageUrl}\n height={size}\n width={size}\n style={{\n outline: 'none',\n border: 'none',\n textDecoration: 'none',\n objectFit: 'cover',\n height: size,\n width: size,\n maxWidth: '100%',\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'center',\n borderRadius: getBorderRadius(shape, size),\n }}\n />\n </div>\n );\n}\n\n// Export the Avatar component as default\nexport default Avatar;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ButtonPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n fontSize: z.number().min(0).optional().nullable(),\n fontFamily: FONT_FAMILY_SCHEMA,\n fontWeight: z.enum(['bold', 'normal']).optional().nullable(),\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n buttonBackgroundColor: COLOR_SCHEMA,\n buttonStyle: z.enum(['rectangle', 'pill', 'rounded']).optional().nullable(),\n buttonTextColor: COLOR_SCHEMA,\n fullWidth: z.boolean().optional().nullable(),\n size: z.enum(['x-small', 'small', 'large', 'medium']).optional().nullable(),\n text: z.string().optional().nullable(),\n url: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type ButtonProps = z.infer<typeof ButtonPropsSchema>;\n// Export for runtime usage\nexport const ButtonProps = ButtonPropsSchema;\n\nfunction getRoundedCorners(props: ButtonProps['props']) {\n const buttonStyle = props?.buttonStyle ?? ButtonPropsDefaults.buttonStyle;\n\n switch (buttonStyle) {\n case 'rectangle':\n return undefined;\n case 'pill':\n return 64;\n case 'rounded':\n default:\n return 4;\n }\n}\n\nfunction getButtonSizePadding(props: ButtonProps['props']) {\n const size = props?.size ?? ButtonPropsDefaults.size;\n switch (size) {\n case 'x-small':\n return [4, 8] as const;\n case 'small':\n return [8, 12] as const;\n case 'large':\n return [16, 32] as const;\n case 'medium':\n default:\n return [12, 20] as const;\n }\n}\n\nexport const ButtonPropsDefaults = {\n text: '',\n url: '',\n fullWidth: false,\n size: 'medium',\n buttonStyle: 'rounded',\n buttonTextColor: '#FFFFFF',\n buttonBackgroundColor: '#999999',\n} as const;\n\nexport function Button({ style, props }: ButtonProps) {\n const text = props?.text ?? ButtonPropsDefaults.text;\n const url = props?.url ?? ButtonPropsDefaults.url;\n const fullWidth = props?.fullWidth ?? ButtonPropsDefaults.fullWidth;\n const buttonTextColor = props?.buttonTextColor ?? ButtonPropsDefaults.buttonTextColor;\n const buttonBackgroundColor = props?.buttonBackgroundColor ?? ButtonPropsDefaults.buttonBackgroundColor;\n\n const padding = getButtonSizePadding(props);\n const textRaise = (padding[1] * 2 * 3) / 4;\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n const linkStyle: CSSProperties = {\n color: buttonTextColor,\n fontSize: style?.fontSize ?? 16,\n fontFamily: getFontFamily(style?.fontFamily),\n fontWeight: style?.fontWeight ?? 'bold',\n backgroundColor: buttonBackgroundColor,\n borderRadius: getRoundedCorners(props),\n display: fullWidth ? 'block' : 'inline-block',\n padding: `${padding[0]}px ${padding[1]}px`,\n textDecoration: 'none',\n };\n\n return (\n <div style={wrapperStyle}>\n <a href={url} style={linkStyle} target=\"_blank\">\n <span\n dangerouslySetInnerHTML={{\n __html: `<!--[if mso]><i style=\"letter-spacing: ${padding[1]}px;mso-font-width:-100%;mso-text-raise:${textRaise}\" hidden> </i><![endif]-->`,\n }}\n />\n <span>{text}</span>\n <span\n dangerouslySetInnerHTML={{\n __html: `<!--[if mso]><i style=\"letter-spacing: ${padding[1]}px;mso-font-width:-100%\" hidden> </i><![endif]-->`,\n }}\n />\n </a>\n </div>\n );\n}\n\nexport default Button;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst FIXED_WIDTHS_SCHEMA = z\n .tuple([z.number().nullish(), z.number().nullish(), z.number().nullish()])\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ColumnsContainerPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n fixedWidths: FIXED_WIDTHS_SCHEMA,\n columnsCount: z\n .union([z.literal(2), z.literal(3)])\n .optional()\n .nullable(),\n columnsGap: z.number().optional().nullable(),\n contentAlignment: z.enum(['top', 'middle', 'bottom']).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\ntype TColumn = JSX.Element | JSX.Element[] | null;\nexport type ColumnsContainerProps = z.infer<typeof ColumnsContainerPropsSchema> & {\n columns?: TColumn[];\n};\n\n// Export for runtime usage\nexport const ColumnsContainerProps = ColumnsContainerPropsSchema;\n\nconst ColumnsContainerPropsDefaults = {\n columnsCount: 2,\n columnsGap: 0,\n contentAlignment: 'middle',\n} as const;\n\nexport function ColumnsContainer({ style, columns, props }: ColumnsContainerProps) {\n const wStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n padding: getPadding(style?.padding),\n };\n\n const blockProps = {\n columnsCount: props?.columnsCount ?? ColumnsContainerPropsDefaults.columnsCount,\n columnsGap: props?.columnsGap ?? ColumnsContainerPropsDefaults.columnsGap,\n contentAlignment: props?.contentAlignment ?? ColumnsContainerPropsDefaults.contentAlignment,\n fixedWidths: props?.fixedWidths,\n };\n\n return (\n <div style={wStyle}>\n <table\n align=\"center\"\n width=\"100%\"\n cellPadding=\"0\"\n border={0}\n style={{ tableLayout: 'fixed', borderCollapse: 'collapse' }}\n >\n <tbody style={{ width: '100%' }}>\n <tr style={{ width: '100%' }}>\n <TableCell index={0} props={blockProps} columns={columns} />\n <TableCell index={1} props={blockProps} columns={columns} />\n <TableCell index={2} props={blockProps} columns={columns} />\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n\ntype Props = {\n props: {\n fixedWidths: z.infer<typeof FIXED_WIDTHS_SCHEMA>;\n columnsCount: 2 | 3;\n columnsGap: number;\n contentAlignment: 'top' | 'middle' | 'bottom';\n };\n index: number;\n columns?: TColumn[];\n};\nfunction TableCell({ index, props, columns }: Props) {\n const contentAlignment = props?.contentAlignment ?? ColumnsContainerPropsDefaults.contentAlignment;\n const columnsCount = props?.columnsCount ?? ColumnsContainerPropsDefaults.columnsCount;\n\n if (columnsCount === 2 && index === 2) {\n return null;\n }\n\n const style: CSSProperties = {\n boxSizing: 'content-box',\n verticalAlign: contentAlignment,\n paddingLeft: getPaddingBefore(index, props),\n paddingRight: getPaddingAfter(index, props),\n width: props.fixedWidths?.[index] ?? undefined,\n };\n const children = (columns && columns[index]) ?? null;\n return <td style={style}>{children}</td>;\n}\n\nfunction getPaddingBefore(index: number, { columnsGap, columnsCount }: Props['props']) {\n if (index === 0) {\n return 0;\n }\n if (columnsCount === 2) {\n return columnsGap / 2;\n }\n if (index === 1) {\n return columnsGap / 3;\n }\n return (2 * columnsGap) / 3;\n}\n\nfunction getPaddingAfter(index: number, { columnsGap, columnsCount }: Props['props']) {\n if (columnsCount === 2) {\n if (index === 0) {\n return columnsGap / 2;\n }\n return 0;\n }\n\n if (index === 0) {\n return (2 * columnsGap) / 3;\n }\n if (index === 1) {\n return columnsGap / 3;\n }\n return 0;\n}\n\nexport default ColumnsContainer;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ContainerPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n borderColor: COLOR_SCHEMA,\n borderRadius: z.number().optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n});\n\nexport type ContainerProps = {\n style?: z.infer<typeof ContainerPropsSchema>['style'];\n children?: JSX.Element | JSX.Element[] | null;\n};\n\n// Export for runtime usage\nexport const ContainerProps = ContainerPropsSchema;\n\nfunction getBorder(style: ContainerProps['style']) {\n if (!style || !style.borderColor) {\n return undefined;\n }\n return `1px solid ${style.borderColor}`;\n}\n\nexport function Container({ style, children }: ContainerProps) {\n const wStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n border: getBorder(style),\n borderRadius: style?.borderRadius ?? undefined,\n padding: getPadding(style?.padding),\n };\n if (!children) {\n return <div style={wStyle} />;\n }\n return <div style={wStyle}>{children}</div>;\n}\n\nexport default Container;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const DividerPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n lineColor: COLOR_SCHEMA,\n lineHeight: z.number().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type DividerProps = z.infer<typeof DividerPropsSchema>;\n\n// Export for runtime usage\nexport const DividerProps = DividerPropsSchema;\n\nexport const DividerPropsDefaults = {\n lineHeight: 1,\n lineColor: '#333333',\n};\n\nexport function Divider({ style, props }: DividerProps) {\n const st: CSSProperties = {\n padding: getPadding(style?.padding),\n backgroundColor: style?.backgroundColor ?? undefined,\n };\n const borderTopWidth = props?.lineHeight ?? DividerPropsDefaults.lineHeight;\n const borderTopColor = props?.lineColor ?? DividerPropsDefaults.lineColor;\n return (\n <div style={st}>\n <hr\n style={{\n width: '100%',\n border: 'none',\n borderTop: `${borderTopWidth}px solid ${borderTopColor}`,\n margin: 0,\n }}\n />\n </div>\n );\n}\n\nexport default Divider;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nexport const HeadingPropsSchema = z.object({\n props: z\n .object({\n text: z.string().optional().nullable(),\n level: z.enum(['h1', 'h2', 'h3']).optional().nullable(),\n })\n .optional()\n .nullable(),\n style: z\n .object({\n color: COLOR_SCHEMA,\n backgroundColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n fontWeight: z.enum(['bold', 'normal']).optional().nullable(),\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n});\n\nexport type HeadingProps = z.infer<typeof HeadingPropsSchema>;\n\n// Export for runtime usage\nexport const HeadingProps = HeadingPropsSchema;\n\nexport const HeadingPropsDefaults = {\n level: 'h2',\n text: '',\n} as const;\n\nexport function Heading({ props, style }: HeadingProps) {\n const level = props?.level ?? HeadingPropsDefaults.level;\n const text = props?.text ?? HeadingPropsDefaults.text;\n const hStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontWeight: style?.fontWeight ?? 'bold',\n textAlign: style?.textAlign ?? undefined,\n margin: 0,\n fontFamily: getFontFamily(style?.fontFamily),\n fontSize: getFontSize(level),\n padding: getPadding(style?.padding),\n };\n switch (level) {\n case 'h1':\n return <h1 style={hStyle}>{text}</h1>;\n case 'h2':\n return <h2 style={hStyle}>{text}</h2>;\n case 'h3':\n return <h3 style={hStyle}>{text}</h3>;\n }\n}\n\nfunction getFontSize(level: 'h1' | 'h2' | 'h3') {\n switch (level) {\n case 'h1':\n return 32;\n case 'h2':\n return 24;\n case 'h3':\n return 20;\n }\n}\n\nexport default Heading;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const HtmlPropsSchema = z.object({\n style: z\n .object({\n color: COLOR_SCHEMA,\n backgroundColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n fontSize: z.number().min(0).optional().nullable(),\n textAlign: z.enum(['left', 'right', 'center']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n contents: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type HtmlProps = z.infer<typeof HtmlPropsSchema>;\n// Export for runtime usage\nexport const HtmlProps = HtmlPropsSchema;\n\nexport function Html({ style, props }: HtmlProps) {\n const children = props?.contents;\n const cssStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontFamily: getFontFamily(style?.fontFamily),\n fontSize: style?.fontSize ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n if (!children) {\n return <div style={cssStyle} />;\n }\n return <div style={cssStyle} dangerouslySetInnerHTML={{ __html: children }} />;\n}\n\nexport default Html;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ImagePropsSchema = z.object({\n style: z\n .object({\n padding: PADDING_SCHEMA,\n backgroundColor: z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .optional()\n .nullable(),\n textAlign: z.enum(['center', 'left', 'right']).optional().nullable(),\n })\n .optional()\n .nullable(),\n props: z\n .object({\n width: z.number().optional().nullable(),\n height: z.number().optional().nullable(),\n url: z.string().optional().nullable(),\n alt: z.string().optional().nullable(),\n linkHref: z.string().optional().nullable(),\n contentAlignment: z.enum(['top', 'middle', 'bottom']).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type ImageProps = z.infer<typeof ImagePropsSchema>;\n// Export for runtime usage\nexport const ImageProps = ImagePropsSchema;\n\nexport function Image({ style, props }: ImageProps) {\n const sectionStyle: CSSProperties = {\n padding: getPadding(style?.padding),\n backgroundColor: style?.backgroundColor ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n };\n\n const linkHref = props?.linkHref ?? null;\n const width = props?.width ?? undefined;\n const height = props?.height ?? undefined;\n\n const imageElement = (\n <img\n alt={props?.alt ?? ''}\n src={props?.url ?? ''}\n width={width}\n height={height}\n style={{\n width,\n height,\n outline: 'none',\n border: 'none',\n textDecoration: 'none',\n verticalAlign: props?.contentAlignment ?? 'middle',\n display: 'inline-block',\n maxWidth: '100%',\n }}\n />\n );\n\n if (!linkHref) {\n return <div style={sectionStyle}>{imageElement}</div>;\n }\n\n return (\n <div style={sectionStyle}>\n <a href={linkHref} style={{ textDecoration: 'none' }} target=\"_blank\">\n {imageElement}\n </a>\n </div>\n );\n}\n\nexport default Image;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const SignaturePropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n greeting: z.string().optional().nullable(),\n name: z.string().optional().nullable(),\n title: z.string().optional().nullable(),\n company: z.string().optional().nullable(),\n address: z.string().optional().nullable(),\n email: z.string().optional().nullable(),\n phone: z.string().optional().nullable(),\n website: z.string().optional().nullable(),\n imageUrl: z.string().optional().nullable(),\n imageSize: z.number().optional().nullable(),\n imageShape: z.enum(['circle', 'square', 'rounded']).optional().nullable(),\n layout: z.enum(['horizontal', 'vertical']).optional().nullable(),\n nameColor: COLOR_SCHEMA,\n textColor: COLOR_SCHEMA,\n linkColor: COLOR_SCHEMA,\n })\n .optional()\n .nullable(),\n});\n\nexport type SignatureProps = z.infer<typeof SignaturePropsSchema>;\nexport const SignatureProps = SignaturePropsSchema;\n\nexport const SignaturePropsDefaults = {\n greeting: '',\n name: '',\n title: '',\n company: '',\n address: '',\n email: '',\n phone: '',\n website: '',\n imageUrl: '',\n imageSize: 64,\n imageShape: 'circle',\n layout: 'horizontal',\n nameColor: '#262626',\n textColor: '#666666',\n linkColor: '#0079CC',\n} as const;\n\nfunction getImageBorderRadius(shape: string, size: number): number | undefined {\n switch (shape) {\n case 'circle':\n return size;\n case 'rounded':\n return size * 0.125;\n case 'square':\n default:\n return undefined;\n }\n}\n\nexport function Signature({ style, props }: SignatureProps) {\n const greeting = props?.greeting ?? SignaturePropsDefaults.greeting;\n const name = props?.name ?? SignaturePropsDefaults.name;\n const title = props?.title ?? SignaturePropsDefaults.title;\n const company = props?.company ?? SignaturePropsDefaults.company;\n const address = props?.address ?? SignaturePropsDefaults.address;\n const email = props?.email ?? SignaturePropsDefaults.email;\n const phone = props?.phone ?? SignaturePropsDefaults.phone;\n const website = props?.website ?? SignaturePropsDefaults.website;\n const imageUrl = props?.imageUrl ?? SignaturePropsDefaults.imageUrl;\n const imageSize = props?.imageSize ?? SignaturePropsDefaults.imageSize;\n const imageShape = props?.imageShape ?? SignaturePropsDefaults.imageShape;\n const layout = props?.layout ?? SignaturePropsDefaults.layout;\n const nameColor = props?.nameColor ?? SignaturePropsDefaults.nameColor;\n const textColor = props?.textColor ?? SignaturePropsDefaults.textColor;\n const linkColor = props?.linkColor ?? SignaturePropsDefaults.linkColor;\n\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n fontFamily: getFontFamily(style?.fontFamily),\n padding: getPadding(style?.padding),\n };\n\n const greetingStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n marginBottom: 8,\n lineHeight: '1.4',\n fontStyle: 'italic',\n };\n\n const nameStyle: CSSProperties = {\n fontSize: 16,\n fontWeight: 'bold',\n color: nameColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const detailStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const linkStyle: CSSProperties = {\n fontSize: 14,\n color: linkColor,\n textDecoration: 'none',\n };\n\n const imageElement = imageUrl ? (\n <img\n src={imageUrl}\n alt={name || company}\n width={imageSize}\n height={imageSize}\n style={{\n width: imageSize,\n height: imageSize,\n objectFit: 'cover',\n borderRadius: getImageBorderRadius(imageShape, imageSize),\n display: 'block',\n outline: 'none',\n border: 'none',\n }}\n />\n ) : null;\n\n const contactParts: JSX.Element[] = [];\n if (email) contactParts.push(<a key=\"email\" href={`mailto:${email}`} style={linkStyle}>{email}</a>);\n if (phone) contactParts.push(<a key=\"phone\" href={`tel:${phone}`} style={linkStyle}>{phone}</a>);\n if (website) {\n const href = website.startsWith('http') ? website : `https://${website}`;\n contactParts.push(<a key=\"website\" href={href} style={linkStyle} target=\"_blank\">{website}</a>);\n }\n\n const textContent = (\n <div>\n {name && <p style={nameStyle}>{name}</p>}\n {title && <p style={detailStyle}>{title}</p>}\n {company && <p style={detailStyle}>{company}</p>}\n {address && <p style={detailStyle}>{address}</p>}\n {contactParts.length > 0 && (\n <p style={{ ...detailStyle, marginTop: 4 }}>\n {contactParts.map((part, i) => (\n <React.Fragment key={i}>\n {i > 0 && <span style={detailStyle}> · </span>}\n {part}\n </React.Fragment>\n ))}\n </p>\n )}\n </div>\n );\n\n const greetingElement = greeting ? <p style={greetingStyle}>{greeting}</p> : null;\n\n if (layout === 'vertical') {\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n {imageElement && <div style={{ marginBottom: 12 }}>{imageElement}</div>}\n {textContent}\n </div>\n );\n }\n\n // horizontal layout\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n <table cellPadding=\"0\" cellSpacing=\"0\" border={0} role=\"presentation\">\n <tbody>\n <tr>\n {imageElement && (\n <td style={{ verticalAlign: 'middle', paddingRight: 16 }}>\n {imageElement}\n </td>\n )}\n <td style={{ verticalAlign: 'middle' }}>\n {textContent}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n\nexport default Signature;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nexport const SpacerPropsSchema = z.object({\n props: z\n .object({\n height: z.number().gte(0).optional().nullish(),\n })\n .optional()\n .nullable(),\n});\n\nexport type SpacerProps = z.infer<typeof SpacerPropsSchema>;\n\n// Export for runtime usage\nexport const SpacerProps = SpacerPropsSchema;\n\nexport const SpacerPropsDefaults = {\n height: 16,\n};\n\nexport function Spacer({ props }: SpacerProps) {\n const style: CSSProperties = {\n height: props?.height ?? SpacerPropsDefaults.height,\n };\n return <div style={style} />;\n}\n\nexport default Spacer;\n","import React from 'react';\n\nimport type { BaseZodDictionary, BlockConfiguration, DocumentBlocksDictionary } from '../utils';\n\n/**\n * @param blocks Main DocumentBlocksDictionary\n * @returns React component that can render a BlockConfiguration that is compatible with blocks\n */\nexport default function buildBlockComponent<T extends BaseZodDictionary>(blocks: DocumentBlocksDictionary<T>) {\n return function BlockComponent({ type, data }: BlockConfiguration<T>) {\n const Component = blocks[type].Component;\n return <Component {...data} />;\n };\n}\n","import { z } from 'zod';\n\nimport type { BaseZodDictionary, BlockConfiguration, DocumentBlocksDictionary } from '../utils';\n\n/**\n *\n * @param blocks Main DocumentBlocksDictionary\n * @returns zod schema that can parse arbitary objects into a single BlockConfiguration\n */\nexport default function buildBlockConfigurationSchema<T extends BaseZodDictionary>(\n blocks: DocumentBlocksDictionary<T>\n) {\n const blockObjects = Object.keys(blocks).map((type: keyof T) =>\n z.object({\n type: z.literal(type),\n data: blocks[type].schema,\n })\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return z.discriminatedUnion('type', blockObjects as any).transform((v) => v as BlockConfiguration<T>);\n}\n","import type { BaseZodDictionary, DocumentBlocksDictionary } from '../utils';\n\n/**\n * Identity function to type a DocumentBlocksDictionary\n * @param blocks Main DocumentBlocksDictionary\n * @returns typed DocumentBlocksDictionary\n */\nexport default function buildBlockConfigurationDictionary<T extends BaseZodDictionary>(\n blocks: DocumentBlocksDictionary<T>\n) {\n return blocks;\n} ","import { z } from 'zod';\n\nexport type BaseZodDictionary = { [name: string]: z.AnyZodObject };\nexport type DocumentBlocksDictionary<T extends BaseZodDictionary> = {\n [K in keyof T]: {\n schema: T[K];\n Component: (props: z.infer<T[K]>) => JSX.Element;\n };\n};\n\n// Export as a runtime value\nexport const DocumentBlocksDictionary = 'DocumentBlocksDictionary';\n\nexport type BlockConfiguration<T extends BaseZodDictionary> = {\n [TType in keyof T]: {\n type: TType;\n data: z.infer<T[TType]>;\n };\n}[keyof T];\n\n// Export as a runtime value\nexport const BlockConfiguration = 'BlockConfiguration';\n\n// Export BaseZodDictionary as a runtime value\nexport const BaseZodDictionary = 'BaseZodDictionary';\n\nexport class BlockNotFoundError extends Error {\n blockId: string;\n constructor(blockId: string) {\n super('Could not find a block with the given blockId');\n this.blockId = blockId;\n }\n}\n","import { z } from 'zod';\n\n// Import from our local blocks\nimport { ColumnsContainerPropsSchema as BaseColumnsContainerPropsSchema } from '@blocks';\n\n/**\n * Schema for ColumnsContainer props in the email editor\n * \n * Extends the base ColumnsContainer schema to add support for \n * childrenIds references that allow adding other blocks into columns\n */\nconst BasePropsShape = BaseColumnsContainerPropsSchema.shape.props.unwrap().unwrap().shape;\n\nconst ColumnsContainerPropsSchema = z.object({\n style: BaseColumnsContainerPropsSchema.shape.style,\n props: z\n .object({\n ...BasePropsShape,\n columns: z.tuple([\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n ]),\n })\n .optional()\n .nullable(),\n});\n\nexport default ColumnsContainerPropsSchema;\nexport type ColumnsContainerProps = z.infer<typeof ColumnsContainerPropsSchema>; ","import React from 'react';\n\n// Import from our local blocks\nimport { ColumnsContainer as BaseColumnsContainer } from '@blocks';\n\nimport { ReaderBlock } from '../../reader/core';\n\nimport { ColumnsContainerProps } from './columns-container-props-schema';\n\n/**\n * ColumnsContainer Reader component for email templates\n * \n * This component extends the base ColumnsContainer to support\n * referencing child blocks by ID rather than direct embedding,\n * allowing for a more flexible document structure.\n */\nexport default function ColumnsContainerReader({ style, props }: ColumnsContainerProps) {\n const { columns, ...restProps } = props ?? {};\n let cols = undefined;\n if (columns) {\n cols = columns.map((col) => col.childrenIds.map((childId) => <ReaderBlock key={childId} id={childId} />));\n }\n\n return <BaseColumnsContainer props={restProps} columns={cols} style={style} />;\n} ","import { z } from 'zod';\n\n// Import from our local blocks\nimport { ContainerPropsSchema as BaseContainerPropsSchema } from '@blocks';\n\n/**\n * Schema for Container props in the email editor\n * \n * Extends the base Container schema to add support for\n * childrenIds references that allow adding other blocks inside\n */\nexport const ContainerPropsSchema = z.object({\n style: BaseContainerPropsSchema.shape.style,\n props: z\n .object({\n childrenIds: z.array(z.string()).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type ContainerProps = z.infer<typeof ContainerPropsSchema>; ","import React from 'react';\n\n// Import from our local blocks\nimport { Container as BaseContainer } from '@blocks';\n\nimport { ReaderBlock } from '@email-builder/reader/core';\n\nimport { ContainerProps } from './container-props-schema';\n\n/**\n * Container Reader component for email templates\n * \n * This component extends the base Container to support\n * referencing child blocks by ID rather than direct embedding,\n * allowing for a more flexible document structure.\n */\nexport default function ContainerReader({ style, props }: ContainerProps) {\n const childrenIds = props?.childrenIds ?? [];\n return (\n <BaseContainer style={style}>\n {childrenIds.map((childId) => (\n <ReaderBlock key={childId} id={childId} />\n ))}\n </BaseContainer>\n );\n} ","import { z } from 'zod';\n\n/**\n * EmailLayout schema\n * \n * The EmailLayout is the top-level container for email templates.\n * It provides styling options for the entire email and contains\n * all other blocks.\n */\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nexport const EmailLayoutPropsSchema = z.object({\n backdropColor: COLOR_SCHEMA,\n borderColor: COLOR_SCHEMA,\n borderRadius: z.number().optional().nullable(),\n canvasColor: COLOR_SCHEMA,\n textColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n childrenIds: z.array(z.string()).optional().nullable(),\n});\n\nexport type EmailLayoutProps = z.infer<typeof EmailLayoutPropsSchema>; ","import React from 'react';\n\nimport { ReaderBlock } from '@email-builder/reader/core';\n\nimport { EmailLayoutProps } from './email-layout-props-schema';\n\n/**\n * EmailLayout Reader component\n * \n * This is the top-level component for email templates.\n * It provides the overall structure and styling for emails,\n * including responsiveness and proper email client support.\n */\n\nfunction getFontFamily(fontFamily: EmailLayoutProps['fontFamily']) {\n const f = fontFamily ?? 'MODERN_SANS';\n switch (f) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n}\n\nfunction getBorder({ borderColor }: EmailLayoutProps) {\n if (!borderColor) {\n return undefined;\n }\n return `1px solid ${borderColor}`;\n}\n\nexport default function EmailLayoutReader(props: EmailLayoutProps) {\n const childrenIds = props.childrenIds ?? [];\n return (\n <div\n style={{\n backgroundColor: props.backdropColor ?? '#F5F5F5',\n color: props.textColor ?? '#262626',\n fontFamily: getFontFamily(props.fontFamily),\n fontSize: '16px',\n fontWeight: '400',\n letterSpacing: '0.15008px',\n lineHeight: '1.5',\n margin: '0',\n padding: '32px 0',\n minHeight: '100%',\n width: '100%',\n }}\n >\n <table\n align=\"center\"\n width=\"100%\"\n style={{\n margin: '0 auto',\n maxWidth: '600px',\n backgroundColor: props.canvasColor ?? '#FFFFFF',\n borderRadius: props.borderRadius ?? undefined,\n border: getBorder(props),\n }}\n role=\"presentation\"\n cellSpacing=\"0\"\n cellPadding=\"0\"\n border={0}\n >\n <tbody>\n <tr style={{ width: '100%' }}>\n <td>\n {childrenIds.map((childId) => (\n <ReaderBlock key={childId} id={childId} />\n ))}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n} ","import React, { createContext, useContext } from 'react';\nimport { z } from 'zod';\n\n// Import directly from our local blocks\nimport { \n Avatar, AvatarPropsSchema,\n Button, ButtonPropsSchema,\n Divider, DividerPropsSchema,\n Heading, HeadingPropsSchema,\n Html, HtmlPropsSchema,\n Image, ImagePropsSchema,\n Signature, SignaturePropsSchema,\n Spacer, SpacerPropsSchema,\n Text, TextPropsSchema\n} from '../../blocks';\n\n// Import from our local core\nimport {\n buildBlockComponent,\n buildBlockConfigurationDictionary,\n buildBlockConfigurationSchema,\n} from '../../core';\n\n// Import the local block components using the new index files\nimport {\n ColumnsContainerPropsSchema,\n ColumnsContainerReader,\n ContainerPropsSchema,\n ContainerReader,\n EmailLayoutPropsSchema,\n EmailLayoutReader\n} from '../blocks';\n\n/**\n * Reader component - responsible for rendering an email document\n * \n * This component provides a context for rendering a document composed of various blocks.\n * It uses a dictionary of block components and their schemas to validate and render\n * the document structure.\n */\n\n// Define the context and reader document type first to avoid circular references\nexport type TReaderDocument = Record<string, any>;\nconst ReaderContext = createContext<TReaderDocument>({});\n\nfunction useReaderDocument() {\n return useContext(ReaderContext);\n}\n\n// Create a temporary ReaderBlock component to define in the dictionary\nexport type TReaderBlockProps = { id: string };\nexport function ReaderBlock({ id }: TReaderBlockProps) {\n const document = useReaderDocument();\n return document[id] ? <BaseReaderBlock {...document[id]} /> : null;\n}\n\n// Now define the dictionary with all block components\nconst READER_DICTIONARY = buildBlockConfigurationDictionary({\n ColumnsContainer: {\n schema: ColumnsContainerPropsSchema,\n Component: ColumnsContainerReader,\n },\n Container: {\n schema: ContainerPropsSchema,\n Component: ContainerReader,\n },\n EmailLayout: {\n schema: EmailLayoutPropsSchema,\n Component: EmailLayoutReader,\n },\n //\n Avatar: {\n schema: AvatarPropsSchema,\n Component: Avatar,\n },\n Button: {\n schema: ButtonPropsSchema,\n Component: Button,\n },\n Divider: {\n schema: DividerPropsSchema,\n Component: Divider,\n },\n Heading: {\n schema: HeadingPropsSchema,\n Component: Heading,\n },\n Html: {\n schema: HtmlPropsSchema,\n Component: Html,\n },\n Image: {\n schema: ImagePropsSchema,\n Component: Image,\n },\n Spacer: {\n schema: SpacerPropsSchema,\n Component: Spacer,\n },\n Text: {\n schema: TextPropsSchema,\n Component: Text,\n },\n Signature: {\n schema: SignaturePropsSchema,\n Component: Signature,\n },\n});\n\nexport const ReaderBlockSchema = buildBlockConfigurationSchema(READER_DICTIONARY);\nexport type TReaderBlock = z.infer<typeof ReaderBlockSchema>;\n\nexport const ReaderDocumentSchema = z.record(z.string(), ReaderBlockSchema);\n\n// Now define the BaseReaderBlock using the dictionary\nconst BaseReaderBlock = buildBlockComponent(READER_DICTIONARY);\n\nexport type TReaderProps = {\n document: Record<string, z.infer<typeof ReaderBlockSchema>>;\n rootBlockId: string;\n};\nexport default function Reader({ document, rootBlockId }: TReaderProps) {\n return (\n <ReaderContext.Provider value={document}>\n <ReaderBlock id={rootBlockId} />\n </ReaderContext.Provider>\n );\n} ","import React from 'react';\nimport { renderToStaticMarkup as baseRenderToStaticMarkup } from 'react-dom/server';\n\nimport { Reader, type TReaderDocument } from '../reader';\n\n/**\n * Renders an email document to static HTML markup\n * \n * This function takes a document structure and renders it to static HTML\n * suitable for sending as an email. It adds the DOCTYPE and wraps everything\n * in basic HTML/body tags.\n * \n * @param document The email document structure to render\n * @param options Options including the rootBlockId to start rendering from\n * @returns A complete HTML string representation of the email\n */\ntype TOptions = {\n rootBlockId: string;\n};\n\nexport default function renderToStaticMarkup(document: TReaderDocument, { rootBlockId }: TOptions) {\n return (\n '<!DOCTYPE html>' +\n baseRenderToStaticMarkup(\n <html>\n <body>\n <Reader document={document} rootBlockId={rootBlockId} />\n </body>\n </html>\n )\n );\n} ","import { type TReaderDocument } from '../reader';\n\ntype TOptions = {\n rootBlockId: string;\n};\n\nexport default function renderToText(document: TReaderDocument, { rootBlockId }: TOptions): string {\n const lines: string[] = [];\n renderBlock(document, rootBlockId, lines);\n // Collapse 3+ consecutive blank lines into 2, then trim\n return lines.join('\\n').replace(/\\n{3,}/g, '\\n\\n').trim() + '\\n';\n}\n\nfunction renderBlock(document: TReaderDocument, blockId: string, lines: string[]): void {\n const block = document[blockId];\n if (!block) return;\n\n const { type, data } = block;\n\n switch (type) {\n case 'EmailLayout':\n renderChildren(document, data?.childrenIds, lines);\n break;\n\n case 'Container':\n renderChildren(document, data?.props?.childrenIds, lines);\n break;\n\n case 'ColumnsContainer':\n renderColumnsContainer(document, data, lines);\n break;\n\n case 'Text':\n renderText(data, lines);\n break;\n\n case 'Heading':\n renderHeading(data, lines);\n break;\n\n case 'Button':\n renderButton(data, lines);\n break;\n\n case 'Image':\n renderImage(data, lines);\n break;\n\n case 'Avatar':\n renderAvatar(data, lines);\n break;\n\n case 'Html':\n renderHtml(data, lines);\n break;\n\n case 'Divider':\n lines.push('');\n lines.push('---');\n lines.push('');\n break;\n\n case 'Spacer':\n lines.push('');\n break;\n }\n}\n\nfunction renderChildren(document: TReaderDocument, childrenIds: string[] | null | undefined, lines: string[]): void {\n if (!childrenIds) return;\n for (const childId of childrenIds) {\n renderBlock(document, childId, lines);\n }\n}\n\nfunction renderColumnsContainer(document: TReaderDocument, data: any, lines: string[]): void {\n const columns = data?.props?.columns;\n if (!columns) return;\n for (const col of columns) {\n if (col?.childrenIds?.length) {\n renderChildren(document, col.childrenIds, lines);\n }\n }\n}\n\nfunction renderText(data: any, lines: string[]): void {\n const text = data?.props?.text ?? '';\n if (!text) return;\n\n if (data?.props?.markdown) {\n // Strip HTML tags from rendered markdown - the source is markdown so just use it directly\n lines.push(text);\n } else {\n lines.push(text);\n }\n lines.push('');\n}\n\nfunction renderHeading(data: any, lines: string[]): void {\n const text = data?.props?.text ?? '';\n if (!text) return;\n\n const level = data?.props?.level ?? 'h2';\n const prefix = level === 'h1' ? '# ' : level === 'h2' ? '## ' : '### ';\n lines.push(prefix + text);\n lines.push('');\n}\n\nfunction renderButton(data: any, lines: string[]): void {\n const text = data?.props?.text ?? '';\n const url = data?.props?.url ?? '';\n\n if (text && url) {\n lines.push(`${text}: ${url}`);\n } else if (text) {\n lines.push(text);\n } else if (url) {\n lines.push(url);\n }\n lines.push('');\n}\n\nfunction renderImage(data: any, lines: string[]): void {\n const alt = data?.props?.alt ?? '';\n const url = data?.props?.url ?? '';\n const linkHref = data?.props?.linkHref ?? '';\n\n if (alt && linkHref) {\n lines.push(`[${alt}] ${linkHref}`);\n } else if (alt) {\n lines.push(`[${alt}]`);\n } else if (url) {\n lines.push(`[Image: ${url}]`);\n }\n lines.push('');\n}\n\nfunction renderAvatar(data: any, lines: string[]): void {\n const alt = data?.props?.alt ?? '';\n if (alt) {\n lines.push(`[${alt}]`);\n lines.push('');\n }\n}\n\nfunction renderHtml(data: any, lines: string[]): void {\n const contents = data?.props?.contents ?? '';\n if (!contents) return;\n\n // Strip HTML tags to get plain text\n const text = stripHtml(contents);\n if (text) {\n lines.push(text);\n lines.push('');\n }\n}\n\nfunction stripHtml(html: string): string {\n return html\n // Replace <br> and <br/> with newlines\n .replace(/<br\\s*\\/?>/gi, '\\n')\n // Replace block-level closing tags with newlines\n .replace(/<\\/(p|div|h[1-6]|li|tr|blockquote)>/gi, '\\n')\n // Replace <hr> with divider\n .replace(/<hr\\s*\\/?>/gi, '\\n---\\n')\n // Strip remaining tags\n .replace(/<[^>]+>/g, '')\n // Decode common HTML entities\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/ /g, ' ')\n // Clean up whitespace per line\n .split('\\n')\n .map(line => line.trim())\n .join('\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n","import { alpha, createTheme, darken, lighten } from '@mui/material/styles';\n\nconst BRAND_NAVY = '#212443';\nconst BRAND_BLUE = '#0079CC';\nconst BRAND_GREEN = '#1F8466';\nconst BRAND_RED = '#E81212';\nconst BRAND_YELLOW = '#F6DC9F';\nconst BRAND_PURPLE = '#6C0E7C';\nconst BRAND_BROWN = '#CC996C';\nconst STANDARD_FONT_FAMILY =\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"';\nconst MONOSPACE_FONT_FAMILY =\n 'ui-monospace, Menlo, Monaco, \"Cascadia Mono\", \"Segoe UI Mono\", \"Roboto Mono\", \"Oxygen Mono\", \"Ubuntu Monospace\", \"Source Code Pro\", \"Fira Mono\", \"Droid Sans Mono\", \"Courier New\", monospace';\n\nconst BASE_THEME = createTheme({\n palette: {\n background: {\n default: '#f2f5f7',\n },\n text: {\n primary: '#1F1F21',\n secondary: '#4F4F4F',\n },\n },\n typography: {\n fontFamily: STANDARD_FONT_FAMILY,\n },\n});\n\nconst THEME = createTheme(BASE_THEME, {\n palette: {\n brand: {\n navy: BRAND_NAVY,\n blue: BRAND_BLUE,\n red: BRAND_RED,\n green: BRAND_GREEN,\n yellow: BRAND_YELLOW,\n purple: BRAND_PURPLE,\n brown: BRAND_BROWN,\n },\n success: {\n main: BRAND_GREEN,\n light: lighten(BRAND_GREEN, 0.15),\n dark: darken(BRAND_GREEN, 0.15),\n },\n error: {\n main: BRAND_RED,\n light: lighten(BRAND_RED, 0.15),\n dark: darken(BRAND_RED, 0.15),\n },\n cadet: {\n 100: '#F9FAFB',\n 200: '#F2F5F7',\n 300: '#DCE4EA',\n 400: '#A8BBCA',\n 500: '#6A8BA4',\n },\n highlight: {\n 100: lighten(BRAND_YELLOW, 0.8),\n 200: lighten(BRAND_YELLOW, 0.6),\n 300: lighten(BRAND_YELLOW, 0.4),\n 400: lighten(BRAND_YELLOW, 0.2),\n 500: BRAND_YELLOW,\n },\n info: {\n main: BRAND_BLUE,\n },\n primary: {\n main: BRAND_BLUE,\n },\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: `\n address {\n font-style: normal;\n }\n fieldset {\n border: none;\n padding: 0;\n }\n pre {\n font-family: ${MONOSPACE_FONT_FAMILY}\n white-space: pre-wrap;\n font-size: 12px;\n }\n `,\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n fontSize: BASE_THEME.typography.pxToRem(14),\n },\n action: {\n paddingTop: 0,\n marginRight: 0,\n },\n filledSuccess: {\n backgroundColor: BRAND_GREEN,\n },\n },\n },\n MuiStepLabel: {\n styleOverrides: {\n label: {\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n },\n },\n MuiDialog: {\n defaultProps: {\n fullWidth: true,\n },\n },\n MuiDialogContent: {\n styleOverrides: {\n root: {\n paddingTop: BASE_THEME.spacing(1),\n paddingBottom: BASE_THEME.spacing(2),\n },\n },\n },\n MuiDialogTitle: {\n defaultProps: {\n variant: 'h4',\n },\n styleOverrides: {\n root: {\n paddingTop: BASE_THEME.spacing(3),\n paddingBottom: BASE_THEME.spacing(1),\n },\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: {\n borderTop: '1px solid',\n borderTopColor: BASE_THEME.palette.divider,\n marginTop: BASE_THEME.spacing(2.5),\n padding: `${BASE_THEME.spacing(1.5)} ${BASE_THEME.spacing(3)}`,\n },\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n ...BASE_THEME.typography.body2,\n borderColor: BASE_THEME.palette.grey[200],\n },\n head: {\n ...BASE_THEME.typography.overline,\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n letterSpacing: '0.075em',\n color: BASE_THEME.palette.text.secondary,\n },\n },\n },\n MuiTableRow: {\n styleOverrides: {\n root: {\n '&:last-child td': {\n borderBottom: 0,\n },\n },\n },\n },\n MuiAvatar: {\n styleOverrides: {\n root: {\n textTransform: 'uppercase',\n fontSize: BASE_THEME.typography.pxToRem(14),\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n '&.MuiChip-filledError, &.MuiChip-filledSuccess': {\n fill: BASE_THEME.palette.primary.contrastText,\n },\n },\n sizeSmall: {\n borderRadius: BASE_THEME.spacing(0.5),\n fontSize: 12,\n },\n iconSmall: {\n fontSize: 14,\n marginLeft: BASE_THEME.spacing(1),\n },\n colorSecondary: {\n borderColor: BASE_THEME.palette.grey[400],\n color: BASE_THEME.palette.text.secondary,\n },\n label: {\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n },\n },\n MuiDrawer: {\n defaultProps: {\n PaperProps: {\n elevation: 2,\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n fontSize: BASE_THEME.typography.pxToRem(12),\n backgroundColor: alpha(BASE_THEME.palette.text.primary, 0.9),\n },\n },\n },\n MuiSlider: {\n styleOverrides: {\n root: {\n height: 1,\n },\n track: {\n height: 1,\n border: 'none',\n },\n rail: {\n height: 1,\n backgroundColor: BASE_THEME.palette.grey[500],\n },\n mark: {\n backgroundColor: BASE_THEME.palette.grey[500],\n },\n markActive: {\n height: 0,\n },\n thumb: {\n height: 16,\n width: 16,\n cursor: 'col-resize',\n '&:hover, &.Mui-active, &.Mui-focusVisible': {\n boxShadow: `0 0 0 4px ${alpha(BRAND_BLUE, 0.2)}`,\n },\n '&:before': {\n display: 'none',\n },\n },\n },\n },\n MuiPaper: {\n defaultProps: {\n elevation: 2,\n square: true,\n },\n },\n MuiButtonBase: {\n defaultProps: {\n disableTouchRipple: true,\n focusRipple: true,\n },\n styleOverrides: {\n root: {\n '&.MuiButton-containedSecondary.Mui-disabled': {\n backgroundColor: BASE_THEME.palette.grey[100],\n },\n },\n },\n },\n MuiButtonGroup: {\n defaultProps: {\n disableElevation: true,\n },\n },\n MuiIconButton: {\n styleOverrides: {\n edgeStart: {\n marginLeft: BASE_THEME.spacing(-1),\n },\n colorSecondary: {\n color: BASE_THEME.palette.grey[500],\n },\n },\n },\n MuiButton: {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n textPrimary: {\n color: BASE_THEME.palette.text.primary,\n },\n textSecondary: {\n color: BASE_THEME.palette.text.secondary,\n },\n outlinedPrimary: {\n borderColor: BASE_THEME.palette.grey[300],\n color: BASE_THEME.palette.text.primary,\n '&:hover, &:active, &:focus': {\n borderColor: BASE_THEME.palette.grey[500],\n color: BASE_THEME.palette.text.primary,\n },\n },\n containedSecondary: {\n backgroundColor: BASE_THEME.palette.common.white,\n border: `1px solid ${BASE_THEME.palette.grey[300]}`,\n color: BASE_THEME.palette.text.primary,\n '&:hover, &:active, &:focus': {\n backgroundColor: BASE_THEME.palette.common.white,\n borderColor: BASE_THEME.palette.grey[500],\n color: BASE_THEME.palette.text.primary,\n },\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n paddingLeft: BASE_THEME.spacing(1.5),\n paddingRight: BASE_THEME.spacing(1.5),\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n '&:not(.Mui-disabled, .Mui-error):before': {\n borderBottom: `1px solid ${BASE_THEME.palette.grey[400]}`,\n },\n '&:hover:not(.Mui-disabled, .Mui-error):before': {\n borderBottom: `1px solid ${BASE_THEME.palette.grey[500]} !important`,\n },\n '&:after': {\n borderBottom: `1px solid ${BASE_THEME.palette.text.primary} !important`,\n },\n '&.MuiOutlinedInput-root:not(.Mui-error)': {\n '& fieldset': {\n borderColor: BASE_THEME.palette.grey[300],\n transition: 'border-color 0.2s',\n },\n },\n '&.MuiOutlinedInput-root:not(.Mui-disabled, .Mui-error)': {\n '&:hover fieldset': {\n borderColor: BASE_THEME.palette.grey[400],\n },\n '&.Mui-focused fieldset': {\n borderColor: BASE_THEME.palette.text.secondary,\n borderWidth: 1,\n },\n },\n },\n input: {\n fontSize: BASE_THEME.typography.pxToRem(14),\n '&.Mui-disabled': {\n WebkitTextFillColor: 'inherit',\n color: BASE_THEME.palette.text.secondary,\n },\n },\n inputSizeSmall: {},\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n notchedOutline: {\n '& legend': {\n fontSize: '0.85em',\n maxWidth: '100%',\n },\n },\n },\n },\n MuiInputAdornment: {\n styleOverrides: {\n root: {\n '& .MuiTypography-root': {\n fontSize: BASE_THEME.typography.pxToRem(14),\n color: BASE_THEME.palette.text.secondary,\n },\n },\n },\n },\n MuiInputLabel: {\n defaultProps: {\n shrink: true,\n },\n styleOverrides: {\n shrink: {\n transform: 'scale(0.85)',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n '&.Mui-focused': {\n color: BASE_THEME.palette.text.primary,\n },\n '&.MuiInputLabel-standard': {\n transform: 'translate(0, -4px) scale(0.85)',\n color: '#4F4F4F',\n },\n '&.MuiInputLabel-outlined': {\n transform: 'translate(15px, -8px) scale(0.85)',\n },\n },\n },\n },\n MuiTabs: {\n defaultProps: {\n variant: 'scrollable',\n },\n styleOverrides: {\n indicator: {\n height: 1,\n backgroundColor: BASE_THEME.palette.text.primary,\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n textTransform: 'none',\n minWidth: BASE_THEME.spacing(2),\n paddingLeft: BASE_THEME.spacing(1.5),\n paddingRight: BASE_THEME.spacing(1.5),\n fontSize: BASE_THEME.typography.pxToRem(14),\n fontFamily: BASE_THEME.typography.fontFamily,\n lineHeight: 1.5,\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n transition: 'color 0.2s',\n '&.Mui-selected': {\n color: BASE_THEME.palette.text.primary,\n },\n '&:hover': {\n color: BASE_THEME.palette.text.primary,\n },\n },\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n borderRadius: 0,\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n title: {\n fontSize: BASE_THEME.typography.pxToRem(18),\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n },\n },\n },\n typography: {\n fontFamily: BASE_THEME.typography.fontFamily,\n h1: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(40),\n lineHeight: 1.2,\n letterSpacing: '-0.02em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h2: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(32),\n lineHeight: 1.2,\n letterSpacing: '-0.02em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h3: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(24),\n lineHeight: 1.5,\n letterSpacing: '-0.01em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h4: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(20),\n lineHeight: 1.5,\n letterSpacing: '-0.01em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h5: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(18),\n lineHeight: 1.5,\n letterSpacing: '-0.01em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h6: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(16),\n lineHeight: 1.5,\n letterSpacing: '-0.005em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n body1: {\n fontSize: BASE_THEME.typography.pxToRem(14),\n },\n body2: {\n fontSize: BASE_THEME.typography.pxToRem(12),\n },\n overline: {\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n letterSpacing: '0.05em',\n },\n button: {\n textTransform: 'none',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n lineHeight: 1.5,\n },\n caption: {\n letterSpacing: 0,\n lineHeight: 1.5,\n },\n },\n shadows: [\n 'none',\n '0px 4px 15px rgba(33, 36, 67, 0.04), 0px 0px 2px rgba(33, 36, 67, 0.04), 0px 0px 1px rgba(33, 36, 67, 0.04)',\n '0px 10px 20px rgba(33, 36, 67, 0.04), 0px 2px 6px rgba(33, 36, 67, 0.04), 0px 0px 1px rgba(33, 36, 67, 0.04)',\n '0px 16px 24px rgba(33, 36, 67, 0.05), 0px 2px 6px rgba(33, 36, 67, 0.05), 0px 0px 1px rgba(33, 36, 67, 0.05)',\n '0px 24px 32px rgba(33, 36, 67, 0.06), 0px 16px 24px rgba(33, 36, 67, 0.06), 0px 4px 8px rgba(33, 36, 67, 0.06)',\n ...Array(20).fill('none'),\n ],\n});\n\nexport default THEME;\n","import { create } from 'zustand';\nimport { TEditorConfiguration } from './core';\n\ntype TValue = {\n document: TEditorConfiguration;\n selectedBlockId: string | null;\n selectedSidebarTab: 'block-configuration' | 'styles' | 'template-settings';\n selectedMainTab: 'editor' | 'preview' | 'json' | 'html' | 'text';\n selectedScreenSize: 'desktop' | 'mobile';\n inspectorDrawerOpen: boolean;\n samplesDrawerOpen: boolean;\n persistenceEnabled: boolean;\n};\n\n// Initialize with an empty document\nconst EMPTY_DOCUMENT: TEditorConfiguration = {\n root: {\n type: 'EmailLayout',\n data: {\n backdropColor: '#F5F5F5',\n canvasColor: '#FFFFFF',\n textColor: '#262626',\n fontFamily: 'MODERN_SANS',\n childrenIds: [],\n },\n },\n};\n\nconst editorStateStore = create<TValue>(() => ({\n document: EMPTY_DOCUMENT,\n selectedBlockId: null,\n selectedSidebarTab: 'styles',\n selectedMainTab: 'editor',\n selectedScreenSize: 'desktop',\n inspectorDrawerOpen: true,\n samplesDrawerOpen: true,\n persistenceEnabled: false,\n}));\n\nexport function useDocument() {\n return editorStateStore((s) => s.document);\n}\n\nexport function useSelectedBlockId() {\n return editorStateStore((s) => s.selectedBlockId);\n}\n\nexport function useSelectedScreenSize() {\n return editorStateStore((s) => s.selectedScreenSize);\n}\n\nexport function useSelectedMainTab() {\n return editorStateStore((s) => s.selectedMainTab);\n}\n\nexport function setSelectedMainTab(selectedMainTab: TValue['selectedMainTab']) {\n return editorStateStore.setState({ selectedMainTab });\n}\n\nexport function useSelectedSidebarTab() {\n return editorStateStore((s) => s.selectedSidebarTab);\n}\n\nexport function useInspectorDrawerOpen() {\n return editorStateStore((s) => s.inspectorDrawerOpen);\n}\n\nexport function useSamplesDrawerOpen() {\n return editorStateStore((s) => s.samplesDrawerOpen);\n}\n\nexport function usePersistenceEnabled() {\n return editorStateStore((s) => s.persistenceEnabled);\n}\n\nexport function setSelectedBlockId(selectedBlockId: TValue['selectedBlockId']) {\n const selectedSidebarTab = selectedBlockId === null ? 'styles' : 'block-configuration';\n const options: Partial<TValue> = {};\n if (selectedBlockId !== null) {\n options.inspectorDrawerOpen = true;\n }\n return editorStateStore.setState({\n selectedBlockId,\n selectedSidebarTab,\n ...options,\n });\n}\n\nexport function setSidebarTab(selectedSidebarTab: TValue['selectedSidebarTab']) {\n return editorStateStore.setState({ selectedSidebarTab });\n}\n\nexport function resetDocument(document: TValue['document']) {\n return editorStateStore.setState({\n document,\n selectedSidebarTab: 'styles',\n selectedBlockId: null,\n });\n}\n\nexport function getDocument() {\n return editorStateStore.getState().document;\n}\n\nexport function setDocument(document: TValue['document']) {\n const originalDocument = editorStateStore.getState().document;\n \n editorStateStore.setState({\n document: {\n ...originalDocument,\n ...document,\n },\n });\n}\n\nexport function toggleInspectorDrawerOpen() {\n const inspectorDrawerOpen = !editorStateStore.getState().inspectorDrawerOpen;\n return editorStateStore.setState({ inspectorDrawerOpen });\n}\n\nexport function toggleSamplesDrawerOpen() {\n const samplesDrawerOpen = !editorStateStore.getState().samplesDrawerOpen;\n return editorStateStore.setState({ samplesDrawerOpen });\n}\n\nexport function setSelectedScreenSize(selectedScreenSize: TValue['selectedScreenSize']) {\n return editorStateStore.setState({ selectedScreenSize });\n}\n\nexport function setPersistenceEnabled(persistenceEnabled: boolean) {\n return editorStateStore.setState({ persistenceEnabled });\n}\n","import React, { createContext, useContext, useState, useCallback, useMemo, useRef } from 'react';\nimport { TEditorConfiguration } from '@editor/core';\nimport { getDocument } from '@editor/editor-context';\n\n// Type for stored template\nexport interface StoredTemplate {\n id: string;\n name: string;\n content: TEditorConfiguration;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface EmailEditorContextType {\n currentTemplateId: string | null;\n currentTemplateName: string | null;\n saveTemplate: () => TEditorConfiguration;\n loadTemplate: (template: TEditorConfiguration, templateId?: string, templateName?: string) => void;\n registerSaveListener: (callback: (template: TEditorConfiguration) => void) => () => void;\n setCurrentTemplate: (templateId: string | null, templateName: string | null) => void;\n}\n\nconst EmailEditorContext = createContext<EmailEditorContextType | null>(null);\n\nexport interface EmailEditorProviderProps {\n children: React.ReactNode;\n initialTemplate?: TEditorConfiguration;\n initialTemplateId?: string;\n initialTemplateName?: string;\n onSave?: (template: TEditorConfiguration) => void;\n onChange?: (template: TEditorConfiguration) => void;\n}\n\nexport const EmailEditorProvider: React.FC<EmailEditorProviderProps> = ({\n children,\n initialTemplateId = null,\n initialTemplateName = null,\n onSave,\n}) => {\n const [currentTemplateId, setCurrentTemplateId] = useState<string | null>(initialTemplateId);\n const [currentTemplateName, setCurrentTemplateName] = useState<string | null>(initialTemplateName);\n const saveListenersRef = useRef<((template: TEditorConfiguration) => void)[]>([]);\n\n // Use ref for onSave callback to keep context value stable\n const onSaveRef = useRef(onSave);\n onSaveRef.current = onSave;\n\n const saveTemplate = useCallback(() => {\n const currentDoc = getDocument();\n saveListenersRef.current.forEach(listener => listener(currentDoc));\n if (onSaveRef.current) {\n onSaveRef.current(currentDoc);\n }\n return currentDoc;\n }, []);\n\n const loadTemplate = useCallback((newTemplate: TEditorConfiguration, templateId?: string, templateName?: string) => {\n if (templateId !== undefined) {\n setCurrentTemplateId(templateId);\n }\n\n if (templateName !== undefined) {\n setCurrentTemplateName(templateName);\n }\n }, []);\n\n const setCurrentTemplate = useCallback((templateId: string | null, templateName: string | null) => {\n setCurrentTemplateId(templateId);\n setCurrentTemplateName(templateName);\n }, []);\n\n const registerSaveListener = useCallback((callback: (template: TEditorConfiguration) => void) => {\n saveListenersRef.current = [...saveListenersRef.current, callback];\n return () => {\n saveListenersRef.current = saveListenersRef.current.filter(listener => listener !== callback);\n };\n }, []);\n\n const value = useMemo(() => ({\n currentTemplateId,\n currentTemplateName,\n saveTemplate,\n loadTemplate,\n registerSaveListener,\n setCurrentTemplate\n }), [currentTemplateId, currentTemplateName, saveTemplate, loadTemplate, registerSaveListener, setCurrentTemplate]);\n\n return (\n <EmailEditorContext.Provider value={value}>\n {children}\n </EmailEditorContext.Provider>\n );\n};\n\nexport const useEmailEditor = () => {\n const context = useContext(EmailEditorContext);\n if (!context) {\n throw new Error('useEmailEditor must be used within an EmailEditorProvider');\n }\n return context;\n};\n","import React from 'react';\n\nimport { Box, Stack, Typography } from '@mui/material';\n\ntype SidebarPanelProps = {\n title: string;\n children: React.ReactNode;\n};\nexport default function BaseSidebarPanel({ title, children }: SidebarPanelProps) {\n return (\n <Box p={2}>\n <Typography variant=\"overline\" color=\"text.secondary\" sx={{ display: 'block', mb: 2 }}>\n {title}\n </Typography>\n <Stack spacing={5} mb={3}>\n {children}\n </Stack>\n </Box>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { InputLabel, Stack, ToggleButtonGroup } from '@mui/material';\n\ntype Props = {\n label: string | JSX.Element;\n children: JSX.Element | JSX.Element[];\n defaultValue: string;\n onChange: (v: string) => void;\n};\nexport default function RadioGroupInput({ label, children, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <Stack alignItems=\"flex-start\">\n <InputLabel shrink>{label}</InputLabel>\n <ToggleButtonGroup\n exclusive\n fullWidth\n value={value}\n size=\"small\"\n onChange={(_, v: unknown) => {\n if (typeof v !== 'string') {\n throw new Error('RadioGroupInput can only receive string values');\n }\n setValue(v);\n onChange(v);\n }}\n >\n {children}\n </ToggleButtonGroup>\n </Stack>\n );\n}\n","import React from 'react';\n\nimport { Box, Slider, Stack, Typography } from '@mui/material';\n\ntype SliderInputProps = {\n iconLabel: JSX.Element;\n\n step?: number;\n marks?: boolean;\n units: string;\n min?: number;\n max?: number;\n\n value: number;\n setValue: (v: number) => void;\n};\n\nexport default function RawSliderInput({ iconLabel, value, setValue, units, ...props }: SliderInputProps) {\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={2} justifyContent=\"space-between\" width=\"100%\">\n <Box sx={{ minWidth: 24, lineHeight: 1, flexShrink: 0 }}>{iconLabel}</Box>\n <Slider\n {...props}\n value={value}\n onChange={(_, value: unknown) => {\n if (typeof value !== 'number') {\n throw new Error('RawSliderInput values can only receive numeric values');\n }\n setValue(value);\n }}\n />\n <Box sx={{ minWidth: 32, textAlign: 'right', flexShrink: 0 }}>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ lineHeight: 1 }}>\n {value}\n {units}\n </Typography>\n </Box>\n </Stack>\n );\n}\n","import React, { useState } from 'react';\n\nimport { InputLabel, Stack } from '@mui/material';\n\nimport RawSliderInput from './raw/raw-slider-input';\n\ntype SliderInputProps = {\n label: string;\n iconLabel: JSX.Element;\n\n step?: number;\n marks?: boolean;\n units: string;\n min?: number;\n max?: number;\n\n defaultValue: number;\n onChange: (v: number) => void;\n};\n\nexport default function SliderInput({ label, defaultValue, onChange, ...props }: SliderInputProps) {\n const [value, setValue] = useState(defaultValue);\n return (\n <Stack spacing={1} alignItems=\"flex-start\">\n <InputLabel shrink>{label}</InputLabel>\n <RawSliderInput\n value={value}\n setValue={(value: number) => {\n setValue(value);\n onChange(value);\n }}\n {...props}\n />\n </Stack>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { InputProps, TextField } from '@mui/material';\n\ntype Props = {\n label: string;\n rows?: number;\n placeholder?: string;\n helperText?: string | JSX.Element;\n InputProps?: InputProps;\n defaultValue: string;\n onChange: (v: string) => void;\n};\nexport default function TextInput({ helperText, label, placeholder, rows, InputProps, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n const isMultiline = typeof rows === 'number' && rows > 1;\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <TextField\n fullWidth\n multiline={isMultiline}\n minRows={rows}\n variant={isMultiline ? 'outlined' : 'standard'}\n label={label}\n placeholder={placeholder}\n helperText={helperText}\n InputProps={InputProps}\n value={value}\n onChange={(ev) => {\n const v = ev.target.value;\n setValue(v);\n onChange(v);\n }}\n />\n );\n}\n","import React from 'react';\n\nimport { Box, Button, SxProps } from '@mui/material';\n\ntype Props = {\n paletteColors: string[];\n value: string;\n onChange: (value: string) => void;\n};\n\nconst TILE_BUTTON: SxProps = {\n width: 24,\n height: 24,\n};\nexport default function Swatch({ paletteColors, value, onChange }: Props) {\n const renderButton = (colorValue: string) => {\n return (\n <Button\n key={colorValue}\n onClick={() => onChange(colorValue)}\n sx={{\n ...TILE_BUTTON,\n backgroundColor: colorValue,\n border: '1px solid',\n borderColor: value === colorValue ? 'black' : 'grey.200',\n minWidth: 24,\n display: 'inline-flex',\n '&:hover': {\n backgroundColor: colorValue,\n borderColor: 'grey.500',\n },\n }}\n />\n );\n };\n return (\n <Box width=\"100%\" sx={{ display: 'grid', gap: 1, gridTemplateColumns: '1fr 1fr 1fr 1fr 1fr 1fr' }}>\n {paletteColors.map((c) => renderButton(c))}\n </Box>\n );\n}\n","import React from 'react';\nimport { HexColorInput, HexColorPicker } from 'react-colorful';\n\nimport { Box, Stack, SxProps } from '@mui/material';\n\nimport Swatch from './swatch';\n\nconst DEFAULT_PRESET_COLORS = [\n '#E11D48',\n '#DB2777',\n '#C026D3',\n '#9333EA',\n '#7C3AED',\n '#4F46E5',\n '#2563EB',\n '#0284C7',\n '#0891B2',\n '#0D9488',\n '#059669',\n '#16A34A',\n '#65A30D',\n '#CA8A04',\n '#D97706',\n '#EA580C',\n '#DC2626',\n '#FFFFFF',\n '#FAFAFA',\n '#F5F5F5',\n '#E5E5E5',\n '#D4D4D4',\n '#A3A3A3',\n '#737373',\n '#525252',\n '#404040',\n '#262626',\n '#171717',\n '#0A0A0A',\n '#000000',\n];\n\nconst SX: SxProps = {\n p: 1,\n '.react-colorful__pointer ': {\n width: 16,\n height: 16,\n },\n '.react-colorful__saturation': {\n mb: 1,\n borderRadius: '4px',\n },\n '.react-colorful__last-control': {\n borderRadius: '4px',\n },\n '.react-colorful__hue-pointer': {\n width: '4px',\n borderRadius: '4px',\n height: 24,\n cursor: 'col-resize',\n },\n '.react-colorful__saturation-pointer': {\n cursor: 'all-scroll',\n },\n input: {\n padding: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n borderRadius: '4px',\n width: '100%',\n },\n};\n\ntype Props = {\n value: string;\n onChange: (v: string) => void;\n};\nexport default function Picker({ value, onChange }: Props) {\n return (\n <Stack spacing={1} sx={SX}>\n <HexColorPicker color={value} onChange={onChange} />\n <Swatch paletteColors={DEFAULT_PRESET_COLORS} value={value} onChange={onChange} />\n <Box pt={1}>\n <HexColorInput prefixed color={value} onChange={onChange} />\n </Box>\n </Stack>\n );\n}\n","import React, { useState } from 'react';\n\nimport { AddOutlined, CloseOutlined } from '@mui/icons-material';\nimport { ButtonBase, InputLabel, Menu, Stack } from '@mui/material';\n\nimport Picker from './picker';\n\nconst BUTTON_SX = {\n border: '1px solid',\n borderColor: 'cadet.400',\n width: 32,\n height: 32,\n borderRadius: '4px',\n bgcolor: '#FFFFFF',\n};\n\ntype Props =\n | {\n nullable: true;\n label: string;\n onChange: (value: string | null) => void;\n defaultValue: string | null;\n }\n | {\n nullable: false;\n label: string;\n onChange: (value: string) => void;\n defaultValue: string;\n };\nexport default function ColorInput({ label, defaultValue, onChange, nullable }: Props) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [value, setValue] = useState(defaultValue);\n const handleClickOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const renderResetButton = () => {\n if (!nullable) {\n return null;\n }\n if (typeof value !== 'string' || value.trim().length === 0) {\n return null;\n }\n return (\n <ButtonBase\n onClick={() => {\n setValue(null);\n onChange(null);\n }}\n >\n <CloseOutlined fontSize=\"small\" sx={{ color: 'grey.600' }} />\n </ButtonBase>\n );\n };\n\n const renderOpenButton = () => {\n if (value) {\n return <ButtonBase onClick={handleClickOpen} sx={{ ...BUTTON_SX, bgcolor: value }} />;\n }\n return (\n <ButtonBase onClick={handleClickOpen} sx={{ ...BUTTON_SX }}>\n <AddOutlined fontSize=\"small\" />\n </ButtonBase>\n );\n };\n\n return (\n <Stack alignItems=\"flex-start\">\n <InputLabel sx={{ mb: 0.5 }}>{label}</InputLabel>\n <Stack direction=\"row\" spacing={1}>\n {renderOpenButton()}\n {renderResetButton()}\n </Stack>\n <Menu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n sx: { height: 'auto', padding: 0 },\n }}\n >\n <Picker\n value={value || ''}\n onChange={(v) => {\n setValue(v);\n onChange(v);\n }}\n />\n </Menu>\n </Stack>\n );\n}\n","import React from 'react';\n\nimport BaseColorInput from './base-color-input';\n\ntype Props = {\n label: string;\n onChange: (value: string) => void;\n defaultValue: string;\n};\nexport default function ColorInput(props: Props) {\n return <BaseColorInput {...props} nullable={false} />;\n}\n\ntype NullableProps = {\n label: string;\n onChange: (value: null | string) => void;\n defaultValue: null | string;\n};\nexport function NullableColorInput(props: NullableProps) {\n return <BaseColorInput {...props} nullable />;\n}\n","export const FONT_FAMILIES = [\n {\n key: 'MODERN_SANS',\n label: 'Modern sans',\n value: '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif',\n },\n {\n key: 'BOOK_SANS',\n label: 'Book sans',\n value: 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif',\n },\n {\n key: 'ORGANIC_SANS',\n label: 'Organic sans',\n value: 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif',\n },\n {\n key: 'GEOMETRIC_SANS',\n label: 'Geometric sans',\n value: 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif',\n },\n {\n key: 'HEAVY_SANS',\n label: 'Heavy sans',\n value:\n 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif',\n },\n {\n key: 'ROUNDED_SANS',\n label: 'Rounded sans',\n value:\n 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif',\n },\n {\n key: 'MODERN_SERIF',\n label: 'Modern serif',\n value: 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif',\n },\n {\n key: 'BOOK_SERIF',\n label: 'Book serif',\n value: '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif',\n },\n {\n key: 'MONOSPACE',\n label: 'Monospace',\n value: '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace',\n },\n];\n\nexport const FONT_FAMILY_NAMES = [\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n] as const;\n","import React, { useState, useEffect } from 'react';\n\nimport { MenuItem, TextField } from '@mui/material';\n\nimport { FONT_FAMILIES } from '@editor/blocks/helpers/font-family';\n\nconst OPTIONS = FONT_FAMILIES.map((option) => (\n <MenuItem key={option.key} value={option.key} sx={{ fontFamily: option.value }}>\n {option.label}\n </MenuItem>\n));\n\ntype NullableProps = {\n label: string;\n onChange: (value: null | string) => void;\n defaultValue: null | string;\n};\nexport function NullableFontFamily({ label, onChange, defaultValue }: NullableProps) {\n const [value, setValue] = useState(defaultValue ?? 'inherit');\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue ?? 'inherit');\n }, [defaultValue]);\n \n return (\n <TextField\n select\n variant=\"standard\"\n label={label}\n value={value}\n onChange={(ev) => {\n const v = ev.target.value;\n setValue(v);\n onChange(v === null ? null : v);\n }}\n >\n <MenuItem value=\"inherit\">Match email settings</MenuItem>\n {OPTIONS}\n </TextField>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { TextFieldsOutlined } from '@mui/icons-material';\nimport { InputLabel, Stack } from '@mui/material';\n\nimport RawSliderInput from './raw/raw-slider-input';\n\ntype Props = {\n label: string;\n defaultValue: number;\n onChange: (v: number) => void;\n};\nexport default function FontSizeInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n const handleChange = (value: number) => {\n setValue(value);\n onChange(value);\n };\n return (\n <Stack spacing={1} alignItems=\"flex-start\">\n <InputLabel shrink>{label}</InputLabel>\n <RawSliderInput\n iconLabel={<TextFieldsOutlined sx={{ fontSize: 16 }} />}\n value={value}\n setValue={handleChange}\n units=\"px\"\n step={1}\n min={10}\n max={48}\n />\n </Stack>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { ToggleButton } from '@mui/material';\n\nimport RadioGroupInput from './radio-group-input';\n\ntype Props = {\n label: string;\n defaultValue: string;\n onChange: (value: string) => void;\n};\nexport default function FontWeightInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <RadioGroupInput\n label={label}\n defaultValue={value}\n onChange={(fontWeight) => {\n setValue(fontWeight);\n onChange(fontWeight);\n }}\n >\n <ToggleButton value=\"normal\">Regular</ToggleButton>\n <ToggleButton value=\"bold\">Bold</ToggleButton>\n </RadioGroupInput>\n );\n}\n","import React, { useState } from 'react';\n\nimport {\n AlignHorizontalLeftOutlined,\n AlignHorizontalRightOutlined,\n AlignVerticalBottomOutlined,\n AlignVerticalTopOutlined,\n} from '@mui/icons-material';\nimport { InputLabel, Stack } from '@mui/material';\n\nimport RawSliderInput from './raw/raw-slider-input';\n\ntype TPaddingValue = {\n top: number;\n bottom: number;\n right: number;\n left: number;\n};\ntype Props = {\n label: string;\n defaultValue: TPaddingValue | null;\n onChange: (value: TPaddingValue) => void;\n};\nexport default function PaddingInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(() => {\n if (defaultValue) {\n return defaultValue;\n }\n return {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n };\n });\n\n function handleChange(internalName: keyof TPaddingValue, nValue: number) {\n const v = {\n ...value,\n [internalName]: nValue,\n };\n setValue(v);\n onChange(v);\n }\n\n return (\n <Stack spacing={2} alignItems=\"flex-start\" pb={1}>\n <InputLabel shrink>{label}</InputLabel>\n\n <RawSliderInput\n iconLabel={<AlignVerticalTopOutlined sx={{ fontSize: 16 }} />}\n value={value.top}\n setValue={(num) => handleChange('top', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n\n <RawSliderInput\n iconLabel={<AlignVerticalBottomOutlined sx={{ fontSize: 16 }} />}\n value={value.bottom}\n setValue={(num) => handleChange('bottom', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n\n <RawSliderInput\n iconLabel={<AlignHorizontalLeftOutlined sx={{ fontSize: 16 }} />}\n value={value.left}\n setValue={(num) => handleChange('left', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n\n <RawSliderInput\n iconLabel={<AlignHorizontalRightOutlined sx={{ fontSize: 16 }} />}\n value={value.right}\n setValue={(num) => handleChange('right', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n </Stack>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { FormatAlignCenterOutlined, FormatAlignLeftOutlined, FormatAlignRightOutlined } from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\n\nimport RadioGroupInput from './radio-group-input';\n\ntype Props = {\n label: string;\n defaultValue: string | null;\n onChange: (value: string | null) => void;\n};\nexport default function TextAlignInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue ?? 'left');\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue ?? 'left');\n }, [defaultValue]);\n\n return (\n <RadioGroupInput\n label={label}\n defaultValue={value}\n onChange={(value) => {\n setValue(value);\n onChange(value);\n }}\n >\n <ToggleButton value=\"left\">\n <FormatAlignLeftOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"center\">\n <FormatAlignCenterOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"right\">\n <FormatAlignRightOutlined fontSize=\"small\" />\n </ToggleButton>\n </RadioGroupInput>\n );\n}\n","import React from 'react';\n\nimport { RoundedCornerOutlined } from '@mui/icons-material';\n\nimport { TStyle } from '@editor/blocks/helpers/tstyle';\nimport { NullableColorInput } from '../inputs/color-input/index';\nimport { NullableFontFamily } from '../inputs/font-family';\nimport FontSizeInput from '../inputs/font-size-input';\nimport FontWeightInput from '../inputs/font-weight-input';\nimport PaddingInput from '../inputs/padding-input';\nimport SliderInput from '../inputs/slider-input';\nimport TextAlignInput from '../inputs/text-align-input';\n\ntype StylePropertyPanelProps = {\n name: keyof TStyle;\n value: TStyle;\n onChange: (style: TStyle) => void;\n};\nexport default function SingleStylePropertyPanel({ name, value, onChange }: StylePropertyPanelProps) {\n const defaultValue = value[name] ?? null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleChange = (v: any) => {\n onChange({ ...value, [name]: v });\n };\n\n switch (name) {\n case 'backgroundColor':\n return <NullableColorInput label=\"Background color\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'borderColor':\n return <NullableColorInput label=\"Border color\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'borderRadius':\n return (\n <SliderInput\n iconLabel={<RoundedCornerOutlined />}\n units=\"px\"\n step={4}\n marks\n min={0}\n max={48}\n label=\"Border radius\"\n defaultValue={defaultValue}\n onChange={handleChange}\n />\n );\n case 'color':\n return <NullableColorInput label=\"Text color\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'fontFamily':\n return <NullableFontFamily label=\"Font family\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'fontSize':\n return <FontSizeInput label=\"Font size\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'fontWeight':\n return <FontWeightInput label=\"Font weight\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'textAlign':\n return <TextAlignInput label=\"Alignment\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'padding':\n return <PaddingInput label=\"Padding\" defaultValue={defaultValue} onChange={handleChange} />;\n }\n}\n","import React from 'react';\n\nimport { TStyle } from '@editor/blocks/helpers/tstyle';\n\nimport SingleStylePropertyPanel from './single-style-property-panel';\n\ntype MultiStylePropertyPanelProps = {\n names: (keyof TStyle)[];\n value: TStyle | undefined | null;\n onChange: (style: TStyle) => void;\n};\nexport default function MultiStylePropertyPanel({ names, value, onChange }: MultiStylePropertyPanelProps) {\n return (\n <>\n {names.map((name) => (\n <SingleStylePropertyPanel key={name} name={name} value={value || {}} onChange={onChange} />\n ))}\n </>\n );\n}\n","import React, { useState } from 'react';\n\nimport { AspectRatioOutlined } from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\nimport { AvatarPropsDefaults, AvatarPropsSchema } from '@blocks';\nimport type { AvatarProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype AvatarSidebarPanelProps = {\n data: AvatarProps;\n setData: (v: AvatarProps) => void;\n};\nexport default function AvatarSidebarPanel({ data, setData }: AvatarSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = AvatarPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const size = data.props?.size ?? AvatarPropsDefaults.size;\n const imageUrl = data.props?.imageUrl ?? AvatarPropsDefaults.imageUrl;\n const alt = data.props?.alt ?? AvatarPropsDefaults.alt;\n const shape = data.props?.shape ?? AvatarPropsDefaults.shape;\n\n return (\n <BaseSidebarPanel title=\"Avatar block\">\n <SliderInput\n label=\"Size\"\n iconLabel={<AspectRatioOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={3}\n min={32}\n max={256}\n defaultValue={size}\n onChange={(size) => {\n updateData({ ...data, props: { ...data.props, size } });\n }}\n />\n <RadioGroupInput\n label=\"Shape\"\n defaultValue={shape}\n onChange={(shape) => {\n updateData({ ...data, props: { ...data.props, shape } });\n }}\n >\n <ToggleButton value=\"circle\">Circle</ToggleButton>\n <ToggleButton value=\"square\">Square</ToggleButton>\n <ToggleButton value=\"rounded\">Rounded</ToggleButton>\n </RadioGroupInput>\n <TextInput\n label=\"Image URL\"\n defaultValue={imageUrl}\n onChange={(imageUrl) => {\n updateData({ ...data, props: { ...data.props, imageUrl } });\n }}\n />\n <TextInput\n label=\"Alt text\"\n defaultValue={alt}\n onChange={(alt) => {\n updateData({ ...data, props: { ...data.props, alt } });\n }}\n />\n\n <MultiStylePropertyPanel\n names={['textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { ToggleButton } from '@mui/material';\nimport { ButtonPropsDefaults, ButtonPropsSchema } from '@blocks';\nimport type { ButtonProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput from './helpers/inputs/color-input';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ButtonSidebarPanelProps = {\n data: ButtonProps;\n setData: (v: ButtonProps) => void;\n};\nexport default function ButtonSidebarPanel({ data, setData }: ButtonSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = ButtonPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const text = data.props?.text ?? ButtonPropsDefaults.text;\n const url = data.props?.url ?? ButtonPropsDefaults.url;\n const fullWidth = data.props?.fullWidth ?? ButtonPropsDefaults.fullWidth;\n const size = data.props?.size ?? ButtonPropsDefaults.size;\n const buttonStyle = data.props?.buttonStyle ?? ButtonPropsDefaults.buttonStyle;\n const buttonTextColor = data.props?.buttonTextColor ?? ButtonPropsDefaults.buttonTextColor;\n const buttonBackgroundColor = data.props?.buttonBackgroundColor ?? ButtonPropsDefaults.buttonBackgroundColor;\n\n return (\n <BaseSidebarPanel title=\"Button block\">\n <TextInput\n label=\"Text\"\n defaultValue={text}\n onChange={(text) => updateData({ ...data, props: { ...data.props, text } })}\n />\n <TextInput\n label=\"Url\"\n defaultValue={url}\n onChange={(url) => updateData({ ...data, props: { ...data.props, url } })}\n />\n <RadioGroupInput\n label=\"Width\"\n defaultValue={fullWidth ? 'FULL_WIDTH' : 'AUTO'}\n onChange={(v) => updateData({ ...data, props: { ...data.props, fullWidth: v === 'FULL_WIDTH' } })}\n >\n <ToggleButton value=\"FULL_WIDTH\">Full</ToggleButton>\n <ToggleButton value=\"AUTO\">Auto</ToggleButton>\n </RadioGroupInput>\n <RadioGroupInput\n label=\"Size\"\n defaultValue={size}\n onChange={(size) => updateData({ ...data, props: { ...data.props, size } })}\n >\n <ToggleButton value=\"x-small\">Xs</ToggleButton>\n <ToggleButton value=\"small\">Sm</ToggleButton>\n <ToggleButton value=\"medium\">Md</ToggleButton>\n <ToggleButton value=\"large\">Lg</ToggleButton>\n </RadioGroupInput>\n <RadioGroupInput\n label=\"Style\"\n defaultValue={buttonStyle}\n onChange={(buttonStyle) => updateData({ ...data, props: { ...data.props, buttonStyle } })}\n >\n <ToggleButton value=\"rectangle\">Rectangle</ToggleButton>\n <ToggleButton value=\"rounded\">Rounded</ToggleButton>\n <ToggleButton value=\"pill\">Pill</ToggleButton>\n </RadioGroupInput>\n <ColorInput\n label=\"Text color\"\n defaultValue={buttonTextColor}\n onChange={(buttonTextColor) => updateData({ ...data, props: { ...data.props, buttonTextColor } })}\n />\n <ColorInput\n label=\"Button color\"\n defaultValue={buttonBackgroundColor}\n onChange={(buttonBackgroundColor) => updateData({ ...data, props: { ...data.props, buttonBackgroundColor } })}\n />\n <MultiStylePropertyPanel\n names={['backgroundColor', 'fontFamily', 'fontSize', 'fontWeight', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import { z } from 'zod';\n\nimport { ColumnsContainerPropsSchema as BaseColumnsContainerPropsSchema } from '@blocks';\n\nconst BasePropsShape = BaseColumnsContainerPropsSchema.shape.props.unwrap().unwrap().shape;\n\nconst ColumnsContainerPropsSchema = z.object({\n style: BaseColumnsContainerPropsSchema.shape.style,\n props: z\n .object({\n ...BasePropsShape,\n columns: z.tuple([\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n ]),\n })\n .optional()\n .nullable(),\n});\n\nexport type ColumnsContainerProps = z.infer<typeof ColumnsContainerPropsSchema>;\nexport default ColumnsContainerPropsSchema;\n","import React from 'react';\n\nimport { TextField, Typography } from '@mui/material';\n\ntype TextDimensionInputProps = {\n label: string;\n defaultValue: number | null | undefined;\n onChange: (v: number | null) => void;\n};\nexport default function TextDimensionInput({ label, defaultValue, onChange }: TextDimensionInputProps) {\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (ev) => {\n const value = parseInt(ev.target.value);\n onChange(isNaN(value) ? null : value);\n };\n return (\n <TextField\n fullWidth\n onChange={handleChange}\n defaultValue={defaultValue}\n label={label}\n variant=\"standard\"\n placeholder=\"auto\"\n size=\"small\"\n InputProps={{\n endAdornment: (\n <Typography variant=\"body2\" color=\"text.secondary\">\n px\n </Typography>\n ),\n }}\n />\n );\n}\n","import React, { useState } from 'react';\n\nimport { Stack } from '@mui/material';\n\nimport TextDimensionInput from './text-dimension-input';\n\nexport const DEFAULT_2_COLUMNS = [6] as [number];\nexport const DEFAULT_3_COLUMNS = [4, 8] as [number, number];\n\ntype TWidthValue = number | null | undefined;\ntype FixedWidths = [\n //\n number | null | undefined,\n number | null | undefined,\n number | null | undefined,\n];\ntype ColumnsLayoutInputProps = {\n defaultValue: FixedWidths | null | undefined;\n onChange: (v: FixedWidths | null | undefined) => void;\n};\nexport default function ColumnWidthsInput({ defaultValue, onChange }: ColumnsLayoutInputProps) {\n const [currentValue, setCurrentValue] = useState<[TWidthValue, TWidthValue, TWidthValue]>(() => {\n if (defaultValue) {\n return defaultValue;\n }\n return [null, null, null];\n });\n\n const setIndexValue = (index: 0 | 1 | 2, value: number | null | undefined) => {\n const nValue: FixedWidths = [...currentValue];\n nValue[index] = value;\n setCurrentValue(nValue);\n onChange(nValue);\n };\n\n const columnsCountValue = 3;\n let column3 = null;\n if (columnsCountValue === 3) {\n column3 = (\n <TextDimensionInput\n label=\"Column 3\"\n defaultValue={currentValue?.[2]}\n onChange={(v) => {\n setIndexValue(2, v);\n }}\n />\n );\n }\n return (\n <Stack direction=\"row\" spacing={1}>\n <TextDimensionInput\n label=\"Column 1\"\n defaultValue={currentValue?.[0]}\n onChange={(v) => {\n setIndexValue(0, v);\n }}\n />\n <TextDimensionInput\n label=\"Column 2\"\n defaultValue={currentValue?.[1]}\n onChange={(v) => {\n setIndexValue(1, v);\n }}\n />\n {column3}\n </Stack>\n );\n}\n","import React, { useState } from 'react';\n\nimport {\n SpaceBarOutlined,\n VerticalAlignBottomOutlined,\n VerticalAlignCenterOutlined,\n VerticalAlignTopOutlined,\n} from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\n\nimport ColumnsContainerPropsSchema, {\n ColumnsContainerProps,\n} from '@editor/blocks/columns-container/columns-container-props-schema';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColumnWidthsInput from './helpers/inputs/column-widths-input';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ColumnsContainerPanelProps = {\n data: ColumnsContainerProps;\n setData: (v: ColumnsContainerProps) => void;\n};\nexport default function ColumnsContainerPanel({ data, setData }: ColumnsContainerPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = ColumnsContainerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Columns block\">\n <RadioGroupInput\n label=\"Number of columns\"\n defaultValue={data.props?.columnsCount === 2 ? '2' : '3'}\n onChange={(v) => {\n updateData({ ...data, props: { ...data.props, columnsCount: v === '2' ? 2 : 3 } });\n }}\n >\n <ToggleButton value=\"2\">2</ToggleButton>\n <ToggleButton value=\"3\">3</ToggleButton>\n </RadioGroupInput>\n <ColumnWidthsInput\n defaultValue={data.props?.fixedWidths}\n onChange={(fixedWidths) => {\n updateData({ ...data, props: { ...data.props, fixedWidths } });\n }}\n />\n <SliderInput\n label=\"Columns gap\"\n iconLabel={<SpaceBarOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={4}\n marks\n min={0}\n max={80}\n defaultValue={data.props?.columnsGap ?? 0}\n onChange={(columnsGap) => updateData({ ...data, props: { ...data.props, columnsGap } })}\n />\n <RadioGroupInput\n label=\"Alignment\"\n defaultValue={data.props?.contentAlignment ?? 'middle'}\n onChange={(contentAlignment) => {\n updateData({ ...data, props: { ...data.props, contentAlignment } });\n }}\n >\n <ToggleButton value=\"top\">\n <VerticalAlignTopOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"middle\">\n <VerticalAlignCenterOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"bottom\">\n <VerticalAlignBottomOutlined fontSize=\"small\" />\n </ToggleButton>\n </RadioGroupInput>\n\n <MultiStylePropertyPanel\n names={['backgroundColor', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import { z } from 'zod';\n\nimport { ContainerPropsSchema as BaseContainerPropsSchema } from '@blocks';\n\nconst ContainerPropsSchema = z.object({\n style: BaseContainerPropsSchema.shape.style,\n props: z\n .object({\n childrenIds: z.array(z.string()).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport default ContainerPropsSchema;\n\nexport type ContainerProps = z.infer<typeof ContainerPropsSchema>;\n","import React, { useState } from 'react';\n\nimport ContainerPropsSchema, { ContainerProps } from '@editor/blocks/container/container-props-schema';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ContainerSidebarPanelProps = {\n data: ContainerProps;\n setData: (v: ContainerProps) => void;\n};\n\nexport default function ContainerSidebarPanel({ data, setData }: ContainerSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = ContainerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n return (\n <BaseSidebarPanel title=\"Container block\">\n <MultiStylePropertyPanel\n names={['backgroundColor', 'borderColor', 'borderRadius', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { HeightOutlined } from '@mui/icons-material';\nimport { DividerPropsDefaults, DividerPropsSchema } from '@blocks/divider';\nimport type { DividerProps } from '@blocks/divider';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput from './helpers/inputs/color-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype DividerSidebarPanelProps = {\n data: DividerProps;\n setData: (v: DividerProps) => void;\n};\nexport default function DividerSidebarPanel({ data, setData }: DividerSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = DividerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const lineColor = data.props?.lineColor ?? DividerPropsDefaults.lineColor;\n const lineHeight = data.props?.lineHeight ?? DividerPropsDefaults.lineHeight;\n\n return (\n <BaseSidebarPanel title=\"Divider block\">\n <ColorInput\n label=\"Color\"\n defaultValue={lineColor}\n onChange={(lineColor) => updateData({ ...data, props: { ...data.props, lineColor } })}\n />\n <SliderInput\n label=\"Height\"\n iconLabel={<HeightOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={1}\n min={1}\n max={24}\n defaultValue={lineHeight}\n onChange={(lineHeight) => updateData({ ...data, props: { ...data.props, lineHeight } })}\n />\n <MultiStylePropertyPanel\n names={['backgroundColor', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nconst EmailLayoutPropsSchema = z.object({\n backdropColor: COLOR_SCHEMA,\n borderColor: COLOR_SCHEMA,\n borderRadius: z.number().optional().nullable(),\n canvasColor: COLOR_SCHEMA,\n textColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n childrenIds: z.array(z.string()).optional().nullable(),\n});\n\nexport default EmailLayoutPropsSchema;\n\nexport type EmailLayoutProps = z.infer<typeof EmailLayoutPropsSchema>;\n","import React, { useState } from 'react';\n\nimport { RoundedCornerOutlined } from '@mui/icons-material';\n\nimport EmailLayoutPropsSchema, {\n EmailLayoutProps,\n} from '@editor/blocks/email-layout/email-layout-props-schema';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput, { NullableColorInput } from './helpers/inputs/color-input';\nimport { NullableFontFamily } from './helpers/inputs/font-family';\nimport SliderInput from './helpers/inputs/slider-input';\n\ntype EmailLayoutSidebarFieldsProps = {\n data: EmailLayoutProps;\n setData: (v: EmailLayoutProps) => void;\n};\nexport default function EmailLayoutSidebarFields({ data, setData }: EmailLayoutSidebarFieldsProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = EmailLayoutPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Global\">\n <ColorInput\n label=\"Backdrop color\"\n defaultValue={data.backdropColor ?? '#F5F5F5'}\n onChange={(backdropColor) => updateData({ ...data, backdropColor })}\n />\n <ColorInput\n label=\"Canvas color\"\n defaultValue={data.canvasColor ?? '#FFFFFF'}\n onChange={(canvasColor) => updateData({ ...data, canvasColor })}\n />\n <NullableColorInput\n label=\"Canvas border color\"\n defaultValue={data.borderColor ?? null}\n onChange={(borderColor) => updateData({ ...data, borderColor })}\n />\n <SliderInput\n iconLabel={<RoundedCornerOutlined />}\n units=\"px\"\n step={4}\n marks\n min={0}\n max={48}\n label=\"Canvas border radius\"\n defaultValue={data.borderRadius ?? 0}\n onChange={(borderRadius) => updateData({ ...data, borderRadius })}\n />\n <NullableFontFamily\n label=\"Font family\"\n defaultValue=\"MODERN_SANS\"\n onChange={(fontFamily) => updateData({ ...data, fontFamily })}\n />\n <ColorInput\n label=\"Text color\"\n defaultValue={data.textColor ?? '#262626'}\n onChange={(textColor) => updateData({ ...data, textColor })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { ToggleButton } from '@mui/material';\nimport { HeadingProps, HeadingPropsDefaults, HeadingPropsSchema } from '@blocks/heading';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype HeadingSidebarPanelProps = {\n data: HeadingProps;\n setData: (v: HeadingProps) => void;\n};\nexport default function HeadingSidebarPanel({ data, setData }: HeadingSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = HeadingPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Heading block\">\n <TextInput\n label=\"Content\"\n rows={3}\n defaultValue={data.props?.text ?? HeadingPropsDefaults.text}\n onChange={(text) => {\n updateData({ ...data, props: { ...data.props, text } });\n }}\n />\n <RadioGroupInput\n label=\"Level\"\n defaultValue={data.props?.level ?? HeadingPropsDefaults.level}\n onChange={(level) => {\n updateData({ ...data, props: { ...data.props, level } });\n }}\n >\n <ToggleButton value=\"h1\">H1</ToggleButton>\n <ToggleButton value=\"h2\">H2</ToggleButton>\n <ToggleButton value=\"h3\">H3</ToggleButton>\n </RadioGroupInput>\n <MultiStylePropertyPanel\n names={['color', 'backgroundColor', 'fontFamily', 'fontWeight', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\nimport { HtmlPropsSchema } from '@blocks';\nimport type { HtmlProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype HtmlSidebarPanelProps = {\n data: HtmlProps;\n setData: (v: HtmlProps) => void;\n};\nexport default function HtmlSidebarPanel({ data, setData }: HtmlSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = HtmlPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Html block\">\n <TextInput\n label=\"Content\"\n rows={5}\n defaultValue={data.props?.contents ?? ''}\n onChange={(contents) => updateData({ ...data, props: { ...data.props, contents } })}\n />\n <MultiStylePropertyPanel\n names={['color', 'backgroundColor', 'fontFamily', 'fontSize', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignCenterOutlined,\n VerticalAlignTopOutlined,\n} from '@mui/icons-material';\nimport { Stack, ToggleButton } from '@mui/material';\nimport { ImageProps, ImagePropsSchema } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport TextDimensionInput from './helpers/inputs/text-dimension-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ImageSidebarPanelProps = {\n data: ImageProps;\n setData: (v: ImageProps) => void;\n};\nexport default function ImageSidebarPanel({ data, setData }: ImageSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = ImagePropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Image block\">\n <TextInput\n label=\"Source URL\"\n defaultValue={data.props?.url ?? ''}\n onChange={(v) => {\n const url = v.trim().length === 0 ? null : v.trim();\n updateData({ ...data, props: { ...data.props, url } });\n }}\n />\n\n <TextInput\n label=\"Alt text\"\n defaultValue={data.props?.alt ?? ''}\n onChange={(alt) => updateData({ ...data, props: { ...data.props, alt } })}\n />\n <TextInput\n label=\"Click through URL\"\n defaultValue={data.props?.linkHref ?? ''}\n onChange={(v) => {\n const linkHref = v.trim().length === 0 ? null : v.trim();\n updateData({ ...data, props: { ...data.props, linkHref } });\n }}\n />\n <Stack direction=\"row\" spacing={2}>\n <TextDimensionInput\n label=\"Width\"\n defaultValue={data.props?.width}\n onChange={(width) => updateData({ ...data, props: { ...data.props, width } })}\n />\n <TextDimensionInput\n label=\"Height\"\n defaultValue={data.props?.height}\n onChange={(height) => updateData({ ...data, props: { ...data.props, height } })}\n />\n </Stack>\n\n <RadioGroupInput\n label=\"Alignment\"\n defaultValue={data.props?.contentAlignment ?? 'middle'}\n onChange={(contentAlignment) => updateData({ ...data, props: { ...data.props, contentAlignment } })}\n >\n <ToggleButton value=\"top\">\n <VerticalAlignTopOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"middle\">\n <VerticalAlignCenterOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"bottom\">\n <VerticalAlignBottomOutlined fontSize=\"small\" />\n </ToggleButton>\n </RadioGroupInput>\n\n <MultiStylePropertyPanel\n names={['backgroundColor', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { AspectRatioOutlined } from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\nimport { SignaturePropsDefaults, SignaturePropsSchema } from '@blocks';\nimport type { SignatureProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput from './helpers/inputs/color-input';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype SignatureSidebarPanelProps = {\n data: SignatureProps;\n setData: (v: SignatureProps) => void;\n};\nexport default function SignatureSidebarPanel({ data, setData }: SignatureSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = SignaturePropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const greeting = data.props?.greeting ?? SignaturePropsDefaults.greeting;\n const name = data.props?.name ?? SignaturePropsDefaults.name;\n const title = data.props?.title ?? SignaturePropsDefaults.title;\n const company = data.props?.company ?? SignaturePropsDefaults.company;\n const address = data.props?.address ?? SignaturePropsDefaults.address;\n const email = data.props?.email ?? SignaturePropsDefaults.email;\n const phone = data.props?.phone ?? SignaturePropsDefaults.phone;\n const website = data.props?.website ?? SignaturePropsDefaults.website;\n const imageUrl = data.props?.imageUrl ?? SignaturePropsDefaults.imageUrl;\n const imageSize = data.props?.imageSize ?? SignaturePropsDefaults.imageSize;\n const imageShape = data.props?.imageShape ?? SignaturePropsDefaults.imageShape;\n const layout = data.props?.layout ?? SignaturePropsDefaults.layout;\n const nameColor = data.props?.nameColor ?? SignaturePropsDefaults.nameColor;\n const textColor = data.props?.textColor ?? SignaturePropsDefaults.textColor;\n const linkColor = data.props?.linkColor ?? SignaturePropsDefaults.linkColor;\n\n return (\n <BaseSidebarPanel title=\"Signature block\">\n <TextInput\n label=\"Greeting\"\n defaultValue={greeting}\n onChange={(greeting) => updateData({ ...data, props: { ...data.props, greeting } })}\n />\n <TextInput\n label=\"Name\"\n defaultValue={name}\n onChange={(name) => updateData({ ...data, props: { ...data.props, name } })}\n />\n <TextInput\n label=\"Title\"\n defaultValue={title}\n onChange={(title) => updateData({ ...data, props: { ...data.props, title } })}\n />\n <TextInput\n label=\"Company\"\n defaultValue={company}\n onChange={(company) => updateData({ ...data, props: { ...data.props, company } })}\n />\n <TextInput\n label=\"Address\"\n defaultValue={address}\n onChange={(address) => updateData({ ...data, props: { ...data.props, address } })}\n />\n <TextInput\n label=\"Email\"\n defaultValue={email}\n onChange={(email) => updateData({ ...data, props: { ...data.props, email } })}\n />\n <TextInput\n label=\"Phone\"\n defaultValue={phone}\n onChange={(phone) => updateData({ ...data, props: { ...data.props, phone } })}\n />\n <TextInput\n label=\"Website\"\n defaultValue={website}\n onChange={(website) => updateData({ ...data, props: { ...data.props, website } })}\n />\n <TextInput\n label=\"Image URL\"\n defaultValue={imageUrl}\n onChange={(imageUrl) => updateData({ ...data, props: { ...data.props, imageUrl } })}\n />\n <SliderInput\n label=\"Image size\"\n iconLabel={<AspectRatioOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={4}\n min={32}\n max={128}\n defaultValue={imageSize}\n onChange={(imageSize) => updateData({ ...data, props: { ...data.props, imageSize } })}\n />\n <RadioGroupInput\n label=\"Image shape\"\n defaultValue={imageShape}\n onChange={(imageShape) => updateData({ ...data, props: { ...data.props, imageShape } })}\n >\n <ToggleButton value=\"circle\">Circle</ToggleButton>\n <ToggleButton value=\"square\">Square</ToggleButton>\n <ToggleButton value=\"rounded\">Rounded</ToggleButton>\n </RadioGroupInput>\n <RadioGroupInput\n label=\"Layout\"\n defaultValue={layout}\n onChange={(layout) => updateData({ ...data, props: { ...data.props, layout } })}\n >\n <ToggleButton value=\"horizontal\">Horizontal</ToggleButton>\n <ToggleButton value=\"vertical\">Vertical</ToggleButton>\n </RadioGroupInput>\n <ColorInput\n label=\"Name color\"\n defaultValue={nameColor}\n onChange={(nameColor) => updateData({ ...data, props: { ...data.props, nameColor } })}\n />\n <ColorInput\n label=\"Text color\"\n defaultValue={textColor}\n onChange={(textColor) => updateData({ ...data, props: { ...data.props, textColor } })}\n />\n <ColorInput\n label=\"Link color\"\n defaultValue={linkColor}\n onChange={(linkColor) => updateData({ ...data, props: { ...data.props, linkColor } })}\n />\n <MultiStylePropertyPanel\n names={['backgroundColor', 'fontFamily', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { HeightOutlined } from '@mui/icons-material';\nimport { SpacerProps, SpacerPropsDefaults, SpacerPropsSchema } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport SliderInput from './helpers/inputs/slider-input';\n\ntype SpacerSidebarPanelProps = {\n data: SpacerProps;\n setData: (v: SpacerProps) => void;\n};\nexport default function SpacerSidebarPanel({ data, setData }: SpacerSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = SpacerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Spacer block\">\n <SliderInput\n label=\"Height\"\n iconLabel={<HeightOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={4}\n min={4}\n max={128}\n defaultValue={data.props?.height ?? SpacerPropsDefaults.height}\n onChange={(height) => updateData({ ...data, props: { ...data.props, height } })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { FormControlLabel, Switch } from '@mui/material';\n\ntype Props = {\n label: string;\n defaultValue: boolean;\n onChange: (value: boolean) => void;\n};\n\nexport default function BooleanInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <FormControlLabel\n label={label}\n control={\n <Switch\n checked={value}\n onChange={(_, checked: boolean) => {\n setValue(checked);\n onChange(checked);\n }}\n />\n }\n />\n );\n}\n","import React, { useState } from 'react';\n\nimport { TextProps, TextPropsSchema } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport BooleanInput from './helpers/inputs/boolean-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype TextSidebarPanelProps = {\n data: TextProps;\n setData: (v: TextProps) => void;\n};\nexport default function TextSidebarPanel({ data, setData }: TextSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = TextPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Text block\">\n <TextInput\n label=\"Content\"\n rows={5}\n defaultValue={data.props?.text ?? ''}\n onChange={(text) => updateData({ ...data, props: { ...data.props, text } })}\n />\n <BooleanInput\n label=\"Markdown\"\n defaultValue={data.props?.markdown ?? false}\n onChange={(markdown) => updateData({ ...data, props: { ...data.props, markdown } })}\n />\n\n <MultiStylePropertyPanel\n names={['color', 'backgroundColor', 'fontFamily', 'fontSize', 'fontWeight', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React from 'react';\n\nimport { Box, Typography } from '@mui/material';\n\nimport { TEditorBlock } from '@editor/core';\nimport { setDocument, useDocument, useSelectedBlockId } from '@editor/editor-context';\n\nimport AvatarSidebarPanel from './input-panels/avatar-sidebar-panel';\nimport ButtonSidebarPanel from './input-panels/button-sidebar-panel';\nimport ColumnsContainerSidebarPanel from './input-panels/columns-container-sidebar-panel';\nimport ContainerSidebarPanel from './input-panels/container-sidebar-panel';\nimport DividerSidebarPanel from './input-panels/divider-sidebar-panel';\nimport EmailLayoutSidebarPanel from './input-panels/email-layout-sidebar-panel';\nimport HeadingSidebarPanel from './input-panels/heading-sidebar-panel';\nimport HtmlSidebarPanel from './input-panels/html-sidebar-panel';\nimport ImageSidebarPanel from './input-panels/image-sidebar-panel';\nimport SignatureSidebarPanel from './input-panels/signature-sidebar-panel';\nimport SpacerSidebarPanel from './input-panels/spacer-sidebar-panel';\nimport TextSidebarPanel from './input-panels/text-sidebar-panel';\n\nfunction renderMessage(val: string) {\n return (\n <Box sx={{ m: 3, p: 1, border: '1px dashed', borderColor: 'divider' }}>\n <Typography color=\"text.secondary\">{val}</Typography>\n </Box>\n );\n}\n\nexport default function ConfigurationPanel() {\n const document = useDocument();\n const selectedBlockId = useSelectedBlockId();\n\n if (!selectedBlockId) {\n return renderMessage('Click on a block to inspect.');\n }\n const block = document[selectedBlockId];\n if (!block) {\n return renderMessage(`Block with id ${selectedBlockId} was not found. Click on a block to reset.`);\n }\n\n const setBlock = (conf: TEditorBlock) => setDocument({ [selectedBlockId]: conf });\n const { data, type } = block;\n switch (type) {\n case 'Avatar':\n return <AvatarSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Button':\n return <ButtonSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'ColumnsContainer':\n return (\n <ColumnsContainerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />\n );\n case 'Container':\n return <ContainerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Divider':\n return <DividerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Heading':\n return <HeadingSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Html':\n return <HtmlSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Image':\n return <ImageSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'EmailLayout':\n return <EmailLayoutSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Spacer':\n return <SpacerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Signature':\n return <SignatureSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Text':\n return <TextSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n default:\n return <pre>{JSON.stringify(block, null, ' ')}</pre>;\n }\n}\n","import React from 'react';\n\nimport { setDocument, useDocument } from '@editor/editor-context';\n\nimport EmailLayoutSidebarPanel from './configuration-panel/input-panels/email-layout-sidebar-panel';\n\nexport default function StylesPanel() {\n const block = useDocument().root;\n if (!block) {\n return <p>Block not found</p>;\n }\n\n const { data, type } = block;\n if (type !== 'EmailLayout') {\n throw new Error('Expected \"root\" element to be of type EmailLayout');\n }\n\n return <EmailLayoutSidebarPanel key=\"root\" data={data} setData={(data) => setDocument({ root: { type, data } })} />;\n}\n","import React, { useMemo } from 'react';\nimport { FileDownloadOutlined } from '@mui/icons-material';\nimport { Button } from '@mui/material';\nimport { useDocument } from '@editor/editor-context';\n\nexport default function TemplateDownloadButton() {\n const doc = useDocument();\n const href = useMemo(() => {\n return `data:text/plain,${encodeURIComponent(JSON.stringify(doc, null, ' '))}`;\n }, [doc]);\n\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n startIcon={<FileDownloadOutlined />}\n href={href}\n download=\"emailTemplate.json\"\n fullWidth\n >\n Download JSON\n </Button>\n );\n} ","import React from 'react';\nimport { Button, Stack, Typography } from '@mui/material';\nimport { DeleteOutlined, ContentCopyOutlined } from '@mui/icons-material';\n\nimport { useEmailEditor } from '../context';\nimport { useDocument, usePersistenceEnabled } from '@editor/editor-context';\nimport BaseSidebarPanel from './configuration-panel/input-panels/helpers/base-sidebar-panel';\nimport TemplateDownloadButton from './template-panel-download-button';\n\nexport interface TemplatePanelProps {\n loadTemplates?: () => Promise<any[]>;\n deleteTemplate?: (templateId: string) => void;\n copyTemplate?: (templateName: string, content: any) => void;\n}\n\nexport default function TemplatePanel({ deleteTemplate, copyTemplate }: TemplatePanelProps) {\n const { currentTemplateId, currentTemplateName } = useEmailEditor();\n const document = useDocument();\n const persistenceEnabled = usePersistenceEnabled();\n\n const handleDelete = () => {\n if (!currentTemplateId || !window.confirm('Are you sure you want to delete this template?')) {\n return;\n }\n\n if (deleteTemplate) {\n // Use the provided deleteTemplate function\n deleteTemplate(currentTemplateId);\n \n // Refresh the page to load a new template\n window.location.hash = '';\n window.location.reload();\n }\n };\n\n const handleCopyToSamples = () => {\n if (!currentTemplateName || !document) return;\n\n if (copyTemplate) {\n // Use the provided copyTemplate function\n copyTemplate(`${currentTemplateName} (Copy)`, document);\n \n // Show confirmation\n window.alert('Template copied successfully!');\n }\n };\n\n if (!currentTemplateId) {\n return <BaseSidebarPanel title=\"Template\">No template selected</BaseSidebarPanel>;\n }\n\n return (\n <>\n <BaseSidebarPanel title=\"Template\">\n <Stack spacing={2}>\n {!persistenceEnabled && (\n <Typography \n variant=\"body2\" \n color=\"text.secondary\" \n sx={{ \n padding: 1, \n bgcolor: 'rgba(0,0,0,0.04)', \n borderRadius: 1,\n fontSize: '0.8rem' \n }}\n >\n Save functionality is disabled. To enable saving, provide the necessary callback functions.\n </Typography>\n )}\n {persistenceEnabled && (\n <>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n startIcon={<ContentCopyOutlined />}\n onClick={handleCopyToSamples}\n fullWidth\n disabled={!copyTemplate}\n >\n Save as Sample Template\n </Button>\n <Button\n variant=\"outlined\"\n color=\"error\"\n startIcon={<DeleteOutlined />}\n onClick={handleDelete}\n fullWidth\n disabled={!deleteTemplate}\n >\n Delete Template\n </Button>\n </>\n )}\n </Stack>\n </BaseSidebarPanel>\n \n {persistenceEnabled && (\n <BaseSidebarPanel title=\"Export\">\n <Stack spacing={2}>\n <TemplateDownloadButton />\n </Stack>\n </BaseSidebarPanel>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Box, Drawer, Tab, Tabs } from '@mui/material';\n\nimport { \n setSidebarTab, \n useInspectorDrawerOpen, \n useSelectedSidebarTab\n} from '@editor/editor-context';\n\nimport ConfigurationPanel from './configuration-panel';\nimport StylesPanel from './styles-panel';\nimport TemplatePanel from './template-panel';\n\nexport const INSPECTOR_DRAWER_WIDTH = 320;\n\nexport interface InspectorDrawerProps {\n /**\n * Duration for enter transition in milliseconds.\n * @default 225\n */\n enterDuration?: number;\n \n /**\n * Duration for exit transition in milliseconds.\n * @default 225\n */\n exitDuration?: number;\n\n /**\n * Callback to delete a template by ID\n */\n deleteTemplate?: (templateId: string) => void;\n \n /**\n * Callback to copy a template with a new name\n */\n copyTemplate?: (templateName: string, content: any) => void;\n\n /**\n * Indicates whether the template is saving enabled\n */\n savingEnabled?: boolean;\n}\n\nexport default function InspectorDrawer({ \n enterDuration = 225, \n exitDuration = 225,\n deleteTemplate,\n copyTemplate,\n savingEnabled = true\n}: InspectorDrawerProps = {}) {\n const selectedSidebarTab = useSelectedSidebarTab();\n const inspectorDrawerOpen = useInspectorDrawerOpen();\n\n const renderCurrentSidebarPanel = () => {\n switch (selectedSidebarTab) {\n case 'block-configuration':\n return <ConfigurationPanel />;\n case 'styles':\n return <StylesPanel />;\n case 'template-settings':\n return <TemplatePanel \n deleteTemplate={deleteTemplate} \n copyTemplate={copyTemplate}\n />;\n }\n };\n\n return (\n <Drawer\n variant=\"persistent\"\n anchor=\"right\"\n open={inspectorDrawerOpen}\n PaperProps={{\n style: { position: 'absolute' }\n }}\n ModalProps={{\n container: document.getElementById('drawer-container'),\n style: { position: 'absolute' },\n keepMounted: true\n }}\n transitionDuration={{\n enter: enterDuration,\n exit: exitDuration\n }}\n sx={{\n width: inspectorDrawerOpen ? INSPECTOR_DRAWER_WIDTH : 0,\n }}\n >\n <Box sx={{ width: INSPECTOR_DRAWER_WIDTH, height: 49, borderBottom: 1, borderColor: 'divider' }}>\n <Box px={2}>\n <Tabs value={selectedSidebarTab} onChange={(_, v) => setSidebarTab(v)}>\n <Tab value=\"styles\" label=\"Styles\" />\n <Tab value=\"block-configuration\" label=\"Inspect\" />\n <Tab value=\"template-settings\" label=\"Settings\" />\n </Tabs>\n </Box>\n </Box>\n <Box sx={{ width: INSPECTOR_DRAWER_WIDTH, height: 'calc(100% - 49px)', overflow: 'auto' }}>\n {renderCurrentSidebarPanel()}\n </Box>\n </Drawer>\n );\n}\n","import React from 'react';\nimport { Button, SxProps, Theme } from '@mui/material';\nimport { resetDocument } from '@editor/editor-context';\nimport { useEmailEditor } from '../context';\nimport { TEditorConfiguration } from '@editor/core';\n\nexport interface SidebarButtonProps {\n templateId: string;\n children: JSX.Element | string;\n templateLoader: () => Promise<TEditorConfiguration | null>;\n sx?: SxProps<Theme>;\n}\n\nexport default function SidebarButton({ \n templateId, \n children,\n templateLoader,\n sx\n}: SidebarButtonProps) {\n const { setCurrentTemplate } = useEmailEditor();\n \n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n \n try {\n const template = await templateLoader();\n if (template) {\n resetDocument(template);\n setCurrentTemplate(templateId, null);\n }\n } catch (error) {\n console.error('Error loading template:', error);\n }\n };\n \n return (\n <Button size=\"small\" onClick={handleClick} sx={sx}>\n {children}\n </Button>\n );\n}\n","import { TEditorConfiguration } from '@editor/core';\n\nconst EMPTY_EMAIL_MESSAGE: TEditorConfiguration = {\n root: {\n type: 'EmailLayout',\n data: {\n backdropColor: '#F5F5F5',\n canvasColor: '#FFFFFF',\n textColor: '#262626',\n fontFamily: 'MODERN_SANS',\n childrenIds: [],\n },\n },\n};\n\nexport default EMPTY_EMAIL_MESSAGE;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n Drawer,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport { useSamplesDrawerOpen } from \"@editor/editor-context\";\nimport { SampleTemplate } from \"../index\";\nimport { TEditorConfiguration } from \"@editor/core\";\nimport SidebarButton from \"./sidebar-button\";\nimport EMPTY_EMAIL_MESSAGE from \"@sample/empty-email-message\";\n\nexport const SAMPLES_DRAWER_WIDTH = 240;\n\n// Empty template definition that will always be available\nconst EMPTY_TEMPLATE: SampleTemplate = {\n id: \"empty-email\",\n name: \"Empty email\",\n description: \"A blank email template to start from scratch\",\n};\n\nexport interface SamplesDrawerProps {\n /**\n * Duration for enter transition in milliseconds.\n * @default 225\n */\n enterDuration?: number;\n\n /**\n * Duration for exit transition in milliseconds.\n * @default 225\n */\n exitDuration?: number;\n\n /**\n * Whether the drawer is enabled.\n * @default true\n */\n enabled?: boolean;\n\n /**\n * Callback to load samples dynamically.\n * This will be called when the drawer is opened.\n */\n loadSamples?: () => Promise<SampleTemplate[]>;\n\n /**\n * Callback to load existing templates dynamically.\n * This will be called when the drawer is opened.\n */\n loadTemplates?: () => Promise<SampleTemplate[]>;\n\n /**\n * Callback to load a specific template by ID.\n * This will be called when a template is selected from the drawer.\n */\n loadTemplate?: (templateId: string) => Promise<TEditorConfiguration | null>;\n\n /**\n * ID of the currently active template\n */\n currentTemplateId?: string | null;\n \n /**\n * Callback to delete a template by ID\n */\n deleteTemplate?: (templateId: string) => void;\n}\n\nexport default function SamplesDrawer({\n enterDuration = 225,\n exitDuration = 225,\n enabled = true,\n loadSamples,\n loadTemplates,\n loadTemplate,\n currentTemplateId,\n deleteTemplate,\n}: SamplesDrawerProps) {\n const samplesDrawerOpen = useSamplesDrawerOpen();\n const [samples, setSamples] = useState<SampleTemplate[]>([EMPTY_TEMPLATE]);\n const [templates, setTemplates] = useState<SampleTemplate[]>([]);\n const [loadingSamples, setLoadingSamples] = useState(false);\n const [loadingTemplates, setLoadingTemplates] = useState(false);\n\n // Special handler for empty template\n const handleLoadTemplate = async (templateId: string) => {\n if (templateId === \"empty-email\") {\n return EMPTY_EMAIL_MESSAGE;\n }\n \n if (loadTemplate) {\n return loadTemplate(templateId);\n }\n \n return null;\n };\n\n // Load samples\n useEffect(() => {\n if (enabled && samplesDrawerOpen && loadSamples) {\n setLoadingSamples(true);\n loadSamples()\n .then((results) => {\n // Ensure we always have the empty template\n const existingEmptyTemplate = results.find(sample => sample.id === \"empty-email\");\n if (!existingEmptyTemplate) {\n setSamples([EMPTY_TEMPLATE, ...results]);\n } else {\n setSamples(results);\n }\n setLoadingSamples(false);\n })\n .catch((error) => {\n console.error(\"Failed to load samples:\", error);\n setSamples([EMPTY_TEMPLATE]); // Fallback to empty template\n setLoadingSamples(false);\n });\n }\n }, [enabled, samplesDrawerOpen, loadSamples]);\n\n // Load existing templates\n useEffect(() => {\n if (enabled && loadTemplates) {\n setLoadingTemplates(true);\n loadTemplates()\n .then((results) => {\n setTemplates(results);\n setLoadingTemplates(false);\n })\n .catch((error) => {\n console.error(\"Failed to load templates:\", error);\n setLoadingTemplates(false);\n });\n }\n }, [enabled, loadTemplates]);\n\n // Listen for template list updates\n useEffect(() => {\n const handleTemplateListUpdate = (e: CustomEvent<SampleTemplate[]>) => {\n setTemplates(e.detail);\n };\n\n window.addEventListener('templateListUpdated', handleTemplateListUpdate as EventListener);\n return () => window.removeEventListener('templateListUpdated', handleTemplateListUpdate as EventListener);\n }, []);\n\n if (!enabled) {\n return null;\n }\n\n return (\n <>\n <Drawer\n variant=\"persistent\"\n anchor=\"left\"\n open={samplesDrawerOpen}\n PaperProps={{\n style: { position: \"absolute\" },\n }}\n ModalProps={{\n container: document.getElementById(\"drawer-container\"),\n style: { position: \"absolute\" },\n keepMounted: true,\n }}\n transitionDuration={{\n enter: enterDuration,\n exit: exitDuration,\n }}\n sx={{\n width: samplesDrawerOpen ? SAMPLES_DRAWER_WIDTH : 0,\n }}\n >\n <Stack\n spacing={3}\n py={1}\n px={2}\n width={SAMPLES_DRAWER_WIDTH}\n justifyContent=\"space-between\"\n height=\"100%\"\n >\n <Stack\n spacing={2}\n sx={{\n \"& .MuiButtonBase-root\": {\n width: \"100%\",\n justifyContent: \"flex-start\",\n },\n }}\n >\n <Typography variant=\"h6\" component=\"h1\" sx={{ p: 2 }}>\n Templates\n </Typography>\n\n {/* Existing Templates Section */}\n {loadTemplates && (\n <>\n <Typography\n variant=\"subtitle2\"\n component=\"h2\"\n sx={{ fontWeight: \"bold\", mt: 2 }}\n >\n Your Templates\n </Typography>\n\n {loadingTemplates ? (\n <Stack alignItems=\"center\" width=\"100%\" py={1}>\n <CircularProgress size={24} />\n </Stack>\n ) : templates.length > 0 ? (\n <Stack alignItems=\"flex-start\" width=\"100%\">\n {templates.map((template) => (\n <Box\n key={template.id}\n width=\"100%\"\n display=\"flex\"\n alignItems=\"center\"\n sx={{\n bgcolor: currentTemplateId === template.id\n ? \"rgba(0, 0, 0, 0.08)\"\n : \"transparent\",\n borderRadius: 1,\n \"&:hover\": {\n bgcolor: \"rgba(0, 0, 0, 0.04)\",\n },\n }}\n >\n <SidebarButton\n templateId={template.id}\n templateLoader={() => handleLoadTemplate(template.id)}\n sx={{ flexGrow: 1 }}\n >\n {template.name}\n </SidebarButton>\n </Box>\n ))}\n </Stack>\n ) : (\n <Typography\n variant=\"body2\"\n sx={{ color: \"text.secondary\", py: 1 }}\n >\n No saved templates\n </Typography>\n )}\n\n <Divider />\n </>\n )}\n\n {/* Sample Templates Section */}\n <>\n <Typography\n variant=\"subtitle2\"\n component=\"h2\"\n sx={{ fontWeight: \"bold\", mt: 1 }}\n >\n Sample Templates\n </Typography>\n\n {loadingSamples ? (\n <Stack alignItems=\"center\" width=\"100%\" py={1}>\n <CircularProgress size={24} />\n </Stack>\n ) : (\n <Stack alignItems=\"flex-start\">\n {samples.map((sample) => (\n <SidebarButton\n key={sample.id}\n templateId={sample.id}\n templateLoader={() => handleLoadTemplate(sample.id)}\n >\n {sample.name}\n </SidebarButton>\n ))}\n </Stack>\n )}\n </>\n </Stack>\n </Stack>\n </Drawer>\n </>\n );\n}\n","import React from 'react';\n\nimport { Box, Button, SxProps, Typography } from '@mui/material';\n\ntype BlockMenuButtonProps = {\n label: string;\n icon: React.ReactNode;\n onClick: () => void;\n};\n\nconst BUTTON_SX: SxProps = { p: 1.5, display: 'flex', flexDirection: 'column' };\nconst ICON_SX: SxProps = {\n mb: 0.75,\n width: '100%',\n bgcolor: 'cadet.200',\n display: 'flex',\n justifyContent: 'center',\n p: 1,\n border: '1px solid',\n borderColor: 'cadet.300',\n};\n\nexport default function BlockTypeButton({ label, icon, onClick }: BlockMenuButtonProps) {\n return (\n <Button\n sx={BUTTON_SX}\n onClick={(ev) => {\n ev.stopPropagation();\n onClick();\n }}\n >\n <Box sx={ICON_SX}>{icon}</Box>\n <Typography variant=\"body2\">{label}</Typography>\n </Button>\n );\n}\n","import React from 'react';\n\nimport {\n AccountCircleOutlined,\n BusinessOutlined,\n ContactMailOutlined,\n Crop32Outlined,\n HMobiledataOutlined,\n HorizontalRuleOutlined,\n HtmlOutlined,\n ImageOutlined,\n LibraryAddOutlined,\n NotesOutlined,\n SmartButtonOutlined,\n ViewColumnOutlined,\n} from '@mui/icons-material';\n\nimport { TEditorBlock } from '@editor/core';\n\ntype TButtonProps = {\n label: string;\n icon: JSX.Element;\n block: () => TEditorBlock;\n};\nexport const BUTTONS: TButtonProps[] = [\n {\n label: 'Heading',\n icon: <HMobiledataOutlined />,\n block: () => ({\n type: 'Heading',\n data: {\n props: { text: 'Hello friend' },\n style: {\n padding: { top: 16, bottom: 16, left: 24, right: 24 },\n },\n },\n }),\n },\n {\n label: 'Text',\n icon: <NotesOutlined />,\n block: () => ({\n type: 'Text',\n data: {\n props: { text: 'My new text block' },\n style: {\n padding: { top: 16, bottom: 16, left: 24, right: 24 },\n fontWeight: 'normal',\n },\n },\n }),\n },\n\n {\n label: 'Button',\n icon: <SmartButtonOutlined />,\n block: () => ({\n type: 'Button',\n data: {\n props: {\n text: 'Button',\n url: 'https://www.usewaypoint.com',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Image',\n icon: <ImageOutlined />,\n block: () => ({\n type: 'Image',\n data: {\n props: {\n url: 'https://assets.usewaypoint.com/sample-image.jpg',\n alt: 'Sample product',\n contentAlignment: 'middle',\n linkHref: null,\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Avatar',\n icon: <AccountCircleOutlined />,\n block: () => ({\n type: 'Avatar',\n data: {\n props: {\n imageUrl: 'https://ui-avatars.com/api/?size=128',\n shape: 'circle',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Personal Signature',\n icon: <ContactMailOutlined />,\n block: () => ({\n type: 'Signature',\n data: {\n props: {\n greeting: 'Best regards,',\n name: 'John Doe',\n title: 'Software Engineer',\n company: 'Acme Inc.',\n email: 'john@example.com',\n phone: '+1 234 567 890',\n imageUrl: 'https://ui-avatars.com/api/?name=John+Doe&size=128',\n imageSize: 64,\n imageShape: 'circle',\n layout: 'horizontal',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Company Signature',\n icon: <BusinessOutlined />,\n block: () => ({\n type: 'Signature',\n data: {\n props: {\n company: 'Acme Inc.',\n address: '123 Main Street, City, Country',\n email: 'support@example.com',\n website: 'www.example.com',\n imageUrl: 'https://placehold.co/128x128/EEE/999?text=Logo',\n imageSize: 48,\n imageShape: 'rounded',\n layout: 'horizontal',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Divider',\n icon: <HorizontalRuleOutlined />,\n block: () => ({\n type: 'Divider',\n data: {\n style: { padding: { top: 16, right: 0, bottom: 16, left: 0 } },\n props: {\n lineColor: '#CCCCCC',\n },\n },\n }),\n },\n {\n label: 'Spacer',\n icon: <Crop32Outlined />,\n block: () => ({\n type: 'Spacer',\n data: {},\n }),\n },\n {\n label: 'Html',\n icon: <HtmlOutlined />,\n block: () => ({\n type: 'Html',\n data: {\n props: { contents: '<strong>Hello world</strong>' },\n style: {\n fontSize: 16,\n textAlign: null,\n padding: { top: 16, bottom: 16, left: 24, right: 24 },\n },\n },\n }),\n },\n {\n label: 'Columns',\n icon: <ViewColumnOutlined />,\n block: () => ({\n type: 'ColumnsContainer',\n data: {\n props: {\n columnsGap: 16,\n columnsCount: 3,\n columns: [{ childrenIds: [] }, { childrenIds: [] }, { childrenIds: [] }],\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Container',\n icon: <LibraryAddOutlined />,\n block: () => ({\n type: 'Container',\n data: {\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n\n // { label: 'ProgressBar', icon: <ProgressBarOutlined />, block: () => ({}) },\n // { label: 'LoopContainer', icon: <ViewListOutlined />, block: () => ({}) },\n];\n","import React from 'react';\n\nimport { Box, Menu } from '@mui/material';\n\nimport { TEditorBlock } from '@editor/core';\n\nimport BlockButton from './block-button';\nimport { BUTTONS } from './buttons';\n\ntype BlocksMenuProps = {\n anchorEl: HTMLElement | null;\n setAnchorEl: (v: HTMLElement | null) => void;\n onSelect: (block: TEditorBlock) => void;\n};\nexport default function BlocksMenu({ anchorEl, setAnchorEl, onSelect }: BlocksMenuProps) {\n const onClose = () => {\n setAnchorEl(null);\n };\n\n const onClick = (block: TEditorBlock) => {\n onSelect(block);\n setAnchorEl(null);\n };\n\n if (anchorEl === null) {\n return null;\n }\n\n return (\n <Menu\n open\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n >\n <Box sx={{ p: 1, display: 'grid', gridTemplateColumns: '1fr 1fr 1fr 1fr' }}>\n {BUTTONS.map((k, i) => (\n <BlockButton key={i} label={k.label} icon={k.icon} onClick={() => onClick(k.block())} />\n ))}\n </Box>\n </Menu>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { AddOutlined } from '@mui/icons-material';\nimport { Fade, IconButton } from '@mui/material';\n\ntype Props = {\n buttonElement: HTMLElement | null;\n onClick: () => void;\n};\nexport default function DividerButton({ buttonElement, onClick }: Props) {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n function listener({ clientX, clientY }: MouseEvent) {\n if (!buttonElement) {\n return;\n }\n const rect = buttonElement.getBoundingClientRect();\n const rectY = rect.y;\n const bottomX = rect.x;\n const topX = bottomX + rect.width;\n\n if (Math.abs(clientY - rectY) < 20) {\n if (bottomX < clientX && clientX < topX) {\n setVisible(true);\n return;\n }\n }\n setVisible(false);\n }\n window.addEventListener('mousemove', listener);\n return () => {\n window.removeEventListener('mousemove', listener);\n };\n }, [buttonElement, setVisible]);\n\n return (\n <Fade in={visible}>\n <IconButton\n size=\"small\"\n sx={{\n p: 0.12,\n position: 'absolute',\n top: '-12px',\n left: '50%',\n transform: 'translateX(-10px)',\n bgcolor: 'brand.blue',\n color: 'primary.contrastText',\n zIndex: 'fab',\n '&:hover, &:active, &:focus': {\n bgcolor: 'brand.blue',\n color: 'primary.contrastText',\n },\n }}\n onClick={(ev) => {\n ev.stopPropagation();\n onClick();\n }}\n >\n <AddOutlined fontSize=\"small\" />\n </IconButton>\n </Fade>\n );\n}\n","import React from 'react';\n\nimport { AddOutlined } from '@mui/icons-material';\nimport { ButtonBase } from '@mui/material';\n\ntype Props = {\n onClick: () => void;\n};\nexport default function PlaceholderButton({ onClick }: Props) {\n return (\n <ButtonBase\n onClick={(ev) => {\n ev.stopPropagation();\n onClick();\n }}\n sx={{\n display: 'flex',\n alignContent: 'center',\n justifyContent: 'center',\n height: 48,\n width: '100%',\n bgcolor: 'rgba(0,0,0, 0.05)',\n }}\n >\n <AddOutlined\n sx={{\n p: 0.12,\n bgcolor: 'brand.blue',\n borderRadius: 24,\n color: 'primary.contrastText',\n }}\n fontSize=\"small\"\n />\n </ButtonBase>\n );\n}\n","import React, { useState } from 'react';\n\nimport { TEditorBlock } from '@editor/core';\n\nimport BlocksMenu from './blocks-menu';\nimport DividerButton from './divider-button';\nimport PlaceholderButton from './placeholder-button';\n\ntype Props = {\n placeholder?: boolean;\n onSelect: (block: TEditorBlock) => void;\n};\nexport default function AddBlockButton({ onSelect, placeholder }: Props) {\n const [menuAnchorEl, setMenuAnchorEl] = useState<HTMLElement | null>(null);\n const [buttonElement, setButtonElement] = useState<HTMLElement | null>(null);\n\n const handleButtonClick = () => {\n setMenuAnchorEl(buttonElement);\n };\n\n const renderButton = () => {\n if (placeholder) {\n return <PlaceholderButton onClick={handleButtonClick} />;\n } else {\n return <DividerButton buttonElement={buttonElement} onClick={handleButtonClick} />;\n }\n };\n\n return (\n <>\n <div ref={setButtonElement} style={{ position: 'relative' }}>\n {renderButton()}\n </div>\n <BlocksMenu anchorEl={menuAnchorEl} setAnchorEl={setMenuAnchorEl} onSelect={onSelect} />\n </>\n );\n}\n","import React, { Fragment } from 'react';\n\nimport { TEditorBlock } from '@editor/core';\nimport EditorBlock from '@editor/editor-block';\n\nimport AddBlockButton from './add-block-menu';\n\nexport type EditorChildrenChange = {\n blockId: string;\n block: TEditorBlock;\n childrenIds: string[];\n};\n\nfunction generateId() {\n return `block-${Date.now()}`;\n}\n\nexport type EditorChildrenIdsProps = {\n childrenIds: string[] | null | undefined;\n onChange: (val: EditorChildrenChange) => void;\n};\nexport default function EditorChildrenIds({ childrenIds, onChange }: EditorChildrenIdsProps) {\n const appendBlock = (block: TEditorBlock) => {\n const blockId = generateId();\n return onChange({\n blockId,\n block,\n childrenIds: [...(childrenIds || []), blockId],\n });\n };\n\n const insertBlock = (block: TEditorBlock, index: number) => {\n const blockId = generateId();\n const newChildrenIds = [...(childrenIds || [])];\n newChildrenIds.splice(index, 0, blockId);\n return onChange({\n blockId,\n block,\n childrenIds: newChildrenIds,\n });\n };\n\n if (!childrenIds || childrenIds.length === 0) {\n return <AddBlockButton placeholder onSelect={appendBlock} />;\n }\n\n return (\n <>\n {childrenIds.map((childId, i) => (\n <Fragment key={childId}>\n <AddBlockButton onSelect={(block) => insertBlock(block, i)} />\n <EditorBlock id={childId} />\n </Fragment>\n ))}\n <AddBlockButton onSelect={appendBlock} />\n </>\n );\n}\n","import React from 'react';\n\nimport { ColumnsContainer as BaseColumnsContainer } from '@blocks';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, setSelectedBlockId } from '@editor/editor-context';\nimport EditorChildrenIds, { EditorChildrenChange } from '@editor/blocks/helpers/editor-children-ids';\n\nimport ColumnsContainerPropsSchema, { ColumnsContainerProps } from './columns-container-props-schema';\n\nconst EMPTY_COLUMNS = [{ childrenIds: [] }, { childrenIds: [] }, { childrenIds: [] }];\n\nexport default function ColumnsContainerEditor({ style, props }: ColumnsContainerProps) {\n const currentBlockId = useCurrentBlockId();\n\n const { columns, ...restProps } = props ?? {};\n const columnsValue = columns ?? EMPTY_COLUMNS;\n\n const updateColumn = (columnIndex: 0 | 1 | 2, { block, blockId, childrenIds }: EditorChildrenChange) => {\n const nColumns = [...columnsValue];\n nColumns[columnIndex] = { childrenIds };\n setDocument({\n [blockId]: block,\n [currentBlockId]: {\n type: 'ColumnsContainer',\n data: ColumnsContainerPropsSchema.parse({\n style,\n props: {\n ...restProps,\n columns: nColumns,\n },\n }),\n },\n });\n setSelectedBlockId(blockId);\n };\n\n return (\n <BaseColumnsContainer\n props={restProps}\n style={style}\n columns={[\n <EditorChildrenIds childrenIds={columns?.[0]?.childrenIds} onChange={(change) => updateColumn(0, change)} />,\n <EditorChildrenIds childrenIds={columns?.[1]?.childrenIds} onChange={(change) => updateColumn(1, change)} />,\n <EditorChildrenIds childrenIds={columns?.[2]?.childrenIds} onChange={(change) => updateColumn(2, change)} />,\n ]}\n />\n );\n}\n","import React from 'react';\n\nimport { Container as BaseContainer } from '@blocks';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, setSelectedBlockId, useDocument } from '@editor/editor-context';\nimport EditorChildrenIds from '@editor/blocks/helpers/editor-children-ids';\n\nimport { ContainerProps } from './container-props-schema';\n\nexport default function ContainerEditor({ style, props }: ContainerProps) {\n const childrenIds = props?.childrenIds ?? [];\n\n const document = useDocument();\n const currentBlockId = useCurrentBlockId();\n\n return (\n <BaseContainer style={style}>\n <EditorChildrenIds\n childrenIds={childrenIds}\n onChange={({ block, blockId, childrenIds }) => {\n setDocument({\n [blockId]: block,\n [currentBlockId]: {\n type: 'Container',\n data: {\n ...document[currentBlockId].data,\n props: { childrenIds: childrenIds },\n },\n },\n });\n setSelectedBlockId(blockId);\n }}\n />\n </BaseContainer>\n );\n}\n","import React, { useCallback, useEffect } from 'react';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { resetDocument, setDocument, setSelectedBlockId, useDocument, useSelectedBlockId } from '@editor/editor-context';\nimport { TEditorBlock } from '@editor/core';\nimport EditorChildrenIds from '@editor/blocks/helpers/editor-children-ids';\n\nimport { EmailLayoutProps } from './email-layout-props-schema';\n\nfunction generateId() {\n return `block-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;\n}\n\nfunction rekeyBlocks(blocks: Record<string, any>, rootBlockId: string): { blocks: Record<string, any>; newRootId: string } {\n const idMap: Record<string, string> = {};\n for (const oldId of Object.keys(blocks)) {\n idMap[oldId] = generateId();\n }\n\n const remapIds = (ids: string[] | null | undefined) =>\n ids?.map((id) => idMap[id] ?? id);\n\n const newBlocks: Record<string, any> = {};\n for (const [oldId, block] of Object.entries(blocks)) {\n const b = block as TEditorBlock;\n const newId = idMap[oldId];\n if (b.type === 'Container') {\n newBlocks[newId] = {\n ...b,\n data: {\n ...b.data,\n props: { ...b.data.props, childrenIds: remapIds(b.data.props?.childrenIds) },\n },\n };\n } else if (b.type === 'ColumnsContainer') {\n newBlocks[newId] = {\n ...b,\n data: {\n ...b.data,\n props: {\n ...b.data.props,\n columns: b.data.props?.columns?.map((c: any) => ({\n ...c,\n childrenIds: remapIds(c.childrenIds),\n })),\n },\n },\n };\n } else {\n newBlocks[newId] = b;\n }\n }\n return { blocks: newBlocks, newRootId: idMap[rootBlockId] };\n}\n\nfunction collectBlock(blockId: string, document: Record<string, any>): Record<string, any> {\n const block = document[blockId] as TEditorBlock;\n if (!block) return {};\n const result: Record<string, any> = { [blockId]: block };\n if (block.type === 'Container') {\n for (const childId of block.data.props?.childrenIds ?? []) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n if (block.type === 'ColumnsContainer') {\n for (const col of block.data.props?.columns ?? []) {\n for (const childId of col.childrenIds ?? []) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n }\n return result;\n}\n\nfunction getFontFamily(fontFamily: EmailLayoutProps['fontFamily']) {\n const f = fontFamily ?? 'MODERN_SANS';\n switch (f) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n}\n\nexport default function EmailLayoutEditor(props: EmailLayoutProps) {\n const childrenIds = props.childrenIds ?? [];\n const document = useDocument();\n const currentBlockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n\n const handleDelete = useCallback((e: KeyboardEvent) => {\n if (e.key !== 'Delete' && e.key !== 'Backspace') return;\n if (!selectedBlockId) return;\n\n const target = e.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n\n e.preventDefault();\n\n const filterChildrenIds = (ids: string[] | null | undefined) =>\n ids?.filter((id) => id !== selectedBlockId);\n\n const nDocument: Record<string, any> = { ...document };\n for (const [id, b] of Object.entries(nDocument)) {\n const block = b as TEditorBlock;\n if (id === selectedBlockId) continue;\n switch (block.type) {\n case 'EmailLayout':\n nDocument[id] = { ...block, data: { ...block.data, childrenIds: filterChildrenIds(block.data.childrenIds) } };\n break;\n case 'Container':\n nDocument[id] = { ...block, data: { ...block.data, props: { ...block.data.props, childrenIds: filterChildrenIds(block.data.props?.childrenIds) } } };\n break;\n case 'ColumnsContainer':\n nDocument[id] = { ...block, data: { ...block.data, props: { ...block.data.props, columns: block.data.props?.columns?.map((c: any) => ({ ...c, childrenIds: filterChildrenIds(c.childrenIds) })) } } };\n break;\n default:\n nDocument[id] = block;\n }\n }\n delete nDocument[selectedBlockId];\n resetDocument(nDocument);\n }, [selectedBlockId, document]);\n\n const handleCopy = useCallback((e: KeyboardEvent) => {\n if (!(e.metaKey || e.ctrlKey) || e.key !== 'c') return;\n if (!selectedBlockId) return;\n\n // Don't intercept when typing in an input/textarea\n const target = e.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n\n const blocks = collectBlock(selectedBlockId, document);\n if (Object.keys(blocks).length === 0) return;\n\n e.preventDefault();\n const payload = JSON.stringify({ __emailEditorBlocks: true, rootBlockId: selectedBlockId, blocks });\n navigator.clipboard.writeText(payload);\n }, [selectedBlockId, document]);\n\n const handlePaste = useCallback(async (e: ClipboardEvent) => {\n // Don't intercept paste when typing in an input/textarea\n const target = e.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n\n const text = e.clipboardData?.getData('text/plain');\n if (!text) return;\n\n let parsed: any;\n try {\n parsed = JSON.parse(text);\n } catch {\n return;\n }\n\n if (!parsed?.__emailEditorBlocks || !parsed.rootBlockId || !parsed.blocks) return;\n\n e.preventDefault();\n\n const { blocks: newBlocks, newRootId } = rekeyBlocks(parsed.blocks, parsed.rootBlockId);\n const doc = { ...document };\n\n // Add all new blocks to the document\n Object.assign(doc, newBlocks);\n\n // Insert after selected block, or append to end\n const currentChildrenIds = [...(childrenIds || [])];\n const insertIndex = selectedBlockId ? currentChildrenIds.indexOf(selectedBlockId) + 1 : currentChildrenIds.length;\n currentChildrenIds.splice(insertIndex, 0, newRootId);\n\n doc[currentBlockId] = {\n type: 'EmailLayout',\n data: {\n ...document[currentBlockId].data,\n childrenIds: currentChildrenIds,\n },\n };\n\n resetDocument(doc);\n setSelectedBlockId(newRootId);\n }, [document, childrenIds, selectedBlockId, currentBlockId]);\n\n useEffect(() => {\n window.addEventListener('keydown', handleDelete);\n window.addEventListener('keydown', handleCopy);\n window.addEventListener('paste', handlePaste);\n return () => {\n window.removeEventListener('keydown', handleDelete);\n window.removeEventListener('keydown', handleCopy);\n window.removeEventListener('paste', handlePaste);\n };\n }, [handleDelete, handleCopy, handlePaste]);\n\n return (\n <div\n onClick={() => {\n setSelectedBlockId(null);\n }}\n style={{\n backgroundColor: props.backdropColor ?? '#F5F5F5',\n color: props.textColor ?? '#262626',\n fontFamily: getFontFamily(props.fontFamily),\n fontSize: '16px',\n fontWeight: '400',\n letterSpacing: '0.15008px',\n lineHeight: '1.5',\n margin: '0',\n padding: '32px 0',\n width: '100%',\n minHeight: '100%',\n }}\n >\n <table\n align=\"center\"\n width=\"100%\"\n style={{\n margin: '0 auto',\n maxWidth: '600px',\n backgroundColor: props.canvasColor ?? '#FFFFFF',\n borderRadius: props.borderRadius ?? undefined,\n border: (() => {\n const v = props.borderColor;\n if (!v) {\n return undefined;\n }\n return `1px solid ${v}`;\n })(),\n }}\n role=\"presentation\"\n cellSpacing=\"0\"\n cellPadding=\"0\"\n border={0}\n >\n <tbody>\n <tr style={{ width: '100%' }}>\n <td>\n <EditorChildrenIds\n childrenIds={childrenIds}\n onChange={({ block, blockId, childrenIds }) => {\n setDocument({\n [blockId]: block,\n [currentBlockId]: {\n type: 'EmailLayout',\n data: {\n ...document[currentBlockId].data,\n childrenIds: childrenIds,\n },\n },\n });\n setSelectedBlockId(blockId);\n }}\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n","import React from 'react';\n\nimport { ArrowDownwardOutlined, ArrowUpwardOutlined, ContentCopyOutlined, DeleteOutlined } from '@mui/icons-material';\nimport { IconButton, Paper, Stack, SxProps, Tooltip } from '@mui/material';\n\nimport { TEditorBlock } from '@editor/core';\nimport { resetDocument, setSelectedBlockId, useDocument } from '@editor/editor-context';\nimport { ColumnsContainerProps } from '@editor/blocks/columns-container/columns-container-props-schema';\n\nconst sx: SxProps = {\n position: 'absolute',\n top: 0,\n left: -56,\n borderRadius: 64,\n paddingX: 0.5,\n paddingY: 1,\n zIndex: 'fab',\n};\n\nfunction collectBlock(blockId: string, document: Record<string, any>): Record<string, any> {\n const block = document[blockId] as TEditorBlock;\n if (!block) return {};\n const result: Record<string, any> = { [blockId]: block };\n\n // Collect children from Container\n if (block.type === 'Container') {\n const childrenIds = block.data.props?.childrenIds ?? [];\n for (const childId of childrenIds) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n // Collect children from ColumnsContainer\n if (block.type === 'ColumnsContainer') {\n const columns = block.data.props?.columns ?? [];\n for (const col of columns) {\n for (const childId of col.childrenIds ?? []) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n }\n // Collect children from EmailLayout\n if (block.type === 'EmailLayout') {\n const childrenIds = block.data.childrenIds ?? [];\n for (const childId of childrenIds) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n return result;\n}\n\ntype Props = {\n blockId: string;\n};\nexport default function TuneMenu({ blockId }: Props) {\n const document = useDocument();\n\n const handleDeleteClick = () => {\n const filterChildrenIds = (childrenIds: string[] | null | undefined) => {\n if (!childrenIds) {\n return childrenIds;\n }\n return childrenIds.filter((f) => f !== blockId);\n };\n const nDocument: typeof document = { ...document };\n for (const [id, b] of Object.entries(nDocument)) {\n const block = b as TEditorBlock;\n if (id === blockId) {\n continue;\n }\n switch (block.type) {\n case 'EmailLayout':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n childrenIds: filterChildrenIds(block.data.childrenIds),\n },\n };\n break;\n case 'Container':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n props: {\n ...block.data.props,\n childrenIds: filterChildrenIds(block.data.props?.childrenIds),\n },\n },\n };\n break;\n case 'ColumnsContainer':\n nDocument[id] = {\n type: 'ColumnsContainer',\n data: {\n style: block.data.style,\n props: {\n ...block.data.props,\n columns: block.data.props?.columns?.map((c) => ({\n childrenIds: filterChildrenIds(c.childrenIds),\n })),\n },\n } as ColumnsContainerProps,\n };\n break;\n default:\n nDocument[id] = block;\n }\n }\n delete nDocument[blockId];\n resetDocument(nDocument);\n };\n\n const handleCopyClick = () => {\n const blocks = collectBlock(blockId, document);\n const payload = JSON.stringify({ __emailEditorBlocks: true, rootBlockId: blockId, blocks });\n navigator.clipboard.writeText(payload);\n };\n\n const handleMoveClick = (direction: 'up' | 'down') => {\n const moveChildrenIds = (ids: string[] | null | undefined) => {\n if (!ids) {\n return ids;\n }\n const index = ids.indexOf(blockId);\n if (index < 0) {\n return ids;\n }\n const childrenIds = [...ids];\n if (direction === 'up' && index > 0) {\n [childrenIds[index], childrenIds[index - 1]] = [childrenIds[index - 1], childrenIds[index]];\n } else if (direction === 'down' && index < childrenIds.length - 1) {\n [childrenIds[index], childrenIds[index + 1]] = [childrenIds[index + 1], childrenIds[index]];\n }\n return childrenIds;\n };\n const nDocument: typeof document = { ...document };\n for (const [id, b] of Object.entries(nDocument)) {\n const block = b as TEditorBlock;\n if (id === blockId) {\n continue;\n }\n switch (block.type) {\n case 'EmailLayout':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n childrenIds: moveChildrenIds(block.data.childrenIds),\n },\n };\n break;\n case 'Container':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n props: {\n ...block.data.props,\n childrenIds: moveChildrenIds(block.data.props?.childrenIds),\n },\n },\n };\n break;\n case 'ColumnsContainer':\n nDocument[id] = {\n type: 'ColumnsContainer',\n data: {\n style: block.data.style,\n props: {\n ...block.data.props,\n columns: block.data.props?.columns?.map((c) => ({\n childrenIds: moveChildrenIds(c.childrenIds),\n })),\n },\n } as ColumnsContainerProps,\n };\n break;\n default:\n nDocument[id] = block;\n }\n }\n\n resetDocument(nDocument);\n setSelectedBlockId(blockId);\n };\n\n return (\n <Paper sx={sx} onClick={(ev) => ev.stopPropagation()}>\n <Stack>\n <Tooltip title=\"Move up\" placement=\"left-start\">\n <IconButton onClick={() => handleMoveClick('up')} sx={{ color: 'text.primary' }}>\n <ArrowUpwardOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Move down\" placement=\"left-start\">\n <IconButton onClick={() => handleMoveClick('down')} sx={{ color: 'text.primary' }}>\n <ArrowDownwardOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Copy block\" placement=\"left-start\">\n <IconButton onClick={handleCopyClick} sx={{ color: 'text.primary' }}>\n <ContentCopyOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Delete\" placement=\"left-start\">\n <IconButton onClick={handleDeleteClick} sx={{ color: 'text.primary' }}>\n <DeleteOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </Stack>\n </Paper>\n );\n}\n","import React, { CSSProperties, useState } from 'react';\n\nimport { Box } from '@mui/material';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setSelectedBlockId, useSelectedBlockId } from '@editor/editor-context';\n\nimport TuneMenu from './tune-menu';\n\ntype TEditorBlockWrapperProps = {\n children: JSX.Element;\n};\n\nexport default function EditorBlockWrapper({ children }: TEditorBlockWrapperProps) {\n const selectedBlockId = useSelectedBlockId();\n const [mouseInside, setMouseInside] = useState(false);\n const blockId = useCurrentBlockId();\n\n let outline: CSSProperties['outline'];\n if (selectedBlockId === blockId) {\n outline = '2px solid rgba(0,121,204, 1)';\n } else if (mouseInside) {\n outline = '2px solid rgba(0,121,204, 0.3)';\n }\n\n const renderMenu = () => {\n if (selectedBlockId !== blockId) {\n return null;\n }\n return <TuneMenu blockId={blockId} />;\n };\n\n return (\n <Box\n sx={{\n position: 'relative',\n maxWidth: '100%',\n outlineOffset: '-1px',\n outline,\n }}\n onMouseEnter={(ev) => {\n setMouseInside(true);\n ev.stopPropagation();\n }}\n onMouseLeave={() => {\n setMouseInside(false);\n }}\n onClick={(ev) => {\n setSelectedBlockId(blockId);\n ev.stopPropagation();\n }}\n >\n {renderMenu()}\n {children}\n </Box>\n );\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { ButtonProps, ButtonPropsDefaults } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useSelectedBlockId } from '@editor/editor-context';\n\nfunction getFontFamily(fontFamily: string | null | undefined) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst getPadding = (padding: ButtonProps['style'] extends { padding?: infer P } ? P : never) =>\n padding ? `${(padding as any).top}px ${(padding as any).right}px ${(padding as any).bottom}px ${(padding as any).left}px` : undefined;\n\nfunction getRoundedCorners(props: ButtonProps['props']) {\n const buttonStyle = props?.buttonStyle ?? ButtonPropsDefaults.buttonStyle;\n switch (buttonStyle) {\n case 'rectangle':\n return undefined;\n case 'pill':\n return 64;\n case 'rounded':\n default:\n return 4;\n }\n}\n\nfunction getButtonSizePadding(props: ButtonProps['props']) {\n const size = props?.size ?? ButtonPropsDefaults.size;\n switch (size) {\n case 'x-small':\n return [4, 8] as const;\n case 'small':\n return [8, 12] as const;\n case 'large':\n return [16, 32] as const;\n case 'medium':\n default:\n return [12, 20] as const;\n }\n}\n\nexport default function ButtonEditor({ style, props }: ButtonProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const isSelected = selectedBlockId === blockId;\n\n const text = props?.text ?? ButtonPropsDefaults.text;\n const fullWidth = props?.fullWidth ?? ButtonPropsDefaults.fullWidth;\n const buttonTextColor = props?.buttonTextColor ?? ButtonPropsDefaults.buttonTextColor;\n const buttonBackgroundColor = props?.buttonBackgroundColor ?? ButtonPropsDefaults.buttonBackgroundColor;\n\n const [localText, setLocalText] = useState(text);\n\n useEffect(() => {\n setLocalText(text);\n }, [text]);\n\n const padding = getButtonSizePadding(props);\n\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n\n const linkStyle: CSSProperties = {\n color: buttonTextColor,\n fontSize: style?.fontSize ?? 16,\n fontFamily: getFontFamily(style?.fontFamily),\n fontWeight: style?.fontWeight ?? 'bold',\n backgroundColor: buttonBackgroundColor,\n borderRadius: getRoundedCorners(props),\n display: fullWidth ? 'block' : 'inline-block',\n padding: `${padding[0]}px ${padding[1]}px`,\n textDecoration: 'none',\n };\n\n const handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newText = e.target.value;\n setLocalText(newText);\n setDocument({\n [blockId]: {\n type: 'Button',\n data: {\n style,\n props: {\n ...props,\n text: newText,\n },\n },\n },\n });\n };\n\n if (isSelected) {\n const inputStyle: CSSProperties = {\n ...linkStyle,\n border: 'none',\n outline: 'none',\n cursor: 'text',\n width: fullWidth ? '100%' : undefined,\n textAlign: 'center',\n };\n\n return (\n <div style={wrapperStyle}>\n <input\n type=\"text\"\n value={localText}\n onChange={handleTextChange}\n style={inputStyle}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n );\n }\n\n return (\n <div style={wrapperStyle}>\n <span style={linkStyle}>\n <span>{text}</span>\n </span>\n </div>\n );\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { HeadingProps, HeadingPropsDefaults } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useDocument, useSelectedBlockId } from '@editor/editor-context';\n\n// Helper function to get font family from existing Heading component\nfunction getFontFamily(fontFamily: string | null | undefined) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n case 'inherit':\n case null:\n case undefined:\n return undefined;\n }\n return undefined;\n}\n\n// Helper function to get padding from existing utils\nfunction getPadding(padding: any) {\n if (!padding) return undefined;\n \n // Object format from the schema (matching the original blocks)\n if (typeof padding === 'object' && !Array.isArray(padding) && \n 'top' in padding && 'right' in padding && 'bottom' in padding && 'left' in padding) {\n return `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n }\n \n // For backward compatibility with the array format\n if (Array.isArray(padding)) {\n if (padding.length === 1) {\n return `${padding[0]}px`;\n }\n if (padding.length === 2) {\n return `${padding[0]}px ${padding[1]}px`;\n }\n if (padding.length === 3) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px`;\n }\n if (padding.length === 4) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px ${padding[3]}px`;\n }\n }\n \n // For single number\n if (typeof padding === 'number') {\n return `${padding}px`;\n }\n \n return undefined;\n}\n\n// Helper function to get font size based on heading level\nfunction getFontSize(level: 'h1' | 'h2' | 'h3') {\n switch (level) {\n case 'h1':\n return 32;\n case 'h2':\n return 24;\n case 'h3':\n return 20;\n }\n}\n\nexport default function HeadingEditor({ style, props }: HeadingProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const document = useDocument();\n const isSelected = selectedBlockId === blockId;\n \n // Get the current text and level from props\n const level = props?.level ?? HeadingPropsDefaults.level;\n const textContent = props?.text ?? HeadingPropsDefaults.text;\n const [localText, setLocalText] = useState(textContent);\n \n // Get email root settings for inherited font\n const rootBlock = document.root;\n const rootFontFamily = rootBlock && rootBlock.type === 'EmailLayout' \n ? getFontFamily(rootBlock.data.fontFamily) \n : '\"Helvetica Neue\", Arial, sans-serif';\n \n // Update local state when text changes from other sources\n useEffect(() => {\n setLocalText(textContent);\n }, [textContent]);\n \n // Determine the actual font family to use\n const fontFamily = getFontFamily(style?.fontFamily) || rootFontFamily;\n \n // Create styles for displaying the heading\n const hStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontWeight: style?.fontWeight ?? 'bold',\n textAlign: style?.textAlign ?? undefined,\n margin: 0,\n fontFamily,\n fontSize: getFontSize(level),\n padding: getPadding(style?.padding),\n width: '100%',\n minHeight: '1em',\n };\n \n // Additional styles for the textarea\n const textareaStyle: CSSProperties = {\n ...hStyle,\n border: 'none',\n outline: 'none',\n resize: 'none',\n backgroundColor: 'transparent',\n overflow: 'hidden',\n lineHeight: 'inherit',\n margin: 0,\n display: 'block',\n width: '100%'\n };\n \n // Handle text changes\n const handleTextChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newText = e.target.value;\n setLocalText(newText);\n \n // Update the document with the new text\n setDocument({\n [blockId]: {\n type: 'Heading',\n data: {\n style,\n props: {\n ...props,\n text: newText\n }\n }\n }\n });\n };\n \n // Auto-resize textarea based on content\n const adjustTextareaHeight = (element: HTMLTextAreaElement) => {\n if (element) {\n element.style.height = 'auto';\n element.style.height = `${element.scrollHeight}px`;\n }\n };\n\n // If the block is selected, show a textarea\n if (isSelected) {\n return (\n <textarea\n value={localText}\n onChange={handleTextChange}\n style={textareaStyle}\n rows={1}\n onInput={(e) => adjustTextareaHeight(e.target as HTMLTextAreaElement)}\n ref={(el) => el && adjustTextareaHeight(el)}\n onClick={(e) => e.stopPropagation()}\n />\n );\n }\n \n // Otherwise, render the appropriate heading level\n switch (level) {\n case 'h1':\n return <h1 style={hStyle}>{textContent}</h1>;\n case 'h2':\n return <h2 style={hStyle}>{textContent}</h2>;\n case 'h3':\n return <h3 style={hStyle}>{textContent}</h3>;\n }\n} ","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { HtmlProps } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useSelectedBlockId } from '@editor/editor-context';\n\nexport default function HtmlEditor({ style, props }: HtmlProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const isSelected = selectedBlockId === blockId;\n\n const contents = props?.contents ?? '';\n const [localContents, setLocalContents] = useState(contents);\n\n useEffect(() => {\n setLocalContents(contents);\n }, [contents]);\n\n const cssStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontSize: style?.fontSize ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: style?.padding\n ? `${style.padding.top}px ${style.padding.right}px ${style.padding.bottom}px ${style.padding.left}px`\n : undefined,\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newContents = e.target.value;\n setLocalContents(newContents);\n setDocument({\n [blockId]: {\n type: 'Html',\n data: {\n style,\n props: {\n ...props,\n contents: newContents,\n },\n },\n },\n });\n };\n\n const adjustTextareaHeight = (element: HTMLTextAreaElement) => {\n if (element) {\n element.style.height = 'auto';\n element.style.height = `${element.scrollHeight}px`;\n }\n };\n\n if (isSelected) {\n const textareaStyle: CSSProperties = {\n ...cssStyle,\n fontFamily: '\"Nimbus Mono PS\", \"Courier New\", monospace',\n fontSize: 13,\n color: cssStyle.color ?? '#333',\n border: 'none',\n outline: 'none',\n resize: 'none',\n overflow: 'hidden',\n width: '100%',\n display: 'block',\n margin: 0,\n backgroundColor: 'transparent',\n };\n\n return (\n <div style={cssStyle}>\n <textarea\n value={localContents}\n onChange={handleChange}\n style={textareaStyle}\n rows={3}\n onInput={(e) => adjustTextareaHeight(e.target as HTMLTextAreaElement)}\n ref={(el) => el && adjustTextareaHeight(el)}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n );\n }\n\n if (!contents) {\n return <div style={cssStyle} />;\n }\n return <div style={cssStyle} dangerouslySetInnerHTML={{ __html: contents }} />;\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { SignatureProps, SignaturePropsDefaults } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useSelectedBlockId } from '@editor/editor-context';\n\nfunction getImageBorderRadius(shape: string, size: number): number | undefined {\n switch (shape) {\n case 'circle':\n return size;\n case 'rounded':\n return size * 0.125;\n case 'square':\n default:\n return undefined;\n }\n}\n\nexport default function SignatureEditor({ style, props }: SignatureProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const isSelected = selectedBlockId === blockId;\n\n const greeting = props?.greeting ?? SignaturePropsDefaults.greeting;\n const name = props?.name ?? SignaturePropsDefaults.name;\n const title = props?.title ?? SignaturePropsDefaults.title;\n const company = props?.company ?? SignaturePropsDefaults.company;\n const address = props?.address ?? SignaturePropsDefaults.address;\n const email = props?.email ?? SignaturePropsDefaults.email;\n const phone = props?.phone ?? SignaturePropsDefaults.phone;\n const website = props?.website ?? SignaturePropsDefaults.website;\n const imageUrl = props?.imageUrl ?? SignaturePropsDefaults.imageUrl;\n const imageSize = props?.imageSize ?? SignaturePropsDefaults.imageSize;\n const imageShape = props?.imageShape ?? SignaturePropsDefaults.imageShape;\n const layout = props?.layout ?? SignaturePropsDefaults.layout;\n const nameColor = props?.nameColor ?? SignaturePropsDefaults.nameColor;\n const textColor = props?.textColor ?? SignaturePropsDefaults.textColor;\n const linkColor = props?.linkColor ?? SignaturePropsDefaults.linkColor;\n\n const [localGreeting, setLocalGreeting] = useState(greeting);\n const [localName, setLocalName] = useState(name);\n const [localTitle, setLocalTitle] = useState(title);\n const [localCompany, setLocalCompany] = useState(company);\n const [localAddress, setLocalAddress] = useState(address);\n const [localEmail, setLocalEmail] = useState(email);\n const [localPhone, setLocalPhone] = useState(phone);\n const [localWebsite, setLocalWebsite] = useState(website);\n\n useEffect(() => { setLocalGreeting(greeting); }, [greeting]);\n useEffect(() => { setLocalName(name); }, [name]);\n useEffect(() => { setLocalTitle(title); }, [title]);\n useEffect(() => { setLocalCompany(company); }, [company]);\n useEffect(() => { setLocalAddress(address); }, [address]);\n useEffect(() => { setLocalEmail(email); }, [email]);\n useEffect(() => { setLocalPhone(phone); }, [phone]);\n useEffect(() => { setLocalWebsite(website); }, [website]);\n\n const updateProps = (updates: Partial<typeof props>) => {\n setDocument({\n [blockId]: {\n type: 'Signature',\n data: {\n style,\n props: { ...props, ...updates },\n },\n },\n });\n };\n\n const greetingStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n marginBottom: 8,\n lineHeight: '1.4',\n fontStyle: 'italic',\n };\n\n const nameStyle: CSSProperties = {\n fontSize: 16,\n fontWeight: 'bold',\n color: nameColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const detailStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const linkStyle: CSSProperties = {\n fontSize: 14,\n color: linkColor,\n textDecoration: 'none',\n };\n\n const inputBase: CSSProperties = {\n border: 'none',\n outline: 'none',\n backgroundColor: 'transparent',\n width: '100%',\n padding: 0,\n margin: 0,\n fontFamily: 'inherit',\n };\n\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n padding: style?.padding\n ? `${style.padding.top}px ${style.padding.right}px ${style.padding.bottom}px ${style.padding.left}px`\n : undefined,\n };\n\n const imageElement = imageUrl ? (\n <img\n src={imageUrl}\n alt={name || company}\n width={imageSize}\n height={imageSize}\n style={{\n width: imageSize,\n height: imageSize,\n objectFit: 'cover',\n borderRadius: getImageBorderRadius(imageShape, imageSize),\n display: 'block',\n outline: 'none',\n border: 'none',\n }}\n />\n ) : null;\n\n const greetingElement = isSelected ? (\n <div onClick={(e) => e.stopPropagation()}>\n <input\n value={localGreeting}\n onChange={(e) => { setLocalGreeting(e.target.value); updateProps({ greeting: e.target.value }); }}\n placeholder=\"Greeting (e.g. Best regards,)\"\n style={{ ...inputBase, ...greetingStyle }}\n />\n </div>\n ) : greeting ? (\n <p style={greetingStyle}>{greeting}</p>\n ) : null;\n\n const textContent = isSelected ? (\n <div onClick={(e) => e.stopPropagation()}>\n <input\n value={localName}\n onChange={(e) => { setLocalName(e.target.value); updateProps({ name: e.target.value }); }}\n placeholder=\"Name\"\n style={{ ...inputBase, ...nameStyle }}\n />\n <input\n value={localTitle}\n onChange={(e) => { setLocalTitle(e.target.value); updateProps({ title: e.target.value }); }}\n placeholder=\"Title\"\n style={{ ...inputBase, ...detailStyle }}\n />\n <input\n value={localCompany}\n onChange={(e) => { setLocalCompany(e.target.value); updateProps({ company: e.target.value }); }}\n placeholder=\"Company\"\n style={{ ...inputBase, ...detailStyle }}\n />\n <input\n value={localAddress}\n onChange={(e) => { setLocalAddress(e.target.value); updateProps({ address: e.target.value }); }}\n placeholder=\"Address\"\n style={{ ...inputBase, ...detailStyle }}\n />\n <input\n value={localEmail}\n onChange={(e) => { setLocalEmail(e.target.value); updateProps({ email: e.target.value }); }}\n placeholder=\"Email\"\n style={{ ...inputBase, ...linkStyle, marginTop: 4, display: 'block' }}\n />\n <input\n value={localPhone}\n onChange={(e) => { setLocalPhone(e.target.value); updateProps({ phone: e.target.value }); }}\n placeholder=\"Phone\"\n style={{ ...inputBase, ...linkStyle, display: 'block' }}\n />\n <input\n value={localWebsite}\n onChange={(e) => { setLocalWebsite(e.target.value); updateProps({ website: e.target.value }); }}\n placeholder=\"Website\"\n style={{ ...inputBase, ...linkStyle, display: 'block' }}\n />\n </div>\n ) : (\n <div>\n {name && <p style={nameStyle}>{name}</p>}\n {title && <p style={detailStyle}>{title}</p>}\n {company && <p style={detailStyle}>{company}</p>}\n {address && <p style={detailStyle}>{address}</p>}\n {(email || phone || website) && (\n <p style={{ ...detailStyle, marginTop: 4 }}>\n {email && <span style={linkStyle}>{email}</span>}\n {email && (phone || website) && <span style={detailStyle}> · </span>}\n {phone && <span style={linkStyle}>{phone}</span>}\n {phone && website && <span style={detailStyle}> · </span>}\n {website && <span style={linkStyle}>{website}</span>}\n </p>\n )}\n {!name && !title && !company && !email && !phone && !website && (\n <p style={detailStyle}>Click to edit signature</p>\n )}\n </div>\n );\n\n if (layout === 'vertical') {\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n {imageElement && <div style={{ marginBottom: 12 }}>{imageElement}</div>}\n {textContent}\n </div>\n );\n }\n\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n <table cellPadding=\"0\" cellSpacing=\"0\" border={0} role=\"presentation\">\n <tbody>\n <tr>\n {imageElement && (\n <td style={{ verticalAlign: 'middle', paddingRight: 16 }}>\n {imageElement}\n </td>\n )}\n <td style={{ verticalAlign: 'middle' }}>\n {textContent}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { TextProps, TextPropsDefaults, EmailMarkdown } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useDocument, useSelectedBlockId } from '@editor/editor-context';\n\n// Helper function to get font family from existing Text component\nfunction getFontFamily(fontFamily: string | null | undefined) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n case 'inherit':\n case null:\n case undefined:\n return undefined;\n }\n return undefined;\n}\n\n// Helper function to get padding from existing utils\nfunction getPadding(padding: any) {\n if (!padding) return undefined;\n \n // Object format from the schema (matching the original blocks)\n if (typeof padding === 'object' && !Array.isArray(padding) && \n 'top' in padding && 'right' in padding && 'bottom' in padding && 'left' in padding) {\n return `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n }\n \n // For backward compatibility with the array format\n if (Array.isArray(padding)) {\n if (padding.length === 1) {\n return `${padding[0]}px`;\n }\n if (padding.length === 2) {\n return `${padding[0]}px ${padding[1]}px`;\n }\n if (padding.length === 3) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px`;\n }\n if (padding.length === 4) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px ${padding[3]}px`;\n }\n }\n \n // For single number\n if (typeof padding === 'number') {\n return `${padding}px`;\n }\n \n return undefined;\n}\n\nexport default function TextEditor({ style, props }: TextProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const document = useDocument();\n const isSelected = selectedBlockId === blockId;\n \n // Get the current text from props\n const textContent = props?.text ?? TextPropsDefaults.text;\n const [localText, setLocalText] = useState(textContent);\n const isMarkdown = props?.markdown ?? false;\n \n // Get email root settings for inherited font\n const rootBlock = document.root;\n const rootFontFamily = rootBlock && rootBlock.type === 'EmailLayout' \n ? getFontFamily(rootBlock.data.fontFamily) \n : '\"Helvetica Neue\", Arial, sans-serif';\n \n // Update local state when text changes from other sources\n useEffect(() => {\n setLocalText(textContent);\n }, [textContent]);\n \n // Determine the actual font family to use\n const fontFamily = getFontFamily(style?.fontFamily) || rootFontFamily;\n \n // Create styles for displaying the text\n const wStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontSize: style?.fontSize ?? undefined,\n fontFamily,\n fontWeight: style?.fontWeight ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n width: '100%',\n minHeight: '1em'\n };\n \n // Additional styles for the textarea\n const textareaStyle: CSSProperties = {\n ...wStyle,\n border: 'none',\n outline: 'none',\n resize: 'none',\n backgroundColor: 'transparent',\n overflow: 'hidden',\n lineHeight: 'inherit',\n margin: 0,\n display: 'block',\n width: '100%',\n fontSize: wStyle.fontSize,\n fontWeight: wStyle.fontWeight,\n textAlign: wStyle.textAlign\n };\n \n // Handle text changes\n const handleTextChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newText = e.target.value;\n setLocalText(newText);\n \n // Update the document with the new text\n setDocument({\n [blockId]: {\n type: 'Text',\n data: {\n style,\n props: {\n ...props,\n text: newText\n }\n }\n }\n });\n };\n \n // Auto-resize textarea based on content\n const adjustTextareaHeight = (element: HTMLTextAreaElement) => {\n if (element) {\n element.style.height = 'auto';\n element.style.height = `${element.scrollHeight}px`;\n }\n };\n\n // If the block is selected and not markdown, show a textarea\n if (isSelected && !isMarkdown) {\n return (\n <textarea\n value={localText}\n onChange={handleTextChange}\n style={textareaStyle}\n rows={1}\n onInput={(e) => adjustTextareaHeight(e.target as HTMLTextAreaElement)}\n ref={(el) => el && adjustTextareaHeight(el)}\n onClick={(e) => e.stopPropagation()}\n />\n );\n }\n \n // Otherwise, just display the text as before\n if (isMarkdown) {\n // For markdown content, use the EmailMarkdown component\n return <EmailMarkdown style={wStyle} markdown={textContent} />;\n }\n \n return <div style={wStyle}>{textContent}</div>;\n} ","import React from 'react';\nimport { z } from 'zod';\n\nimport {\n Avatar, AvatarPropsSchema,\n ButtonPropsSchema,\n Divider, DividerPropsSchema,\n HeadingPropsSchema,\n HtmlPropsSchema,\n Image, ImagePropsSchema,\n SignaturePropsSchema,\n Spacer, SpacerPropsSchema,\n TextPropsSchema\n} from '@blocks';\nimport {\n buildBlockComponent,\n buildBlockConfigurationDictionary,\n buildBlockConfigurationSchema,\n} from '@core';\n\nimport ColumnsContainerEditor from '@editor/blocks/columns-container/columns-container-editor';\nimport ColumnsContainerPropsSchema from '@editor/blocks/columns-container/columns-container-props-schema';\nimport ContainerEditor from '@editor/blocks/container/container-editor';\nimport ContainerPropsSchema from '@editor/blocks/container/container-props-schema';\nimport EmailLayoutEditor from '@editor/blocks/email-layout/email-layout-editor';\nimport EmailLayoutPropsSchema from '@editor/blocks/email-layout/email-layout-props-schema';\nimport EditorBlockWrapper from '@editor/blocks/helpers/block-wrappers/editor-block-wrapper';\nimport ButtonEditor from '@editor/blocks/button/button-editor';\nimport HeadingEditor from '@editor/blocks/heading/heading-editor';\nimport HtmlEditor from '@editor/blocks/html/html-editor';\nimport SignatureEditor from '@editor/blocks/signature/signature-editor';\nimport TextEditor from '@editor/blocks/text/text-editor';\n\nconst EDITOR_DICTIONARY = buildBlockConfigurationDictionary({\n Avatar: {\n schema: AvatarPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <Avatar {...props} />\n </EditorBlockWrapper>\n ),\n },\n Button: {\n schema: ButtonPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <ButtonEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Container: {\n schema: ContainerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <ContainerEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n ColumnsContainer: {\n schema: ColumnsContainerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <ColumnsContainerEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Heading: {\n schema: HeadingPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <HeadingEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Html: {\n schema: HtmlPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <HtmlEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Image: {\n schema: ImagePropsSchema,\n Component: (data) => {\n const props = {\n ...data,\n props: {\n ...data.props,\n url: data.props?.url ?? 'https://placehold.co/600x400@2x/F8F8F8/CCC?text=Your%20image',\n linkHref: null,\n },\n };\n return (\n <EditorBlockWrapper>\n <Image {...props} />\n </EditorBlockWrapper>\n );\n },\n },\n Text: {\n schema: TextPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <TextEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n EmailLayout: {\n schema: EmailLayoutPropsSchema,\n Component: (p) => <EmailLayoutEditor {...p} />,\n },\n Spacer: {\n schema: SpacerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <Spacer {...props} />\n </EditorBlockWrapper>\n ),\n },\n Divider: {\n schema: DividerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <Divider {...props} />\n </EditorBlockWrapper>\n ),\n },\n Signature: {\n schema: SignaturePropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <SignatureEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n});\n\nexport const EditorBlock = buildBlockComponent(EDITOR_DICTIONARY);\nexport const EditorBlockSchema = buildBlockConfigurationSchema(EDITOR_DICTIONARY);\nexport const EditorConfigurationSchema = z.record(z.string(), EditorBlockSchema);\n\nexport type TEditorBlock = z.infer<typeof EditorBlockSchema>;\nexport type TEditorConfiguration = Record<string, TEditorBlock>;\n","import React, { createContext, useContext } from 'react';\n\nimport { EditorBlock as CoreEditorBlock } from './core';\nimport { useDocument } from './editor-context';\n\nconst EditorBlockContext = createContext<string | null>(null);\nexport const useCurrentBlockId = () => useContext(EditorBlockContext)!;\n\ntype EditorBlockProps = {\n id: string;\n};\n\n/**\n *\n * @param id - Block id\n * @returns EditorBlock component that loads data from the EditorDocumentContext\n */\nexport default function EditorBlock({ id }: EditorBlockProps) {\n const document = useDocument();\n const block = document[id];\n if (!block) {\n throw new Error('Could not find block');\n }\n return (\n <EditorBlockContext.Provider value={id}>\n <CoreEditorBlock {...block} />\n </EditorBlockContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { AppRegistrationOutlined, LastPageOutlined } from '@mui/icons-material';\nimport { IconButton } from '@mui/material';\n\nimport { toggleInspectorDrawerOpen, useInspectorDrawerOpen } from '@editor/editor-context';\n\nexport default function ToggleInspectorPanelButton() {\n const inspectorDrawerOpen = useInspectorDrawerOpen();\n\n const handleClick = () => {\n toggleInspectorDrawerOpen();\n };\n if (inspectorDrawerOpen) {\n return (\n <IconButton onClick={handleClick}>\n <LastPageOutlined fontSize=\"small\" />\n </IconButton>\n );\n }\n return (\n <IconButton onClick={handleClick}>\n <AppRegistrationOutlined fontSize=\"small\" />\n </IconButton>\n );\n}\n","import React from 'react';\n\nimport { FirstPageOutlined, MenuOutlined } from '@mui/icons-material';\nimport { IconButton } from '@mui/material';\n\nimport { toggleSamplesDrawerOpen, useSamplesDrawerOpen } from '@editor/editor-context';\n\nfunction useIcon() {\n const samplesDrawerOpen = useSamplesDrawerOpen();\n if (samplesDrawerOpen) {\n return <FirstPageOutlined fontSize=\"small\" />;\n }\n return <MenuOutlined fontSize=\"small\" />;\n}\n\nexport default function ToggleSamplesPanelButton() {\n const icon = useIcon();\n return <IconButton onClick={toggleSamplesDrawerOpen}>{icon}</IconButton>;\n}\n","/**\n * HTML formatter using the lightweight htmlfy library\n * https://github.com/j4w8n/htmlfy\n */\n\nimport { prettify } from 'htmlfy';\n\n/**\n * Format HTML string using htmlfy's prettify function \n * @param html The HTML string to format\n * @param spaces Indentation spaces (default: 2)\n * @returns Formatted HTML\n */\nexport function formatHtml(html: string, spaces: number = 2): string {\n try {\n return prettify(html, {\n tab_size: spaces,\n content_wrap: 80, // Wrap content at 80 characters\n tag_wrap: 60, // Wrap tag attributes at 60 characters\n ignore: [] // Don't ignore any elements\n });\n } catch (e) {\n console.error('Error formatting HTML:', e);\n // Fallback to basic formatting if htmlfy fails\n return html.trim()\n .replace(/>\\s*</g, '>\\n<')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line)\n .join('\\n');\n }\n}\n\n/**\n * Minify HTML string using htmlfy's minify function\n * @param html The HTML string to minify\n * @returns Minified HTML\n */\nexport function minifyHtml(html: string): string {\n try {\n return minify(html);\n } catch (e) {\n console.error('Error minifying HTML:', e);\n // Fallback to basic minification\n return html.replace(/>\\s+</g, '><').trim();\n }\n} ","import hljs from 'highlight.js';\nimport jsonHighlighter from 'highlight.js/lib/languages/json';\nimport xmlHighlighter from 'highlight.js/lib/languages/xml';\nimport { formatHtml } from './html-formatter';\n\nhljs.registerLanguage('json', jsonHighlighter);\nhljs.registerLanguage('html', xmlHighlighter);\n\nexport async function html(value: string): Promise<string> {\n try {\n // Use our custom formatter\n const prettyValue = formatHtml(value, 2);\n return hljs.highlight(prettyValue, { language: 'html' }).value;\n } catch (e) {\n console.error('Error highlighting HTML:', e);\n return hljs.highlight(value, { language: 'html' }).value;\n }\n}\n\nexport async function json(value: string): Promise<string> {\n try {\n // Try to parse and then format with native JSON.stringify\n const parsed = JSON.parse(value);\n const prettyValue = JSON.stringify(parsed, null, 2);\n return hljs.highlight(prettyValue, { language: 'javascript' }).value;\n } catch (e) {\n console.error('Error highlighting JSON:', e);\n // If parsing fails, just highlight the original value\n return hljs.highlight(value, { language: 'javascript' }).value;\n }\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { html, json } from './highlighters';\n\ntype TextEditorPanelProps = {\n type: 'json' | 'html' | 'javascript';\n value: string;\n};\nexport default function HighlightedCodePanel({ type, value }: TextEditorPanelProps) {\n const [code, setCode] = useState<string | null>(null);\n\n useEffect(() => {\n switch (type) {\n case 'html':\n html(value).then(setCode);\n return;\n case 'json':\n json(value).then(setCode);\n return;\n }\n }, [setCode, value, type]);\n\n if (code === null) {\n return null;\n }\n\n return (\n <pre\n style={{ \n margin: 0, \n padding: 16,\n overflowX: 'auto',\n whiteSpace: 'pre',\n fontSize: '12px',\n }}\n dangerouslySetInnerHTML={{ __html: code }}\n onClick={(ev) => {\n const s = window.getSelection();\n if (s === null) {\n return;\n }\n s.selectAllChildren(ev.currentTarget);\n }}\n />\n );\n}\n","import React, { useMemo } from 'react';\n\nimport { renderToStaticMarkup } from '@email-builder';\n\nimport { useDocument } from '@editor/editor-context';\n\nimport HighlightedCodePanel from './helper/highlighted-code-panel';\n\nexport default function HtmlPanel() {\n const document = useDocument();\n const code = useMemo(() => renderToStaticMarkup(document, { rootBlockId: 'root' }), [document]);\n return <HighlightedCodePanel type=\"html\" value={code} />;\n}\n","import React, { useMemo } from 'react';\n\nimport { useDocument } from '@editor/editor-context';\n\nimport HighlightedCodePanel from './helper/highlighted-code-panel';\n\nexport default function JsonPanel() {\n const document = useDocument();\n const code = useMemo(() => JSON.stringify(document, null, ' '), [document]);\n return <HighlightedCodePanel type=\"json\" value={code} />;\n}\n","import React, { useMemo } from 'react';\n\nimport { renderToText } from '@email-builder';\n\nimport { useDocument } from '@editor/editor-context';\n\nexport default function TextPanel() {\n const document = useDocument();\n const text = useMemo(() => renderToText(document, { rootBlockId: 'root' }), [document]);\n return (\n <pre\n style={{\n margin: 0,\n padding: 16,\n overflowX: 'auto',\n whiteSpace: 'pre-wrap',\n fontSize: '13px',\n fontFamily: 'monospace',\n lineHeight: '1.5',\n }}\n onClick={(ev) => {\n const s = window.getSelection();\n if (s === null) return;\n s.selectAllChildren(ev.currentTarget);\n }}\n >\n {text}\n </pre>\n );\n}\n","import React from 'react';\n\nimport { CodeOutlined, DataObjectOutlined, EditOutlined, PreviewOutlined, SubjectOutlined } from '@mui/icons-material';\nimport { Tab, Tabs, Tooltip } from '@mui/material';\n\nimport { setSelectedMainTab, useSelectedMainTab } from '@editor/editor-context';\n\nexport default function MainTabsGroup() {\n const selectedMainTab = useSelectedMainTab();\n const handleChange = (_: unknown, v: unknown) => {\n switch (v) {\n case 'json':\n case 'preview':\n case 'editor':\n case 'html':\n case 'text':\n setSelectedMainTab(v);\n return;\n default:\n setSelectedMainTab('editor');\n }\n };\n\n return (\n <Tabs value={selectedMainTab} onChange={handleChange}>\n <Tab\n value=\"editor\"\n label={\n <Tooltip title=\"Edit\">\n <EditOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"preview\"\n label={\n <Tooltip title=\"Preview\">\n <PreviewOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"html\"\n label={\n <Tooltip title=\"HTML output\">\n <CodeOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"text\"\n label={\n <Tooltip title=\"Plain text output\">\n <SubjectOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"json\"\n label={\n <Tooltip title=\"JSON output\">\n <DataObjectOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n </Tabs>\n );\n}\n","import React, { createContext, useContext, useState } from 'react';\nimport { Snackbar } from '@mui/material';\n\n// Define the context\ninterface SnackbarContextType {\n showMessage: (message: string, duration?: number) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarContextType | null>(null);\n\n// Custom hook to use the snackbar\nexport function useSnackbar() {\n const context = useContext(SnackbarContext);\n if (!context) {\n throw new Error('useSnackbar must be used within a SnackbarProvider');\n }\n return context;\n}\n\n// Snackbar Provider component\nexport function SnackbarProvider({ children }: { children: React.ReactNode }) {\n const [message, setMessage] = useState<string | null>(null);\n const [duration, setDuration] = useState(3000);\n\n const showMessage = (text: string, customDuration = 3000) => {\n setMessage(text);\n setDuration(customDuration);\n };\n\n const handleClose = () => {\n setMessage(null);\n };\n\n return (\n <SnackbarContext.Provider value={{ showMessage }}>\n {children}\n <Snackbar\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n open={message !== null}\n onClose={handleClose}\n message={message}\n autoHideDuration={duration}\n sx={{\n zIndex: 10000, // Very high z-index\n position: 'fixed', // Make sure it's fixed positioned\n }}\n />\n </SnackbarContext.Provider>\n );\n} ","import React, { useState, useEffect } from 'react';\nimport { \n Dialog, \n DialogTitle, \n DialogContent, \n DialogActions, \n Button, \n TextField,\n Box\n} from '@mui/material';\n\ninterface SaveTemplateDialogProps {\n open: boolean;\n onClose: () => void;\n onSave: (templateName: string) => Promise<boolean> | boolean | void;\n onNameChange?: () => void;\n defaultName?: string;\n error?: string | null;\n}\n\nexport default function SaveTemplateDialog({ \n open, \n onClose, \n onSave,\n onNameChange,\n defaultName = '',\n error: externalError = null\n}: SaveTemplateDialogProps) {\n const [templateName, setTemplateName] = useState(defaultName);\n const [internalError, setInternalError] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n \n // Reset name when dialog opens with the default name\n useEffect(() => {\n if (open) {\n setTemplateName(defaultName);\n setInternalError('');\n setIsSubmitting(false);\n }\n }, [open, defaultName]);\n\n // Determine which error to display - external has priority\n const displayError = externalError || internalError;\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setTemplateName(e.target.value);\n \n if (e.target.value.trim()) {\n setInternalError('');\n }\n \n // Notify parent component that name has changed\n if (onNameChange) {\n onNameChange();\n }\n };\n\n const handleSave = async () => {\n if (!templateName.trim()) {\n setInternalError('Please enter a template name');\n return;\n }\n \n setIsSubmitting(true);\n \n try {\n // Call onSave and wait for result if it's a Promise\n const result = onSave(templateName);\n \n // Handle promise or boolean result\n if (result instanceof Promise) {\n const success = await result;\n if (success) {\n setTemplateName('');\n setInternalError('');\n onClose();\n }\n } else if (result !== false) {\n // If not explicitly false, assume success\n setTemplateName('');\n setInternalError('');\n onClose();\n }\n } catch (error) {\n console.error('Error saving template:', error);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleCancel = () => {\n setTemplateName('');\n setInternalError('');\n onClose();\n };\n\n return (\n <Dialog \n open={open} \n onClose={handleCancel}\n maxWidth=\"sm\"\n fullWidth\n >\n <DialogTitle>Save Email Template</DialogTitle>\n <DialogContent>\n <Box sx={{ pt: 1 }}>\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"template-name\"\n label=\"Template Name\"\n type=\"text\"\n fullWidth\n variant=\"outlined\"\n value={templateName}\n onChange={handleNameChange}\n error={!!displayError}\n helperText={displayError}\n onKeyPress={(e) => {\n if (e.key === 'Enter' && templateName.trim() && !displayError && !isSubmitting) {\n handleSave();\n }\n }}\n disabled={isSubmitting}\n />\n </Box>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleCancel} disabled={isSubmitting}>Cancel</Button>\n <Button \n onClick={handleSave} \n variant=\"contained\" \n color=\"primary\"\n disabled={!templateName.trim() || !!displayError || isSubmitting}\n >\n {isSubmitting ? 'Saving...' : 'Save Template'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n} ","import React, { useState } from 'react';\n\nimport { SaveOutlined } from '@mui/icons-material';\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport { useEmailEditor } from '../context';\nimport { useSnackbar } from './snackbar-provider';\nimport SaveTemplateDialog from './save-template-dialog';\nimport { useDocument } from '@editor/editor-context';\n\ninterface SaveButtonProps {\n loadTemplates?: () => Promise<any>;\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n}\n\nexport default function SaveButton({ loadTemplates, saveAs }: SaveButtonProps) {\n const { saveTemplate, currentTemplateId, setCurrentTemplate } = useEmailEditor();\n const { showMessage } = useSnackbar();\n const [saveDialogOpen, setSaveDialogOpen] = useState(false);\n const document = useDocument();\n\n const handleSave = async () => {\n try {\n // If it's a sample template or no template is selected, show the save dialog\n if (!currentTemplateId || currentTemplateId === 'welcome' || currentTemplateId.startsWith('sample/')) {\n setSaveDialogOpen(true);\n return;\n }\n\n // Otherwise, save the template directly\n saveTemplate();\n showMessage('Template saved successfully!');\n\n // Refresh templates list\n if (loadTemplates) {\n await loadTemplates();\n }\n } catch (error) {\n console.error('Error saving template:', error);\n showMessage('Error saving template');\n }\n };\n\n const handleSaveAs = async (templateName: string): Promise<boolean> => {\n try {\n if (saveAs) {\n // Use provided saveAs function\n const { id: templateId, name } = await saveAs(templateName, document);\n \n // Update context\n setCurrentTemplate(templateId, name);\n\n // Refresh templates list\n if (loadTemplates) {\n await loadTemplates();\n }\n\n showMessage('Template saved successfully!');\n setSaveDialogOpen(false);\n\n // Update URL\n window.location.hash = `#template/${templateId}`;\n \n return true; // Return true on success\n }\n return false; // Return false if saveAs is not provided\n } catch (error) {\n console.error('Error saving template:', error);\n showMessage('Error saving template');\n return false; // Return false on error\n }\n };\n\n return (\n <>\n <IconButton onClick={handleSave}\n sx={{\n backgroundColor: 'grey.100',\n '&:hover': {\n backgroundColor: 'grey.200',\n },\n }}\n >\n <Tooltip title=\"Save template\">\n <SaveOutlined fontSize=\"small\" />\n </Tooltip>\n </IconButton>\n\n <SaveTemplateDialog\n open={saveDialogOpen}\n onClose={() => setSaveDialogOpen(false)}\n onSave={handleSaveAs}\n defaultName={currentTemplateId === 'welcome' ? 'Welcome Template' : 'New Template'}\n />\n </>\n );\n} ","import React, { useState } from 'react';\nimport { Add as AddIcon } from '@mui/icons-material';\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport { useDocument, resetDocument } from '@editor/editor-context';\nimport { useSnackbar } from './snackbar-provider';\nimport SaveTemplateDialog from './save-template-dialog';\nimport EMPTY_EMAIL_MESSAGE from '@sample/empty-email-message';\nimport { useEmailEditor } from '../context';\n\ninterface NewTemplateButtonProps {\n loadTemplates?: () => Promise<any>;\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n}\n\nexport default function NewTemplateButton({ loadTemplates, saveAs }: NewTemplateButtonProps) {\n const { setCurrentTemplate, loadTemplate } = useEmailEditor();\n const { showMessage } = useSnackbar();\n const [saveDialogOpen, setSaveDialogOpen] = useState(false);\n const [templates, setTemplates] = useState<{id: string, name: string}[]>([]);\n const [nameError, setNameError] = useState<string | null>(null);\n\n // Load templates when component mounts or when needed for validation\n const fetchTemplates = async () => {\n if (loadTemplates) {\n try {\n const result = await loadTemplates();\n setTemplates(result);\n return result;\n } catch (error) {\n console.error('Error loading templates:', error);\n }\n }\n return [];\n };\n\n const handleNewTemplate = async () => {\n // Fetch latest templates for validation\n await fetchTemplates();\n setNameError(null);\n setSaveDialogOpen(true);\n };\n\n const validateTemplateName = (name: string): boolean => {\n // Check if name already exists\n const nameExists = templates.some(template => \n template.name.toLowerCase() === name.toLowerCase()\n );\n \n if (nameExists) {\n setNameError('A template with this name already exists');\n return false;\n }\n \n setNameError(null);\n return true;\n };\n\n const handleNameChange = () => {\n // Reset error state when name changes\n setNameError(null);\n };\n\n const handleCreateTemplate = async (templateName: string) => {\n // Validate template name first - this needs to be done here as well\n // because the dialog won't close if validation fails\n if (!validateTemplateName(templateName)) {\n return false; // Return false to indicate validation failed\n }\n\n try {\n if (saveAs) {\n // Use provided saveAs function with the empty template\n const { id: templateId, name } = await saveAs(templateName, EMPTY_EMAIL_MESSAGE);\n \n // Actually load the empty template into the editor\n resetDocument(EMPTY_EMAIL_MESSAGE);\n \n // Update context\n setCurrentTemplate(templateId, name);\n loadTemplate(EMPTY_EMAIL_MESSAGE, templateId, name);\n \n // Refresh templates list\n if (loadTemplates) {\n await loadTemplates();\n }\n \n // Show success message\n showMessage('New template created!');\n \n // Update URL\n window.location.hash = `#template/${templateId}`;\n \n return true; // Return true to indicate success\n }\n } catch (error) {\n console.error('Error creating template:', error);\n showMessage('Error creating template');\n }\n return false; // Return false if there was an error\n };\n\n return (\n <>\n <IconButton\n onClick={handleNewTemplate}\n sx={{\n backgroundColor: 'grey.100',\n '&:hover': {\n backgroundColor: 'grey.200',\n },\n }}\n >\n <Tooltip title=\"New template\">\n <AddIcon fontSize=\"small\" />\n </Tooltip>\n </IconButton>\n\n <SaveTemplateDialog\n open={saveDialogOpen}\n onClose={() => {\n setSaveDialogOpen(false);\n setNameError(null);\n }}\n onSave={handleCreateTemplate}\n onNameChange={handleNameChange}\n defaultName=\"New Template\"\n error={nameError}\n />\n </>\n );\n} ","import React from 'react';\n\nimport { MonitorOutlined, PhoneIphoneOutlined } from '@mui/icons-material';\nimport { Box, Stack, SxProps, ToggleButton, ToggleButtonGroup, Tooltip } from '@mui/material';\nimport { Reader } from '@email-builder';\n\nimport EditorBlock from '@editor/editor-block';\nimport {\n setSelectedScreenSize,\n useDocument,\n useSelectedMainTab,\n useSelectedScreenSize,\n usePersistenceEnabled\n} from '@editor/editor-context';\nimport ToggleInspectorPanelButton from '../inspector-drawer/toggle-inspector-panel-button';\nimport ToggleSamplesPanelButton from '../templates-drawer/toggle-samples-panel-button';\n\nimport HtmlPanel from './html-panel';\nimport JsonPanel from './json-panel';\nimport TextPanel from './text-panel';\nimport MainTabsGroup from './main-tabs-group';\nimport SaveButton from './save-button';\nimport NewTemplateButton from './new-template-button';\nimport { SampleTemplate } from '../index';\n\ninterface TemplatePanelProps {\n loadTemplates?: () => Promise<SampleTemplate[]>;\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n samplesDrawerEnabled?: boolean;\n}\n\nexport default function TemplatePanel({ loadTemplates, saveAs, samplesDrawerEnabled = true }: TemplatePanelProps) {\n const document = useDocument();\n const selectedMainTab = useSelectedMainTab();\n const selectedScreenSize = useSelectedScreenSize();\n const persistenceEnabled = usePersistenceEnabled();\n\n let mainBoxSx: SxProps = {\n height: '100%',\n };\n if (selectedScreenSize === 'mobile') {\n mainBoxSx = {\n ...mainBoxSx,\n margin: '32px auto',\n width: 370,\n height: 800,\n boxShadow:\n 'rgba(33, 36, 67, 0.04) 0px 10px 20px, rgba(33, 36, 67, 0.08) 0px 2px 4px',\n borderRadius: '16px',\n };\n }\n\n const handleScreenSizeChange = (_: unknown, value: unknown) => {\n switch (value) {\n case 'mobile':\n case 'desktop':\n setSelectedScreenSize(value);\n return;\n default:\n setSelectedScreenSize('desktop');\n }\n };\n\n const renderMainPanel = () => {\n switch (selectedMainTab) {\n case 'editor':\n return (\n <Box sx={mainBoxSx}>\n <EditorBlock id=\"root\" />\n </Box>\n );\n case 'preview':\n return (\n <Box sx={mainBoxSx}>\n <Reader document={document} rootBlockId=\"root\" />\n </Box>\n );\n case 'html':\n return <HtmlPanel />;\n case 'text':\n return <TextPanel />;\n case 'json':\n return <JsonPanel />;\n }\n };\n\n const showSaveButtons = persistenceEnabled;\n\n return (\n <>\n <Stack\n sx={{\n height: 49,\n borderBottom: 1,\n borderColor: 'divider',\n backgroundColor: 'white',\n position: 'sticky',\n top: 0,\n zIndex: 'appBar',\n px: 1,\n }}\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n {samplesDrawerEnabled && <ToggleSamplesPanelButton />}\n <Stack px={2} direction=\"row\" gap={2} width=\"100%\" justifyContent=\"space-between\" alignItems=\"center\">\n <Stack direction=\"row\" spacing={2}>\n <MainTabsGroup />\n </Stack>\n <Stack direction=\"row\" spacing={2}>\n <ToggleButtonGroup value={selectedScreenSize} exclusive size=\"small\" onChange={handleScreenSizeChange}>\n <ToggleButton value=\"desktop\">\n <Tooltip title=\"Desktop view\">\n <MonitorOutlined fontSize=\"small\" />\n </Tooltip>\n </ToggleButton>\n <ToggleButton value=\"mobile\">\n <Tooltip title=\"Mobile view\">\n <PhoneIphoneOutlined fontSize=\"small\" />\n </Tooltip>\n </ToggleButton>\n </ToggleButtonGroup>\n {showSaveButtons && (\n <>\n <NewTemplateButton loadTemplates={loadTemplates} saveAs={saveAs} />\n <SaveButton loadTemplates={loadTemplates} saveAs={saveAs} />\n </>\n )}\n </Stack>\n </Stack>\n <ToggleInspectorPanelButton />\n </Stack>\n <Box sx={{ \n paddingBottom: '50px',\n minWidth: 370\n }}>\n {renderMainPanel()}\n </Box>\n </>\n );\n}\n","import React, { forwardRef, useImperativeHandle, useEffect, useMemo, useRef } from 'react';\nimport { Stack, useTheme, ThemeProvider } from '@mui/material';\nimport { Theme } from '@mui/material/styles';\nimport defaultTheme from '../theme';\nimport { CssBaseline } from '@mui/material';\n\nimport { TEditorConfiguration } from '@editor/core';\nimport {\n useDocument,\n getDocument,\n resetDocument,\n useInspectorDrawerOpen,\n useSamplesDrawerOpen,\n setPersistenceEnabled\n} from '@editor/editor-context';\nimport { EmailEditorProvider, useEmailEditor, EmailEditorContextType, EmailEditorProviderProps } from './context';\nimport InspectorDrawer, { INSPECTOR_DRAWER_WIDTH } from './inspector-drawer';\nimport SamplesDrawer, { SAMPLES_DRAWER_WIDTH } from './templates-drawer';\nimport TemplatePanel from './email-canvas';\nimport { SnackbarProvider } from './email-canvas/snackbar-provider';\n\n/**\n * Wraps a raw HTML string in an editor config with an EmailLayout root + one Html block.\n */\nfunction htmlToEditorConfig(html: string): TEditorConfiguration {\n return {\n root: {\n type: 'EmailLayout',\n data: {\n backdropColor: '#F5F5F5',\n canvasColor: '#FFFFFF',\n textColor: '#262626',\n fontFamily: 'MODERN_SANS',\n childrenIds: ['block-html-import'],\n },\n },\n 'block-html-import': {\n type: 'Html',\n data: {\n style: {\n padding: { top: 0, bottom: 0, right: 0, left: 0 },\n },\n props: {\n contents: html,\n },\n },\n },\n };\n}\n\n// Define the SampleTemplate interface directly here\nexport interface SampleTemplate {\n id: string;\n name: string;\n description?: string;\n category?: string;\n thumbnail?: string;\n}\n\n// The ref interface for imperative controls\nexport interface EmailEditorRef {\n saveTemplate: () => TEditorConfiguration;\n loadTemplate: (template: TEditorConfiguration) => void;\n getTemplate: () => TEditorConfiguration;\n}\n\n// Props for the EmailEditor component\nexport interface EmailEditorProps {\n /**\n * Initial template to load. Can be either:\n * - A `TEditorConfiguration` object (the native editor format)\n * - A raw HTML string, which will be auto-wrapped in an Html block\n */\n initialTemplate?: TEditorConfiguration | string;\n initialTemplateId?: string;\n initialTemplateName?: string;\n onSave?: (template: TEditorConfiguration) => void;\n onChange?: (template: TEditorConfiguration) => void;\n /**\n * Duration for drawer enter transition in milliseconds. Set to 0 for instant.\n * @default 225\n */\n drawerEnterDuration?: number;\n /**\n * Duration for drawer exit transition in milliseconds. Set to 0 for instant.\n * @default 225\n */\n drawerExitDuration?: number;\n /**\n * Whether to show the samples drawer.\n * @default true\n */\n samplesDrawerEnabled?: boolean;\n /**\n * Whether to enable template persistence functionality and show save buttons.\n * When false (default), save functionality and related UI elements will be hidden.\n * When true, make sure to provide the necessary callbacks (onSave, saveAs, etc.).\n * \n * IMPORTANT: If you set this to true, you must provide callbacks to handle persistence\n * operations (onSave, saveAs, etc.). Otherwise, the save buttons will appear but won't\n * be functional.\n * @default false\n */\n persistenceEnabled?: boolean;\n /**\n * Minimum height of the editor container.\n * @default '100vh'\n */\n minHeight?: string;\n /**\n * Callback to load samples dynamically.\n * This will be called when the samples drawer is opened.\n */\n loadSamples?: () => Promise<SampleTemplate[]>;\n /**\n * Callback to load existing templates dynamically.\n * This will be called when the samples drawer is opened.\n */\n loadTemplates?: () => Promise<SampleTemplate[]>;\n /**\n * Callback to load a specific template by ID.\n * This will be called when a sample is selected from the drawer.\n */\n loadTemplate?: (templateId: string) => Promise<TEditorConfiguration | null>;\n /**\n * Callback to delete a template by ID.\n */\n deleteTemplate?: (templateId: string) => void;\n /**\n * Callback to copy a template with a new name.\n */\n copyTemplate?: (templateName: string, content: any) => void;\n /**\n * Callback to save a template with a new name.\n */\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n /**\n * Optional theme override. If not provided, the default theme will be used.\n * This allows for easy styling without requiring a separate ThemeProvider.\n */\n theme?: Theme;\n}\n\nfunction useDrawerTransition(cssProperty: 'margin-left' | 'margin-right', open: boolean) {\n const { transitions } = useTheme();\n return transitions.create(cssProperty, {\n easing: !open ? transitions.easing.sharp : transitions.easing.easeOut,\n duration: !open ? transitions.duration.leavingScreen : transitions.duration.enteringScreen,\n });\n}\n\n// Internal component that connects the App with the EmailEditor context\nconst EmailEditorInternal = forwardRef<EmailEditorRef, Omit<EmailEditorProps, 'initialTemplate' | 'initialTemplateId' | 'initialTemplateName' | 'onSave' | 'persistenceEnabled'>>((props, ref) => {\n const { \n drawerEnterDuration = 225,\n drawerExitDuration = 225,\n samplesDrawerEnabled = true,\n minHeight = '100vh',\n loadSamples,\n loadTemplates,\n loadTemplate,\n deleteTemplate,\n copyTemplate,\n saveAs,\n onChange,\n } = props;\n const { saveTemplate, loadTemplate: contextLoadTemplate, currentTemplateId } = useEmailEditor();\n const currentDocument = useDocument();\n const inspectorDrawerOpen = useInspectorDrawerOpen();\n const samplesDrawerOpen = useSamplesDrawerOpen();\n\n const marginLeftTransition = useDrawerTransition('margin-left', samplesDrawerOpen);\n const marginRightTransition = useDrawerTransition('margin-right', inspectorDrawerOpen);\n\n // Notify the consuming app of changes without triggering React state updates\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const prevDocJsonRef = useRef<string>('');\n useEffect(() => {\n const docJson = JSON.stringify(currentDocument);\n if (docJson !== prevDocJsonRef.current) {\n prevDocJsonRef.current = docJson;\n onChangeRef.current?.(currentDocument);\n }\n }, [currentDocument]);\n\n // Expose the API via ref\n useImperativeHandle(ref, () => ({\n saveTemplate: () => {\n return saveTemplate();\n },\n loadTemplate: (newTemplate) => {\n contextLoadTemplate(newTemplate);\n resetDocument(newTemplate);\n },\n getTemplate: () => {\n return getDocument();\n }\n }));\n\n return (\n <Stack position=\"relative\" id=\"drawer-container\" sx={{ minHeight }}>\n <InspectorDrawer \n enterDuration={drawerEnterDuration}\n exitDuration={drawerExitDuration}\n deleteTemplate={deleteTemplate}\n copyTemplate={copyTemplate}\n />\n <SamplesDrawer \n enterDuration={drawerEnterDuration}\n exitDuration={drawerExitDuration}\n enabled={samplesDrawerEnabled}\n loadSamples={loadSamples}\n loadTemplates={loadTemplates}\n loadTemplate={loadTemplate}\n currentTemplateId={currentTemplateId}\n deleteTemplate={deleteTemplate}\n />\n\n <Stack\n sx={{\n marginRight: inspectorDrawerOpen ? `${INSPECTOR_DRAWER_WIDTH}px` : 0,\n marginLeft: samplesDrawerOpen && samplesDrawerEnabled ? `${SAMPLES_DRAWER_WIDTH}px` : 0,\n transition: [marginLeftTransition, marginRightTransition].join(', '),\n }}\n >\n <TemplatePanel loadTemplates={loadTemplates} saveAs={saveAs} samplesDrawerEnabled={samplesDrawerEnabled} />\n </Stack>\n </Stack>\n );\n});\n\n// The main EmailEditor component that external apps will use\nconst EmailEditor = forwardRef<EmailEditorRef, EmailEditorProps>((props, ref) => {\n const {\n initialTemplate: initialTemplateProp,\n initialTemplateId,\n initialTemplateName,\n onSave,\n onChange,\n drawerEnterDuration,\n drawerExitDuration,\n samplesDrawerEnabled,\n persistenceEnabled = false,\n minHeight = '100vh',\n loadSamples,\n loadTemplates,\n loadTemplate,\n deleteTemplate,\n copyTemplate,\n saveAs,\n theme,\n } = props;\n\n // Resolve: if it's a raw HTML string, wrap it in an editor config.\n // Memoize so a string prop doesn't create a new object every render.\n const resolvedTemplate = useMemo(\n () => typeof initialTemplateProp === 'string'\n ? htmlToEditorConfig(initialTemplateProp)\n : initialTemplateProp,\n [initialTemplateProp],\n );\n\n // Reset the editor synchronously during render (not in an effect) so the\n // Zustand store is up-to-date before child components mount / effects fire.\n // This prevents the onChange callback from emitting a stale empty document.\n const prevTemplateRef = useRef<TEditorConfiguration | undefined>(undefined);\n if (resolvedTemplate && resolvedTemplate !== prevTemplateRef.current) {\n prevTemplateRef.current = resolvedTemplate;\n resetDocument(resolvedTemplate);\n }\n\n // Update persistence mode when it changes\n useEffect(() => {\n setPersistenceEnabled(persistenceEnabled);\n }, [persistenceEnabled]);\n\n return (\n <ThemeProvider theme={theme || defaultTheme}>\n <CssBaseline />\n <div style={{ height: '100%', overflow: 'auto' }}>\n <SnackbarProvider>\n <EmailEditorProvider\n initialTemplate={resolvedTemplate}\n initialTemplateId={initialTemplateId}\n initialTemplateName={initialTemplateName}\n onSave={onSave}\n onChange={onChange}\n >\n <EmailEditorInternal\n ref={ref}\n drawerEnterDuration={drawerEnterDuration}\n drawerExitDuration={drawerExitDuration}\n samplesDrawerEnabled={samplesDrawerEnabled}\n minHeight={minHeight}\n loadSamples={loadSamples}\n loadTemplates={loadTemplates}\n loadTemplate={loadTemplate}\n deleteTemplate={deleteTemplate}\n copyTemplate={copyTemplate}\n saveAs={saveAs}\n onChange={onChange}\n />\n </EmailEditorProvider>\n </SnackbarProvider>\n </div>\n </ThemeProvider>\n );\n});\n\nEmailEditor.displayName = 'EmailEditor';\nEmailEditorInternal.displayName = 'EmailEditorInternal';\n\n// Export both as default and named\nexport default EmailEditor;\nexport { EmailEditor };\n\n// Export context and hooks\nexport {\n EmailEditorProvider,\n useEmailEditor,\n type EmailEditorContextType,\n type EmailEditorProviderProps\n};\n\n// Export utility\nexport { htmlToEditorConfig }; "]}
|
|
1
|
+
{"version":3,"sources":["../src/blocks/text.tsx","../src/blocks/avatar.tsx","../src/blocks/button.tsx","../src/blocks/columns-container.tsx","../src/blocks/container.tsx","../src/blocks/divider.tsx","../src/blocks/heading.tsx","../src/blocks/html.tsx","../src/blocks/image.tsx","../src/blocks/signature.tsx","../src/blocks/spacer.tsx","../src/core/builders/build-block-component.tsx","../src/core/builders/build-block-configuration-schema.ts","../src/core/builders/build-block-configuration-dictionary.ts","../src/core/utils.ts","../src/email-builder/blocks/columns-container/columns-container-props-schema.ts","../src/email-builder/blocks/columns-container/columns-container-reader.tsx","../src/email-builder/blocks/container/container-props-schema.ts","../src/email-builder/blocks/container/container-reader.tsx","../src/email-builder/blocks/email-layout/email-layout-props-schema.ts","../src/email-builder/blocks/email-layout/email-layout-reader.tsx","../src/email-builder/reader/core.tsx","../src/email-builder/renderers/render-to-static-markup.tsx","../src/email-builder/renderers/render-to-text.ts","../src/theme.ts","../src/editor/editor-context.tsx","../src/app/context.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/base-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/radio-group-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/raw/raw-slider-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/slider-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/text-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/swatch.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/picker.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/base-color-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/color-input/index.tsx","../src/editor/blocks/helpers/font-family.ts","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/font-family.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/font-size-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/font-weight-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/padding-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/text-align-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/style-inputs/single-style-property-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/style-inputs/multi-style-property-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/avatar-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/button-sidebar-panel.tsx","../src/editor/blocks/columns-container/columns-container-props-schema.ts","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/text-dimension-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/column-widths-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/columns-container-sidebar-panel.tsx","../src/editor/blocks/container/container-props-schema.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/container-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/divider-sidebar-panel.tsx","../src/editor/blocks/email-layout/email-layout-props-schema.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/email-layout-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/heading-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/html-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/image-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/signature-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/spacer-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/helpers/inputs/boolean-input.tsx","../src/app/inspector-drawer/configuration-panel/input-panels/text-sidebar-panel.tsx","../src/app/inspector-drawer/configuration-panel/index.tsx","../src/app/inspector-drawer/styles-panel.tsx","../src/app/inspector-drawer/template-panel-download-button.tsx","../src/app/inspector-drawer/template-panel.tsx","../src/app/inspector-drawer/index.tsx","../src/app/templates-drawer/sidebar-button.tsx","../sample-templates/empty-email-message.ts","../src/app/templates-drawer/index.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/block-button.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/buttons.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/blocks-menu.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/divider-button.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/placeholder-button.tsx","../src/editor/blocks/helpers/editor-children-ids/add-block-menu/index.tsx","../src/editor/blocks/helpers/editor-children-ids/index.tsx","../src/editor/blocks/columns-container/columns-container-editor.tsx","../src/editor/blocks/container/container-editor.tsx","../src/editor/blocks/email-layout/email-layout-editor.tsx","../src/editor/blocks/helpers/block-wrappers/tune-menu.tsx","../src/editor/blocks/helpers/block-wrappers/editor-block-wrapper.tsx","../src/editor/blocks/button/button-editor.tsx","../src/editor/blocks/heading/heading-editor.tsx","../src/editor/blocks/html/html-editor.tsx","../src/editor/blocks/signature/signature-editor.tsx","../src/editor/blocks/text/text-editor.tsx","../src/editor/core.tsx","../src/editor/editor-block.tsx","../src/app/inspector-drawer/toggle-inspector-panel-button.tsx","../src/app/templates-drawer/toggle-samples-panel-button.tsx","../src/app/email-canvas/helper/html-formatter.ts","../src/app/email-canvas/helper/highlighters.tsx","../src/app/email-canvas/helper/highlighted-code-panel.tsx","../src/app/email-canvas/html-panel.tsx","../src/app/email-canvas/json-panel.tsx","../src/app/email-canvas/text-panel.tsx","../src/app/email-canvas/main-tabs-group.tsx","../src/app/email-canvas/snackbar-provider.tsx","../src/app/email-canvas/save-template-dialog.tsx","../src/app/email-canvas/save-button.tsx","../src/app/email-canvas/new-template-button.tsx","../src/app/email-canvas/index.tsx","../src/app/index.tsx"],"names":["html","DOMPurify","Renderer","marked","useMemo","React","z","PADDING_SCHEMA","getPadding","FONT_FAMILY_SCHEMA","getFontFamily","COLOR_SCHEMA","ColumnsContainerPropsSchema","ContainerPropsSchema","getBorder","createContext","useContext","document","baseRenderToStaticMarkup","createTheme","lighten","darken","alpha","create","useState","useRef","useCallback","Box","Typography","Stack","useEffect","InputLabel","ToggleButtonGroup","Slider","value","InputProps","TextField","renderButton","Button","HexColorPicker","HexColorInput","ButtonBase","CloseOutlined","AddOutlined","Menu","ColorInput","MenuItem","TextFieldsOutlined","ToggleButton","AlignVerticalTopOutlined","AlignVerticalBottomOutlined","AlignHorizontalLeftOutlined","AlignHorizontalRightOutlined","FormatAlignLeftOutlined","FormatAlignCenterOutlined","FormatAlignRightOutlined","RoundedCornerOutlined","AspectRatioOutlined","size","shape","imageUrl","alt","text","url","buttonStyle","buttonTextColor","buttonBackgroundColor","BasePropsShape","columns_container_props_schema_default","SpaceBarOutlined","VerticalAlignTopOutlined","VerticalAlignCenterOutlined","VerticalAlignBottomOutlined","lineColor","HeightOutlined","lineHeight","EmailLayoutPropsSchema","greeting","name","title","company","address","email","phone","website","imageSize","imageShape","layout","nameColor","textColor","linkColor","FormControlLabel","Switch","data","FileDownloadOutlined","ContentCopyOutlined","DeleteOutlined","Drawer","Tabs","Tab","sx","CircularProgress","Divider","BUTTON_SX","HMobiledataOutlined","NotesOutlined","SmartButtonOutlined","ImageOutlined","AccountCircleOutlined","ContactMailOutlined","BusinessOutlined","HorizontalRuleOutlined","Crop32Outlined","HtmlOutlined","ViewColumnOutlined","LibraryAddOutlined","Fade","IconButton","Fragment","childrenIds","generateId","_a","_b","_c","e","collectBlock","Paper","Tooltip","ArrowUpwardOutlined","ArrowDownwardOutlined","getRoundedCorners","getButtonSizePadding","getFontSize","getImageBorderRadius","EditorBlock","LastPageOutlined","AppRegistrationOutlined","FirstPageOutlined","MenuOutlined","prettify","hljs","jsonHighlighter","xmlHighlighter","EditOutlined","PreviewOutlined","CodeOutlined","SubjectOutlined","DataObjectOutlined","Snackbar","Dialog","DialogTitle","DialogContent","DialogActions","SaveOutlined","AddIcon","TemplatePanel","MonitorOutlined","PhoneIphoneOutlined","useTheme","forwardRef","useImperativeHandle","ThemeProvider","CssBaseline"],"mappings":"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","file":"index.cjs","sourcesContent":["import DOMPurify from 'dompurify';\nimport { marked, Renderer } from 'marked';\nimport React, { CSSProperties, useMemo } from 'react';\nimport { z } from 'zod';\n\n// EmailMarkdown Component\nconst ALLOWED_TAGS = [\n 'a',\n 'article',\n 'b',\n 'blockquote',\n 'br',\n 'caption',\n 'code',\n 'del',\n 'details',\n 'div',\n 'em',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr',\n 'i',\n 'img',\n 'ins',\n 'kbd',\n 'li',\n 'main',\n 'ol',\n 'p',\n 'pre',\n 'section',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'th',\n 'thead',\n 'tr',\n 'u',\n 'ul',\n];\nconst ALLOWED_ATTR = [\n 'style',\n 'title',\n 'src',\n 'srcset',\n 'alt',\n 'width',\n 'height',\n 'href',\n 'target',\n 'align',\n 'start',\n];\n\nfunction sanitizer(html: string): string {\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS,\n ALLOWED_ATTR,\n });\n}\n\nclass CustomRenderer extends Renderer {\n table(header: string, body: string) {\n return `<table width=\"100%\">\n<thead>\n${header}</thead>\n<tbody>\n${body}</tbody>\n</table>`;\n }\n\n link(href: string, title: string | null, text: string) {\n if (!title) {\n return `<a href=\"${href}\" target=\"_blank\">${text}</a>`;\n }\n return `<a href=\"${href}\" title=\"${title}\" target=\"_blank\">${text}</a>`;\n }\n}\n\nfunction renderMarkdownString(str: string): string {\n const html = marked.parse(str, {\n async: false,\n breaks: true,\n gfm: true,\n pedantic: false,\n silent: false,\n renderer: new CustomRenderer(),\n });\n if (typeof html !== 'string') {\n throw new Error('marked.parse did not return a string');\n }\n return sanitizer(html);\n}\n\ntype EmailMarkdownProps = {\n style: CSSProperties;\n markdown: string;\n};\n\nfunction EmailMarkdown({ markdown, ...props }: EmailMarkdownProps) {\n const data = useMemo(() => renderMarkdownString(markdown), [markdown]);\n return <div {...props} dangerouslySetInnerHTML={{ __html: data }} />;\n}\n\n// Text Component\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const TextPropsSchema = z.object({\n style: z\n .object({\n color: COLOR_SCHEMA,\n backgroundColor: COLOR_SCHEMA,\n fontSize: z.number().gte(0).optional().nullable(),\n fontFamily: FONT_FAMILY_SCHEMA,\n fontWeight: z.enum(['bold', 'normal']).optional().nullable(),\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n markdown: z.boolean().optional().nullable(),\n text: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type TextProps = z.infer<typeof TextPropsSchema>;\n// Export for runtime usage\nexport const TextProps = TextPropsSchema;\n\nexport const TextPropsDefaults = {\n text: '',\n};\n\nexport function Text({ style, props }: TextProps) {\n const wStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontSize: style?.fontSize ?? undefined,\n fontFamily: getFontFamily(style?.fontFamily),\n fontWeight: style?.fontWeight ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n\n const text = props?.text ?? TextPropsDefaults.text;\n if (props?.markdown) {\n return <EmailMarkdown style={wStyle} markdown={text} />;\n }\n return <div style={wStyle}>{text}</div>;\n}\n\n// Export the Text component as default\nexport default Text;\n\n// Also export the EmailMarkdown component for direct use if needed\nexport { EmailMarkdown }; ","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const AvatarPropsSchema = z.object({\n style: z\n .object({\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n size: z.number().gt(0).optional().nullable(),\n shape: z.enum(['circle', 'square', 'rounded']).optional().nullable(),\n imageUrl: z.string().optional().nullable(),\n alt: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type AvatarProps = z.infer<typeof AvatarPropsSchema>;\nexport const AvatarProps = AvatarPropsSchema;\n\nfunction getBorderRadius(shape: 'circle' | 'square' | 'rounded', size: number): number | undefined {\n switch (shape) {\n case 'rounded':\n return size * 0.125;\n case 'circle':\n return size;\n case 'square':\n default:\n return undefined;\n }\n}\n\nexport const AvatarPropsDefaults = {\n size: 64,\n imageUrl: '',\n alt: '',\n shape: 'square',\n} as const;\n\nexport function Avatar({ style, props }: AvatarProps) {\n const size = props?.size ?? AvatarPropsDefaults.size;\n const imageUrl = props?.imageUrl ?? AvatarPropsDefaults.imageUrl;\n const alt = props?.alt ?? AvatarPropsDefaults.alt;\n const shape = props?.shape ?? AvatarPropsDefaults.shape;\n\n const sectionStyle: CSSProperties = {\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n return (\n <div style={sectionStyle}>\n <img\n alt={alt}\n src={imageUrl}\n height={size}\n width={size}\n style={{\n outline: 'none',\n border: 'none',\n textDecoration: 'none',\n objectFit: 'cover',\n height: size,\n width: size,\n maxWidth: '100%',\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'center',\n borderRadius: getBorderRadius(shape, size),\n }}\n />\n </div>\n );\n}\n\n// Export the Avatar component as default\nexport default Avatar;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ButtonPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n fontSize: z.number().min(0).optional().nullable(),\n fontFamily: FONT_FAMILY_SCHEMA,\n fontWeight: z.enum(['bold', 'normal']).optional().nullable(),\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n buttonBackgroundColor: COLOR_SCHEMA,\n buttonStyle: z.enum(['rectangle', 'pill', 'rounded']).optional().nullable(),\n buttonTextColor: COLOR_SCHEMA,\n fullWidth: z.boolean().optional().nullable(),\n size: z.enum(['x-small', 'small', 'large', 'medium']).optional().nullable(),\n text: z.string().optional().nullable(),\n url: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type ButtonProps = z.infer<typeof ButtonPropsSchema>;\n// Export for runtime usage\nexport const ButtonProps = ButtonPropsSchema;\n\nfunction getRoundedCorners(props: ButtonProps['props']) {\n const buttonStyle = props?.buttonStyle ?? ButtonPropsDefaults.buttonStyle;\n\n switch (buttonStyle) {\n case 'rectangle':\n return undefined;\n case 'pill':\n return 64;\n case 'rounded':\n default:\n return 4;\n }\n}\n\nfunction getButtonSizePadding(props: ButtonProps['props']) {\n const size = props?.size ?? ButtonPropsDefaults.size;\n switch (size) {\n case 'x-small':\n return [4, 8] as const;\n case 'small':\n return [8, 12] as const;\n case 'large':\n return [16, 32] as const;\n case 'medium':\n default:\n return [12, 20] as const;\n }\n}\n\nexport const ButtonPropsDefaults = {\n text: '',\n url: '',\n fullWidth: false,\n size: 'medium',\n buttonStyle: 'rounded',\n buttonTextColor: '#FFFFFF',\n buttonBackgroundColor: '#999999',\n} as const;\n\nexport function Button({ style, props }: ButtonProps) {\n const text = props?.text ?? ButtonPropsDefaults.text;\n const url = props?.url ?? ButtonPropsDefaults.url;\n const fullWidth = props?.fullWidth ?? ButtonPropsDefaults.fullWidth;\n const buttonTextColor = props?.buttonTextColor ?? ButtonPropsDefaults.buttonTextColor;\n const buttonBackgroundColor = props?.buttonBackgroundColor ?? ButtonPropsDefaults.buttonBackgroundColor;\n\n const padding = getButtonSizePadding(props);\n const textRaise = (padding[1] * 2 * 3) / 4;\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n const linkStyle: CSSProperties = {\n color: buttonTextColor,\n fontSize: style?.fontSize ?? 16,\n fontFamily: getFontFamily(style?.fontFamily),\n fontWeight: style?.fontWeight ?? 'bold',\n backgroundColor: buttonBackgroundColor,\n borderRadius: getRoundedCorners(props),\n display: fullWidth ? 'block' : 'inline-block',\n padding: `${padding[0]}px ${padding[1]}px`,\n textDecoration: 'none',\n };\n\n return (\n <div style={wrapperStyle}>\n <a href={url} style={linkStyle} target=\"_blank\">\n <span\n dangerouslySetInnerHTML={{\n __html: `<!--[if mso]><i style=\"letter-spacing: ${padding[1]}px;mso-font-width:-100%;mso-text-raise:${textRaise}\" hidden> </i><![endif]-->`,\n }}\n />\n <span>{text}</span>\n <span\n dangerouslySetInnerHTML={{\n __html: `<!--[if mso]><i style=\"letter-spacing: ${padding[1]}px;mso-font-width:-100%\" hidden> </i><![endif]-->`,\n }}\n />\n </a>\n </div>\n );\n}\n\nexport default Button;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst FIXED_WIDTHS_SCHEMA = z\n .tuple([z.number().nullish(), z.number().nullish(), z.number().nullish()])\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ColumnsContainerPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n fixedWidths: FIXED_WIDTHS_SCHEMA,\n columnsCount: z\n .union([z.literal(2), z.literal(3)])\n .optional()\n .nullable(),\n columnsGap: z.number().optional().nullable(),\n contentAlignment: z.enum(['top', 'middle', 'bottom']).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\ntype TColumn = JSX.Element | JSX.Element[] | null;\nexport type ColumnsContainerProps = z.infer<typeof ColumnsContainerPropsSchema> & {\n columns?: TColumn[];\n};\n\n// Export for runtime usage\nexport const ColumnsContainerProps = ColumnsContainerPropsSchema;\n\nconst ColumnsContainerPropsDefaults = {\n columnsCount: 2,\n columnsGap: 0,\n contentAlignment: 'middle',\n} as const;\n\nexport function ColumnsContainer({ style, columns, props }: ColumnsContainerProps) {\n const wStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n padding: getPadding(style?.padding),\n };\n\n const blockProps = {\n columnsCount: props?.columnsCount ?? ColumnsContainerPropsDefaults.columnsCount,\n columnsGap: props?.columnsGap ?? ColumnsContainerPropsDefaults.columnsGap,\n contentAlignment: props?.contentAlignment ?? ColumnsContainerPropsDefaults.contentAlignment,\n fixedWidths: props?.fixedWidths,\n };\n\n return (\n <div style={wStyle}>\n <table\n align=\"center\"\n width=\"100%\"\n cellPadding=\"0\"\n border={0}\n style={{ tableLayout: 'fixed', borderCollapse: 'collapse' }}\n >\n <tbody style={{ width: '100%' }}>\n <tr style={{ width: '100%' }}>\n <TableCell index={0} props={blockProps} columns={columns} />\n <TableCell index={1} props={blockProps} columns={columns} />\n <TableCell index={2} props={blockProps} columns={columns} />\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n\ntype Props = {\n props: {\n fixedWidths: z.infer<typeof FIXED_WIDTHS_SCHEMA>;\n columnsCount: 2 | 3;\n columnsGap: number;\n contentAlignment: 'top' | 'middle' | 'bottom';\n };\n index: number;\n columns?: TColumn[];\n};\nfunction TableCell({ index, props, columns }: Props) {\n const contentAlignment = props?.contentAlignment ?? ColumnsContainerPropsDefaults.contentAlignment;\n const columnsCount = props?.columnsCount ?? ColumnsContainerPropsDefaults.columnsCount;\n\n if (columnsCount === 2 && index === 2) {\n return null;\n }\n\n const style: CSSProperties = {\n boxSizing: 'content-box',\n verticalAlign: contentAlignment,\n paddingLeft: getPaddingBefore(index, props),\n paddingRight: getPaddingAfter(index, props),\n width: props.fixedWidths?.[index] ?? undefined,\n };\n const children = (columns && columns[index]) ?? null;\n return <td style={style}>{children}</td>;\n}\n\nfunction getPaddingBefore(index: number, { columnsGap, columnsCount }: Props['props']) {\n if (index === 0) {\n return 0;\n }\n if (columnsCount === 2) {\n return columnsGap / 2;\n }\n if (index === 1) {\n return columnsGap / 3;\n }\n return (2 * columnsGap) / 3;\n}\n\nfunction getPaddingAfter(index: number, { columnsGap, columnsCount }: Props['props']) {\n if (columnsCount === 2) {\n if (index === 0) {\n return columnsGap / 2;\n }\n return 0;\n }\n\n if (index === 0) {\n return (2 * columnsGap) / 3;\n }\n if (index === 1) {\n return columnsGap / 3;\n }\n return 0;\n}\n\nexport default ColumnsContainer;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ContainerPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n borderColor: COLOR_SCHEMA,\n borderRadius: z.number().optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n});\n\nexport type ContainerProps = {\n style?: z.infer<typeof ContainerPropsSchema>['style'];\n children?: JSX.Element | JSX.Element[] | null;\n};\n\n// Export for runtime usage\nexport const ContainerProps = ContainerPropsSchema;\n\nfunction getBorder(style: ContainerProps['style']) {\n if (!style || !style.borderColor) {\n return undefined;\n }\n return `1px solid ${style.borderColor}`;\n}\n\nexport function Container({ style, children }: ContainerProps) {\n const wStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n border: getBorder(style),\n borderRadius: style?.borderRadius ?? undefined,\n padding: getPadding(style?.padding),\n };\n if (!children) {\n return <div style={wStyle} />;\n }\n return <div style={wStyle}>{children}</div>;\n}\n\nexport default Container;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const DividerPropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n lineColor: COLOR_SCHEMA,\n lineHeight: z.number().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type DividerProps = z.infer<typeof DividerPropsSchema>;\n\n// Export for runtime usage\nexport const DividerProps = DividerPropsSchema;\n\nexport const DividerPropsDefaults = {\n lineHeight: 1,\n lineColor: '#333333',\n};\n\nexport function Divider({ style, props }: DividerProps) {\n const st: CSSProperties = {\n padding: getPadding(style?.padding),\n backgroundColor: style?.backgroundColor ?? undefined,\n };\n const borderTopWidth = props?.lineHeight ?? DividerPropsDefaults.lineHeight;\n const borderTopColor = props?.lineColor ?? DividerPropsDefaults.lineColor;\n return (\n <div style={st}>\n <hr\n style={{\n width: '100%',\n border: 'none',\n borderTop: `${borderTopWidth}px solid ${borderTopColor}`,\n margin: 0,\n }}\n />\n </div>\n );\n}\n\nexport default Divider;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nexport const HeadingPropsSchema = z.object({\n props: z\n .object({\n text: z.string().optional().nullable(),\n level: z.enum(['h1', 'h2', 'h3']).optional().nullable(),\n })\n .optional()\n .nullable(),\n style: z\n .object({\n color: COLOR_SCHEMA,\n backgroundColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n fontWeight: z.enum(['bold', 'normal']).optional().nullable(),\n textAlign: z.enum(['left', 'center', 'right']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n});\n\nexport type HeadingProps = z.infer<typeof HeadingPropsSchema>;\n\n// Export for runtime usage\nexport const HeadingProps = HeadingPropsSchema;\n\nexport const HeadingPropsDefaults = {\n level: 'h2',\n text: '',\n} as const;\n\nexport function Heading({ props, style }: HeadingProps) {\n const level = props?.level ?? HeadingPropsDefaults.level;\n const text = props?.text ?? HeadingPropsDefaults.text;\n const hStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontWeight: style?.fontWeight ?? 'bold',\n textAlign: style?.textAlign ?? undefined,\n margin: 0,\n fontFamily: getFontFamily(style?.fontFamily),\n fontSize: getFontSize(level),\n padding: getPadding(style?.padding),\n };\n switch (level) {\n case 'h1':\n return <h1 style={hStyle}>{text}</h1>;\n case 'h2':\n return <h2 style={hStyle}>{text}</h2>;\n case 'h3':\n return <h3 style={hStyle}>{text}</h3>;\n }\n}\n\nfunction getFontSize(level: 'h1' | 'h2' | 'h3') {\n switch (level) {\n case 'h1':\n return 32;\n case 'h2':\n return 24;\n case 'h3':\n return 20;\n }\n}\n\nexport default Heading;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const HtmlPropsSchema = z.object({\n style: z\n .object({\n color: COLOR_SCHEMA,\n backgroundColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n fontSize: z.number().min(0).optional().nullable(),\n textAlign: z.enum(['left', 'right', 'center']).optional().nullable(),\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n contents: z.string().optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type HtmlProps = z.infer<typeof HtmlPropsSchema>;\n// Export for runtime usage\nexport const HtmlProps = HtmlPropsSchema;\n\nexport function Html({ style, props }: HtmlProps) {\n const children = props?.contents;\n const cssStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontFamily: getFontFamily(style?.fontFamily),\n fontSize: style?.fontSize ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n if (!children) {\n return <div style={cssStyle} />;\n }\n return <div style={cssStyle} dangerouslySetInnerHTML={{ __html: children }} />;\n}\n\nexport default Html;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const ImagePropsSchema = z.object({\n style: z\n .object({\n padding: PADDING_SCHEMA,\n backgroundColor: z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .optional()\n .nullable(),\n textAlign: z.enum(['center', 'left', 'right']).optional().nullable(),\n })\n .optional()\n .nullable(),\n props: z\n .object({\n width: z.number().optional().nullable(),\n height: z.number().optional().nullable(),\n url: z.string().optional().nullable(),\n alt: z.string().optional().nullable(),\n linkHref: z.string().optional().nullable(),\n contentAlignment: z.enum(['top', 'middle', 'bottom']).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type ImageProps = z.infer<typeof ImagePropsSchema>;\n// Export for runtime usage\nexport const ImageProps = ImagePropsSchema;\n\nexport function Image({ style, props }: ImageProps) {\n const sectionStyle: CSSProperties = {\n padding: getPadding(style?.padding),\n backgroundColor: style?.backgroundColor ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n };\n\n const linkHref = props?.linkHref ?? null;\n const width = props?.width ?? undefined;\n const height = props?.height ?? undefined;\n\n const imageElement = (\n <img\n alt={props?.alt ?? ''}\n src={props?.url ?? ''}\n width={width}\n height={height}\n style={{\n width,\n height,\n outline: 'none',\n border: 'none',\n textDecoration: 'none',\n verticalAlign: props?.contentAlignment ?? 'middle',\n display: 'inline-block',\n maxWidth: '100%',\n }}\n />\n );\n\n if (!linkHref) {\n return <div style={sectionStyle}>{imageElement}</div>;\n }\n\n return (\n <div style={sectionStyle}>\n <a href={linkHref} style={{ textDecoration: 'none' }} target=\"_blank\">\n {imageElement}\n </a>\n </div>\n );\n}\n\nexport default Image;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nfunction getFontFamily(fontFamily: z.infer<typeof FONT_FAMILY_SCHEMA>) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst PADDING_SCHEMA = z\n .object({\n top: z.number(),\n bottom: z.number(),\n right: z.number(),\n left: z.number(),\n })\n .optional()\n .nullable();\n\nconst getPadding = (padding: z.infer<typeof PADDING_SCHEMA>) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nexport const SignaturePropsSchema = z.object({\n style: z\n .object({\n backgroundColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n padding: PADDING_SCHEMA,\n })\n .optional()\n .nullable(),\n props: z\n .object({\n greeting: z.string().optional().nullable(),\n name: z.string().optional().nullable(),\n title: z.string().optional().nullable(),\n company: z.string().optional().nullable(),\n address: z.string().optional().nullable(),\n email: z.string().optional().nullable(),\n phone: z.string().optional().nullable(),\n website: z.string().optional().nullable(),\n imageUrl: z.string().optional().nullable(),\n imageSize: z.number().optional().nullable(),\n imageShape: z.enum(['circle', 'square', 'rounded']).optional().nullable(),\n layout: z.enum(['horizontal', 'vertical']).optional().nullable(),\n nameColor: COLOR_SCHEMA,\n textColor: COLOR_SCHEMA,\n linkColor: COLOR_SCHEMA,\n })\n .optional()\n .nullable(),\n});\n\nexport type SignatureProps = z.infer<typeof SignaturePropsSchema>;\nexport const SignatureProps = SignaturePropsSchema;\n\nexport const SignaturePropsDefaults = {\n greeting: '',\n name: '',\n title: '',\n company: '',\n address: '',\n email: '',\n phone: '',\n website: '',\n imageUrl: '',\n imageSize: 64,\n imageShape: 'circle',\n layout: 'horizontal',\n nameColor: '#262626',\n textColor: '#666666',\n linkColor: '#0079CC',\n} as const;\n\nfunction getImageBorderRadius(shape: string, size: number): number | undefined {\n switch (shape) {\n case 'circle':\n return size;\n case 'rounded':\n return size * 0.125;\n case 'square':\n default:\n return undefined;\n }\n}\n\nexport function Signature({ style, props }: SignatureProps) {\n const greeting = props?.greeting ?? SignaturePropsDefaults.greeting;\n const name = props?.name ?? SignaturePropsDefaults.name;\n const title = props?.title ?? SignaturePropsDefaults.title;\n const company = props?.company ?? SignaturePropsDefaults.company;\n const address = props?.address ?? SignaturePropsDefaults.address;\n const email = props?.email ?? SignaturePropsDefaults.email;\n const phone = props?.phone ?? SignaturePropsDefaults.phone;\n const website = props?.website ?? SignaturePropsDefaults.website;\n const imageUrl = props?.imageUrl ?? SignaturePropsDefaults.imageUrl;\n const imageSize = props?.imageSize ?? SignaturePropsDefaults.imageSize;\n const imageShape = props?.imageShape ?? SignaturePropsDefaults.imageShape;\n const layout = props?.layout ?? SignaturePropsDefaults.layout;\n const nameColor = props?.nameColor ?? SignaturePropsDefaults.nameColor;\n const textColor = props?.textColor ?? SignaturePropsDefaults.textColor;\n const linkColor = props?.linkColor ?? SignaturePropsDefaults.linkColor;\n\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n fontFamily: getFontFamily(style?.fontFamily),\n padding: getPadding(style?.padding),\n };\n\n const greetingStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n marginBottom: 8,\n lineHeight: '1.4',\n fontStyle: 'italic',\n };\n\n const nameStyle: CSSProperties = {\n fontSize: 16,\n fontWeight: 'bold',\n color: nameColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const detailStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const linkStyle: CSSProperties = {\n fontSize: 14,\n color: linkColor,\n textDecoration: 'none',\n };\n\n const imageElement = imageUrl ? (\n <img\n src={imageUrl}\n alt={name || company}\n width={imageSize}\n height={imageSize}\n style={{\n width: imageSize,\n height: imageSize,\n objectFit: 'cover',\n borderRadius: getImageBorderRadius(imageShape, imageSize),\n display: 'block',\n outline: 'none',\n border: 'none',\n }}\n />\n ) : null;\n\n const contactParts: JSX.Element[] = [];\n if (email) contactParts.push(<a key=\"email\" href={`mailto:${email}`} style={linkStyle}>{email}</a>);\n if (phone) contactParts.push(<a key=\"phone\" href={`tel:${phone}`} style={linkStyle}>{phone}</a>);\n if (website) {\n const href = website.startsWith('http') ? website : `https://${website}`;\n contactParts.push(<a key=\"website\" href={href} style={linkStyle} target=\"_blank\">{website}</a>);\n }\n\n const textContent = (\n <div>\n {name && <p style={nameStyle}>{name}</p>}\n {title && <p style={detailStyle}>{title}</p>}\n {company && <p style={detailStyle}>{company}</p>}\n {address && <p style={detailStyle}>{address}</p>}\n {contactParts.length > 0 && (\n <p style={{ ...detailStyle, marginTop: 4 }}>\n {contactParts.map((part, i) => (\n <React.Fragment key={i}>\n {i > 0 && <span style={detailStyle}> · </span>}\n {part}\n </React.Fragment>\n ))}\n </p>\n )}\n </div>\n );\n\n const greetingElement = greeting ? <p style={greetingStyle}>{greeting}</p> : null;\n\n if (layout === 'vertical') {\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n {imageElement && <div style={{ marginBottom: 12 }}>{imageElement}</div>}\n {textContent}\n </div>\n );\n }\n\n // horizontal layout\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n <table cellPadding=\"0\" cellSpacing=\"0\" border={0} role=\"presentation\">\n <tbody>\n <tr>\n {imageElement && (\n <td style={{ verticalAlign: 'middle', paddingRight: 16 }}>\n {imageElement}\n </td>\n )}\n <td style={{ verticalAlign: 'middle' }}>\n {textContent}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n\nexport default Signature;\n","import React, { CSSProperties } from 'react';\nimport { z } from 'zod';\n\nexport const SpacerPropsSchema = z.object({\n props: z\n .object({\n height: z.number().gte(0).optional().nullish(),\n })\n .optional()\n .nullable(),\n});\n\nexport type SpacerProps = z.infer<typeof SpacerPropsSchema>;\n\n// Export for runtime usage\nexport const SpacerProps = SpacerPropsSchema;\n\nexport const SpacerPropsDefaults = {\n height: 16,\n};\n\nexport function Spacer({ props }: SpacerProps) {\n const style: CSSProperties = {\n height: props?.height ?? SpacerPropsDefaults.height,\n };\n return <div style={style} />;\n}\n\nexport default Spacer;\n","import React from 'react';\n\nimport type { BaseZodDictionary, BlockConfiguration, DocumentBlocksDictionary } from '../utils';\n\n/**\n * @param blocks Main DocumentBlocksDictionary\n * @returns React component that can render a BlockConfiguration that is compatible with blocks\n */\nexport default function buildBlockComponent<T extends BaseZodDictionary>(blocks: DocumentBlocksDictionary<T>) {\n return function BlockComponent({ type, data }: BlockConfiguration<T>) {\n const Component = blocks[type].Component;\n return <Component {...data} />;\n };\n}\n","import { z } from 'zod';\n\nimport type { BaseZodDictionary, BlockConfiguration, DocumentBlocksDictionary } from '../utils';\n\n/**\n *\n * @param blocks Main DocumentBlocksDictionary\n * @returns zod schema that can parse arbitary objects into a single BlockConfiguration\n */\nexport default function buildBlockConfigurationSchema<T extends BaseZodDictionary>(\n blocks: DocumentBlocksDictionary<T>\n) {\n const blockObjects = Object.keys(blocks).map((type: keyof T) =>\n z.object({\n type: z.literal(type),\n data: blocks[type].schema,\n })\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return z.discriminatedUnion('type', blockObjects as any).transform((v) => v as BlockConfiguration<T>);\n}\n","import type { BaseZodDictionary, DocumentBlocksDictionary } from '../utils';\n\n/**\n * Identity function to type a DocumentBlocksDictionary\n * @param blocks Main DocumentBlocksDictionary\n * @returns typed DocumentBlocksDictionary\n */\nexport default function buildBlockConfigurationDictionary<T extends BaseZodDictionary>(\n blocks: DocumentBlocksDictionary<T>\n) {\n return blocks;\n} ","import { z } from 'zod';\n\nexport type BaseZodDictionary = { [name: string]: z.AnyZodObject };\nexport type DocumentBlocksDictionary<T extends BaseZodDictionary> = {\n [K in keyof T]: {\n schema: T[K];\n Component: (props: z.infer<T[K]>) => JSX.Element;\n };\n};\n\n// Export as a runtime value\nexport const DocumentBlocksDictionary = 'DocumentBlocksDictionary';\n\nexport type BlockConfiguration<T extends BaseZodDictionary> = {\n [TType in keyof T]: {\n type: TType;\n data: z.infer<T[TType]>;\n };\n}[keyof T];\n\n// Export as a runtime value\nexport const BlockConfiguration = 'BlockConfiguration';\n\n// Export BaseZodDictionary as a runtime value\nexport const BaseZodDictionary = 'BaseZodDictionary';\n\nexport class BlockNotFoundError extends Error {\n blockId: string;\n constructor(blockId: string) {\n super('Could not find a block with the given blockId');\n this.blockId = blockId;\n }\n}\n","import { z } from 'zod';\n\n// Import from our local blocks\nimport { ColumnsContainerPropsSchema as BaseColumnsContainerPropsSchema } from '@blocks';\n\n/**\n * Schema for ColumnsContainer props in the email editor\n * \n * Extends the base ColumnsContainer schema to add support for \n * childrenIds references that allow adding other blocks into columns\n */\nconst BasePropsShape = BaseColumnsContainerPropsSchema.shape.props.unwrap().unwrap().shape;\n\nconst ColumnsContainerPropsSchema = z.object({\n style: BaseColumnsContainerPropsSchema.shape.style,\n props: z\n .object({\n ...BasePropsShape,\n columns: z.tuple([\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n ]),\n })\n .optional()\n .nullable(),\n});\n\nexport default ColumnsContainerPropsSchema;\nexport type ColumnsContainerProps = z.infer<typeof ColumnsContainerPropsSchema>; ","import React from 'react';\n\n// Import from our local blocks\nimport { ColumnsContainer as BaseColumnsContainer } from '@blocks';\n\nimport { ReaderBlock } from '../../reader/core';\n\nimport { ColumnsContainerProps } from './columns-container-props-schema';\n\n/**\n * ColumnsContainer Reader component for email templates\n * \n * This component extends the base ColumnsContainer to support\n * referencing child blocks by ID rather than direct embedding,\n * allowing for a more flexible document structure.\n */\nexport default function ColumnsContainerReader({ style, props }: ColumnsContainerProps) {\n const { columns, ...restProps } = props ?? {};\n let cols = undefined;\n if (columns) {\n cols = columns.map((col) => col.childrenIds.map((childId) => <ReaderBlock key={childId} id={childId} />));\n }\n\n return <BaseColumnsContainer props={restProps} columns={cols} style={style} />;\n} ","import { z } from 'zod';\n\n// Import from our local blocks\nimport { ContainerPropsSchema as BaseContainerPropsSchema } from '@blocks';\n\n/**\n * Schema for Container props in the email editor\n * \n * Extends the base Container schema to add support for\n * childrenIds references that allow adding other blocks inside\n */\nexport const ContainerPropsSchema = z.object({\n style: BaseContainerPropsSchema.shape.style,\n props: z\n .object({\n childrenIds: z.array(z.string()).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type ContainerProps = z.infer<typeof ContainerPropsSchema>; ","import React from 'react';\n\n// Import from our local blocks\nimport { Container as BaseContainer } from '@blocks';\n\nimport { ReaderBlock } from '@email-builder/reader/core';\n\nimport { ContainerProps } from './container-props-schema';\n\n/**\n * Container Reader component for email templates\n * \n * This component extends the base Container to support\n * referencing child blocks by ID rather than direct embedding,\n * allowing for a more flexible document structure.\n */\nexport default function ContainerReader({ style, props }: ContainerProps) {\n const childrenIds = props?.childrenIds ?? [];\n return (\n <BaseContainer style={style}>\n {childrenIds.map((childId) => (\n <ReaderBlock key={childId} id={childId} />\n ))}\n </BaseContainer>\n );\n} ","import { z } from 'zod';\n\n/**\n * EmailLayout schema\n * \n * The EmailLayout is the top-level container for email templates.\n * It provides styling options for the entire email and contains\n * all other blocks.\n */\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nexport const EmailLayoutPropsSchema = z.object({\n backdropColor: COLOR_SCHEMA,\n borderColor: COLOR_SCHEMA,\n borderRadius: z.number().optional().nullable(),\n canvasColor: COLOR_SCHEMA,\n textColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n childrenIds: z.array(z.string()).optional().nullable(),\n});\n\nexport type EmailLayoutProps = z.infer<typeof EmailLayoutPropsSchema>; ","import React from 'react';\n\nimport { ReaderBlock } from '@email-builder/reader/core';\n\nimport { EmailLayoutProps } from './email-layout-props-schema';\n\n/**\n * EmailLayout Reader component\n * \n * This is the top-level component for email templates.\n * It provides the overall structure and styling for emails,\n * including responsiveness and proper email client support.\n */\n\nfunction getFontFamily(fontFamily: EmailLayoutProps['fontFamily']) {\n const f = fontFamily ?? 'MODERN_SANS';\n switch (f) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n}\n\nfunction getBorder({ borderColor }: EmailLayoutProps) {\n if (!borderColor) {\n return undefined;\n }\n return `1px solid ${borderColor}`;\n}\n\nexport default function EmailLayoutReader(props: EmailLayoutProps) {\n const childrenIds = props.childrenIds ?? [];\n return (\n <div\n style={{\n backgroundColor: props.backdropColor ?? '#F5F5F5',\n color: props.textColor ?? '#262626',\n fontFamily: getFontFamily(props.fontFamily),\n fontSize: '16px',\n fontWeight: '400',\n letterSpacing: '0.15008px',\n lineHeight: '1.5',\n margin: '0',\n padding: '32px 0',\n minHeight: '100%',\n width: '100%',\n }}\n >\n <table\n align=\"center\"\n width=\"100%\"\n style={{\n margin: '0 auto',\n maxWidth: '600px',\n backgroundColor: props.canvasColor ?? '#FFFFFF',\n borderRadius: props.borderRadius ?? undefined,\n border: getBorder(props),\n }}\n role=\"presentation\"\n cellSpacing=\"0\"\n cellPadding=\"0\"\n border={0}\n >\n <tbody>\n <tr style={{ width: '100%' }}>\n <td>\n {childrenIds.map((childId) => (\n <ReaderBlock key={childId} id={childId} />\n ))}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n} ","import React, { createContext, useContext } from 'react';\nimport { z } from 'zod';\n\n// Import directly from our local blocks\nimport { \n Avatar, AvatarPropsSchema,\n Button, ButtonPropsSchema,\n Divider, DividerPropsSchema,\n Heading, HeadingPropsSchema,\n Html, HtmlPropsSchema,\n Image, ImagePropsSchema,\n Signature, SignaturePropsSchema,\n Spacer, SpacerPropsSchema,\n Text, TextPropsSchema\n} from '../../blocks';\n\n// Import from our local core\nimport {\n buildBlockComponent,\n buildBlockConfigurationDictionary,\n buildBlockConfigurationSchema,\n} from '../../core';\n\n// Import the local block components using the new index files\nimport {\n ColumnsContainerPropsSchema,\n ColumnsContainerReader,\n ContainerPropsSchema,\n ContainerReader,\n EmailLayoutPropsSchema,\n EmailLayoutReader\n} from '../blocks';\n\n/**\n * Reader component - responsible for rendering an email document\n * \n * This component provides a context for rendering a document composed of various blocks.\n * It uses a dictionary of block components and their schemas to validate and render\n * the document structure.\n */\n\n// Define the context and reader document type first to avoid circular references\nexport type TReaderDocument = Record<string, any>;\nconst ReaderContext = createContext<TReaderDocument>({});\n\nfunction useReaderDocument() {\n return useContext(ReaderContext);\n}\n\n// Create a temporary ReaderBlock component to define in the dictionary\nexport type TReaderBlockProps = { id: string };\nexport function ReaderBlock({ id }: TReaderBlockProps) {\n const document = useReaderDocument();\n return document[id] ? <BaseReaderBlock {...document[id]} /> : null;\n}\n\n// Now define the dictionary with all block components\nconst READER_DICTIONARY = buildBlockConfigurationDictionary({\n ColumnsContainer: {\n schema: ColumnsContainerPropsSchema,\n Component: ColumnsContainerReader,\n },\n Container: {\n schema: ContainerPropsSchema,\n Component: ContainerReader,\n },\n EmailLayout: {\n schema: EmailLayoutPropsSchema,\n Component: EmailLayoutReader,\n },\n //\n Avatar: {\n schema: AvatarPropsSchema,\n Component: Avatar,\n },\n Button: {\n schema: ButtonPropsSchema,\n Component: Button,\n },\n Divider: {\n schema: DividerPropsSchema,\n Component: Divider,\n },\n Heading: {\n schema: HeadingPropsSchema,\n Component: Heading,\n },\n Html: {\n schema: HtmlPropsSchema,\n Component: Html,\n },\n Image: {\n schema: ImagePropsSchema,\n Component: Image,\n },\n Spacer: {\n schema: SpacerPropsSchema,\n Component: Spacer,\n },\n Text: {\n schema: TextPropsSchema,\n Component: Text,\n },\n Signature: {\n schema: SignaturePropsSchema,\n Component: Signature,\n },\n});\n\nexport const ReaderBlockSchema = buildBlockConfigurationSchema(READER_DICTIONARY);\nexport type TReaderBlock = z.infer<typeof ReaderBlockSchema>;\n\nexport const ReaderDocumentSchema = z.record(z.string(), ReaderBlockSchema);\n\n// Now define the BaseReaderBlock using the dictionary\nconst BaseReaderBlock = buildBlockComponent(READER_DICTIONARY);\n\nexport type TReaderProps = {\n document: Record<string, z.infer<typeof ReaderBlockSchema>>;\n rootBlockId: string;\n};\nexport default function Reader({ document, rootBlockId }: TReaderProps) {\n return (\n <ReaderContext.Provider value={document}>\n <ReaderBlock id={rootBlockId} />\n </ReaderContext.Provider>\n );\n} ","import React from 'react';\nimport { renderToStaticMarkup as baseRenderToStaticMarkup } from 'react-dom/server';\n\nimport { Reader, type TReaderDocument } from '../reader';\n\n/**\n * Renders an email document to static HTML markup\n * \n * This function takes a document structure and renders it to static HTML\n * suitable for sending as an email. It adds the DOCTYPE and wraps everything\n * in basic HTML/body tags.\n * \n * @param document The email document structure to render\n * @param options Options including the rootBlockId to start rendering from\n * @returns A complete HTML string representation of the email\n */\ntype TOptions = {\n rootBlockId: string;\n};\n\nexport default function renderToStaticMarkup(document: TReaderDocument, { rootBlockId }: TOptions) {\n return (\n '<!DOCTYPE html>' +\n baseRenderToStaticMarkup(\n <html>\n <body>\n <Reader document={document} rootBlockId={rootBlockId} />\n </body>\n </html>\n )\n );\n} ","import { type TReaderDocument } from '../reader';\n\ntype TOptions = {\n rootBlockId: string;\n};\n\nexport default function renderToText(document: TReaderDocument, { rootBlockId }: TOptions): string {\n const lines: string[] = [];\n renderBlock(document, rootBlockId, lines);\n // Collapse 3+ consecutive blank lines into 2, then trim\n return lines.join('\\n').replace(/\\n{3,}/g, '\\n\\n').trim() + '\\n';\n}\n\nfunction renderBlock(document: TReaderDocument, blockId: string, lines: string[]): void {\n const block = document[blockId];\n if (!block) return;\n\n const { type, data } = block;\n\n switch (type) {\n case 'EmailLayout':\n renderChildren(document, data?.childrenIds, lines);\n break;\n\n case 'Container':\n renderChildren(document, data?.props?.childrenIds, lines);\n break;\n\n case 'ColumnsContainer':\n renderColumnsContainer(document, data, lines);\n break;\n\n case 'Text':\n renderText(data, lines);\n break;\n\n case 'Heading':\n renderHeading(data, lines);\n break;\n\n case 'Button':\n renderButton(data, lines);\n break;\n\n case 'Image':\n renderImage(data, lines);\n break;\n\n case 'Avatar':\n renderAvatar(data, lines);\n break;\n\n case 'Html':\n renderHtml(data, lines);\n break;\n\n case 'Divider':\n lines.push('');\n lines.push('---');\n lines.push('');\n break;\n\n case 'Spacer':\n lines.push('');\n break;\n }\n}\n\nfunction renderChildren(document: TReaderDocument, childrenIds: string[] | null | undefined, lines: string[]): void {\n if (!childrenIds) return;\n for (const childId of childrenIds) {\n renderBlock(document, childId, lines);\n }\n}\n\nfunction renderColumnsContainer(document: TReaderDocument, data: any, lines: string[]): void {\n const columns = data?.props?.columns;\n if (!columns) return;\n for (const col of columns) {\n if (col?.childrenIds?.length) {\n renderChildren(document, col.childrenIds, lines);\n }\n }\n}\n\nfunction renderText(data: any, lines: string[]): void {\n const text = data?.props?.text ?? '';\n if (!text) return;\n\n if (data?.props?.markdown) {\n // Strip HTML tags from rendered markdown - the source is markdown so just use it directly\n lines.push(text);\n } else {\n lines.push(text);\n }\n lines.push('');\n}\n\nfunction renderHeading(data: any, lines: string[]): void {\n const text = data?.props?.text ?? '';\n if (!text) return;\n\n const level = data?.props?.level ?? 'h2';\n const prefix = level === 'h1' ? '# ' : level === 'h2' ? '## ' : '### ';\n lines.push(prefix + text);\n lines.push('');\n}\n\nfunction renderButton(data: any, lines: string[]): void {\n const text = data?.props?.text ?? '';\n const url = data?.props?.url ?? '';\n\n if (text && url) {\n lines.push(`${text}: ${url}`);\n } else if (text) {\n lines.push(text);\n } else if (url) {\n lines.push(url);\n }\n lines.push('');\n}\n\nfunction renderImage(data: any, lines: string[]): void {\n const alt = data?.props?.alt ?? '';\n const url = data?.props?.url ?? '';\n const linkHref = data?.props?.linkHref ?? '';\n\n if (alt && linkHref) {\n lines.push(`[${alt}] ${linkHref}`);\n } else if (alt) {\n lines.push(`[${alt}]`);\n } else if (url) {\n lines.push(`[Image: ${url}]`);\n }\n lines.push('');\n}\n\nfunction renderAvatar(data: any, lines: string[]): void {\n const alt = data?.props?.alt ?? '';\n if (alt) {\n lines.push(`[${alt}]`);\n lines.push('');\n }\n}\n\nfunction renderHtml(data: any, lines: string[]): void {\n const contents = data?.props?.contents ?? '';\n if (!contents) return;\n\n // Strip HTML tags to get plain text\n const text = stripHtml(contents);\n if (text) {\n lines.push(text);\n lines.push('');\n }\n}\n\nfunction stripHtml(html: string): string {\n return html\n // Replace <br> and <br/> with newlines\n .replace(/<br\\s*\\/?>/gi, '\\n')\n // Replace block-level closing tags with newlines\n .replace(/<\\/(p|div|h[1-6]|li|tr|blockquote)>/gi, '\\n')\n // Replace <hr> with divider\n .replace(/<hr\\s*\\/?>/gi, '\\n---\\n')\n // Strip remaining tags\n .replace(/<[^>]+>/g, '')\n // Decode common HTML entities\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/ /g, ' ')\n // Clean up whitespace per line\n .split('\\n')\n .map(line => line.trim())\n .join('\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n","import { alpha, createTheme, darken, lighten } from '@mui/material/styles';\n\nconst BRAND_NAVY = '#212443';\nconst BRAND_BLUE = '#0079CC';\nconst BRAND_GREEN = '#1F8466';\nconst BRAND_RED = '#E81212';\nconst BRAND_YELLOW = '#F6DC9F';\nconst BRAND_PURPLE = '#6C0E7C';\nconst BRAND_BROWN = '#CC996C';\nconst STANDARD_FONT_FAMILY =\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"';\nconst MONOSPACE_FONT_FAMILY =\n 'ui-monospace, Menlo, Monaco, \"Cascadia Mono\", \"Segoe UI Mono\", \"Roboto Mono\", \"Oxygen Mono\", \"Ubuntu Monospace\", \"Source Code Pro\", \"Fira Mono\", \"Droid Sans Mono\", \"Courier New\", monospace';\n\nconst BASE_THEME = createTheme({\n palette: {\n background: {\n default: '#f2f5f7',\n },\n text: {\n primary: '#1F1F21',\n secondary: '#4F4F4F',\n },\n },\n typography: {\n fontFamily: STANDARD_FONT_FAMILY,\n },\n});\n\nconst THEME = createTheme(BASE_THEME, {\n palette: {\n brand: {\n navy: BRAND_NAVY,\n blue: BRAND_BLUE,\n red: BRAND_RED,\n green: BRAND_GREEN,\n yellow: BRAND_YELLOW,\n purple: BRAND_PURPLE,\n brown: BRAND_BROWN,\n },\n success: {\n main: BRAND_GREEN,\n light: lighten(BRAND_GREEN, 0.15),\n dark: darken(BRAND_GREEN, 0.15),\n },\n error: {\n main: BRAND_RED,\n light: lighten(BRAND_RED, 0.15),\n dark: darken(BRAND_RED, 0.15),\n },\n cadet: {\n 100: '#F9FAFB',\n 200: '#F2F5F7',\n 300: '#DCE4EA',\n 400: '#A8BBCA',\n 500: '#6A8BA4',\n },\n highlight: {\n 100: lighten(BRAND_YELLOW, 0.8),\n 200: lighten(BRAND_YELLOW, 0.6),\n 300: lighten(BRAND_YELLOW, 0.4),\n 400: lighten(BRAND_YELLOW, 0.2),\n 500: BRAND_YELLOW,\n },\n info: {\n main: BRAND_BLUE,\n },\n primary: {\n main: BRAND_BLUE,\n },\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: `\n address {\n font-style: normal;\n }\n fieldset {\n border: none;\n padding: 0;\n }\n pre {\n font-family: ${MONOSPACE_FONT_FAMILY}\n white-space: pre-wrap;\n font-size: 12px;\n }\n `,\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n fontSize: BASE_THEME.typography.pxToRem(14),\n },\n action: {\n paddingTop: 0,\n marginRight: 0,\n },\n filledSuccess: {\n backgroundColor: BRAND_GREEN,\n },\n },\n },\n MuiStepLabel: {\n styleOverrides: {\n label: {\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n },\n },\n MuiDialog: {\n defaultProps: {\n fullWidth: true,\n },\n },\n MuiDialogContent: {\n styleOverrides: {\n root: {\n paddingTop: BASE_THEME.spacing(1),\n paddingBottom: BASE_THEME.spacing(2),\n },\n },\n },\n MuiDialogTitle: {\n defaultProps: {\n variant: 'h4',\n },\n styleOverrides: {\n root: {\n paddingTop: BASE_THEME.spacing(3),\n paddingBottom: BASE_THEME.spacing(1),\n },\n },\n },\n MuiDialogActions: {\n styleOverrides: {\n root: {\n borderTop: '1px solid',\n borderTopColor: BASE_THEME.palette.divider,\n marginTop: BASE_THEME.spacing(2.5),\n padding: `${BASE_THEME.spacing(1.5)} ${BASE_THEME.spacing(3)}`,\n },\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n ...BASE_THEME.typography.body2,\n borderColor: BASE_THEME.palette.grey[200],\n },\n head: {\n ...BASE_THEME.typography.overline,\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n letterSpacing: '0.075em',\n color: BASE_THEME.palette.text.secondary,\n },\n },\n },\n MuiTableRow: {\n styleOverrides: {\n root: {\n '&:last-child td': {\n borderBottom: 0,\n },\n },\n },\n },\n MuiAvatar: {\n styleOverrides: {\n root: {\n textTransform: 'uppercase',\n fontSize: BASE_THEME.typography.pxToRem(14),\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n '&.MuiChip-filledError, &.MuiChip-filledSuccess': {\n fill: BASE_THEME.palette.primary.contrastText,\n },\n },\n sizeSmall: {\n borderRadius: BASE_THEME.spacing(0.5),\n fontSize: 12,\n },\n iconSmall: {\n fontSize: 14,\n marginLeft: BASE_THEME.spacing(1),\n },\n colorSecondary: {\n borderColor: BASE_THEME.palette.grey[400],\n color: BASE_THEME.palette.text.secondary,\n },\n label: {\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n },\n },\n MuiDrawer: {\n defaultProps: {\n PaperProps: {\n elevation: 2,\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n fontSize: BASE_THEME.typography.pxToRem(12),\n backgroundColor: alpha(BASE_THEME.palette.text.primary, 0.9),\n },\n },\n },\n MuiSlider: {\n styleOverrides: {\n root: {\n height: 1,\n },\n track: {\n height: 1,\n border: 'none',\n },\n rail: {\n height: 1,\n backgroundColor: BASE_THEME.palette.grey[500],\n },\n mark: {\n backgroundColor: BASE_THEME.palette.grey[500],\n },\n markActive: {\n height: 0,\n },\n thumb: {\n height: 16,\n width: 16,\n cursor: 'col-resize',\n '&:hover, &.Mui-active, &.Mui-focusVisible': {\n boxShadow: `0 0 0 4px ${alpha(BRAND_BLUE, 0.2)}`,\n },\n '&:before': {\n display: 'none',\n },\n },\n },\n },\n MuiPaper: {\n defaultProps: {\n elevation: 2,\n square: true,\n },\n },\n MuiButtonBase: {\n defaultProps: {\n disableTouchRipple: true,\n focusRipple: true,\n },\n styleOverrides: {\n root: {\n '&.MuiButton-containedSecondary.Mui-disabled': {\n backgroundColor: BASE_THEME.palette.grey[100],\n },\n },\n },\n },\n MuiButtonGroup: {\n defaultProps: {\n disableElevation: true,\n },\n },\n MuiIconButton: {\n styleOverrides: {\n edgeStart: {\n marginLeft: BASE_THEME.spacing(-1),\n },\n colorSecondary: {\n color: BASE_THEME.palette.grey[500],\n },\n },\n },\n MuiButton: {\n defaultProps: {\n disableElevation: true,\n },\n styleOverrides: {\n textPrimary: {\n color: BASE_THEME.palette.text.primary,\n },\n textSecondary: {\n color: BASE_THEME.palette.text.secondary,\n },\n outlinedPrimary: {\n borderColor: BASE_THEME.palette.grey[300],\n color: BASE_THEME.palette.text.primary,\n '&:hover, &:active, &:focus': {\n borderColor: BASE_THEME.palette.grey[500],\n color: BASE_THEME.palette.text.primary,\n },\n },\n containedSecondary: {\n backgroundColor: BASE_THEME.palette.common.white,\n border: `1px solid ${BASE_THEME.palette.grey[300]}`,\n color: BASE_THEME.palette.text.primary,\n '&:hover, &:active, &:focus': {\n backgroundColor: BASE_THEME.palette.common.white,\n borderColor: BASE_THEME.palette.grey[500],\n color: BASE_THEME.palette.text.primary,\n },\n },\n },\n },\n MuiToggleButton: {\n styleOverrides: {\n root: {\n paddingLeft: BASE_THEME.spacing(1.5),\n paddingRight: BASE_THEME.spacing(1.5),\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n '&:not(.Mui-disabled, .Mui-error):before': {\n borderBottom: `1px solid ${BASE_THEME.palette.grey[400]}`,\n },\n '&:hover:not(.Mui-disabled, .Mui-error):before': {\n borderBottom: `1px solid ${BASE_THEME.palette.grey[500]} !important`,\n },\n '&:after': {\n borderBottom: `1px solid ${BASE_THEME.palette.text.primary} !important`,\n },\n '&.MuiOutlinedInput-root:not(.Mui-error)': {\n '& fieldset': {\n borderColor: BASE_THEME.palette.grey[300],\n transition: 'border-color 0.2s',\n },\n },\n '&.MuiOutlinedInput-root:not(.Mui-disabled, .Mui-error)': {\n '&:hover fieldset': {\n borderColor: BASE_THEME.palette.grey[400],\n },\n '&.Mui-focused fieldset': {\n borderColor: BASE_THEME.palette.text.secondary,\n borderWidth: 1,\n },\n },\n },\n input: {\n fontSize: BASE_THEME.typography.pxToRem(14),\n '&.Mui-disabled': {\n WebkitTextFillColor: 'inherit',\n color: BASE_THEME.palette.text.secondary,\n },\n },\n inputSizeSmall: {},\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n notchedOutline: {\n '& legend': {\n fontSize: '0.85em',\n maxWidth: '100%',\n },\n },\n },\n },\n MuiInputAdornment: {\n styleOverrides: {\n root: {\n '& .MuiTypography-root': {\n fontSize: BASE_THEME.typography.pxToRem(14),\n color: BASE_THEME.palette.text.secondary,\n },\n },\n },\n },\n MuiInputLabel: {\n defaultProps: {\n shrink: true,\n },\n styleOverrides: {\n shrink: {\n transform: 'scale(0.85)',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n '&.Mui-focused': {\n color: BASE_THEME.palette.text.primary,\n },\n '&.MuiInputLabel-standard': {\n transform: 'translate(0, -4px) scale(0.85)',\n color: '#4F4F4F',\n },\n '&.MuiInputLabel-outlined': {\n transform: 'translate(15px, -8px) scale(0.85)',\n },\n },\n },\n },\n MuiTabs: {\n defaultProps: {\n variant: 'scrollable',\n },\n styleOverrides: {\n indicator: {\n height: 1,\n backgroundColor: BASE_THEME.palette.text.primary,\n },\n },\n },\n MuiTab: {\n styleOverrides: {\n root: {\n textTransform: 'none',\n minWidth: BASE_THEME.spacing(2),\n paddingLeft: BASE_THEME.spacing(1.5),\n paddingRight: BASE_THEME.spacing(1.5),\n fontSize: BASE_THEME.typography.pxToRem(14),\n fontFamily: BASE_THEME.typography.fontFamily,\n lineHeight: 1.5,\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n transition: 'color 0.2s',\n '&.Mui-selected': {\n color: BASE_THEME.palette.text.primary,\n },\n '&:hover': {\n color: BASE_THEME.palette.text.primary,\n },\n },\n },\n },\n MuiCard: {\n styleOverrides: {\n root: {\n borderRadius: 0,\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n title: {\n fontSize: BASE_THEME.typography.pxToRem(18),\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n },\n },\n },\n typography: {\n fontFamily: BASE_THEME.typography.fontFamily,\n h1: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(40),\n lineHeight: 1.2,\n letterSpacing: '-0.02em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h2: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(32),\n lineHeight: 1.2,\n letterSpacing: '-0.02em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h3: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(24),\n lineHeight: 1.5,\n letterSpacing: '-0.01em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h4: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(20),\n lineHeight: 1.5,\n letterSpacing: '-0.01em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h5: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(18),\n lineHeight: 1.5,\n letterSpacing: '-0.01em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n h6: {\n fontFamily: BASE_THEME.typography.fontFamily,\n fontSize: BASE_THEME.typography.pxToRem(16),\n lineHeight: 1.5,\n letterSpacing: '-0.005em',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n },\n body1: {\n fontSize: BASE_THEME.typography.pxToRem(14),\n },\n body2: {\n fontSize: BASE_THEME.typography.pxToRem(12),\n },\n overline: {\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n letterSpacing: '0.05em',\n },\n button: {\n textTransform: 'none',\n fontWeight: BASE_THEME.typography.fontWeightMedium,\n lineHeight: 1.5,\n },\n caption: {\n letterSpacing: 0,\n lineHeight: 1.5,\n },\n },\n shadows: [\n 'none',\n '0px 4px 15px rgba(33, 36, 67, 0.04), 0px 0px 2px rgba(33, 36, 67, 0.04), 0px 0px 1px rgba(33, 36, 67, 0.04)',\n '0px 10px 20px rgba(33, 36, 67, 0.04), 0px 2px 6px rgba(33, 36, 67, 0.04), 0px 0px 1px rgba(33, 36, 67, 0.04)',\n '0px 16px 24px rgba(33, 36, 67, 0.05), 0px 2px 6px rgba(33, 36, 67, 0.05), 0px 0px 1px rgba(33, 36, 67, 0.05)',\n '0px 24px 32px rgba(33, 36, 67, 0.06), 0px 16px 24px rgba(33, 36, 67, 0.06), 0px 4px 8px rgba(33, 36, 67, 0.06)',\n ...Array(20).fill('none'),\n ],\n});\n\nexport default THEME;\n","import { create } from 'zustand';\nimport { TEditorConfiguration } from './core';\n\ntype TValue = {\n document: TEditorConfiguration;\n selectedBlockId: string | null;\n selectedSidebarTab: 'block-configuration' | 'styles' | 'template-settings';\n selectedMainTab: 'editor' | 'preview' | 'json' | 'html' | 'text';\n selectedScreenSize: 'desktop' | 'mobile';\n inspectorDrawerOpen: boolean;\n samplesDrawerOpen: boolean;\n persistenceEnabled: boolean;\n};\n\n// Initialize with an empty document\nconst EMPTY_DOCUMENT: TEditorConfiguration = {\n root: {\n type: 'EmailLayout',\n data: {\n backdropColor: '#F5F5F5',\n canvasColor: '#FFFFFF',\n textColor: '#262626',\n fontFamily: 'MODERN_SANS',\n childrenIds: [],\n },\n },\n};\n\nconst editorStateStore = create<TValue>(() => ({\n document: EMPTY_DOCUMENT,\n selectedBlockId: null,\n selectedSidebarTab: 'styles',\n selectedMainTab: 'editor',\n selectedScreenSize: 'desktop',\n inspectorDrawerOpen: true,\n samplesDrawerOpen: true,\n persistenceEnabled: false,\n}));\n\nexport function useDocument() {\n return editorStateStore((s) => s.document);\n}\n\nexport function useSelectedBlockId() {\n return editorStateStore((s) => s.selectedBlockId);\n}\n\nexport function useSelectedScreenSize() {\n return editorStateStore((s) => s.selectedScreenSize);\n}\n\nexport function useSelectedMainTab() {\n return editorStateStore((s) => s.selectedMainTab);\n}\n\nexport function setSelectedMainTab(selectedMainTab: TValue['selectedMainTab']) {\n return editorStateStore.setState({ selectedMainTab });\n}\n\nexport function useSelectedSidebarTab() {\n return editorStateStore((s) => s.selectedSidebarTab);\n}\n\nexport function useInspectorDrawerOpen() {\n return editorStateStore((s) => s.inspectorDrawerOpen);\n}\n\nexport function useSamplesDrawerOpen() {\n return editorStateStore((s) => s.samplesDrawerOpen);\n}\n\nexport function usePersistenceEnabled() {\n return editorStateStore((s) => s.persistenceEnabled);\n}\n\nexport function setSelectedBlockId(selectedBlockId: TValue['selectedBlockId']) {\n const selectedSidebarTab = selectedBlockId === null ? 'styles' : 'block-configuration';\n const options: Partial<TValue> = {};\n if (selectedBlockId !== null) {\n options.inspectorDrawerOpen = true;\n }\n return editorStateStore.setState({\n selectedBlockId,\n selectedSidebarTab,\n ...options,\n });\n}\n\nexport function setSidebarTab(selectedSidebarTab: TValue['selectedSidebarTab']) {\n return editorStateStore.setState({ selectedSidebarTab });\n}\n\nexport function resetDocument(document: TValue['document']) {\n return editorStateStore.setState({\n document,\n selectedSidebarTab: 'styles',\n selectedBlockId: null,\n });\n}\n\nexport function getDocument() {\n return editorStateStore.getState().document;\n}\n\nexport function setDocument(document: TValue['document']) {\n const originalDocument = editorStateStore.getState().document;\n \n editorStateStore.setState({\n document: {\n ...originalDocument,\n ...document,\n },\n });\n}\n\nexport function toggleInspectorDrawerOpen() {\n const inspectorDrawerOpen = !editorStateStore.getState().inspectorDrawerOpen;\n return editorStateStore.setState({ inspectorDrawerOpen });\n}\n\nexport function toggleSamplesDrawerOpen() {\n const samplesDrawerOpen = !editorStateStore.getState().samplesDrawerOpen;\n return editorStateStore.setState({ samplesDrawerOpen });\n}\n\nexport function setSelectedScreenSize(selectedScreenSize: TValue['selectedScreenSize']) {\n return editorStateStore.setState({ selectedScreenSize });\n}\n\nexport function setPersistenceEnabled(persistenceEnabled: boolean) {\n return editorStateStore.setState({ persistenceEnabled });\n}\n","import React, { createContext, useContext, useState, useCallback, useMemo, useRef } from 'react';\nimport { TEditorConfiguration } from '@editor/core';\nimport { getDocument } from '@editor/editor-context';\n\n// Type for stored template\nexport interface StoredTemplate {\n id: string;\n name: string;\n content: TEditorConfiguration;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface EmailEditorContextType {\n currentTemplateId: string | null;\n currentTemplateName: string | null;\n saveTemplate: () => TEditorConfiguration;\n loadTemplate: (template: TEditorConfiguration, templateId?: string, templateName?: string) => void;\n registerSaveListener: (callback: (template: TEditorConfiguration) => void) => () => void;\n setCurrentTemplate: (templateId: string | null, templateName: string | null) => void;\n}\n\nconst EmailEditorContext = createContext<EmailEditorContextType | null>(null);\n\nexport interface EmailEditorProviderProps {\n children: React.ReactNode;\n initialTemplate?: TEditorConfiguration;\n initialTemplateId?: string;\n initialTemplateName?: string;\n onSave?: (template: TEditorConfiguration) => void;\n onChange?: (template: TEditorConfiguration) => void;\n}\n\nexport const EmailEditorProvider: React.FC<EmailEditorProviderProps> = ({\n children,\n initialTemplateId = null,\n initialTemplateName = null,\n onSave,\n}) => {\n const [currentTemplateId, setCurrentTemplateId] = useState<string | null>(initialTemplateId);\n const [currentTemplateName, setCurrentTemplateName] = useState<string | null>(initialTemplateName);\n const saveListenersRef = useRef<((template: TEditorConfiguration) => void)[]>([]);\n\n // Use ref for onSave callback to keep context value stable\n const onSaveRef = useRef(onSave);\n onSaveRef.current = onSave;\n\n const saveTemplate = useCallback(() => {\n const currentDoc = getDocument();\n saveListenersRef.current.forEach(listener => listener(currentDoc));\n if (onSaveRef.current) {\n onSaveRef.current(currentDoc);\n }\n return currentDoc;\n }, []);\n\n const loadTemplate = useCallback((newTemplate: TEditorConfiguration, templateId?: string, templateName?: string) => {\n if (templateId !== undefined) {\n setCurrentTemplateId(templateId);\n }\n\n if (templateName !== undefined) {\n setCurrentTemplateName(templateName);\n }\n }, []);\n\n const setCurrentTemplate = useCallback((templateId: string | null, templateName: string | null) => {\n setCurrentTemplateId(templateId);\n setCurrentTemplateName(templateName);\n }, []);\n\n const registerSaveListener = useCallback((callback: (template: TEditorConfiguration) => void) => {\n saveListenersRef.current = [...saveListenersRef.current, callback];\n return () => {\n saveListenersRef.current = saveListenersRef.current.filter(listener => listener !== callback);\n };\n }, []);\n\n const value = useMemo(() => ({\n currentTemplateId,\n currentTemplateName,\n saveTemplate,\n loadTemplate,\n registerSaveListener,\n setCurrentTemplate\n }), [currentTemplateId, currentTemplateName, saveTemplate, loadTemplate, registerSaveListener, setCurrentTemplate]);\n\n return (\n <EmailEditorContext.Provider value={value}>\n {children}\n </EmailEditorContext.Provider>\n );\n};\n\nexport const useEmailEditor = () => {\n const context = useContext(EmailEditorContext);\n if (!context) {\n throw new Error('useEmailEditor must be used within an EmailEditorProvider');\n }\n return context;\n};\n","import React from 'react';\n\nimport { Box, Stack, Typography } from '@mui/material';\n\ntype SidebarPanelProps = {\n title: string;\n children: React.ReactNode;\n};\nexport default function BaseSidebarPanel({ title, children }: SidebarPanelProps) {\n return (\n <Box p={2}>\n <Typography variant=\"overline\" color=\"text.secondary\" sx={{ display: 'block', mb: 2 }}>\n {title}\n </Typography>\n <Stack spacing={5} mb={3}>\n {children}\n </Stack>\n </Box>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { InputLabel, Stack, ToggleButtonGroup } from '@mui/material';\n\ntype Props = {\n label: string | JSX.Element;\n children: JSX.Element | JSX.Element[];\n defaultValue: string;\n onChange: (v: string) => void;\n};\nexport default function RadioGroupInput({ label, children, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <Stack alignItems=\"flex-start\">\n <InputLabel shrink>{label}</InputLabel>\n <ToggleButtonGroup\n exclusive\n fullWidth\n value={value}\n size=\"small\"\n onChange={(_, v: unknown) => {\n if (typeof v !== 'string') {\n throw new Error('RadioGroupInput can only receive string values');\n }\n setValue(v);\n onChange(v);\n }}\n >\n {children}\n </ToggleButtonGroup>\n </Stack>\n );\n}\n","import React from 'react';\n\nimport { Box, Slider, Stack, Typography } from '@mui/material';\n\ntype SliderInputProps = {\n iconLabel: JSX.Element;\n\n step?: number;\n marks?: boolean;\n units: string;\n min?: number;\n max?: number;\n\n value: number;\n setValue: (v: number) => void;\n};\n\nexport default function RawSliderInput({ iconLabel, value, setValue, units, ...props }: SliderInputProps) {\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={2} justifyContent=\"space-between\" width=\"100%\">\n <Box sx={{ minWidth: 24, lineHeight: 1, flexShrink: 0 }}>{iconLabel}</Box>\n <Slider\n {...props}\n value={value}\n onChange={(_, value: unknown) => {\n if (typeof value !== 'number') {\n throw new Error('RawSliderInput values can only receive numeric values');\n }\n setValue(value);\n }}\n />\n <Box sx={{ minWidth: 32, textAlign: 'right', flexShrink: 0 }}>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ lineHeight: 1 }}>\n {value}\n {units}\n </Typography>\n </Box>\n </Stack>\n );\n}\n","import React, { useState } from 'react';\n\nimport { InputLabel, Stack } from '@mui/material';\n\nimport RawSliderInput from './raw/raw-slider-input';\n\ntype SliderInputProps = {\n label: string;\n iconLabel: JSX.Element;\n\n step?: number;\n marks?: boolean;\n units: string;\n min?: number;\n max?: number;\n\n defaultValue: number;\n onChange: (v: number) => void;\n};\n\nexport default function SliderInput({ label, defaultValue, onChange, ...props }: SliderInputProps) {\n const [value, setValue] = useState(defaultValue);\n return (\n <Stack spacing={1} alignItems=\"flex-start\">\n <InputLabel shrink>{label}</InputLabel>\n <RawSliderInput\n value={value}\n setValue={(value: number) => {\n setValue(value);\n onChange(value);\n }}\n {...props}\n />\n </Stack>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { InputProps, TextField } from '@mui/material';\n\ntype Props = {\n label: string;\n rows?: number;\n placeholder?: string;\n helperText?: string | JSX.Element;\n InputProps?: InputProps;\n defaultValue: string;\n onChange: (v: string) => void;\n};\nexport default function TextInput({ helperText, label, placeholder, rows, InputProps, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n const isMultiline = typeof rows === 'number' && rows > 1;\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <TextField\n fullWidth\n multiline={isMultiline}\n minRows={rows}\n variant={isMultiline ? 'outlined' : 'standard'}\n label={label}\n placeholder={placeholder}\n helperText={helperText}\n InputProps={InputProps}\n value={value}\n onChange={(ev) => {\n const v = ev.target.value;\n setValue(v);\n onChange(v);\n }}\n />\n );\n}\n","import React from 'react';\n\nimport { Box, Button, SxProps } from '@mui/material';\n\ntype Props = {\n paletteColors: string[];\n value: string;\n onChange: (value: string) => void;\n};\n\nconst TILE_BUTTON: SxProps = {\n width: 24,\n height: 24,\n};\nexport default function Swatch({ paletteColors, value, onChange }: Props) {\n const renderButton = (colorValue: string) => {\n return (\n <Button\n key={colorValue}\n onClick={() => onChange(colorValue)}\n sx={{\n ...TILE_BUTTON,\n backgroundColor: colorValue,\n border: '1px solid',\n borderColor: value === colorValue ? 'black' : 'grey.200',\n minWidth: 24,\n display: 'inline-flex',\n '&:hover': {\n backgroundColor: colorValue,\n borderColor: 'grey.500',\n },\n }}\n />\n );\n };\n return (\n <Box width=\"100%\" sx={{ display: 'grid', gap: 1, gridTemplateColumns: '1fr 1fr 1fr 1fr 1fr 1fr' }}>\n {paletteColors.map((c) => renderButton(c))}\n </Box>\n );\n}\n","import React from 'react';\nimport { HexColorInput, HexColorPicker } from 'react-colorful';\n\nimport { Box, Stack, SxProps } from '@mui/material';\n\nimport Swatch from './swatch';\n\nconst DEFAULT_PRESET_COLORS = [\n '#E11D48',\n '#DB2777',\n '#C026D3',\n '#9333EA',\n '#7C3AED',\n '#4F46E5',\n '#2563EB',\n '#0284C7',\n '#0891B2',\n '#0D9488',\n '#059669',\n '#16A34A',\n '#65A30D',\n '#CA8A04',\n '#D97706',\n '#EA580C',\n '#DC2626',\n '#FFFFFF',\n '#FAFAFA',\n '#F5F5F5',\n '#E5E5E5',\n '#D4D4D4',\n '#A3A3A3',\n '#737373',\n '#525252',\n '#404040',\n '#262626',\n '#171717',\n '#0A0A0A',\n '#000000',\n];\n\nconst SX: SxProps = {\n p: 1,\n '.react-colorful__pointer ': {\n width: 16,\n height: 16,\n },\n '.react-colorful__saturation': {\n mb: 1,\n borderRadius: '4px',\n },\n '.react-colorful__last-control': {\n borderRadius: '4px',\n },\n '.react-colorful__hue-pointer': {\n width: '4px',\n borderRadius: '4px',\n height: 24,\n cursor: 'col-resize',\n },\n '.react-colorful__saturation-pointer': {\n cursor: 'all-scroll',\n },\n input: {\n padding: 1,\n border: '1px solid',\n borderColor: 'grey.300',\n borderRadius: '4px',\n width: '100%',\n },\n};\n\ntype Props = {\n value: string;\n onChange: (v: string) => void;\n};\nexport default function Picker({ value, onChange }: Props) {\n return (\n <Stack spacing={1} sx={SX}>\n <HexColorPicker color={value} onChange={onChange} />\n <Swatch paletteColors={DEFAULT_PRESET_COLORS} value={value} onChange={onChange} />\n <Box pt={1}>\n <HexColorInput prefixed color={value} onChange={onChange} />\n </Box>\n </Stack>\n );\n}\n","import React, { useState } from 'react';\n\nimport { AddOutlined, CloseOutlined } from '@mui/icons-material';\nimport { ButtonBase, InputLabel, Menu, Stack } from '@mui/material';\n\nimport Picker from './picker';\n\nconst BUTTON_SX = {\n border: '1px solid',\n borderColor: 'cadet.400',\n width: 32,\n height: 32,\n borderRadius: '4px',\n bgcolor: '#FFFFFF',\n};\n\ntype Props =\n | {\n nullable: true;\n label: string;\n onChange: (value: string | null) => void;\n defaultValue: string | null;\n }\n | {\n nullable: false;\n label: string;\n onChange: (value: string) => void;\n defaultValue: string;\n };\nexport default function ColorInput({ label, defaultValue, onChange, nullable }: Props) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [value, setValue] = useState(defaultValue);\n const handleClickOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const renderResetButton = () => {\n if (!nullable) {\n return null;\n }\n if (typeof value !== 'string' || value.trim().length === 0) {\n return null;\n }\n return (\n <ButtonBase\n onClick={() => {\n setValue(null);\n onChange(null);\n }}\n >\n <CloseOutlined fontSize=\"small\" sx={{ color: 'grey.600' }} />\n </ButtonBase>\n );\n };\n\n const renderOpenButton = () => {\n if (value) {\n return <ButtonBase onClick={handleClickOpen} sx={{ ...BUTTON_SX, bgcolor: value }} />;\n }\n return (\n <ButtonBase onClick={handleClickOpen} sx={{ ...BUTTON_SX }}>\n <AddOutlined fontSize=\"small\" />\n </ButtonBase>\n );\n };\n\n return (\n <Stack alignItems=\"flex-start\">\n <InputLabel sx={{ mb: 0.5 }}>{label}</InputLabel>\n <Stack direction=\"row\" spacing={1}>\n {renderOpenButton()}\n {renderResetButton()}\n </Stack>\n <Menu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n sx: { height: 'auto', padding: 0 },\n }}\n >\n <Picker\n value={value || ''}\n onChange={(v) => {\n setValue(v);\n onChange(v);\n }}\n />\n </Menu>\n </Stack>\n );\n}\n","import React from 'react';\n\nimport BaseColorInput from './base-color-input';\n\ntype Props = {\n label: string;\n onChange: (value: string) => void;\n defaultValue: string;\n};\nexport default function ColorInput(props: Props) {\n return <BaseColorInput {...props} nullable={false} />;\n}\n\ntype NullableProps = {\n label: string;\n onChange: (value: null | string) => void;\n defaultValue: null | string;\n};\nexport function NullableColorInput(props: NullableProps) {\n return <BaseColorInput {...props} nullable />;\n}\n","export const FONT_FAMILIES = [\n {\n key: 'MODERN_SANS',\n label: 'Modern sans',\n value: '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif',\n },\n {\n key: 'BOOK_SANS',\n label: 'Book sans',\n value: 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif',\n },\n {\n key: 'ORGANIC_SANS',\n label: 'Organic sans',\n value: 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif',\n },\n {\n key: 'GEOMETRIC_SANS',\n label: 'Geometric sans',\n value: 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif',\n },\n {\n key: 'HEAVY_SANS',\n label: 'Heavy sans',\n value:\n 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif',\n },\n {\n key: 'ROUNDED_SANS',\n label: 'Rounded sans',\n value:\n 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif',\n },\n {\n key: 'MODERN_SERIF',\n label: 'Modern serif',\n value: 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif',\n },\n {\n key: 'BOOK_SERIF',\n label: 'Book serif',\n value: '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif',\n },\n {\n key: 'MONOSPACE',\n label: 'Monospace',\n value: '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace',\n },\n];\n\nexport const FONT_FAMILY_NAMES = [\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n] as const;\n","import React, { useState, useEffect } from 'react';\n\nimport { MenuItem, TextField } from '@mui/material';\n\nimport { FONT_FAMILIES } from '@editor/blocks/helpers/font-family';\n\nconst OPTIONS = FONT_FAMILIES.map((option) => (\n <MenuItem key={option.key} value={option.key} sx={{ fontFamily: option.value }}>\n {option.label}\n </MenuItem>\n));\n\ntype NullableProps = {\n label: string;\n onChange: (value: null | string) => void;\n defaultValue: null | string;\n};\nexport function NullableFontFamily({ label, onChange, defaultValue }: NullableProps) {\n const [value, setValue] = useState(defaultValue ?? 'inherit');\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue ?? 'inherit');\n }, [defaultValue]);\n \n return (\n <TextField\n select\n variant=\"standard\"\n label={label}\n value={value}\n onChange={(ev) => {\n const v = ev.target.value;\n setValue(v);\n onChange(v === null ? null : v);\n }}\n >\n <MenuItem value=\"inherit\">Match email settings</MenuItem>\n {OPTIONS}\n </TextField>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { TextFieldsOutlined } from '@mui/icons-material';\nimport { InputLabel, Stack } from '@mui/material';\n\nimport RawSliderInput from './raw/raw-slider-input';\n\ntype Props = {\n label: string;\n defaultValue: number;\n onChange: (v: number) => void;\n};\nexport default function FontSizeInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n const handleChange = (value: number) => {\n setValue(value);\n onChange(value);\n };\n return (\n <Stack spacing={1} alignItems=\"flex-start\">\n <InputLabel shrink>{label}</InputLabel>\n <RawSliderInput\n iconLabel={<TextFieldsOutlined sx={{ fontSize: 16 }} />}\n value={value}\n setValue={handleChange}\n units=\"px\"\n step={1}\n min={10}\n max={48}\n />\n </Stack>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { ToggleButton } from '@mui/material';\n\nimport RadioGroupInput from './radio-group-input';\n\ntype Props = {\n label: string;\n defaultValue: string;\n onChange: (value: string) => void;\n};\nexport default function FontWeightInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <RadioGroupInput\n label={label}\n defaultValue={value}\n onChange={(fontWeight) => {\n setValue(fontWeight);\n onChange(fontWeight);\n }}\n >\n <ToggleButton value=\"normal\">Regular</ToggleButton>\n <ToggleButton value=\"bold\">Bold</ToggleButton>\n </RadioGroupInput>\n );\n}\n","import React, { useState } from 'react';\n\nimport {\n AlignHorizontalLeftOutlined,\n AlignHorizontalRightOutlined,\n AlignVerticalBottomOutlined,\n AlignVerticalTopOutlined,\n} from '@mui/icons-material';\nimport { InputLabel, Stack } from '@mui/material';\n\nimport RawSliderInput from './raw/raw-slider-input';\n\ntype TPaddingValue = {\n top: number;\n bottom: number;\n right: number;\n left: number;\n};\ntype Props = {\n label: string;\n defaultValue: TPaddingValue | null;\n onChange: (value: TPaddingValue) => void;\n};\nexport default function PaddingInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(() => {\n if (defaultValue) {\n return defaultValue;\n }\n return {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n };\n });\n\n function handleChange(internalName: keyof TPaddingValue, nValue: number) {\n const v = {\n ...value,\n [internalName]: nValue,\n };\n setValue(v);\n onChange(v);\n }\n\n return (\n <Stack spacing={2} alignItems=\"flex-start\" pb={1}>\n <InputLabel shrink>{label}</InputLabel>\n\n <RawSliderInput\n iconLabel={<AlignVerticalTopOutlined sx={{ fontSize: 16 }} />}\n value={value.top}\n setValue={(num) => handleChange('top', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n\n <RawSliderInput\n iconLabel={<AlignVerticalBottomOutlined sx={{ fontSize: 16 }} />}\n value={value.bottom}\n setValue={(num) => handleChange('bottom', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n\n <RawSliderInput\n iconLabel={<AlignHorizontalLeftOutlined sx={{ fontSize: 16 }} />}\n value={value.left}\n setValue={(num) => handleChange('left', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n\n <RawSliderInput\n iconLabel={<AlignHorizontalRightOutlined sx={{ fontSize: 16 }} />}\n value={value.right}\n setValue={(num) => handleChange('right', num)}\n units=\"px\"\n step={4}\n min={0}\n max={80}\n marks\n />\n </Stack>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { FormatAlignCenterOutlined, FormatAlignLeftOutlined, FormatAlignRightOutlined } from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\n\nimport RadioGroupInput from './radio-group-input';\n\ntype Props = {\n label: string;\n defaultValue: string | null;\n onChange: (value: string | null) => void;\n};\nexport default function TextAlignInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue ?? 'left');\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue ?? 'left');\n }, [defaultValue]);\n\n return (\n <RadioGroupInput\n label={label}\n defaultValue={value}\n onChange={(value) => {\n setValue(value);\n onChange(value);\n }}\n >\n <ToggleButton value=\"left\">\n <FormatAlignLeftOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"center\">\n <FormatAlignCenterOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"right\">\n <FormatAlignRightOutlined fontSize=\"small\" />\n </ToggleButton>\n </RadioGroupInput>\n );\n}\n","import React from 'react';\n\nimport { RoundedCornerOutlined } from '@mui/icons-material';\n\nimport { TStyle } from '@editor/blocks/helpers/tstyle';\nimport { NullableColorInput } from '../inputs/color-input/index';\nimport { NullableFontFamily } from '../inputs/font-family';\nimport FontSizeInput from '../inputs/font-size-input';\nimport FontWeightInput from '../inputs/font-weight-input';\nimport PaddingInput from '../inputs/padding-input';\nimport SliderInput from '../inputs/slider-input';\nimport TextAlignInput from '../inputs/text-align-input';\n\ntype StylePropertyPanelProps = {\n name: keyof TStyle;\n value: TStyle;\n onChange: (style: TStyle) => void;\n};\nexport default function SingleStylePropertyPanel({ name, value, onChange }: StylePropertyPanelProps) {\n const defaultValue = value[name] ?? null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleChange = (v: any) => {\n onChange({ ...value, [name]: v });\n };\n\n switch (name) {\n case 'backgroundColor':\n return <NullableColorInput label=\"Background color\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'borderColor':\n return <NullableColorInput label=\"Border color\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'borderRadius':\n return (\n <SliderInput\n iconLabel={<RoundedCornerOutlined />}\n units=\"px\"\n step={4}\n marks\n min={0}\n max={48}\n label=\"Border radius\"\n defaultValue={defaultValue}\n onChange={handleChange}\n />\n );\n case 'color':\n return <NullableColorInput label=\"Text color\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'fontFamily':\n return <NullableFontFamily label=\"Font family\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'fontSize':\n return <FontSizeInput label=\"Font size\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'fontWeight':\n return <FontWeightInput label=\"Font weight\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'textAlign':\n return <TextAlignInput label=\"Alignment\" defaultValue={defaultValue} onChange={handleChange} />;\n case 'padding':\n return <PaddingInput label=\"Padding\" defaultValue={defaultValue} onChange={handleChange} />;\n }\n}\n","import React from 'react';\n\nimport { TStyle } from '@editor/blocks/helpers/tstyle';\n\nimport SingleStylePropertyPanel from './single-style-property-panel';\n\ntype MultiStylePropertyPanelProps = {\n names: (keyof TStyle)[];\n value: TStyle | undefined | null;\n onChange: (style: TStyle) => void;\n};\nexport default function MultiStylePropertyPanel({ names, value, onChange }: MultiStylePropertyPanelProps) {\n return (\n <>\n {names.map((name) => (\n <SingleStylePropertyPanel key={name} name={name} value={value || {}} onChange={onChange} />\n ))}\n </>\n );\n}\n","import React, { useState } from 'react';\n\nimport { AspectRatioOutlined } from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\nimport { AvatarPropsDefaults, AvatarPropsSchema } from '@blocks';\nimport type { AvatarProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype AvatarSidebarPanelProps = {\n data: AvatarProps;\n setData: (v: AvatarProps) => void;\n};\nexport default function AvatarSidebarPanel({ data, setData }: AvatarSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = AvatarPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const size = data.props?.size ?? AvatarPropsDefaults.size;\n const imageUrl = data.props?.imageUrl ?? AvatarPropsDefaults.imageUrl;\n const alt = data.props?.alt ?? AvatarPropsDefaults.alt;\n const shape = data.props?.shape ?? AvatarPropsDefaults.shape;\n\n return (\n <BaseSidebarPanel title=\"Avatar block\">\n <SliderInput\n label=\"Size\"\n iconLabel={<AspectRatioOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={3}\n min={32}\n max={256}\n defaultValue={size}\n onChange={(size) => {\n updateData({ ...data, props: { ...data.props, size } });\n }}\n />\n <RadioGroupInput\n label=\"Shape\"\n defaultValue={shape}\n onChange={(shape) => {\n updateData({ ...data, props: { ...data.props, shape } });\n }}\n >\n <ToggleButton value=\"circle\">Circle</ToggleButton>\n <ToggleButton value=\"square\">Square</ToggleButton>\n <ToggleButton value=\"rounded\">Rounded</ToggleButton>\n </RadioGroupInput>\n <TextInput\n label=\"Image URL\"\n defaultValue={imageUrl}\n onChange={(imageUrl) => {\n updateData({ ...data, props: { ...data.props, imageUrl } });\n }}\n />\n <TextInput\n label=\"Alt text\"\n defaultValue={alt}\n onChange={(alt) => {\n updateData({ ...data, props: { ...data.props, alt } });\n }}\n />\n\n <MultiStylePropertyPanel\n names={['textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { ToggleButton } from '@mui/material';\nimport { ButtonPropsDefaults, ButtonPropsSchema } from '@blocks';\nimport type { ButtonProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput from './helpers/inputs/color-input';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ButtonSidebarPanelProps = {\n data: ButtonProps;\n setData: (v: ButtonProps) => void;\n};\nexport default function ButtonSidebarPanel({ data, setData }: ButtonSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = ButtonPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const text = data.props?.text ?? ButtonPropsDefaults.text;\n const url = data.props?.url ?? ButtonPropsDefaults.url;\n const fullWidth = data.props?.fullWidth ?? ButtonPropsDefaults.fullWidth;\n const size = data.props?.size ?? ButtonPropsDefaults.size;\n const buttonStyle = data.props?.buttonStyle ?? ButtonPropsDefaults.buttonStyle;\n const buttonTextColor = data.props?.buttonTextColor ?? ButtonPropsDefaults.buttonTextColor;\n const buttonBackgroundColor = data.props?.buttonBackgroundColor ?? ButtonPropsDefaults.buttonBackgroundColor;\n\n return (\n <BaseSidebarPanel title=\"Button block\">\n <TextInput\n label=\"Text\"\n defaultValue={text}\n onChange={(text) => updateData({ ...data, props: { ...data.props, text } })}\n />\n <TextInput\n label=\"Url\"\n defaultValue={url}\n onChange={(url) => updateData({ ...data, props: { ...data.props, url } })}\n />\n <RadioGroupInput\n label=\"Width\"\n defaultValue={fullWidth ? 'FULL_WIDTH' : 'AUTO'}\n onChange={(v) => updateData({ ...data, props: { ...data.props, fullWidth: v === 'FULL_WIDTH' } })}\n >\n <ToggleButton value=\"FULL_WIDTH\">Full</ToggleButton>\n <ToggleButton value=\"AUTO\">Auto</ToggleButton>\n </RadioGroupInput>\n <RadioGroupInput\n label=\"Size\"\n defaultValue={size}\n onChange={(size) => updateData({ ...data, props: { ...data.props, size } })}\n >\n <ToggleButton value=\"x-small\">Xs</ToggleButton>\n <ToggleButton value=\"small\">Sm</ToggleButton>\n <ToggleButton value=\"medium\">Md</ToggleButton>\n <ToggleButton value=\"large\">Lg</ToggleButton>\n </RadioGroupInput>\n <RadioGroupInput\n label=\"Style\"\n defaultValue={buttonStyle}\n onChange={(buttonStyle) => updateData({ ...data, props: { ...data.props, buttonStyle } })}\n >\n <ToggleButton value=\"rectangle\">Rectangle</ToggleButton>\n <ToggleButton value=\"rounded\">Rounded</ToggleButton>\n <ToggleButton value=\"pill\">Pill</ToggleButton>\n </RadioGroupInput>\n <ColorInput\n label=\"Text color\"\n defaultValue={buttonTextColor}\n onChange={(buttonTextColor) => updateData({ ...data, props: { ...data.props, buttonTextColor } })}\n />\n <ColorInput\n label=\"Button color\"\n defaultValue={buttonBackgroundColor}\n onChange={(buttonBackgroundColor) => updateData({ ...data, props: { ...data.props, buttonBackgroundColor } })}\n />\n <MultiStylePropertyPanel\n names={['backgroundColor', 'fontFamily', 'fontSize', 'fontWeight', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import { z } from 'zod';\n\nimport { ColumnsContainerPropsSchema as BaseColumnsContainerPropsSchema } from '@blocks';\n\nconst BasePropsShape = BaseColumnsContainerPropsSchema.shape.props.unwrap().unwrap().shape;\n\nconst ColumnsContainerPropsSchema = z.object({\n style: BaseColumnsContainerPropsSchema.shape.style,\n props: z\n .object({\n ...BasePropsShape,\n columns: z.tuple([\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n z.object({ childrenIds: z.array(z.string()) }),\n ]),\n })\n .optional()\n .nullable(),\n});\n\nexport type ColumnsContainerProps = z.infer<typeof ColumnsContainerPropsSchema>;\nexport default ColumnsContainerPropsSchema;\n","import React from 'react';\n\nimport { TextField, Typography } from '@mui/material';\n\ntype TextDimensionInputProps = {\n label: string;\n defaultValue: number | null | undefined;\n onChange: (v: number | null) => void;\n};\nexport default function TextDimensionInput({ label, defaultValue, onChange }: TextDimensionInputProps) {\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (ev) => {\n const value = parseInt(ev.target.value);\n onChange(isNaN(value) ? null : value);\n };\n return (\n <TextField\n fullWidth\n onChange={handleChange}\n defaultValue={defaultValue}\n label={label}\n variant=\"standard\"\n placeholder=\"auto\"\n size=\"small\"\n InputProps={{\n endAdornment: (\n <Typography variant=\"body2\" color=\"text.secondary\">\n px\n </Typography>\n ),\n }}\n />\n );\n}\n","import React, { useState } from 'react';\n\nimport { Stack } from '@mui/material';\n\nimport TextDimensionInput from './text-dimension-input';\n\nexport const DEFAULT_2_COLUMNS = [6] as [number];\nexport const DEFAULT_3_COLUMNS = [4, 8] as [number, number];\n\ntype TWidthValue = number | null | undefined;\ntype FixedWidths = [\n //\n number | null | undefined,\n number | null | undefined,\n number | null | undefined,\n];\ntype ColumnsLayoutInputProps = {\n defaultValue: FixedWidths | null | undefined;\n onChange: (v: FixedWidths | null | undefined) => void;\n};\nexport default function ColumnWidthsInput({ defaultValue, onChange }: ColumnsLayoutInputProps) {\n const [currentValue, setCurrentValue] = useState<[TWidthValue, TWidthValue, TWidthValue]>(() => {\n if (defaultValue) {\n return defaultValue;\n }\n return [null, null, null];\n });\n\n const setIndexValue = (index: 0 | 1 | 2, value: number | null | undefined) => {\n const nValue: FixedWidths = [...currentValue];\n nValue[index] = value;\n setCurrentValue(nValue);\n onChange(nValue);\n };\n\n const columnsCountValue = 3;\n let column3 = null;\n if (columnsCountValue === 3) {\n column3 = (\n <TextDimensionInput\n label=\"Column 3\"\n defaultValue={currentValue?.[2]}\n onChange={(v) => {\n setIndexValue(2, v);\n }}\n />\n );\n }\n return (\n <Stack direction=\"row\" spacing={1}>\n <TextDimensionInput\n label=\"Column 1\"\n defaultValue={currentValue?.[0]}\n onChange={(v) => {\n setIndexValue(0, v);\n }}\n />\n <TextDimensionInput\n label=\"Column 2\"\n defaultValue={currentValue?.[1]}\n onChange={(v) => {\n setIndexValue(1, v);\n }}\n />\n {column3}\n </Stack>\n );\n}\n","import React, { useState } from 'react';\n\nimport {\n SpaceBarOutlined,\n VerticalAlignBottomOutlined,\n VerticalAlignCenterOutlined,\n VerticalAlignTopOutlined,\n} from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\n\nimport ColumnsContainerPropsSchema, {\n ColumnsContainerProps,\n} from '@editor/blocks/columns-container/columns-container-props-schema';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColumnWidthsInput from './helpers/inputs/column-widths-input';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ColumnsContainerPanelProps = {\n data: ColumnsContainerProps;\n setData: (v: ColumnsContainerProps) => void;\n};\nexport default function ColumnsContainerPanel({ data, setData }: ColumnsContainerPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = ColumnsContainerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Columns block\">\n <RadioGroupInput\n label=\"Number of columns\"\n defaultValue={data.props?.columnsCount === 2 ? '2' : '3'}\n onChange={(v) => {\n updateData({ ...data, props: { ...data.props, columnsCount: v === '2' ? 2 : 3 } });\n }}\n >\n <ToggleButton value=\"2\">2</ToggleButton>\n <ToggleButton value=\"3\">3</ToggleButton>\n </RadioGroupInput>\n <ColumnWidthsInput\n defaultValue={data.props?.fixedWidths}\n onChange={(fixedWidths) => {\n updateData({ ...data, props: { ...data.props, fixedWidths } });\n }}\n />\n <SliderInput\n label=\"Columns gap\"\n iconLabel={<SpaceBarOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={4}\n marks\n min={0}\n max={80}\n defaultValue={data.props?.columnsGap ?? 0}\n onChange={(columnsGap) => updateData({ ...data, props: { ...data.props, columnsGap } })}\n />\n <RadioGroupInput\n label=\"Alignment\"\n defaultValue={data.props?.contentAlignment ?? 'middle'}\n onChange={(contentAlignment) => {\n updateData({ ...data, props: { ...data.props, contentAlignment } });\n }}\n >\n <ToggleButton value=\"top\">\n <VerticalAlignTopOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"middle\">\n <VerticalAlignCenterOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"bottom\">\n <VerticalAlignBottomOutlined fontSize=\"small\" />\n </ToggleButton>\n </RadioGroupInput>\n\n <MultiStylePropertyPanel\n names={['backgroundColor', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import { z } from 'zod';\n\nimport { ContainerPropsSchema as BaseContainerPropsSchema } from '@blocks';\n\nconst ContainerPropsSchema = z.object({\n style: BaseContainerPropsSchema.shape.style,\n props: z\n .object({\n childrenIds: z.array(z.string()).optional().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport default ContainerPropsSchema;\n\nexport type ContainerProps = z.infer<typeof ContainerPropsSchema>;\n","import React, { useState } from 'react';\n\nimport ContainerPropsSchema, { ContainerProps } from '@editor/blocks/container/container-props-schema';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ContainerSidebarPanelProps = {\n data: ContainerProps;\n setData: (v: ContainerProps) => void;\n};\n\nexport default function ContainerSidebarPanel({ data, setData }: ContainerSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = ContainerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n return (\n <BaseSidebarPanel title=\"Container block\">\n <MultiStylePropertyPanel\n names={['backgroundColor', 'borderColor', 'borderRadius', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { HeightOutlined } from '@mui/icons-material';\nimport { DividerPropsDefaults, DividerPropsSchema } from '@blocks/divider';\nimport type { DividerProps } from '@blocks/divider';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput from './helpers/inputs/color-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype DividerSidebarPanelProps = {\n data: DividerProps;\n setData: (v: DividerProps) => void;\n};\nexport default function DividerSidebarPanel({ data, setData }: DividerSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = DividerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const lineColor = data.props?.lineColor ?? DividerPropsDefaults.lineColor;\n const lineHeight = data.props?.lineHeight ?? DividerPropsDefaults.lineHeight;\n\n return (\n <BaseSidebarPanel title=\"Divider block\">\n <ColorInput\n label=\"Color\"\n defaultValue={lineColor}\n onChange={(lineColor) => updateData({ ...data, props: { ...data.props, lineColor } })}\n />\n <SliderInput\n label=\"Height\"\n iconLabel={<HeightOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={1}\n min={1}\n max={24}\n defaultValue={lineHeight}\n onChange={(lineHeight) => updateData({ ...data, props: { ...data.props, lineHeight } })}\n />\n <MultiStylePropertyPanel\n names={['backgroundColor', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import { z } from 'zod';\n\nconst COLOR_SCHEMA = z\n .string()\n .regex(/^#[0-9a-fA-F]{6}$/)\n .nullable()\n .optional();\n\nconst FONT_FAMILY_SCHEMA = z\n .enum([\n 'MODERN_SANS',\n 'BOOK_SANS',\n 'ORGANIC_SANS',\n 'GEOMETRIC_SANS',\n 'HEAVY_SANS',\n 'ROUNDED_SANS',\n 'MODERN_SERIF',\n 'BOOK_SERIF',\n 'MONOSPACE',\n ])\n .nullable()\n .optional();\n\nconst EmailLayoutPropsSchema = z.object({\n backdropColor: COLOR_SCHEMA,\n borderColor: COLOR_SCHEMA,\n borderRadius: z.number().optional().nullable(),\n canvasColor: COLOR_SCHEMA,\n textColor: COLOR_SCHEMA,\n fontFamily: FONT_FAMILY_SCHEMA,\n childrenIds: z.array(z.string()).optional().nullable(),\n});\n\nexport default EmailLayoutPropsSchema;\n\nexport type EmailLayoutProps = z.infer<typeof EmailLayoutPropsSchema>;\n","import React, { useState } from 'react';\n\nimport { RoundedCornerOutlined } from '@mui/icons-material';\n\nimport EmailLayoutPropsSchema, {\n EmailLayoutProps,\n} from '@editor/blocks/email-layout/email-layout-props-schema';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput, { NullableColorInput } from './helpers/inputs/color-input';\nimport { NullableFontFamily } from './helpers/inputs/font-family';\nimport SliderInput from './helpers/inputs/slider-input';\n\ntype EmailLayoutSidebarFieldsProps = {\n data: EmailLayoutProps;\n setData: (v: EmailLayoutProps) => void;\n};\nexport default function EmailLayoutSidebarFields({ data, setData }: EmailLayoutSidebarFieldsProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = EmailLayoutPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Global\">\n <ColorInput\n label=\"Backdrop color\"\n defaultValue={data.backdropColor ?? '#F5F5F5'}\n onChange={(backdropColor) => updateData({ ...data, backdropColor })}\n />\n <ColorInput\n label=\"Canvas color\"\n defaultValue={data.canvasColor ?? '#FFFFFF'}\n onChange={(canvasColor) => updateData({ ...data, canvasColor })}\n />\n <NullableColorInput\n label=\"Canvas border color\"\n defaultValue={data.borderColor ?? null}\n onChange={(borderColor) => updateData({ ...data, borderColor })}\n />\n <SliderInput\n iconLabel={<RoundedCornerOutlined />}\n units=\"px\"\n step={4}\n marks\n min={0}\n max={48}\n label=\"Canvas border radius\"\n defaultValue={data.borderRadius ?? 0}\n onChange={(borderRadius) => updateData({ ...data, borderRadius })}\n />\n <NullableFontFamily\n label=\"Font family\"\n defaultValue=\"MODERN_SANS\"\n onChange={(fontFamily) => updateData({ ...data, fontFamily })}\n />\n <ColorInput\n label=\"Text color\"\n defaultValue={data.textColor ?? '#262626'}\n onChange={(textColor) => updateData({ ...data, textColor })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { ToggleButton } from '@mui/material';\nimport { HeadingProps, HeadingPropsDefaults, HeadingPropsSchema } from '@blocks/heading';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype HeadingSidebarPanelProps = {\n data: HeadingProps;\n setData: (v: HeadingProps) => void;\n};\nexport default function HeadingSidebarPanel({ data, setData }: HeadingSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = HeadingPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Heading block\">\n <TextInput\n label=\"Content\"\n rows={3}\n defaultValue={data.props?.text ?? HeadingPropsDefaults.text}\n onChange={(text) => {\n updateData({ ...data, props: { ...data.props, text } });\n }}\n />\n <RadioGroupInput\n label=\"Level\"\n defaultValue={data.props?.level ?? HeadingPropsDefaults.level}\n onChange={(level) => {\n updateData({ ...data, props: { ...data.props, level } });\n }}\n >\n <ToggleButton value=\"h1\">H1</ToggleButton>\n <ToggleButton value=\"h2\">H2</ToggleButton>\n <ToggleButton value=\"h3\">H3</ToggleButton>\n </RadioGroupInput>\n <MultiStylePropertyPanel\n names={['color', 'backgroundColor', 'fontFamily', 'fontWeight', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\nimport { HtmlPropsSchema } from '@blocks';\nimport type { HtmlProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype HtmlSidebarPanelProps = {\n data: HtmlProps;\n setData: (v: HtmlProps) => void;\n};\nexport default function HtmlSidebarPanel({ data, setData }: HtmlSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = HtmlPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Html block\">\n <TextInput\n label=\"Content\"\n rows={5}\n defaultValue={data.props?.contents ?? ''}\n onChange={(contents) => updateData({ ...data, props: { ...data.props, contents } })}\n />\n <MultiStylePropertyPanel\n names={['color', 'backgroundColor', 'fontFamily', 'fontSize', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignCenterOutlined,\n VerticalAlignTopOutlined,\n} from '@mui/icons-material';\nimport { Stack, ToggleButton } from '@mui/material';\nimport { ImageProps, ImagePropsSchema } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport TextDimensionInput from './helpers/inputs/text-dimension-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype ImageSidebarPanelProps = {\n data: ImageProps;\n setData: (v: ImageProps) => void;\n};\nexport default function ImageSidebarPanel({ data, setData }: ImageSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = ImagePropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Image block\">\n <TextInput\n label=\"Source URL\"\n defaultValue={data.props?.url ?? ''}\n onChange={(v) => {\n const url = v.trim().length === 0 ? null : v.trim();\n updateData({ ...data, props: { ...data.props, url } });\n }}\n />\n\n <TextInput\n label=\"Alt text\"\n defaultValue={data.props?.alt ?? ''}\n onChange={(alt) => updateData({ ...data, props: { ...data.props, alt } })}\n />\n <TextInput\n label=\"Click through URL\"\n defaultValue={data.props?.linkHref ?? ''}\n onChange={(v) => {\n const linkHref = v.trim().length === 0 ? null : v.trim();\n updateData({ ...data, props: { ...data.props, linkHref } });\n }}\n />\n <Stack direction=\"row\" spacing={2}>\n <TextDimensionInput\n label=\"Width\"\n defaultValue={data.props?.width}\n onChange={(width) => updateData({ ...data, props: { ...data.props, width } })}\n />\n <TextDimensionInput\n label=\"Height\"\n defaultValue={data.props?.height}\n onChange={(height) => updateData({ ...data, props: { ...data.props, height } })}\n />\n </Stack>\n\n <RadioGroupInput\n label=\"Alignment\"\n defaultValue={data.props?.contentAlignment ?? 'middle'}\n onChange={(contentAlignment) => updateData({ ...data, props: { ...data.props, contentAlignment } })}\n >\n <ToggleButton value=\"top\">\n <VerticalAlignTopOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"middle\">\n <VerticalAlignCenterOutlined fontSize=\"small\" />\n </ToggleButton>\n <ToggleButton value=\"bottom\">\n <VerticalAlignBottomOutlined fontSize=\"small\" />\n </ToggleButton>\n </RadioGroupInput>\n\n <MultiStylePropertyPanel\n names={['backgroundColor', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { AspectRatioOutlined } from '@mui/icons-material';\nimport { ToggleButton } from '@mui/material';\nimport { SignaturePropsDefaults, SignaturePropsSchema } from '@blocks';\nimport type { SignatureProps } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport ColorInput from './helpers/inputs/color-input';\nimport RadioGroupInput from './helpers/inputs/radio-group-input';\nimport SliderInput from './helpers/inputs/slider-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype SignatureSidebarPanelProps = {\n data: SignatureProps;\n setData: (v: SignatureProps) => void;\n};\nexport default function SignatureSidebarPanel({ data, setData }: SignatureSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n const updateData = (d: unknown) => {\n const res = SignaturePropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n const greeting = data.props?.greeting ?? SignaturePropsDefaults.greeting;\n const name = data.props?.name ?? SignaturePropsDefaults.name;\n const title = data.props?.title ?? SignaturePropsDefaults.title;\n const company = data.props?.company ?? SignaturePropsDefaults.company;\n const address = data.props?.address ?? SignaturePropsDefaults.address;\n const email = data.props?.email ?? SignaturePropsDefaults.email;\n const phone = data.props?.phone ?? SignaturePropsDefaults.phone;\n const website = data.props?.website ?? SignaturePropsDefaults.website;\n const imageUrl = data.props?.imageUrl ?? SignaturePropsDefaults.imageUrl;\n const imageSize = data.props?.imageSize ?? SignaturePropsDefaults.imageSize;\n const imageShape = data.props?.imageShape ?? SignaturePropsDefaults.imageShape;\n const layout = data.props?.layout ?? SignaturePropsDefaults.layout;\n const nameColor = data.props?.nameColor ?? SignaturePropsDefaults.nameColor;\n const textColor = data.props?.textColor ?? SignaturePropsDefaults.textColor;\n const linkColor = data.props?.linkColor ?? SignaturePropsDefaults.linkColor;\n\n return (\n <BaseSidebarPanel title=\"Signature block\">\n <TextInput\n label=\"Greeting\"\n defaultValue={greeting}\n onChange={(greeting) => updateData({ ...data, props: { ...data.props, greeting } })}\n />\n <TextInput\n label=\"Name\"\n defaultValue={name}\n onChange={(name) => updateData({ ...data, props: { ...data.props, name } })}\n />\n <TextInput\n label=\"Title\"\n defaultValue={title}\n onChange={(title) => updateData({ ...data, props: { ...data.props, title } })}\n />\n <TextInput\n label=\"Company\"\n defaultValue={company}\n onChange={(company) => updateData({ ...data, props: { ...data.props, company } })}\n />\n <TextInput\n label=\"Address\"\n defaultValue={address}\n onChange={(address) => updateData({ ...data, props: { ...data.props, address } })}\n />\n <TextInput\n label=\"Email\"\n defaultValue={email}\n onChange={(email) => updateData({ ...data, props: { ...data.props, email } })}\n />\n <TextInput\n label=\"Phone\"\n defaultValue={phone}\n onChange={(phone) => updateData({ ...data, props: { ...data.props, phone } })}\n />\n <TextInput\n label=\"Website\"\n defaultValue={website}\n onChange={(website) => updateData({ ...data, props: { ...data.props, website } })}\n />\n <TextInput\n label=\"Image URL\"\n defaultValue={imageUrl}\n onChange={(imageUrl) => updateData({ ...data, props: { ...data.props, imageUrl } })}\n />\n <SliderInput\n label=\"Image size\"\n iconLabel={<AspectRatioOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={4}\n min={32}\n max={128}\n defaultValue={imageSize}\n onChange={(imageSize) => updateData({ ...data, props: { ...data.props, imageSize } })}\n />\n <RadioGroupInput\n label=\"Image shape\"\n defaultValue={imageShape}\n onChange={(imageShape) => updateData({ ...data, props: { ...data.props, imageShape } })}\n >\n <ToggleButton value=\"circle\">Circle</ToggleButton>\n <ToggleButton value=\"square\">Square</ToggleButton>\n <ToggleButton value=\"rounded\">Rounded</ToggleButton>\n </RadioGroupInput>\n <RadioGroupInput\n label=\"Layout\"\n defaultValue={layout}\n onChange={(layout) => updateData({ ...data, props: { ...data.props, layout } })}\n >\n <ToggleButton value=\"horizontal\">Horizontal</ToggleButton>\n <ToggleButton value=\"vertical\">Vertical</ToggleButton>\n </RadioGroupInput>\n <ColorInput\n label=\"Name color\"\n defaultValue={nameColor}\n onChange={(nameColor) => updateData({ ...data, props: { ...data.props, nameColor } })}\n />\n <ColorInput\n label=\"Text color\"\n defaultValue={textColor}\n onChange={(textColor) => updateData({ ...data, props: { ...data.props, textColor } })}\n />\n <ColorInput\n label=\"Link color\"\n defaultValue={linkColor}\n onChange={(linkColor) => updateData({ ...data, props: { ...data.props, linkColor } })}\n />\n <MultiStylePropertyPanel\n names={['backgroundColor', 'fontFamily', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState } from 'react';\n\nimport { HeightOutlined } from '@mui/icons-material';\nimport { SpacerProps, SpacerPropsDefaults, SpacerPropsSchema } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport SliderInput from './helpers/inputs/slider-input';\n\ntype SpacerSidebarPanelProps = {\n data: SpacerProps;\n setData: (v: SpacerProps) => void;\n};\nexport default function SpacerSidebarPanel({ data, setData }: SpacerSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = SpacerPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Spacer block\">\n <SliderInput\n label=\"Height\"\n iconLabel={<HeightOutlined sx={{ color: 'text.secondary' }} />}\n units=\"px\"\n step={4}\n min={4}\n max={128}\n defaultValue={data.props?.height ?? SpacerPropsDefaults.height}\n onChange={(height) => updateData({ ...data, props: { ...data.props, height } })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React, { useState, useEffect } from 'react';\n\nimport { FormControlLabel, Switch } from '@mui/material';\n\ntype Props = {\n label: string;\n defaultValue: boolean;\n onChange: (value: boolean) => void;\n};\n\nexport default function BooleanInput({ label, defaultValue, onChange }: Props) {\n const [value, setValue] = useState(defaultValue);\n \n // Synchronize with external changes to defaultValue\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n \n return (\n <FormControlLabel\n label={label}\n control={\n <Switch\n checked={value}\n onChange={(_, checked: boolean) => {\n setValue(checked);\n onChange(checked);\n }}\n />\n }\n />\n );\n}\n","import React, { useState } from 'react';\n\nimport { TextProps, TextPropsSchema } from '@blocks';\n\nimport BaseSidebarPanel from './helpers/base-sidebar-panel';\nimport BooleanInput from './helpers/inputs/boolean-input';\nimport TextInput from './helpers/inputs/text-input';\nimport MultiStylePropertyPanel from './helpers/style-inputs/multi-style-property-panel';\n\ntype TextSidebarPanelProps = {\n data: TextProps;\n setData: (v: TextProps) => void;\n};\nexport default function TextSidebarPanel({ data, setData }: TextSidebarPanelProps) {\n const [, setErrors] = useState<Zod.ZodError | null>(null);\n\n const updateData = (d: unknown) => {\n const res = TextPropsSchema.safeParse(d);\n if (res.success) {\n setData(res.data);\n setErrors(null);\n } else {\n setErrors(res.error);\n }\n };\n\n return (\n <BaseSidebarPanel title=\"Text block\">\n <TextInput\n label=\"Content\"\n rows={5}\n defaultValue={data.props?.text ?? ''}\n onChange={(text) => updateData({ ...data, props: { ...data.props, text } })}\n />\n <BooleanInput\n label=\"Markdown\"\n defaultValue={data.props?.markdown ?? false}\n onChange={(markdown) => updateData({ ...data, props: { ...data.props, markdown } })}\n />\n\n <MultiStylePropertyPanel\n names={['color', 'backgroundColor', 'fontFamily', 'fontSize', 'fontWeight', 'textAlign', 'padding']}\n value={data.style}\n onChange={(style) => updateData({ ...data, style })}\n />\n </BaseSidebarPanel>\n );\n}\n","import React from 'react';\n\nimport { Box, Typography } from '@mui/material';\n\nimport { TEditorBlock } from '@editor/core';\nimport { setDocument, useDocument, useSelectedBlockId } from '@editor/editor-context';\n\nimport AvatarSidebarPanel from './input-panels/avatar-sidebar-panel';\nimport ButtonSidebarPanel from './input-panels/button-sidebar-panel';\nimport ColumnsContainerSidebarPanel from './input-panels/columns-container-sidebar-panel';\nimport ContainerSidebarPanel from './input-panels/container-sidebar-panel';\nimport DividerSidebarPanel from './input-panels/divider-sidebar-panel';\nimport EmailLayoutSidebarPanel from './input-panels/email-layout-sidebar-panel';\nimport HeadingSidebarPanel from './input-panels/heading-sidebar-panel';\nimport HtmlSidebarPanel from './input-panels/html-sidebar-panel';\nimport ImageSidebarPanel from './input-panels/image-sidebar-panel';\nimport SignatureSidebarPanel from './input-panels/signature-sidebar-panel';\nimport SpacerSidebarPanel from './input-panels/spacer-sidebar-panel';\nimport TextSidebarPanel from './input-panels/text-sidebar-panel';\n\nfunction renderMessage(val: string) {\n return (\n <Box sx={{ m: 3, p: 1, border: '1px dashed', borderColor: 'divider' }}>\n <Typography color=\"text.secondary\">{val}</Typography>\n </Box>\n );\n}\n\nexport default function ConfigurationPanel() {\n const document = useDocument();\n const selectedBlockId = useSelectedBlockId();\n\n if (!selectedBlockId) {\n return renderMessage('Click on a block to inspect.');\n }\n const block = document[selectedBlockId];\n if (!block) {\n return renderMessage(`Block with id ${selectedBlockId} was not found. Click on a block to reset.`);\n }\n\n const setBlock = (conf: TEditorBlock) => setDocument({ [selectedBlockId]: conf });\n const { data, type } = block;\n switch (type) {\n case 'Avatar':\n return <AvatarSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Button':\n return <ButtonSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'ColumnsContainer':\n return (\n <ColumnsContainerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />\n );\n case 'Container':\n return <ContainerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Divider':\n return <DividerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Heading':\n return <HeadingSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Html':\n return <HtmlSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Image':\n return <ImageSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'EmailLayout':\n return <EmailLayoutSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Spacer':\n return <SpacerSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Signature':\n return <SignatureSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n case 'Text':\n return <TextSidebarPanel key={selectedBlockId} data={data} setData={(data) => setBlock({ type, data })} />;\n default:\n return <pre>{JSON.stringify(block, null, ' ')}</pre>;\n }\n}\n","import React from 'react';\n\nimport { setDocument, useDocument } from '@editor/editor-context';\n\nimport EmailLayoutSidebarPanel from './configuration-panel/input-panels/email-layout-sidebar-panel';\n\nexport default function StylesPanel() {\n const block = useDocument().root;\n if (!block) {\n return <p>Block not found</p>;\n }\n\n const { data, type } = block;\n if (type !== 'EmailLayout') {\n throw new Error('Expected \"root\" element to be of type EmailLayout');\n }\n\n return <EmailLayoutSidebarPanel key=\"root\" data={data} setData={(data) => setDocument({ root: { type, data } })} />;\n}\n","import React, { useMemo } from 'react';\nimport { FileDownloadOutlined } from '@mui/icons-material';\nimport { Button } from '@mui/material';\nimport { useDocument } from '@editor/editor-context';\n\nexport default function TemplateDownloadButton() {\n const doc = useDocument();\n const href = useMemo(() => {\n return `data:text/plain,${encodeURIComponent(JSON.stringify(doc, null, ' '))}`;\n }, [doc]);\n\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n startIcon={<FileDownloadOutlined />}\n href={href}\n download=\"emailTemplate.json\"\n fullWidth\n >\n Download JSON\n </Button>\n );\n} ","import React from 'react';\nimport { Button, Stack, Typography } from '@mui/material';\nimport { DeleteOutlined, ContentCopyOutlined } from '@mui/icons-material';\n\nimport { useEmailEditor } from '../context';\nimport { useDocument, usePersistenceEnabled } from '@editor/editor-context';\nimport BaseSidebarPanel from './configuration-panel/input-panels/helpers/base-sidebar-panel';\nimport TemplateDownloadButton from './template-panel-download-button';\n\nexport interface TemplatePanelProps {\n loadTemplates?: () => Promise<any[]>;\n deleteTemplate?: (templateId: string) => void;\n copyTemplate?: (templateName: string, content: any) => void;\n}\n\nexport default function TemplatePanel({ deleteTemplate, copyTemplate }: TemplatePanelProps) {\n const { currentTemplateId, currentTemplateName } = useEmailEditor();\n const document = useDocument();\n const persistenceEnabled = usePersistenceEnabled();\n\n const handleDelete = () => {\n if (!currentTemplateId || !window.confirm('Are you sure you want to delete this template?')) {\n return;\n }\n\n if (deleteTemplate) {\n // Use the provided deleteTemplate function\n deleteTemplate(currentTemplateId);\n \n // Refresh the page to load a new template\n window.location.hash = '';\n window.location.reload();\n }\n };\n\n const handleCopyToSamples = () => {\n if (!currentTemplateName || !document) return;\n\n if (copyTemplate) {\n // Use the provided copyTemplate function\n copyTemplate(`${currentTemplateName} (Copy)`, document);\n \n // Show confirmation\n window.alert('Template copied successfully!');\n }\n };\n\n if (!currentTemplateId) {\n return <BaseSidebarPanel title=\"Template\">No template selected</BaseSidebarPanel>;\n }\n\n return (\n <>\n <BaseSidebarPanel title=\"Template\">\n <Stack spacing={2}>\n {!persistenceEnabled && (\n <Typography \n variant=\"body2\" \n color=\"text.secondary\" \n sx={{ \n padding: 1, \n bgcolor: 'rgba(0,0,0,0.04)', \n borderRadius: 1,\n fontSize: '0.8rem' \n }}\n >\n Save functionality is disabled. To enable saving, provide the necessary callback functions.\n </Typography>\n )}\n {persistenceEnabled && (\n <>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n startIcon={<ContentCopyOutlined />}\n onClick={handleCopyToSamples}\n fullWidth\n disabled={!copyTemplate}\n >\n Save as Sample Template\n </Button>\n <Button\n variant=\"outlined\"\n color=\"error\"\n startIcon={<DeleteOutlined />}\n onClick={handleDelete}\n fullWidth\n disabled={!deleteTemplate}\n >\n Delete Template\n </Button>\n </>\n )}\n </Stack>\n </BaseSidebarPanel>\n \n {persistenceEnabled && (\n <BaseSidebarPanel title=\"Export\">\n <Stack spacing={2}>\n <TemplateDownloadButton />\n </Stack>\n </BaseSidebarPanel>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { Box, Drawer, Tab, Tabs } from '@mui/material';\n\nimport { \n setSidebarTab, \n useInspectorDrawerOpen, \n useSelectedSidebarTab\n} from '@editor/editor-context';\n\nimport ConfigurationPanel from './configuration-panel';\nimport StylesPanel from './styles-panel';\nimport TemplatePanel from './template-panel';\n\nexport const INSPECTOR_DRAWER_WIDTH = 320;\n\nexport interface InspectorDrawerProps {\n /**\n * Duration for enter transition in milliseconds.\n * @default 225\n */\n enterDuration?: number;\n \n /**\n * Duration for exit transition in milliseconds.\n * @default 225\n */\n exitDuration?: number;\n\n /**\n * Callback to delete a template by ID\n */\n deleteTemplate?: (templateId: string) => void;\n \n /**\n * Callback to copy a template with a new name\n */\n copyTemplate?: (templateName: string, content: any) => void;\n\n /**\n * Indicates whether the template is saving enabled\n */\n savingEnabled?: boolean;\n}\n\nexport default function InspectorDrawer({ \n enterDuration = 225, \n exitDuration = 225,\n deleteTemplate,\n copyTemplate,\n savingEnabled = true\n}: InspectorDrawerProps = {}) {\n const selectedSidebarTab = useSelectedSidebarTab();\n const inspectorDrawerOpen = useInspectorDrawerOpen();\n\n const renderCurrentSidebarPanel = () => {\n switch (selectedSidebarTab) {\n case 'block-configuration':\n return <ConfigurationPanel />;\n case 'styles':\n return <StylesPanel />;\n case 'template-settings':\n return <TemplatePanel \n deleteTemplate={deleteTemplate} \n copyTemplate={copyTemplate}\n />;\n }\n };\n\n return (\n <Drawer\n variant=\"persistent\"\n anchor=\"right\"\n open={inspectorDrawerOpen}\n PaperProps={{\n style: { position: 'absolute' }\n }}\n ModalProps={{\n container: document.getElementById('drawer-container'),\n style: { position: 'absolute' },\n keepMounted: true\n }}\n transitionDuration={{\n enter: enterDuration,\n exit: exitDuration\n }}\n sx={{\n width: inspectorDrawerOpen ? INSPECTOR_DRAWER_WIDTH : 0,\n }}\n >\n <Box sx={{ width: INSPECTOR_DRAWER_WIDTH, height: 49, borderBottom: 1, borderColor: 'divider' }}>\n <Box px={2}>\n <Tabs value={selectedSidebarTab} onChange={(_, v) => setSidebarTab(v)}>\n <Tab value=\"styles\" label=\"Styles\" />\n <Tab value=\"block-configuration\" label=\"Inspect\" />\n <Tab value=\"template-settings\" label=\"Settings\" />\n </Tabs>\n </Box>\n </Box>\n <Box sx={{ width: INSPECTOR_DRAWER_WIDTH, height: 'calc(100% - 49px)', overflow: 'auto' }}>\n {renderCurrentSidebarPanel()}\n </Box>\n </Drawer>\n );\n}\n","import React from 'react';\nimport { Button, SxProps, Theme } from '@mui/material';\nimport { resetDocument } from '@editor/editor-context';\nimport { useEmailEditor } from '../context';\nimport { TEditorConfiguration } from '@editor/core';\n\nexport interface SidebarButtonProps {\n templateId: string;\n children: JSX.Element | string;\n templateLoader: () => Promise<TEditorConfiguration | null>;\n sx?: SxProps<Theme>;\n}\n\nexport default function SidebarButton({ \n templateId, \n children,\n templateLoader,\n sx\n}: SidebarButtonProps) {\n const { setCurrentTemplate } = useEmailEditor();\n \n const handleClick = async (e: React.MouseEvent) => {\n e.preventDefault();\n \n try {\n const template = await templateLoader();\n if (template) {\n resetDocument(template);\n setCurrentTemplate(templateId, null);\n }\n } catch (error) {\n console.error('Error loading template:', error);\n }\n };\n \n return (\n <Button size=\"small\" onClick={handleClick} sx={sx}>\n {children}\n </Button>\n );\n}\n","import { TEditorConfiguration } from '@editor/core';\n\nconst EMPTY_EMAIL_MESSAGE: TEditorConfiguration = {\n root: {\n type: 'EmailLayout',\n data: {\n backdropColor: '#F5F5F5',\n canvasColor: '#FFFFFF',\n textColor: '#262626',\n fontFamily: 'MODERN_SANS',\n childrenIds: [],\n },\n },\n};\n\nexport default EMPTY_EMAIL_MESSAGE;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Box,\n CircularProgress,\n Divider,\n Drawer,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport { useSamplesDrawerOpen } from \"@editor/editor-context\";\nimport { SampleTemplate } from \"../index\";\nimport { TEditorConfiguration } from \"@editor/core\";\nimport SidebarButton from \"./sidebar-button\";\nimport EMPTY_EMAIL_MESSAGE from \"@sample/empty-email-message\";\n\nexport const SAMPLES_DRAWER_WIDTH = 240;\n\n// Empty template definition that will always be available\nconst EMPTY_TEMPLATE: SampleTemplate = {\n id: \"empty-email\",\n name: \"Empty email\",\n description: \"A blank email template to start from scratch\",\n};\n\nexport interface SamplesDrawerProps {\n /**\n * Duration for enter transition in milliseconds.\n * @default 225\n */\n enterDuration?: number;\n\n /**\n * Duration for exit transition in milliseconds.\n * @default 225\n */\n exitDuration?: number;\n\n /**\n * Whether the drawer is enabled.\n * @default true\n */\n enabled?: boolean;\n\n /**\n * Callback to load samples dynamically.\n * This will be called when the drawer is opened.\n */\n loadSamples?: () => Promise<SampleTemplate[]>;\n\n /**\n * Callback to load existing templates dynamically.\n * This will be called when the drawer is opened.\n */\n loadTemplates?: () => Promise<SampleTemplate[]>;\n\n /**\n * Callback to load a specific template by ID.\n * This will be called when a template is selected from the drawer.\n */\n loadTemplate?: (templateId: string) => Promise<TEditorConfiguration | null>;\n\n /**\n * ID of the currently active template\n */\n currentTemplateId?: string | null;\n \n /**\n * Callback to delete a template by ID\n */\n deleteTemplate?: (templateId: string) => void;\n}\n\nexport default function SamplesDrawer({\n enterDuration = 225,\n exitDuration = 225,\n enabled = true,\n loadSamples,\n loadTemplates,\n loadTemplate,\n currentTemplateId,\n deleteTemplate,\n}: SamplesDrawerProps) {\n const samplesDrawerOpen = useSamplesDrawerOpen();\n const [samples, setSamples] = useState<SampleTemplate[]>([EMPTY_TEMPLATE]);\n const [templates, setTemplates] = useState<SampleTemplate[]>([]);\n const [loadingSamples, setLoadingSamples] = useState(false);\n const [loadingTemplates, setLoadingTemplates] = useState(false);\n\n // Special handler for empty template\n const handleLoadTemplate = async (templateId: string) => {\n if (templateId === \"empty-email\") {\n return EMPTY_EMAIL_MESSAGE;\n }\n \n if (loadTemplate) {\n return loadTemplate(templateId);\n }\n \n return null;\n };\n\n // Load samples\n useEffect(() => {\n if (enabled && samplesDrawerOpen && loadSamples) {\n setLoadingSamples(true);\n loadSamples()\n .then((results) => {\n // Ensure we always have the empty template\n const existingEmptyTemplate = results.find(sample => sample.id === \"empty-email\");\n if (!existingEmptyTemplate) {\n setSamples([EMPTY_TEMPLATE, ...results]);\n } else {\n setSamples(results);\n }\n setLoadingSamples(false);\n })\n .catch((error) => {\n console.error(\"Failed to load samples:\", error);\n setSamples([EMPTY_TEMPLATE]); // Fallback to empty template\n setLoadingSamples(false);\n });\n }\n }, [enabled, samplesDrawerOpen, loadSamples]);\n\n // Load existing templates\n useEffect(() => {\n if (enabled && loadTemplates) {\n setLoadingTemplates(true);\n loadTemplates()\n .then((results) => {\n setTemplates(results);\n setLoadingTemplates(false);\n })\n .catch((error) => {\n console.error(\"Failed to load templates:\", error);\n setLoadingTemplates(false);\n });\n }\n }, [enabled, loadTemplates]);\n\n // Listen for template list updates\n useEffect(() => {\n const handleTemplateListUpdate = (e: CustomEvent<SampleTemplate[]>) => {\n setTemplates(e.detail);\n };\n\n window.addEventListener('templateListUpdated', handleTemplateListUpdate as EventListener);\n return () => window.removeEventListener('templateListUpdated', handleTemplateListUpdate as EventListener);\n }, []);\n\n if (!enabled) {\n return null;\n }\n\n return (\n <>\n <Drawer\n variant=\"persistent\"\n anchor=\"left\"\n open={samplesDrawerOpen}\n PaperProps={{\n style: { position: \"absolute\" },\n }}\n ModalProps={{\n container: document.getElementById(\"drawer-container\"),\n style: { position: \"absolute\" },\n keepMounted: true,\n }}\n transitionDuration={{\n enter: enterDuration,\n exit: exitDuration,\n }}\n sx={{\n width: samplesDrawerOpen ? SAMPLES_DRAWER_WIDTH : 0,\n }}\n >\n <Stack\n spacing={3}\n py={1}\n px={2}\n width={SAMPLES_DRAWER_WIDTH}\n justifyContent=\"space-between\"\n height=\"100%\"\n >\n <Stack\n spacing={2}\n sx={{\n \"& .MuiButtonBase-root\": {\n width: \"100%\",\n justifyContent: \"flex-start\",\n },\n }}\n >\n <Typography variant=\"h6\" component=\"h1\" sx={{ p: 2 }}>\n Templates\n </Typography>\n\n {/* Existing Templates Section */}\n {loadTemplates && (\n <>\n <Typography\n variant=\"subtitle2\"\n component=\"h2\"\n sx={{ fontWeight: \"bold\", mt: 2 }}\n >\n Your Templates\n </Typography>\n\n {loadingTemplates ? (\n <Stack alignItems=\"center\" width=\"100%\" py={1}>\n <CircularProgress size={24} />\n </Stack>\n ) : templates.length > 0 ? (\n <Stack alignItems=\"flex-start\" width=\"100%\">\n {templates.map((template) => (\n <Box\n key={template.id}\n width=\"100%\"\n display=\"flex\"\n alignItems=\"center\"\n sx={{\n bgcolor: currentTemplateId === template.id\n ? \"rgba(0, 0, 0, 0.08)\"\n : \"transparent\",\n borderRadius: 1,\n \"&:hover\": {\n bgcolor: \"rgba(0, 0, 0, 0.04)\",\n },\n }}\n >\n <SidebarButton\n templateId={template.id}\n templateLoader={() => handleLoadTemplate(template.id)}\n sx={{ flexGrow: 1 }}\n >\n {template.name}\n </SidebarButton>\n </Box>\n ))}\n </Stack>\n ) : (\n <Typography\n variant=\"body2\"\n sx={{ color: \"text.secondary\", py: 1 }}\n >\n No saved templates\n </Typography>\n )}\n\n <Divider />\n </>\n )}\n\n {/* Sample Templates Section */}\n <>\n <Typography\n variant=\"subtitle2\"\n component=\"h2\"\n sx={{ fontWeight: \"bold\", mt: 1 }}\n >\n Sample Templates\n </Typography>\n\n {loadingSamples ? (\n <Stack alignItems=\"center\" width=\"100%\" py={1}>\n <CircularProgress size={24} />\n </Stack>\n ) : (\n <Stack alignItems=\"flex-start\">\n {samples.map((sample) => (\n <SidebarButton\n key={sample.id}\n templateId={sample.id}\n templateLoader={() => handleLoadTemplate(sample.id)}\n >\n {sample.name}\n </SidebarButton>\n ))}\n </Stack>\n )}\n </>\n </Stack>\n </Stack>\n </Drawer>\n </>\n );\n}\n","import React from 'react';\n\nimport { Box, Button, SxProps, Typography } from '@mui/material';\n\ntype BlockMenuButtonProps = {\n label: string;\n icon: React.ReactNode;\n onClick: () => void;\n};\n\nconst BUTTON_SX: SxProps = { p: 1.5, display: 'flex', flexDirection: 'column' };\nconst ICON_SX: SxProps = {\n mb: 0.75,\n width: '100%',\n bgcolor: 'cadet.200',\n display: 'flex',\n justifyContent: 'center',\n p: 1,\n border: '1px solid',\n borderColor: 'cadet.300',\n};\n\nexport default function BlockTypeButton({ label, icon, onClick }: BlockMenuButtonProps) {\n return (\n <Button\n sx={BUTTON_SX}\n onClick={(ev) => {\n ev.stopPropagation();\n onClick();\n }}\n >\n <Box sx={ICON_SX}>{icon}</Box>\n <Typography variant=\"body2\">{label}</Typography>\n </Button>\n );\n}\n","import React from 'react';\n\nimport {\n AccountCircleOutlined,\n BusinessOutlined,\n ContactMailOutlined,\n Crop32Outlined,\n HMobiledataOutlined,\n HorizontalRuleOutlined,\n HtmlOutlined,\n ImageOutlined,\n LibraryAddOutlined,\n NotesOutlined,\n SmartButtonOutlined,\n ViewColumnOutlined,\n} from '@mui/icons-material';\n\nimport { TEditorBlock } from '@editor/core';\n\ntype TButtonProps = {\n label: string;\n icon: JSX.Element;\n block: () => TEditorBlock;\n};\nexport const BUTTONS: TButtonProps[] = [\n {\n label: 'Heading',\n icon: <HMobiledataOutlined />,\n block: () => ({\n type: 'Heading',\n data: {\n props: { text: 'Hello friend' },\n style: {\n padding: { top: 16, bottom: 16, left: 24, right: 24 },\n },\n },\n }),\n },\n {\n label: 'Text',\n icon: <NotesOutlined />,\n block: () => ({\n type: 'Text',\n data: {\n props: { text: 'My new text block' },\n style: {\n padding: { top: 16, bottom: 16, left: 24, right: 24 },\n fontWeight: 'normal',\n },\n },\n }),\n },\n\n {\n label: 'Button',\n icon: <SmartButtonOutlined />,\n block: () => ({\n type: 'Button',\n data: {\n props: {\n text: 'Button',\n url: 'https://www.usewaypoint.com',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Image',\n icon: <ImageOutlined />,\n block: () => ({\n type: 'Image',\n data: {\n props: {\n url: 'https://assets.usewaypoint.com/sample-image.jpg',\n alt: 'Sample product',\n contentAlignment: 'middle',\n linkHref: null,\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Avatar',\n icon: <AccountCircleOutlined />,\n block: () => ({\n type: 'Avatar',\n data: {\n props: {\n imageUrl: 'https://ui-avatars.com/api/?size=128',\n shape: 'circle',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Personal Signature',\n icon: <ContactMailOutlined />,\n block: () => ({\n type: 'Signature',\n data: {\n props: {\n greeting: 'Best regards,',\n name: 'John Doe',\n title: 'Software Engineer',\n company: 'Acme Inc.',\n email: 'john@example.com',\n phone: '+1 234 567 890',\n imageUrl: 'https://ui-avatars.com/api/?name=John+Doe&size=128',\n imageSize: 64,\n imageShape: 'circle',\n layout: 'horizontal',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Company Signature',\n icon: <BusinessOutlined />,\n block: () => ({\n type: 'Signature',\n data: {\n props: {\n company: 'Acme Inc.',\n address: '123 Main Street, City, Country',\n email: 'support@example.com',\n website: 'www.example.com',\n imageUrl: 'https://placehold.co/128x128/EEE/999?text=Logo',\n imageSize: 48,\n imageShape: 'rounded',\n layout: 'horizontal',\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Divider',\n icon: <HorizontalRuleOutlined />,\n block: () => ({\n type: 'Divider',\n data: {\n style: { padding: { top: 16, right: 0, bottom: 16, left: 0 } },\n props: {\n lineColor: '#CCCCCC',\n },\n },\n }),\n },\n {\n label: 'Spacer',\n icon: <Crop32Outlined />,\n block: () => ({\n type: 'Spacer',\n data: {},\n }),\n },\n {\n label: 'Html',\n icon: <HtmlOutlined />,\n block: () => ({\n type: 'Html',\n data: {\n props: { contents: '<strong>Hello world</strong>' },\n style: {\n fontSize: 16,\n textAlign: null,\n padding: { top: 16, bottom: 16, left: 24, right: 24 },\n },\n },\n }),\n },\n {\n label: 'Columns',\n icon: <ViewColumnOutlined />,\n block: () => ({\n type: 'ColumnsContainer',\n data: {\n props: {\n columnsGap: 16,\n columnsCount: 3,\n columns: [{ childrenIds: [] }, { childrenIds: [] }, { childrenIds: [] }],\n },\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n {\n label: 'Container',\n icon: <LibraryAddOutlined />,\n block: () => ({\n type: 'Container',\n data: {\n style: { padding: { top: 16, bottom: 16, left: 24, right: 24 } },\n },\n }),\n },\n\n // { label: 'ProgressBar', icon: <ProgressBarOutlined />, block: () => ({}) },\n // { label: 'LoopContainer', icon: <ViewListOutlined />, block: () => ({}) },\n];\n","import React from 'react';\n\nimport { Box, Menu } from '@mui/material';\n\nimport { TEditorBlock } from '@editor/core';\n\nimport BlockButton from './block-button';\nimport { BUTTONS } from './buttons';\n\ntype BlocksMenuProps = {\n anchorEl: HTMLElement | null;\n setAnchorEl: (v: HTMLElement | null) => void;\n onSelect: (block: TEditorBlock) => void;\n};\nexport default function BlocksMenu({ anchorEl, setAnchorEl, onSelect }: BlocksMenuProps) {\n const onClose = () => {\n setAnchorEl(null);\n };\n\n const onClick = (block: TEditorBlock) => {\n onSelect(block);\n setAnchorEl(null);\n };\n\n if (anchorEl === null) {\n return null;\n }\n\n return (\n <Menu\n open\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n >\n <Box sx={{ p: 1, display: 'grid', gridTemplateColumns: '1fr 1fr 1fr 1fr' }}>\n {BUTTONS.map((k, i) => (\n <BlockButton key={i} label={k.label} icon={k.icon} onClick={() => onClick(k.block())} />\n ))}\n </Box>\n </Menu>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { AddOutlined } from '@mui/icons-material';\nimport { Fade, IconButton } from '@mui/material';\n\ntype Props = {\n buttonElement: HTMLElement | null;\n onClick: () => void;\n};\nexport default function DividerButton({ buttonElement, onClick }: Props) {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n function listener({ clientX, clientY }: MouseEvent) {\n if (!buttonElement) {\n return;\n }\n const rect = buttonElement.getBoundingClientRect();\n const rectY = rect.y;\n const bottomX = rect.x;\n const topX = bottomX + rect.width;\n\n if (Math.abs(clientY - rectY) < 20) {\n if (bottomX < clientX && clientX < topX) {\n setVisible(true);\n return;\n }\n }\n setVisible(false);\n }\n window.addEventListener('mousemove', listener);\n return () => {\n window.removeEventListener('mousemove', listener);\n };\n }, [buttonElement, setVisible]);\n\n return (\n <Fade in={visible}>\n <IconButton\n size=\"small\"\n sx={{\n p: 0.12,\n position: 'absolute',\n top: '-12px',\n left: '50%',\n transform: 'translateX(-10px)',\n bgcolor: 'brand.blue',\n color: 'primary.contrastText',\n zIndex: 'fab',\n '&:hover, &:active, &:focus': {\n bgcolor: 'brand.blue',\n color: 'primary.contrastText',\n },\n }}\n onClick={(ev) => {\n ev.stopPropagation();\n onClick();\n }}\n >\n <AddOutlined fontSize=\"small\" />\n </IconButton>\n </Fade>\n );\n}\n","import React from 'react';\n\nimport { AddOutlined } from '@mui/icons-material';\nimport { ButtonBase } from '@mui/material';\n\ntype Props = {\n onClick: () => void;\n};\nexport default function PlaceholderButton({ onClick }: Props) {\n return (\n <ButtonBase\n onClick={(ev) => {\n ev.stopPropagation();\n onClick();\n }}\n sx={{\n display: 'flex',\n alignContent: 'center',\n justifyContent: 'center',\n height: 48,\n width: '100%',\n bgcolor: 'rgba(0,0,0, 0.05)',\n }}\n >\n <AddOutlined\n sx={{\n p: 0.12,\n bgcolor: 'brand.blue',\n borderRadius: 24,\n color: 'primary.contrastText',\n }}\n fontSize=\"small\"\n />\n </ButtonBase>\n );\n}\n","import React, { useState } from 'react';\n\nimport { TEditorBlock } from '@editor/core';\n\nimport BlocksMenu from './blocks-menu';\nimport DividerButton from './divider-button';\nimport PlaceholderButton from './placeholder-button';\n\ntype Props = {\n placeholder?: boolean;\n onSelect: (block: TEditorBlock) => void;\n};\nexport default function AddBlockButton({ onSelect, placeholder }: Props) {\n const [menuAnchorEl, setMenuAnchorEl] = useState<HTMLElement | null>(null);\n const [buttonElement, setButtonElement] = useState<HTMLElement | null>(null);\n\n const handleButtonClick = () => {\n setMenuAnchorEl(buttonElement);\n };\n\n const renderButton = () => {\n if (placeholder) {\n return <PlaceholderButton onClick={handleButtonClick} />;\n } else {\n return <DividerButton buttonElement={buttonElement} onClick={handleButtonClick} />;\n }\n };\n\n return (\n <>\n <div ref={setButtonElement} style={{ position: 'relative' }}>\n {renderButton()}\n </div>\n <BlocksMenu anchorEl={menuAnchorEl} setAnchorEl={setMenuAnchorEl} onSelect={onSelect} />\n </>\n );\n}\n","import React, { Fragment } from 'react';\n\nimport { TEditorBlock } from '@editor/core';\nimport EditorBlock from '@editor/editor-block';\n\nimport AddBlockButton from './add-block-menu';\n\nexport type EditorChildrenChange = {\n blockId: string;\n block: TEditorBlock;\n childrenIds: string[];\n};\n\nfunction generateId() {\n return `block-${Date.now()}`;\n}\n\nexport type EditorChildrenIdsProps = {\n childrenIds: string[] | null | undefined;\n onChange: (val: EditorChildrenChange) => void;\n};\nexport default function EditorChildrenIds({ childrenIds, onChange }: EditorChildrenIdsProps) {\n const appendBlock = (block: TEditorBlock) => {\n const blockId = generateId();\n return onChange({\n blockId,\n block,\n childrenIds: [...(childrenIds || []), blockId],\n });\n };\n\n const insertBlock = (block: TEditorBlock, index: number) => {\n const blockId = generateId();\n const newChildrenIds = [...(childrenIds || [])];\n newChildrenIds.splice(index, 0, blockId);\n return onChange({\n blockId,\n block,\n childrenIds: newChildrenIds,\n });\n };\n\n if (!childrenIds || childrenIds.length === 0) {\n return <AddBlockButton placeholder onSelect={appendBlock} />;\n }\n\n return (\n <>\n {childrenIds.map((childId, i) => (\n <Fragment key={childId}>\n <AddBlockButton onSelect={(block) => insertBlock(block, i)} />\n <EditorBlock id={childId} />\n </Fragment>\n ))}\n <AddBlockButton onSelect={appendBlock} />\n </>\n );\n}\n","import React from 'react';\n\nimport { ColumnsContainer as BaseColumnsContainer } from '@blocks';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, setSelectedBlockId } from '@editor/editor-context';\nimport EditorChildrenIds, { EditorChildrenChange } from '@editor/blocks/helpers/editor-children-ids';\n\nimport ColumnsContainerPropsSchema, { ColumnsContainerProps } from './columns-container-props-schema';\n\nconst EMPTY_COLUMNS = [{ childrenIds: [] }, { childrenIds: [] }, { childrenIds: [] }];\n\nexport default function ColumnsContainerEditor({ style, props }: ColumnsContainerProps) {\n const currentBlockId = useCurrentBlockId();\n\n const { columns, ...restProps } = props ?? {};\n const columnsValue = columns ?? EMPTY_COLUMNS;\n\n const updateColumn = (columnIndex: 0 | 1 | 2, { block, blockId, childrenIds }: EditorChildrenChange) => {\n const nColumns = [...columnsValue];\n nColumns[columnIndex] = { childrenIds };\n setDocument({\n [blockId]: block,\n [currentBlockId]: {\n type: 'ColumnsContainer',\n data: ColumnsContainerPropsSchema.parse({\n style,\n props: {\n ...restProps,\n columns: nColumns,\n },\n }),\n },\n });\n setSelectedBlockId(blockId);\n };\n\n return (\n <BaseColumnsContainer\n props={restProps}\n style={style}\n columns={[\n <EditorChildrenIds childrenIds={columns?.[0]?.childrenIds} onChange={(change) => updateColumn(0, change)} />,\n <EditorChildrenIds childrenIds={columns?.[1]?.childrenIds} onChange={(change) => updateColumn(1, change)} />,\n <EditorChildrenIds childrenIds={columns?.[2]?.childrenIds} onChange={(change) => updateColumn(2, change)} />,\n ]}\n />\n );\n}\n","import React from 'react';\n\nimport { Container as BaseContainer } from '@blocks';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, setSelectedBlockId, useDocument } from '@editor/editor-context';\nimport EditorChildrenIds from '@editor/blocks/helpers/editor-children-ids';\n\nimport { ContainerProps } from './container-props-schema';\n\nexport default function ContainerEditor({ style, props }: ContainerProps) {\n const childrenIds = props?.childrenIds ?? [];\n\n const document = useDocument();\n const currentBlockId = useCurrentBlockId();\n\n return (\n <BaseContainer style={style}>\n <EditorChildrenIds\n childrenIds={childrenIds}\n onChange={({ block, blockId, childrenIds }) => {\n setDocument({\n [blockId]: block,\n [currentBlockId]: {\n type: 'Container',\n data: {\n ...document[currentBlockId].data,\n props: { childrenIds: childrenIds },\n },\n },\n });\n setSelectedBlockId(blockId);\n }}\n />\n </BaseContainer>\n );\n}\n","import React, { useCallback, useEffect } from 'react';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { resetDocument, setDocument, setSelectedBlockId, useDocument, useSelectedBlockId } from '@editor/editor-context';\nimport { TEditorBlock } from '@editor/core';\nimport EditorChildrenIds from '@editor/blocks/helpers/editor-children-ids';\n\nimport { EmailLayoutProps } from './email-layout-props-schema';\n\nfunction generateId() {\n return `block-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;\n}\n\nfunction rekeyBlocks(blocks: Record<string, any>, rootBlockId: string): { blocks: Record<string, any>; newRootId: string } {\n const idMap: Record<string, string> = {};\n for (const oldId of Object.keys(blocks)) {\n idMap[oldId] = generateId();\n }\n\n const remapIds = (ids: string[] | null | undefined) =>\n ids?.map((id) => idMap[id] ?? id);\n\n const newBlocks: Record<string, any> = {};\n for (const [oldId, block] of Object.entries(blocks)) {\n const b = block as TEditorBlock;\n const newId = idMap[oldId];\n if (b.type === 'Container') {\n newBlocks[newId] = {\n ...b,\n data: {\n ...b.data,\n props: { ...b.data.props, childrenIds: remapIds(b.data.props?.childrenIds) },\n },\n };\n } else if (b.type === 'ColumnsContainer') {\n newBlocks[newId] = {\n ...b,\n data: {\n ...b.data,\n props: {\n ...b.data.props,\n columns: b.data.props?.columns?.map((c: any) => ({\n ...c,\n childrenIds: remapIds(c.childrenIds),\n })),\n },\n },\n };\n } else {\n newBlocks[newId] = b;\n }\n }\n return { blocks: newBlocks, newRootId: idMap[rootBlockId] };\n}\n\nfunction collectBlock(blockId: string, document: Record<string, any>): Record<string, any> {\n const block = document[blockId] as TEditorBlock;\n if (!block) return {};\n const result: Record<string, any> = { [blockId]: block };\n if (block.type === 'Container') {\n for (const childId of block.data.props?.childrenIds ?? []) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n if (block.type === 'ColumnsContainer') {\n for (const col of block.data.props?.columns ?? []) {\n for (const childId of col.childrenIds ?? []) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n }\n return result;\n}\n\nfunction getFontFamily(fontFamily: EmailLayoutProps['fontFamily']) {\n const f = fontFamily ?? 'MODERN_SANS';\n switch (f) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n}\n\nexport default function EmailLayoutEditor(props: EmailLayoutProps) {\n const childrenIds = props.childrenIds ?? [];\n const document = useDocument();\n const currentBlockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n\n const handleDelete = useCallback((e: KeyboardEvent) => {\n if (e.key !== 'Delete' && e.key !== 'Backspace') return;\n if (!selectedBlockId) return;\n\n const target = e.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n\n e.preventDefault();\n\n const filterChildrenIds = (ids: string[] | null | undefined) =>\n ids?.filter((id) => id !== selectedBlockId);\n\n const nDocument: Record<string, any> = { ...document };\n for (const [id, b] of Object.entries(nDocument)) {\n const block = b as TEditorBlock;\n if (id === selectedBlockId) continue;\n switch (block.type) {\n case 'EmailLayout':\n nDocument[id] = { ...block, data: { ...block.data, childrenIds: filterChildrenIds(block.data.childrenIds) } };\n break;\n case 'Container':\n nDocument[id] = { ...block, data: { ...block.data, props: { ...block.data.props, childrenIds: filterChildrenIds(block.data.props?.childrenIds) } } };\n break;\n case 'ColumnsContainer':\n nDocument[id] = { ...block, data: { ...block.data, props: { ...block.data.props, columns: block.data.props?.columns?.map((c: any) => ({ ...c, childrenIds: filterChildrenIds(c.childrenIds) })) } } };\n break;\n default:\n nDocument[id] = block;\n }\n }\n delete nDocument[selectedBlockId];\n resetDocument(nDocument);\n }, [selectedBlockId, document]);\n\n const handleCopy = useCallback((e: KeyboardEvent) => {\n if (!(e.metaKey || e.ctrlKey) || e.key !== 'c') return;\n if (!selectedBlockId) return;\n\n // Don't intercept when typing in an input/textarea\n const target = e.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n\n const blocks = collectBlock(selectedBlockId, document);\n if (Object.keys(blocks).length === 0) return;\n\n e.preventDefault();\n const payload = JSON.stringify({ __emailEditorBlocks: true, rootBlockId: selectedBlockId, blocks });\n navigator.clipboard.writeText(payload);\n }, [selectedBlockId, document]);\n\n const handlePaste = useCallback(async (e: ClipboardEvent) => {\n // Don't intercept paste when typing in an input/textarea\n const target = e.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n }\n\n const text = e.clipboardData?.getData('text/plain');\n if (!text) return;\n\n let parsed: any;\n try {\n parsed = JSON.parse(text);\n } catch {\n return;\n }\n\n if (!parsed?.__emailEditorBlocks || !parsed.rootBlockId || !parsed.blocks) return;\n\n e.preventDefault();\n\n const { blocks: newBlocks, newRootId } = rekeyBlocks(parsed.blocks, parsed.rootBlockId);\n const doc = { ...document };\n\n // Add all new blocks to the document\n Object.assign(doc, newBlocks);\n\n // Insert after selected block, or append to end\n const currentChildrenIds = [...(childrenIds || [])];\n const insertIndex = selectedBlockId ? currentChildrenIds.indexOf(selectedBlockId) + 1 : currentChildrenIds.length;\n currentChildrenIds.splice(insertIndex, 0, newRootId);\n\n doc[currentBlockId] = {\n type: 'EmailLayout',\n data: {\n ...document[currentBlockId].data,\n childrenIds: currentChildrenIds,\n },\n };\n\n resetDocument(doc);\n setSelectedBlockId(newRootId);\n }, [document, childrenIds, selectedBlockId, currentBlockId]);\n\n useEffect(() => {\n window.addEventListener('keydown', handleDelete);\n window.addEventListener('keydown', handleCopy);\n window.addEventListener('paste', handlePaste);\n return () => {\n window.removeEventListener('keydown', handleDelete);\n window.removeEventListener('keydown', handleCopy);\n window.removeEventListener('paste', handlePaste);\n };\n }, [handleDelete, handleCopy, handlePaste]);\n\n return (\n <div\n onClick={() => {\n setSelectedBlockId(null);\n }}\n style={{\n backgroundColor: props.backdropColor ?? '#F5F5F5',\n color: props.textColor ?? '#262626',\n fontFamily: getFontFamily(props.fontFamily),\n fontSize: '16px',\n fontWeight: '400',\n letterSpacing: '0.15008px',\n lineHeight: '1.5',\n margin: '0',\n padding: '32px 0',\n width: '100%',\n minHeight: '100%',\n }}\n >\n <table\n align=\"center\"\n width=\"100%\"\n style={{\n margin: '0 auto',\n maxWidth: '600px',\n backgroundColor: props.canvasColor ?? '#FFFFFF',\n borderRadius: props.borderRadius ?? undefined,\n border: (() => {\n const v = props.borderColor;\n if (!v) {\n return undefined;\n }\n return `1px solid ${v}`;\n })(),\n }}\n role=\"presentation\"\n cellSpacing=\"0\"\n cellPadding=\"0\"\n border={0}\n >\n <tbody>\n <tr style={{ width: '100%' }}>\n <td>\n <EditorChildrenIds\n childrenIds={childrenIds}\n onChange={({ block, blockId, childrenIds }) => {\n setDocument({\n [blockId]: block,\n [currentBlockId]: {\n type: 'EmailLayout',\n data: {\n ...document[currentBlockId].data,\n childrenIds: childrenIds,\n },\n },\n });\n setSelectedBlockId(blockId);\n }}\n />\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n","import React from 'react';\n\nimport { ArrowDownwardOutlined, ArrowUpwardOutlined, ContentCopyOutlined, DeleteOutlined } from '@mui/icons-material';\nimport { IconButton, Paper, Stack, SxProps, Tooltip } from '@mui/material';\n\nimport { TEditorBlock } from '@editor/core';\nimport { resetDocument, setSelectedBlockId, useDocument } from '@editor/editor-context';\nimport { ColumnsContainerProps } from '@editor/blocks/columns-container/columns-container-props-schema';\n\nconst sx: SxProps = {\n position: 'absolute',\n top: 0,\n left: -56,\n borderRadius: 64,\n paddingX: 0.5,\n paddingY: 1,\n zIndex: 'fab',\n};\n\nfunction collectBlock(blockId: string, document: Record<string, any>): Record<string, any> {\n const block = document[blockId] as TEditorBlock;\n if (!block) return {};\n const result: Record<string, any> = { [blockId]: block };\n\n // Collect children from Container\n if (block.type === 'Container') {\n const childrenIds = block.data.props?.childrenIds ?? [];\n for (const childId of childrenIds) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n // Collect children from ColumnsContainer\n if (block.type === 'ColumnsContainer') {\n const columns = block.data.props?.columns ?? [];\n for (const col of columns) {\n for (const childId of col.childrenIds ?? []) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n }\n // Collect children from EmailLayout\n if (block.type === 'EmailLayout') {\n const childrenIds = block.data.childrenIds ?? [];\n for (const childId of childrenIds) {\n Object.assign(result, collectBlock(childId, document));\n }\n }\n return result;\n}\n\ntype Props = {\n blockId: string;\n};\nexport default function TuneMenu({ blockId }: Props) {\n const document = useDocument();\n\n const handleDeleteClick = () => {\n const filterChildrenIds = (childrenIds: string[] | null | undefined) => {\n if (!childrenIds) {\n return childrenIds;\n }\n return childrenIds.filter((f) => f !== blockId);\n };\n const nDocument: typeof document = { ...document };\n for (const [id, b] of Object.entries(nDocument)) {\n const block = b as TEditorBlock;\n if (id === blockId) {\n continue;\n }\n switch (block.type) {\n case 'EmailLayout':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n childrenIds: filterChildrenIds(block.data.childrenIds),\n },\n };\n break;\n case 'Container':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n props: {\n ...block.data.props,\n childrenIds: filterChildrenIds(block.data.props?.childrenIds),\n },\n },\n };\n break;\n case 'ColumnsContainer':\n nDocument[id] = {\n type: 'ColumnsContainer',\n data: {\n style: block.data.style,\n props: {\n ...block.data.props,\n columns: block.data.props?.columns?.map((c) => ({\n childrenIds: filterChildrenIds(c.childrenIds),\n })),\n },\n } as ColumnsContainerProps,\n };\n break;\n default:\n nDocument[id] = block;\n }\n }\n delete nDocument[blockId];\n resetDocument(nDocument);\n };\n\n const handleCopyClick = () => {\n const blocks = collectBlock(blockId, document);\n const payload = JSON.stringify({ __emailEditorBlocks: true, rootBlockId: blockId, blocks });\n navigator.clipboard.writeText(payload);\n };\n\n const handleMoveClick = (direction: 'up' | 'down') => {\n const moveChildrenIds = (ids: string[] | null | undefined) => {\n if (!ids) {\n return ids;\n }\n const index = ids.indexOf(blockId);\n if (index < 0) {\n return ids;\n }\n const childrenIds = [...ids];\n if (direction === 'up' && index > 0) {\n [childrenIds[index], childrenIds[index - 1]] = [childrenIds[index - 1], childrenIds[index]];\n } else if (direction === 'down' && index < childrenIds.length - 1) {\n [childrenIds[index], childrenIds[index + 1]] = [childrenIds[index + 1], childrenIds[index]];\n }\n return childrenIds;\n };\n const nDocument: typeof document = { ...document };\n for (const [id, b] of Object.entries(nDocument)) {\n const block = b as TEditorBlock;\n if (id === blockId) {\n continue;\n }\n switch (block.type) {\n case 'EmailLayout':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n childrenIds: moveChildrenIds(block.data.childrenIds),\n },\n };\n break;\n case 'Container':\n nDocument[id] = {\n ...block,\n data: {\n ...block.data,\n props: {\n ...block.data.props,\n childrenIds: moveChildrenIds(block.data.props?.childrenIds),\n },\n },\n };\n break;\n case 'ColumnsContainer':\n nDocument[id] = {\n type: 'ColumnsContainer',\n data: {\n style: block.data.style,\n props: {\n ...block.data.props,\n columns: block.data.props?.columns?.map((c) => ({\n childrenIds: moveChildrenIds(c.childrenIds),\n })),\n },\n } as ColumnsContainerProps,\n };\n break;\n default:\n nDocument[id] = block;\n }\n }\n\n resetDocument(nDocument);\n setSelectedBlockId(blockId);\n };\n\n return (\n <Paper sx={sx} onClick={(ev) => ev.stopPropagation()}>\n <Stack>\n <Tooltip title=\"Move up\" placement=\"left-start\">\n <IconButton onClick={() => handleMoveClick('up')} sx={{ color: 'text.primary' }}>\n <ArrowUpwardOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Move down\" placement=\"left-start\">\n <IconButton onClick={() => handleMoveClick('down')} sx={{ color: 'text.primary' }}>\n <ArrowDownwardOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Copy block\" placement=\"left-start\">\n <IconButton onClick={handleCopyClick} sx={{ color: 'text.primary' }}>\n <ContentCopyOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Delete\" placement=\"left-start\">\n <IconButton onClick={handleDeleteClick} sx={{ color: 'text.primary' }}>\n <DeleteOutlined fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n </Stack>\n </Paper>\n );\n}\n","import React, { CSSProperties, useState } from 'react';\n\nimport { Box } from '@mui/material';\n\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setSelectedBlockId, useSelectedBlockId } from '@editor/editor-context';\n\nimport TuneMenu from './tune-menu';\n\ntype TEditorBlockWrapperProps = {\n children: JSX.Element;\n};\n\nexport default function EditorBlockWrapper({ children }: TEditorBlockWrapperProps) {\n const selectedBlockId = useSelectedBlockId();\n const [mouseInside, setMouseInside] = useState(false);\n const blockId = useCurrentBlockId();\n\n let outline: CSSProperties['outline'];\n if (selectedBlockId === blockId) {\n outline = '2px solid rgba(0,121,204, 1)';\n } else if (mouseInside) {\n outline = '2px solid rgba(0,121,204, 0.3)';\n }\n\n const renderMenu = () => {\n if (selectedBlockId !== blockId) {\n return null;\n }\n return <TuneMenu blockId={blockId} />;\n };\n\n return (\n <Box\n sx={{\n position: 'relative',\n maxWidth: '100%',\n outlineOffset: '-1px',\n outline,\n }}\n onMouseEnter={(ev) => {\n setMouseInside(true);\n ev.stopPropagation();\n }}\n onMouseLeave={() => {\n setMouseInside(false);\n }}\n onClick={(ev) => {\n setSelectedBlockId(blockId);\n ev.stopPropagation();\n }}\n >\n {renderMenu()}\n {children}\n </Box>\n );\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { ButtonProps, ButtonPropsDefaults } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useSelectedBlockId } from '@editor/editor-context';\n\nfunction getFontFamily(fontFamily: string | null | undefined) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n }\n return undefined;\n}\n\nconst getPadding = (padding: { top: number; right: number; bottom: number; left: number } | null | undefined) =>\n padding ? `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px` : undefined;\n\nfunction getRoundedCorners(props: ButtonProps['props']) {\n const buttonStyle = props?.buttonStyle ?? ButtonPropsDefaults.buttonStyle;\n switch (buttonStyle) {\n case 'rectangle':\n return undefined;\n case 'pill':\n return 64;\n case 'rounded':\n default:\n return 4;\n }\n}\n\nfunction getButtonSizePadding(props: ButtonProps['props']) {\n const size = props?.size ?? ButtonPropsDefaults.size;\n switch (size) {\n case 'x-small':\n return [4, 8] as const;\n case 'small':\n return [8, 12] as const;\n case 'large':\n return [16, 32] as const;\n case 'medium':\n default:\n return [12, 20] as const;\n }\n}\n\nexport default function ButtonEditor({ style, props }: ButtonProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const isSelected = selectedBlockId === blockId;\n\n const text = props?.text ?? ButtonPropsDefaults.text;\n const fullWidth = props?.fullWidth ?? ButtonPropsDefaults.fullWidth;\n const buttonTextColor = props?.buttonTextColor ?? ButtonPropsDefaults.buttonTextColor;\n const buttonBackgroundColor = props?.buttonBackgroundColor ?? ButtonPropsDefaults.buttonBackgroundColor;\n\n const [localText, setLocalText] = useState(text);\n\n useEffect(() => {\n setLocalText(text);\n }, [text]);\n\n const padding = getButtonSizePadding(props);\n\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n };\n\n const linkStyle: CSSProperties = {\n color: buttonTextColor,\n fontSize: style?.fontSize ?? 16,\n fontFamily: getFontFamily(style?.fontFamily),\n fontWeight: style?.fontWeight ?? 'bold',\n backgroundColor: buttonBackgroundColor,\n borderRadius: getRoundedCorners(props),\n display: fullWidth ? 'block' : 'inline-block',\n padding: `${padding[0]}px ${padding[1]}px`,\n textDecoration: 'none',\n };\n\n const handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newText = e.target.value;\n setLocalText(newText);\n setDocument({\n [blockId]: {\n type: 'Button',\n data: {\n style,\n props: {\n ...props,\n text: newText,\n },\n },\n },\n });\n };\n\n if (isSelected) {\n const inputStyle: CSSProperties = {\n ...linkStyle,\n border: 'none',\n outline: 'none',\n cursor: 'text',\n width: fullWidth ? '100%' : undefined,\n textAlign: 'center',\n };\n\n return (\n <div style={wrapperStyle}>\n <input\n type=\"text\"\n value={localText}\n onChange={handleTextChange}\n style={inputStyle}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n );\n }\n\n return (\n <div style={wrapperStyle}>\n <span style={linkStyle}>\n <span>{text}</span>\n </span>\n </div>\n );\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { HeadingProps, HeadingPropsDefaults } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useDocument, useSelectedBlockId } from '@editor/editor-context';\n\n// Helper function to get font family from existing Heading component\nfunction getFontFamily(fontFamily: string | null | undefined) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n case 'inherit':\n case null:\n case undefined:\n return undefined;\n }\n return undefined;\n}\n\n// Helper function to get padding from existing utils\nfunction getPadding(padding: any) {\n if (!padding) return undefined;\n \n // Object format from the schema (matching the original blocks)\n if (typeof padding === 'object' && !Array.isArray(padding) && \n 'top' in padding && 'right' in padding && 'bottom' in padding && 'left' in padding) {\n return `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n }\n \n // For backward compatibility with the array format\n if (Array.isArray(padding)) {\n if (padding.length === 1) {\n return `${padding[0]}px`;\n }\n if (padding.length === 2) {\n return `${padding[0]}px ${padding[1]}px`;\n }\n if (padding.length === 3) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px`;\n }\n if (padding.length === 4) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px ${padding[3]}px`;\n }\n }\n \n // For single number\n if (typeof padding === 'number') {\n return `${padding}px`;\n }\n \n return undefined;\n}\n\n// Helper function to get font size based on heading level\nfunction getFontSize(level: 'h1' | 'h2' | 'h3') {\n switch (level) {\n case 'h1':\n return 32;\n case 'h2':\n return 24;\n case 'h3':\n return 20;\n }\n}\n\nexport default function HeadingEditor({ style, props }: HeadingProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const document = useDocument();\n const isSelected = selectedBlockId === blockId;\n \n // Get the current text and level from props\n const level = props?.level ?? HeadingPropsDefaults.level;\n const textContent = props?.text ?? HeadingPropsDefaults.text;\n const [localText, setLocalText] = useState(textContent);\n \n // Get email root settings for inherited font\n const rootBlock = document.root;\n const rootFontFamily = rootBlock && rootBlock.type === 'EmailLayout' \n ? getFontFamily(rootBlock.data.fontFamily) \n : '\"Helvetica Neue\", Arial, sans-serif';\n \n // Update local state when text changes from other sources\n useEffect(() => {\n setLocalText(textContent);\n }, [textContent]);\n \n // Determine the actual font family to use\n const fontFamily = getFontFamily(style?.fontFamily) || rootFontFamily;\n \n // Create styles for displaying the heading\n const hStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontWeight: style?.fontWeight ?? 'bold',\n textAlign: style?.textAlign ?? undefined,\n margin: 0,\n fontFamily,\n fontSize: getFontSize(level),\n padding: getPadding(style?.padding),\n width: '100%',\n minHeight: '1em',\n };\n \n // Additional styles for the textarea\n const textareaStyle: CSSProperties = {\n ...hStyle,\n border: 'none',\n outline: 'none',\n resize: 'none',\n backgroundColor: 'transparent',\n overflow: 'hidden',\n lineHeight: 'inherit',\n margin: 0,\n display: 'block',\n width: '100%'\n };\n \n // Handle text changes\n const handleTextChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newText = e.target.value;\n setLocalText(newText);\n \n // Update the document with the new text\n setDocument({\n [blockId]: {\n type: 'Heading',\n data: {\n style,\n props: {\n ...props,\n text: newText\n }\n }\n }\n });\n };\n \n // Auto-resize textarea based on content\n const adjustTextareaHeight = (element: HTMLTextAreaElement) => {\n if (element) {\n element.style.height = 'auto';\n element.style.height = `${element.scrollHeight}px`;\n }\n };\n\n // If the block is selected, show a textarea\n if (isSelected) {\n return (\n <textarea\n value={localText}\n onChange={handleTextChange}\n style={textareaStyle}\n rows={1}\n onInput={(e) => adjustTextareaHeight(e.target as HTMLTextAreaElement)}\n ref={(el) => el && adjustTextareaHeight(el)}\n onClick={(e) => e.stopPropagation()}\n />\n );\n }\n \n // Otherwise, render the appropriate heading level\n switch (level) {\n case 'h1':\n return <h1 style={hStyle}>{textContent}</h1>;\n case 'h2':\n return <h2 style={hStyle}>{textContent}</h2>;\n case 'h3':\n return <h3 style={hStyle}>{textContent}</h3>;\n }\n} ","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { HtmlProps } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useSelectedBlockId } from '@editor/editor-context';\n\nexport default function HtmlEditor({ style, props }: HtmlProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const isSelected = selectedBlockId === blockId;\n\n const contents = props?.contents ?? '';\n const [localContents, setLocalContents] = useState(contents);\n\n useEffect(() => {\n setLocalContents(contents);\n }, [contents]);\n\n const cssStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontSize: style?.fontSize ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: style?.padding\n ? `${style.padding.top}px ${style.padding.right}px ${style.padding.bottom}px ${style.padding.left}px`\n : undefined,\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newContents = e.target.value;\n setLocalContents(newContents);\n setDocument({\n [blockId]: {\n type: 'Html',\n data: {\n style,\n props: {\n ...props,\n contents: newContents,\n },\n },\n },\n });\n };\n\n const adjustTextareaHeight = (element: HTMLTextAreaElement) => {\n if (element) {\n element.style.height = 'auto';\n element.style.height = `${element.scrollHeight}px`;\n }\n };\n\n if (isSelected) {\n const textareaStyle: CSSProperties = {\n ...cssStyle,\n fontFamily: '\"Nimbus Mono PS\", \"Courier New\", monospace',\n fontSize: 13,\n color: cssStyle.color ?? '#333',\n border: 'none',\n outline: 'none',\n resize: 'none',\n overflow: 'hidden',\n width: '100%',\n display: 'block',\n margin: 0,\n backgroundColor: 'transparent',\n };\n\n return (\n <div style={cssStyle}>\n <textarea\n value={localContents}\n onChange={handleChange}\n style={textareaStyle}\n rows={3}\n onInput={(e) => adjustTextareaHeight(e.target as HTMLTextAreaElement)}\n ref={(el) => el && adjustTextareaHeight(el)}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n );\n }\n\n if (!contents) {\n return <div style={cssStyle} />;\n }\n return <div style={cssStyle} dangerouslySetInnerHTML={{ __html: contents }} />;\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { SignatureProps, SignaturePropsDefaults } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useSelectedBlockId } from '@editor/editor-context';\n\nfunction getImageBorderRadius(shape: string, size: number): number | undefined {\n switch (shape) {\n case 'circle':\n return size;\n case 'rounded':\n return size * 0.125;\n case 'square':\n default:\n return undefined;\n }\n}\n\nexport default function SignatureEditor({ style, props }: SignatureProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const isSelected = selectedBlockId === blockId;\n\n const greeting = props?.greeting ?? SignaturePropsDefaults.greeting;\n const name = props?.name ?? SignaturePropsDefaults.name;\n const title = props?.title ?? SignaturePropsDefaults.title;\n const company = props?.company ?? SignaturePropsDefaults.company;\n const address = props?.address ?? SignaturePropsDefaults.address;\n const email = props?.email ?? SignaturePropsDefaults.email;\n const phone = props?.phone ?? SignaturePropsDefaults.phone;\n const website = props?.website ?? SignaturePropsDefaults.website;\n const imageUrl = props?.imageUrl ?? SignaturePropsDefaults.imageUrl;\n const imageSize = props?.imageSize ?? SignaturePropsDefaults.imageSize;\n const imageShape = props?.imageShape ?? SignaturePropsDefaults.imageShape;\n const layout = props?.layout ?? SignaturePropsDefaults.layout;\n const nameColor = props?.nameColor ?? SignaturePropsDefaults.nameColor;\n const textColor = props?.textColor ?? SignaturePropsDefaults.textColor;\n const linkColor = props?.linkColor ?? SignaturePropsDefaults.linkColor;\n\n const [localGreeting, setLocalGreeting] = useState(greeting);\n const [localName, setLocalName] = useState(name);\n const [localTitle, setLocalTitle] = useState(title);\n const [localCompany, setLocalCompany] = useState(company);\n const [localAddress, setLocalAddress] = useState(address);\n const [localEmail, setLocalEmail] = useState(email);\n const [localPhone, setLocalPhone] = useState(phone);\n const [localWebsite, setLocalWebsite] = useState(website);\n\n useEffect(() => { setLocalGreeting(greeting); }, [greeting]);\n useEffect(() => { setLocalName(name); }, [name]);\n useEffect(() => { setLocalTitle(title); }, [title]);\n useEffect(() => { setLocalCompany(company); }, [company]);\n useEffect(() => { setLocalAddress(address); }, [address]);\n useEffect(() => { setLocalEmail(email); }, [email]);\n useEffect(() => { setLocalPhone(phone); }, [phone]);\n useEffect(() => { setLocalWebsite(website); }, [website]);\n\n const updateProps = (updates: Partial<typeof props>) => {\n setDocument({\n [blockId]: {\n type: 'Signature',\n data: {\n style,\n props: { ...props, ...updates },\n },\n },\n });\n };\n\n const greetingStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n marginBottom: 8,\n lineHeight: '1.4',\n fontStyle: 'italic',\n };\n\n const nameStyle: CSSProperties = {\n fontSize: 16,\n fontWeight: 'bold',\n color: nameColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const detailStyle: CSSProperties = {\n fontSize: 14,\n color: textColor,\n margin: 0,\n lineHeight: '1.4',\n };\n\n const linkStyle: CSSProperties = {\n fontSize: 14,\n color: linkColor,\n textDecoration: 'none',\n };\n\n const inputBase: CSSProperties = {\n border: 'none',\n outline: 'none',\n backgroundColor: 'transparent',\n width: '100%',\n padding: 0,\n margin: 0,\n fontFamily: 'inherit',\n };\n\n const wrapperStyle: CSSProperties = {\n backgroundColor: style?.backgroundColor ?? undefined,\n padding: style?.padding\n ? `${style.padding.top}px ${style.padding.right}px ${style.padding.bottom}px ${style.padding.left}px`\n : undefined,\n };\n\n const imageElement = imageUrl ? (\n <img\n src={imageUrl}\n alt={name || company}\n width={imageSize}\n height={imageSize}\n style={{\n width: imageSize,\n height: imageSize,\n objectFit: 'cover',\n borderRadius: getImageBorderRadius(imageShape, imageSize),\n display: 'block',\n outline: 'none',\n border: 'none',\n }}\n />\n ) : null;\n\n const greetingElement = isSelected ? (\n <div onClick={(e) => e.stopPropagation()}>\n <input\n value={localGreeting}\n onChange={(e) => { setLocalGreeting(e.target.value); updateProps({ greeting: e.target.value }); }}\n placeholder=\"Greeting (e.g. Best regards,)\"\n style={{ ...inputBase, ...greetingStyle }}\n />\n </div>\n ) : greeting ? (\n <p style={greetingStyle}>{greeting}</p>\n ) : null;\n\n const textContent = isSelected ? (\n <div onClick={(e) => e.stopPropagation()}>\n <input\n value={localName}\n onChange={(e) => { setLocalName(e.target.value); updateProps({ name: e.target.value }); }}\n placeholder=\"Name\"\n style={{ ...inputBase, ...nameStyle }}\n />\n <input\n value={localTitle}\n onChange={(e) => { setLocalTitle(e.target.value); updateProps({ title: e.target.value }); }}\n placeholder=\"Title\"\n style={{ ...inputBase, ...detailStyle }}\n />\n <input\n value={localCompany}\n onChange={(e) => { setLocalCompany(e.target.value); updateProps({ company: e.target.value }); }}\n placeholder=\"Company\"\n style={{ ...inputBase, ...detailStyle }}\n />\n <input\n value={localAddress}\n onChange={(e) => { setLocalAddress(e.target.value); updateProps({ address: e.target.value }); }}\n placeholder=\"Address\"\n style={{ ...inputBase, ...detailStyle }}\n />\n <input\n value={localEmail}\n onChange={(e) => { setLocalEmail(e.target.value); updateProps({ email: e.target.value }); }}\n placeholder=\"Email\"\n style={{ ...inputBase, ...linkStyle, marginTop: 4, display: 'block' }}\n />\n <input\n value={localPhone}\n onChange={(e) => { setLocalPhone(e.target.value); updateProps({ phone: e.target.value }); }}\n placeholder=\"Phone\"\n style={{ ...inputBase, ...linkStyle, display: 'block' }}\n />\n <input\n value={localWebsite}\n onChange={(e) => { setLocalWebsite(e.target.value); updateProps({ website: e.target.value }); }}\n placeholder=\"Website\"\n style={{ ...inputBase, ...linkStyle, display: 'block' }}\n />\n </div>\n ) : (\n <div>\n {name && <p style={nameStyle}>{name}</p>}\n {title && <p style={detailStyle}>{title}</p>}\n {company && <p style={detailStyle}>{company}</p>}\n {address && <p style={detailStyle}>{address}</p>}\n {(email || phone || website) && (\n <p style={{ ...detailStyle, marginTop: 4 }}>\n {email && <span style={linkStyle}>{email}</span>}\n {email && (phone || website) && <span style={detailStyle}> · </span>}\n {phone && <span style={linkStyle}>{phone}</span>}\n {phone && website && <span style={detailStyle}> · </span>}\n {website && <span style={linkStyle}>{website}</span>}\n </p>\n )}\n {!name && !title && !company && !email && !phone && !website && (\n <p style={detailStyle}>Click to edit signature</p>\n )}\n </div>\n );\n\n if (layout === 'vertical') {\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n {imageElement && <div style={{ marginBottom: 12 }}>{imageElement}</div>}\n {textContent}\n </div>\n );\n }\n\n return (\n <div style={wrapperStyle}>\n {greetingElement}\n <table cellPadding=\"0\" cellSpacing=\"0\" border={0} role=\"presentation\">\n <tbody>\n <tr>\n {imageElement && (\n <td style={{ verticalAlign: 'middle', paddingRight: 16 }}>\n {imageElement}\n </td>\n )}\n <td style={{ verticalAlign: 'middle' }}>\n {textContent}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n );\n}\n","import React, { useState, useEffect, CSSProperties } from 'react';\nimport { TextProps, TextPropsDefaults, EmailMarkdown } from '@blocks';\nimport { useCurrentBlockId } from '@editor/editor-block';\nimport { setDocument, useDocument, useSelectedBlockId } from '@editor/editor-context';\n\n// Helper function to get font family from existing Text component\nfunction getFontFamily(fontFamily: string | null | undefined) {\n switch (fontFamily) {\n case 'MODERN_SANS':\n return '\"Helvetica Neue\", \"Arial Nova\", \"Nimbus Sans\", Arial, sans-serif';\n case 'BOOK_SANS':\n return 'Optima, Candara, \"Noto Sans\", source-sans-pro, sans-serif';\n case 'ORGANIC_SANS':\n return 'Seravek, \"Gill Sans Nova\", Ubuntu, Calibri, \"DejaVu Sans\", source-sans-pro, sans-serif';\n case 'GEOMETRIC_SANS':\n return 'Avenir, \"Avenir Next LT Pro\", Montserrat, Corbel, \"URW Gothic\", source-sans-pro, sans-serif';\n case 'HEAVY_SANS':\n return 'Bahnschrift, \"DIN Alternate\", \"Franklin Gothic Medium\", \"Nimbus Sans Narrow\", sans-serif-condensed, sans-serif';\n case 'ROUNDED_SANS':\n return 'ui-rounded, \"Hiragino Maru Gothic ProN\", Quicksand, Comfortaa, Manjari, \"Arial Rounded MT Bold\", Calibri, source-sans-pro, sans-serif';\n case 'MODERN_SERIF':\n return 'Charter, \"Bitstream Charter\", \"Sitka Text\", Cambria, serif';\n case 'BOOK_SERIF':\n return '\"Iowan Old Style\", \"Palatino Linotype\", \"URW Palladio L\", P052, serif';\n case 'MONOSPACE':\n return '\"Nimbus Mono PS\", \"Courier New\", \"Cutive Mono\", monospace';\n case 'inherit':\n case null:\n case undefined:\n return undefined;\n }\n return undefined;\n}\n\n// Helper function to get padding from existing utils\nfunction getPadding(padding: any) {\n if (!padding) return undefined;\n \n // Object format from the schema (matching the original blocks)\n if (typeof padding === 'object' && !Array.isArray(padding) && \n 'top' in padding && 'right' in padding && 'bottom' in padding && 'left' in padding) {\n return `${padding.top}px ${padding.right}px ${padding.bottom}px ${padding.left}px`;\n }\n \n // For backward compatibility with the array format\n if (Array.isArray(padding)) {\n if (padding.length === 1) {\n return `${padding[0]}px`;\n }\n if (padding.length === 2) {\n return `${padding[0]}px ${padding[1]}px`;\n }\n if (padding.length === 3) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px`;\n }\n if (padding.length === 4) {\n return `${padding[0]}px ${padding[1]}px ${padding[2]}px ${padding[3]}px`;\n }\n }\n \n // For single number\n if (typeof padding === 'number') {\n return `${padding}px`;\n }\n \n return undefined;\n}\n\nexport default function TextEditor({ style, props }: TextProps) {\n const blockId = useCurrentBlockId();\n const selectedBlockId = useSelectedBlockId();\n const document = useDocument();\n const isSelected = selectedBlockId === blockId;\n \n // Get the current text from props\n const textContent = props?.text ?? TextPropsDefaults.text;\n const [localText, setLocalText] = useState(textContent);\n const isMarkdown = props?.markdown ?? false;\n \n // Get email root settings for inherited font\n const rootBlock = document.root;\n const rootFontFamily = rootBlock && rootBlock.type === 'EmailLayout' \n ? getFontFamily(rootBlock.data.fontFamily) \n : '\"Helvetica Neue\", Arial, sans-serif';\n \n // Update local state when text changes from other sources\n useEffect(() => {\n setLocalText(textContent);\n }, [textContent]);\n \n // Determine the actual font family to use\n const fontFamily = getFontFamily(style?.fontFamily) || rootFontFamily;\n \n // Create styles for displaying the text\n const wStyle: CSSProperties = {\n color: style?.color ?? undefined,\n backgroundColor: style?.backgroundColor ?? undefined,\n fontSize: style?.fontSize ?? undefined,\n fontFamily,\n fontWeight: style?.fontWeight ?? undefined,\n textAlign: style?.textAlign ?? undefined,\n padding: getPadding(style?.padding),\n width: '100%',\n minHeight: '1em'\n };\n \n // Additional styles for the textarea\n const textareaStyle: CSSProperties = {\n ...wStyle,\n border: 'none',\n outline: 'none',\n resize: 'none',\n backgroundColor: 'transparent',\n overflow: 'hidden',\n lineHeight: 'inherit',\n margin: 0,\n display: 'block',\n width: '100%',\n fontSize: wStyle.fontSize,\n fontWeight: wStyle.fontWeight,\n textAlign: wStyle.textAlign\n };\n \n // Handle text changes\n const handleTextChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newText = e.target.value;\n setLocalText(newText);\n \n // Update the document with the new text\n setDocument({\n [blockId]: {\n type: 'Text',\n data: {\n style,\n props: {\n ...props,\n text: newText\n }\n }\n }\n });\n };\n \n // Auto-resize textarea based on content\n const adjustTextareaHeight = (element: HTMLTextAreaElement) => {\n if (element) {\n element.style.height = 'auto';\n element.style.height = `${element.scrollHeight}px`;\n }\n };\n\n // If the block is selected and not markdown, show a textarea\n if (isSelected && !isMarkdown) {\n return (\n <textarea\n value={localText}\n onChange={handleTextChange}\n style={textareaStyle}\n rows={1}\n onInput={(e) => adjustTextareaHeight(e.target as HTMLTextAreaElement)}\n ref={(el) => el && adjustTextareaHeight(el)}\n onClick={(e) => e.stopPropagation()}\n />\n );\n }\n \n // Otherwise, just display the text as before\n if (isMarkdown) {\n // For markdown content, use the EmailMarkdown component\n return <EmailMarkdown style={wStyle} markdown={textContent} />;\n }\n \n return <div style={wStyle}>{textContent}</div>;\n} ","import React from 'react';\nimport { z } from 'zod';\n\nimport {\n Avatar, AvatarPropsSchema,\n ButtonPropsSchema,\n Divider, DividerPropsSchema,\n HeadingPropsSchema,\n HtmlPropsSchema,\n Image, ImagePropsSchema,\n SignaturePropsSchema,\n Spacer, SpacerPropsSchema,\n TextPropsSchema\n} from '@blocks';\nimport {\n buildBlockComponent,\n buildBlockConfigurationDictionary,\n buildBlockConfigurationSchema,\n} from '@core';\n\nimport ColumnsContainerEditor from '@editor/blocks/columns-container/columns-container-editor';\nimport ColumnsContainerPropsSchema from '@editor/blocks/columns-container/columns-container-props-schema';\nimport ContainerEditor from '@editor/blocks/container/container-editor';\nimport ContainerPropsSchema from '@editor/blocks/container/container-props-schema';\nimport EmailLayoutEditor from '@editor/blocks/email-layout/email-layout-editor';\nimport EmailLayoutPropsSchema from '@editor/blocks/email-layout/email-layout-props-schema';\nimport EditorBlockWrapper from '@editor/blocks/helpers/block-wrappers/editor-block-wrapper';\nimport ButtonEditor from '@editor/blocks/button/button-editor';\nimport HeadingEditor from '@editor/blocks/heading/heading-editor';\nimport HtmlEditor from '@editor/blocks/html/html-editor';\nimport SignatureEditor from '@editor/blocks/signature/signature-editor';\nimport TextEditor from '@editor/blocks/text/text-editor';\n\nconst EDITOR_DICTIONARY = buildBlockConfigurationDictionary({\n Avatar: {\n schema: AvatarPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <Avatar {...props} />\n </EditorBlockWrapper>\n ),\n },\n Button: {\n schema: ButtonPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <ButtonEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Container: {\n schema: ContainerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <ContainerEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n ColumnsContainer: {\n schema: ColumnsContainerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <ColumnsContainerEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Heading: {\n schema: HeadingPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <HeadingEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Html: {\n schema: HtmlPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <HtmlEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n Image: {\n schema: ImagePropsSchema,\n Component: (data) => {\n const props = {\n ...data,\n props: {\n ...data.props,\n url: data.props?.url ?? 'https://placehold.co/600x400@2x/F8F8F8/CCC?text=Your%20image',\n linkHref: null,\n },\n };\n return (\n <EditorBlockWrapper>\n <Image {...props} />\n </EditorBlockWrapper>\n );\n },\n },\n Text: {\n schema: TextPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <TextEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n EmailLayout: {\n schema: EmailLayoutPropsSchema,\n Component: (p) => <EmailLayoutEditor {...p} />,\n },\n Spacer: {\n schema: SpacerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <Spacer {...props} />\n </EditorBlockWrapper>\n ),\n },\n Divider: {\n schema: DividerPropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <Divider {...props} />\n </EditorBlockWrapper>\n ),\n },\n Signature: {\n schema: SignaturePropsSchema,\n Component: (props) => (\n <EditorBlockWrapper>\n <SignatureEditor {...props} />\n </EditorBlockWrapper>\n ),\n },\n});\n\nexport const EditorBlock = buildBlockComponent(EDITOR_DICTIONARY);\nexport const EditorBlockSchema = buildBlockConfigurationSchema(EDITOR_DICTIONARY);\nexport const EditorConfigurationSchema = z.record(z.string(), EditorBlockSchema);\n\nexport type TEditorBlock = z.infer<typeof EditorBlockSchema>;\nexport type TEditorConfiguration = Record<string, TEditorBlock>;\n","import React, { createContext, useContext } from 'react';\n\nimport { EditorBlock as CoreEditorBlock } from './core';\nimport { useDocument } from './editor-context';\n\nconst EditorBlockContext = createContext<string | null>(null);\nexport const useCurrentBlockId = () => useContext(EditorBlockContext)!;\n\ntype EditorBlockProps = {\n id: string;\n};\n\n/**\n *\n * @param id - Block id\n * @returns EditorBlock component that loads data from the EditorDocumentContext\n */\nexport default function EditorBlock({ id }: EditorBlockProps) {\n const document = useDocument();\n const block = document[id];\n if (!block) {\n throw new Error('Could not find block');\n }\n return (\n <EditorBlockContext.Provider value={id}>\n <CoreEditorBlock {...block} />\n </EditorBlockContext.Provider>\n );\n}\n","import React from 'react';\n\nimport { AppRegistrationOutlined, LastPageOutlined } from '@mui/icons-material';\nimport { IconButton } from '@mui/material';\n\nimport { toggleInspectorDrawerOpen, useInspectorDrawerOpen } from '@editor/editor-context';\n\nexport default function ToggleInspectorPanelButton() {\n const inspectorDrawerOpen = useInspectorDrawerOpen();\n\n const handleClick = () => {\n toggleInspectorDrawerOpen();\n };\n if (inspectorDrawerOpen) {\n return (\n <IconButton onClick={handleClick}>\n <LastPageOutlined fontSize=\"small\" />\n </IconButton>\n );\n }\n return (\n <IconButton onClick={handleClick}>\n <AppRegistrationOutlined fontSize=\"small\" />\n </IconButton>\n );\n}\n","import React from 'react';\n\nimport { FirstPageOutlined, MenuOutlined } from '@mui/icons-material';\nimport { IconButton } from '@mui/material';\n\nimport { toggleSamplesDrawerOpen, useSamplesDrawerOpen } from '@editor/editor-context';\n\nfunction useIcon() {\n const samplesDrawerOpen = useSamplesDrawerOpen();\n if (samplesDrawerOpen) {\n return <FirstPageOutlined fontSize=\"small\" />;\n }\n return <MenuOutlined fontSize=\"small\" />;\n}\n\nexport default function ToggleSamplesPanelButton() {\n const icon = useIcon();\n return <IconButton onClick={toggleSamplesDrawerOpen}>{icon}</IconButton>;\n}\n","/**\n * HTML formatter using the lightweight htmlfy library\n * https://github.com/j4w8n/htmlfy\n */\n\nimport { prettify } from 'htmlfy';\n\n/**\n * Format HTML string using htmlfy's prettify function \n * @param html The HTML string to format\n * @param spaces Indentation spaces (default: 2)\n * @returns Formatted HTML\n */\nexport function formatHtml(html: string, spaces: number = 2): string {\n try {\n return prettify(html, {\n tab_size: spaces,\n content_wrap: 80, // Wrap content at 80 characters\n tag_wrap: 60, // Wrap tag attributes at 60 characters\n ignore: [] // Don't ignore any elements\n });\n } catch (e) {\n console.error('Error formatting HTML:', e);\n // Fallback to basic formatting if htmlfy fails\n return html.trim()\n .replace(/>\\s*</g, '>\\n<')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line)\n .join('\\n');\n }\n}\n\n/**\n * Minify HTML string using htmlfy's minify function\n * @param html The HTML string to minify\n * @returns Minified HTML\n */\nexport function minifyHtml(html: string): string {\n try {\n return minify(html);\n } catch (e) {\n console.error('Error minifying HTML:', e);\n // Fallback to basic minification\n return html.replace(/>\\s+</g, '><').trim();\n }\n} ","import hljs from 'highlight.js';\nimport jsonHighlighter from 'highlight.js/lib/languages/json';\nimport xmlHighlighter from 'highlight.js/lib/languages/xml';\nimport { formatHtml } from './html-formatter';\n\nhljs.registerLanguage('json', jsonHighlighter);\nhljs.registerLanguage('html', xmlHighlighter);\n\nexport async function html(value: string): Promise<string> {\n try {\n // Use our custom formatter\n const prettyValue = formatHtml(value, 2);\n return hljs.highlight(prettyValue, { language: 'html' }).value;\n } catch (e) {\n console.error('Error highlighting HTML:', e);\n return hljs.highlight(value, { language: 'html' }).value;\n }\n}\n\nexport async function json(value: string): Promise<string> {\n try {\n // Try to parse and then format with native JSON.stringify\n const parsed = JSON.parse(value);\n const prettyValue = JSON.stringify(parsed, null, 2);\n return hljs.highlight(prettyValue, { language: 'javascript' }).value;\n } catch (e) {\n console.error('Error highlighting JSON:', e);\n // If parsing fails, just highlight the original value\n return hljs.highlight(value, { language: 'javascript' }).value;\n }\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { html, json } from './highlighters';\n\ntype TextEditorPanelProps = {\n type: 'json' | 'html' | 'javascript';\n value: string;\n};\nexport default function HighlightedCodePanel({ type, value }: TextEditorPanelProps) {\n const [code, setCode] = useState<string | null>(null);\n\n useEffect(() => {\n switch (type) {\n case 'html':\n html(value).then(setCode);\n return;\n case 'json':\n json(value).then(setCode);\n return;\n }\n }, [setCode, value, type]);\n\n if (code === null) {\n return null;\n }\n\n return (\n <pre\n style={{ \n margin: 0, \n padding: 16,\n overflowX: 'auto',\n whiteSpace: 'pre',\n fontSize: '12px',\n }}\n dangerouslySetInnerHTML={{ __html: code }}\n onClick={(ev) => {\n const s = window.getSelection();\n if (s === null) {\n return;\n }\n s.selectAllChildren(ev.currentTarget);\n }}\n />\n );\n}\n","import React, { useMemo } from 'react';\n\nimport { renderToStaticMarkup } from '@email-builder';\n\nimport { useDocument } from '@editor/editor-context';\n\nimport HighlightedCodePanel from './helper/highlighted-code-panel';\n\nexport default function HtmlPanel() {\n const document = useDocument();\n const code = useMemo(() => renderToStaticMarkup(document, { rootBlockId: 'root' }), [document]);\n return <HighlightedCodePanel type=\"html\" value={code} />;\n}\n","import React, { useMemo } from 'react';\n\nimport { useDocument } from '@editor/editor-context';\n\nimport HighlightedCodePanel from './helper/highlighted-code-panel';\n\nexport default function JsonPanel() {\n const document = useDocument();\n const code = useMemo(() => JSON.stringify(document, null, ' '), [document]);\n return <HighlightedCodePanel type=\"json\" value={code} />;\n}\n","import React, { useMemo } from 'react';\n\nimport { renderToText } from '@email-builder';\n\nimport { useDocument } from '@editor/editor-context';\n\nexport default function TextPanel() {\n const document = useDocument();\n const text = useMemo(() => renderToText(document, { rootBlockId: 'root' }), [document]);\n return (\n <pre\n style={{\n margin: 0,\n padding: 16,\n overflowX: 'auto',\n whiteSpace: 'pre-wrap',\n fontSize: '13px',\n fontFamily: 'monospace',\n lineHeight: '1.5',\n }}\n onClick={(ev) => {\n const s = window.getSelection();\n if (s === null) return;\n s.selectAllChildren(ev.currentTarget);\n }}\n >\n {text}\n </pre>\n );\n}\n","import React from 'react';\n\nimport { CodeOutlined, DataObjectOutlined, EditOutlined, PreviewOutlined, SubjectOutlined } from '@mui/icons-material';\nimport { Tab, Tabs, Tooltip } from '@mui/material';\n\nimport { setSelectedMainTab, useSelectedMainTab } from '@editor/editor-context';\n\nexport default function MainTabsGroup() {\n const selectedMainTab = useSelectedMainTab();\n const handleChange = (_: unknown, v: unknown) => {\n switch (v) {\n case 'json':\n case 'preview':\n case 'editor':\n case 'html':\n case 'text':\n setSelectedMainTab(v);\n return;\n default:\n setSelectedMainTab('editor');\n }\n };\n\n return (\n <Tabs value={selectedMainTab} onChange={handleChange}>\n <Tab\n value=\"editor\"\n label={\n <Tooltip title=\"Edit\">\n <EditOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"preview\"\n label={\n <Tooltip title=\"Preview\">\n <PreviewOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"html\"\n label={\n <Tooltip title=\"HTML output\">\n <CodeOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"text\"\n label={\n <Tooltip title=\"Plain text output\">\n <SubjectOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n <Tab\n value=\"json\"\n label={\n <Tooltip title=\"JSON output\">\n <DataObjectOutlined fontSize=\"small\" />\n </Tooltip>\n }\n />\n </Tabs>\n );\n}\n","import React, { createContext, useContext, useState } from 'react';\nimport { Snackbar } from '@mui/material';\n\n// Define the context\ninterface SnackbarContextType {\n showMessage: (message: string, duration?: number) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarContextType | null>(null);\n\n// Custom hook to use the snackbar\nexport function useSnackbar() {\n const context = useContext(SnackbarContext);\n if (!context) {\n throw new Error('useSnackbar must be used within a SnackbarProvider');\n }\n return context;\n}\n\n// Snackbar Provider component\nexport function SnackbarProvider({ children }: { children: React.ReactNode }) {\n const [message, setMessage] = useState<string | null>(null);\n const [duration, setDuration] = useState(3000);\n\n const showMessage = (text: string, customDuration = 3000) => {\n setMessage(text);\n setDuration(customDuration);\n };\n\n const handleClose = () => {\n setMessage(null);\n };\n\n return (\n <SnackbarContext.Provider value={{ showMessage }}>\n {children}\n <Snackbar\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n open={message !== null}\n onClose={handleClose}\n message={message}\n autoHideDuration={duration}\n sx={{\n zIndex: 10000, // Very high z-index\n position: 'fixed', // Make sure it's fixed positioned\n }}\n />\n </SnackbarContext.Provider>\n );\n} ","import React, { useState, useEffect } from 'react';\nimport { \n Dialog, \n DialogTitle, \n DialogContent, \n DialogActions, \n Button, \n TextField,\n Box\n} from '@mui/material';\n\ninterface SaveTemplateDialogProps {\n open: boolean;\n onClose: () => void;\n onSave: (templateName: string) => Promise<boolean> | boolean | void;\n onNameChange?: () => void;\n defaultName?: string;\n error?: string | null;\n}\n\nexport default function SaveTemplateDialog({ \n open, \n onClose, \n onSave,\n onNameChange,\n defaultName = '',\n error: externalError = null\n}: SaveTemplateDialogProps) {\n const [templateName, setTemplateName] = useState(defaultName);\n const [internalError, setInternalError] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n \n // Reset name when dialog opens with the default name\n useEffect(() => {\n if (open) {\n setTemplateName(defaultName);\n setInternalError('');\n setIsSubmitting(false);\n }\n }, [open, defaultName]);\n\n // Determine which error to display - external has priority\n const displayError = externalError || internalError;\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setTemplateName(e.target.value);\n \n if (e.target.value.trim()) {\n setInternalError('');\n }\n \n // Notify parent component that name has changed\n if (onNameChange) {\n onNameChange();\n }\n };\n\n const handleSave = async () => {\n if (!templateName.trim()) {\n setInternalError('Please enter a template name');\n return;\n }\n \n setIsSubmitting(true);\n \n try {\n // Call onSave and wait for result if it's a Promise\n const result = onSave(templateName);\n \n // Handle promise or boolean result\n if (result instanceof Promise) {\n const success = await result;\n if (success) {\n setTemplateName('');\n setInternalError('');\n onClose();\n }\n } else if (result !== false) {\n // If not explicitly false, assume success\n setTemplateName('');\n setInternalError('');\n onClose();\n }\n } catch (error) {\n console.error('Error saving template:', error);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleCancel = () => {\n setTemplateName('');\n setInternalError('');\n onClose();\n };\n\n return (\n <Dialog \n open={open} \n onClose={handleCancel}\n maxWidth=\"sm\"\n fullWidth\n >\n <DialogTitle>Save Email Template</DialogTitle>\n <DialogContent>\n <Box sx={{ pt: 1 }}>\n <TextField\n autoFocus\n margin=\"dense\"\n id=\"template-name\"\n label=\"Template Name\"\n type=\"text\"\n fullWidth\n variant=\"outlined\"\n value={templateName}\n onChange={handleNameChange}\n error={!!displayError}\n helperText={displayError}\n onKeyPress={(e) => {\n if (e.key === 'Enter' && templateName.trim() && !displayError && !isSubmitting) {\n handleSave();\n }\n }}\n disabled={isSubmitting}\n />\n </Box>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleCancel} disabled={isSubmitting}>Cancel</Button>\n <Button \n onClick={handleSave} \n variant=\"contained\" \n color=\"primary\"\n disabled={!templateName.trim() || !!displayError || isSubmitting}\n >\n {isSubmitting ? 'Saving...' : 'Save Template'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n} ","import React, { useState } from 'react';\n\nimport { SaveOutlined } from '@mui/icons-material';\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport { useEmailEditor } from '../context';\nimport { useSnackbar } from './snackbar-provider';\nimport SaveTemplateDialog from './save-template-dialog';\nimport { useDocument } from '@editor/editor-context';\n\ninterface SaveButtonProps {\n loadTemplates?: () => Promise<any>;\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n}\n\nexport default function SaveButton({ loadTemplates, saveAs }: SaveButtonProps) {\n const { saveTemplate, currentTemplateId, setCurrentTemplate } = useEmailEditor();\n const { showMessage } = useSnackbar();\n const [saveDialogOpen, setSaveDialogOpen] = useState(false);\n const document = useDocument();\n\n const handleSave = async () => {\n try {\n // If it's a sample template or no template is selected, show the save dialog\n if (!currentTemplateId || currentTemplateId === 'welcome' || currentTemplateId.startsWith('sample/')) {\n setSaveDialogOpen(true);\n return;\n }\n\n // Otherwise, save the template directly\n saveTemplate();\n showMessage('Template saved successfully!');\n\n // Refresh templates list\n if (loadTemplates) {\n await loadTemplates();\n }\n } catch (error) {\n console.error('Error saving template:', error);\n showMessage('Error saving template');\n }\n };\n\n const handleSaveAs = async (templateName: string): Promise<boolean> => {\n try {\n if (saveAs) {\n // Use provided saveAs function\n const { id: templateId, name } = await saveAs(templateName, document);\n \n // Update context\n setCurrentTemplate(templateId, name);\n\n // Refresh templates list\n if (loadTemplates) {\n await loadTemplates();\n }\n\n showMessage('Template saved successfully!');\n setSaveDialogOpen(false);\n\n // Update URL\n window.location.hash = `#template/${templateId}`;\n \n return true; // Return true on success\n }\n return false; // Return false if saveAs is not provided\n } catch (error) {\n console.error('Error saving template:', error);\n showMessage('Error saving template');\n return false; // Return false on error\n }\n };\n\n return (\n <>\n <IconButton onClick={handleSave}\n sx={{\n backgroundColor: 'grey.100',\n '&:hover': {\n backgroundColor: 'grey.200',\n },\n }}\n >\n <Tooltip title=\"Save template\">\n <SaveOutlined fontSize=\"small\" />\n </Tooltip>\n </IconButton>\n\n <SaveTemplateDialog\n open={saveDialogOpen}\n onClose={() => setSaveDialogOpen(false)}\n onSave={handleSaveAs}\n defaultName={currentTemplateId === 'welcome' ? 'Welcome Template' : 'New Template'}\n />\n </>\n );\n} ","import React, { useState } from 'react';\nimport { Add as AddIcon } from '@mui/icons-material';\nimport { IconButton, Tooltip } from '@mui/material';\n\nimport { useDocument, resetDocument } from '@editor/editor-context';\nimport { useSnackbar } from './snackbar-provider';\nimport SaveTemplateDialog from './save-template-dialog';\nimport EMPTY_EMAIL_MESSAGE from '@sample/empty-email-message';\nimport { useEmailEditor } from '../context';\n\ninterface NewTemplateButtonProps {\n loadTemplates?: () => Promise<any>;\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n}\n\nexport default function NewTemplateButton({ loadTemplates, saveAs }: NewTemplateButtonProps) {\n const { setCurrentTemplate, loadTemplate } = useEmailEditor();\n const { showMessage } = useSnackbar();\n const [saveDialogOpen, setSaveDialogOpen] = useState(false);\n const [templates, setTemplates] = useState<{id: string, name: string}[]>([]);\n const [nameError, setNameError] = useState<string | null>(null);\n\n // Load templates when component mounts or when needed for validation\n const fetchTemplates = async () => {\n if (loadTemplates) {\n try {\n const result = await loadTemplates();\n setTemplates(result);\n return result;\n } catch (error) {\n console.error('Error loading templates:', error);\n }\n }\n return [];\n };\n\n const handleNewTemplate = async () => {\n // Fetch latest templates for validation\n await fetchTemplates();\n setNameError(null);\n setSaveDialogOpen(true);\n };\n\n const validateTemplateName = (name: string): boolean => {\n // Check if name already exists\n const nameExists = templates.some(template => \n template.name.toLowerCase() === name.toLowerCase()\n );\n \n if (nameExists) {\n setNameError('A template with this name already exists');\n return false;\n }\n \n setNameError(null);\n return true;\n };\n\n const handleNameChange = () => {\n // Reset error state when name changes\n setNameError(null);\n };\n\n const handleCreateTemplate = async (templateName: string) => {\n // Validate template name first - this needs to be done here as well\n // because the dialog won't close if validation fails\n if (!validateTemplateName(templateName)) {\n return false; // Return false to indicate validation failed\n }\n\n try {\n if (saveAs) {\n // Use provided saveAs function with the empty template\n const { id: templateId, name } = await saveAs(templateName, EMPTY_EMAIL_MESSAGE);\n \n // Actually load the empty template into the editor\n resetDocument(EMPTY_EMAIL_MESSAGE);\n \n // Update context\n setCurrentTemplate(templateId, name);\n loadTemplate(EMPTY_EMAIL_MESSAGE, templateId, name);\n \n // Refresh templates list\n if (loadTemplates) {\n await loadTemplates();\n }\n \n // Show success message\n showMessage('New template created!');\n \n // Update URL\n window.location.hash = `#template/${templateId}`;\n \n return true; // Return true to indicate success\n }\n } catch (error) {\n console.error('Error creating template:', error);\n showMessage('Error creating template');\n }\n return false; // Return false if there was an error\n };\n\n return (\n <>\n <IconButton\n onClick={handleNewTemplate}\n sx={{\n backgroundColor: 'grey.100',\n '&:hover': {\n backgroundColor: 'grey.200',\n },\n }}\n >\n <Tooltip title=\"New template\">\n <AddIcon fontSize=\"small\" />\n </Tooltip>\n </IconButton>\n\n <SaveTemplateDialog\n open={saveDialogOpen}\n onClose={() => {\n setSaveDialogOpen(false);\n setNameError(null);\n }}\n onSave={handleCreateTemplate}\n onNameChange={handleNameChange}\n defaultName=\"New Template\"\n error={nameError}\n />\n </>\n );\n} ","import React from 'react';\n\nimport { MonitorOutlined, PhoneIphoneOutlined } from '@mui/icons-material';\nimport { Box, Stack, SxProps, ToggleButton, ToggleButtonGroup, Tooltip } from '@mui/material';\nimport { Reader } from '@email-builder';\n\nimport EditorBlock from '@editor/editor-block';\nimport {\n setSelectedScreenSize,\n useDocument,\n useSelectedMainTab,\n useSelectedScreenSize,\n usePersistenceEnabled\n} from '@editor/editor-context';\nimport ToggleInspectorPanelButton from '../inspector-drawer/toggle-inspector-panel-button';\nimport ToggleSamplesPanelButton from '../templates-drawer/toggle-samples-panel-button';\n\nimport HtmlPanel from './html-panel';\nimport JsonPanel from './json-panel';\nimport TextPanel from './text-panel';\nimport MainTabsGroup from './main-tabs-group';\nimport SaveButton from './save-button';\nimport NewTemplateButton from './new-template-button';\nimport { SampleTemplate } from '../index';\n\ninterface TemplatePanelProps {\n loadTemplates?: () => Promise<SampleTemplate[]>;\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n samplesDrawerEnabled?: boolean;\n}\n\nexport default function TemplatePanel({ loadTemplates, saveAs, samplesDrawerEnabled = true }: TemplatePanelProps) {\n const document = useDocument();\n const selectedMainTab = useSelectedMainTab();\n const selectedScreenSize = useSelectedScreenSize();\n const persistenceEnabled = usePersistenceEnabled();\n\n let mainBoxSx: SxProps = {\n height: '100%',\n };\n if (selectedScreenSize === 'mobile') {\n mainBoxSx = {\n ...mainBoxSx,\n margin: '32px auto',\n width: 370,\n height: 800,\n boxShadow:\n 'rgba(33, 36, 67, 0.04) 0px 10px 20px, rgba(33, 36, 67, 0.08) 0px 2px 4px',\n borderRadius: '16px',\n };\n }\n\n const handleScreenSizeChange = (_: unknown, value: unknown) => {\n switch (value) {\n case 'mobile':\n case 'desktop':\n setSelectedScreenSize(value);\n return;\n default:\n setSelectedScreenSize('desktop');\n }\n };\n\n const renderMainPanel = () => {\n switch (selectedMainTab) {\n case 'editor':\n return (\n <Box sx={mainBoxSx}>\n <EditorBlock id=\"root\" />\n </Box>\n );\n case 'preview':\n return (\n <Box sx={mainBoxSx}>\n <Reader document={document} rootBlockId=\"root\" />\n </Box>\n );\n case 'html':\n return <HtmlPanel />;\n case 'text':\n return <TextPanel />;\n case 'json':\n return <JsonPanel />;\n }\n };\n\n const showSaveButtons = persistenceEnabled;\n\n return (\n <>\n <Stack\n sx={{\n height: 49,\n borderBottom: 1,\n borderColor: 'divider',\n backgroundColor: 'white',\n position: 'sticky',\n top: 0,\n zIndex: 'appBar',\n px: 1,\n }}\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n {samplesDrawerEnabled && <ToggleSamplesPanelButton />}\n <Stack px={2} direction=\"row\" gap={2} width=\"100%\" justifyContent=\"space-between\" alignItems=\"center\">\n <Stack direction=\"row\" spacing={2}>\n <MainTabsGroup />\n </Stack>\n <Stack direction=\"row\" spacing={2}>\n <ToggleButtonGroup value={selectedScreenSize} exclusive size=\"small\" onChange={handleScreenSizeChange}>\n <ToggleButton value=\"desktop\">\n <Tooltip title=\"Desktop view\">\n <MonitorOutlined fontSize=\"small\" />\n </Tooltip>\n </ToggleButton>\n <ToggleButton value=\"mobile\">\n <Tooltip title=\"Mobile view\">\n <PhoneIphoneOutlined fontSize=\"small\" />\n </Tooltip>\n </ToggleButton>\n </ToggleButtonGroup>\n {showSaveButtons && (\n <>\n <NewTemplateButton loadTemplates={loadTemplates} saveAs={saveAs} />\n <SaveButton loadTemplates={loadTemplates} saveAs={saveAs} />\n </>\n )}\n </Stack>\n </Stack>\n <ToggleInspectorPanelButton />\n </Stack>\n <Box sx={{ \n paddingBottom: '50px',\n minWidth: 370\n }}>\n {renderMainPanel()}\n </Box>\n </>\n );\n}\n","import React, { forwardRef, useImperativeHandle, useEffect, useMemo, useRef } from 'react';\nimport { Stack, useTheme, ThemeProvider } from '@mui/material';\nimport { Theme } from '@mui/material/styles';\nimport defaultTheme from '../theme';\nimport { CssBaseline } from '@mui/material';\n\nimport { TEditorConfiguration } from '@editor/core';\nimport {\n useDocument,\n getDocument,\n resetDocument,\n useInspectorDrawerOpen,\n useSamplesDrawerOpen,\n setPersistenceEnabled\n} from '@editor/editor-context';\nimport { EmailEditorProvider, useEmailEditor, EmailEditorContextType, EmailEditorProviderProps } from './context';\nimport InspectorDrawer, { INSPECTOR_DRAWER_WIDTH } from './inspector-drawer';\nimport SamplesDrawer, { SAMPLES_DRAWER_WIDTH } from './templates-drawer';\nimport TemplatePanel from './email-canvas';\nimport { SnackbarProvider } from './email-canvas/snackbar-provider';\n\n/**\n * Wraps a raw HTML string in an editor config with an EmailLayout root + one Html block.\n */\nfunction htmlToEditorConfig(html: string): TEditorConfiguration {\n return {\n root: {\n type: 'EmailLayout',\n data: {\n backdropColor: '#F5F5F5',\n canvasColor: '#FFFFFF',\n textColor: '#262626',\n fontFamily: 'MODERN_SANS',\n childrenIds: ['block-html-import'],\n },\n },\n 'block-html-import': {\n type: 'Html',\n data: {\n style: {\n padding: { top: 0, bottom: 0, right: 0, left: 0 },\n },\n props: {\n contents: html,\n },\n },\n },\n };\n}\n\n// Define the SampleTemplate interface directly here\nexport interface SampleTemplate {\n id: string;\n name: string;\n description?: string;\n category?: string;\n thumbnail?: string;\n}\n\n// The ref interface for imperative controls\nexport interface EmailEditorRef {\n saveTemplate: () => TEditorConfiguration;\n loadTemplate: (template: TEditorConfiguration) => void;\n getTemplate: () => TEditorConfiguration;\n}\n\n// Props for the EmailEditor component\nexport interface EmailEditorProps {\n /**\n * Initial template to load. Can be either:\n * - A `TEditorConfiguration` object (the native editor format)\n * - A raw HTML string, which will be auto-wrapped in an Html block\n */\n initialTemplate?: TEditorConfiguration | string;\n initialTemplateId?: string;\n initialTemplateName?: string;\n onSave?: (template: TEditorConfiguration) => void;\n onChange?: (template: TEditorConfiguration) => void;\n /**\n * Duration for drawer enter transition in milliseconds. Set to 0 for instant.\n * @default 225\n */\n drawerEnterDuration?: number;\n /**\n * Duration for drawer exit transition in milliseconds. Set to 0 for instant.\n * @default 225\n */\n drawerExitDuration?: number;\n /**\n * Whether to show the samples drawer.\n * @default true\n */\n samplesDrawerEnabled?: boolean;\n /**\n * Whether to enable template persistence functionality and show save buttons.\n * When false (default), save functionality and related UI elements will be hidden.\n * When true, make sure to provide the necessary callbacks (onSave, saveAs, etc.).\n * \n * IMPORTANT: If you set this to true, you must provide callbacks to handle persistence\n * operations (onSave, saveAs, etc.). Otherwise, the save buttons will appear but won't\n * be functional.\n * @default false\n */\n persistenceEnabled?: boolean;\n /**\n * Minimum height of the editor container.\n * @default '100vh'\n */\n minHeight?: string;\n /**\n * Callback to load samples dynamically.\n * This will be called when the samples drawer is opened.\n */\n loadSamples?: () => Promise<SampleTemplate[]>;\n /**\n * Callback to load existing templates dynamically.\n * This will be called when the samples drawer is opened.\n */\n loadTemplates?: () => Promise<SampleTemplate[]>;\n /**\n * Callback to load a specific template by ID.\n * This will be called when a sample is selected from the drawer.\n */\n loadTemplate?: (templateId: string) => Promise<TEditorConfiguration | null>;\n /**\n * Callback to delete a template by ID.\n */\n deleteTemplate?: (templateId: string) => void;\n /**\n * Callback to copy a template with a new name.\n */\n copyTemplate?: (templateName: string, content: any) => void;\n /**\n * Callback to save a template with a new name.\n */\n saveAs?: (templateName: string, content: any) => Promise<{id: string, name: string}>;\n /**\n * Optional theme override. If not provided, the default theme will be used.\n * This allows for easy styling without requiring a separate ThemeProvider.\n */\n theme?: Theme;\n}\n\nfunction useDrawerTransition(cssProperty: 'margin-left' | 'margin-right', open: boolean) {\n const { transitions } = useTheme();\n return transitions.create(cssProperty, {\n easing: !open ? transitions.easing.sharp : transitions.easing.easeOut,\n duration: !open ? transitions.duration.leavingScreen : transitions.duration.enteringScreen,\n });\n}\n\n// Internal component that connects the App with the EmailEditor context\nconst EmailEditorInternal = forwardRef<EmailEditorRef, Omit<EmailEditorProps, 'initialTemplate' | 'initialTemplateId' | 'initialTemplateName' | 'onSave' | 'persistenceEnabled'>>((props, ref) => {\n const { \n drawerEnterDuration = 225,\n drawerExitDuration = 225,\n samplesDrawerEnabled = true,\n minHeight = '100vh',\n loadSamples,\n loadTemplates,\n loadTemplate,\n deleteTemplate,\n copyTemplate,\n saveAs,\n onChange,\n } = props;\n const { saveTemplate, loadTemplate: contextLoadTemplate, currentTemplateId } = useEmailEditor();\n const currentDocument = useDocument();\n const inspectorDrawerOpen = useInspectorDrawerOpen();\n const samplesDrawerOpen = useSamplesDrawerOpen();\n\n const marginLeftTransition = useDrawerTransition('margin-left', samplesDrawerOpen);\n const marginRightTransition = useDrawerTransition('margin-right', inspectorDrawerOpen);\n\n // Notify the consuming app of changes without triggering React state updates\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const prevDocJsonRef = useRef<string>('');\n useEffect(() => {\n const docJson = JSON.stringify(currentDocument);\n if (docJson !== prevDocJsonRef.current) {\n prevDocJsonRef.current = docJson;\n onChangeRef.current?.(currentDocument);\n }\n }, [currentDocument]);\n\n // Expose the API via ref\n useImperativeHandle(ref, () => ({\n saveTemplate: () => {\n return saveTemplate();\n },\n loadTemplate: (newTemplate) => {\n contextLoadTemplate(newTemplate);\n resetDocument(newTemplate);\n },\n getTemplate: () => {\n return getDocument();\n }\n }));\n\n return (\n <Stack position=\"relative\" id=\"drawer-container\" sx={{ minHeight }}>\n <InspectorDrawer \n enterDuration={drawerEnterDuration}\n exitDuration={drawerExitDuration}\n deleteTemplate={deleteTemplate}\n copyTemplate={copyTemplate}\n />\n <SamplesDrawer \n enterDuration={drawerEnterDuration}\n exitDuration={drawerExitDuration}\n enabled={samplesDrawerEnabled}\n loadSamples={loadSamples}\n loadTemplates={loadTemplates}\n loadTemplate={loadTemplate}\n currentTemplateId={currentTemplateId}\n deleteTemplate={deleteTemplate}\n />\n\n <Stack\n sx={{\n marginRight: inspectorDrawerOpen ? `${INSPECTOR_DRAWER_WIDTH}px` : 0,\n marginLeft: samplesDrawerOpen && samplesDrawerEnabled ? `${SAMPLES_DRAWER_WIDTH}px` : 0,\n transition: [marginLeftTransition, marginRightTransition].join(', '),\n }}\n >\n <TemplatePanel loadTemplates={loadTemplates} saveAs={saveAs} samplesDrawerEnabled={samplesDrawerEnabled} />\n </Stack>\n </Stack>\n );\n});\n\n// The main EmailEditor component that external apps will use\nconst EmailEditor = forwardRef<EmailEditorRef, EmailEditorProps>((props, ref) => {\n const {\n initialTemplate: initialTemplateProp,\n initialTemplateId,\n initialTemplateName,\n onSave,\n onChange,\n drawerEnterDuration,\n drawerExitDuration,\n samplesDrawerEnabled,\n persistenceEnabled = false,\n minHeight = '100vh',\n loadSamples,\n loadTemplates,\n loadTemplate,\n deleteTemplate,\n copyTemplate,\n saveAs,\n theme,\n } = props;\n\n // Resolve: if it's a raw HTML string, wrap it in an editor config.\n // Memoize so a string prop doesn't create a new object every render.\n const resolvedTemplate = useMemo(\n () => typeof initialTemplateProp === 'string'\n ? htmlToEditorConfig(initialTemplateProp)\n : initialTemplateProp,\n [initialTemplateProp],\n );\n\n // Reset the editor synchronously during render (not in an effect) so the\n // Zustand store is up-to-date before child components mount / effects fire.\n // This prevents the onChange callback from emitting a stale empty document.\n const prevTemplateRef = useRef<TEditorConfiguration | undefined>(undefined);\n if (resolvedTemplate && resolvedTemplate !== prevTemplateRef.current) {\n prevTemplateRef.current = resolvedTemplate;\n resetDocument(resolvedTemplate);\n }\n\n // Update persistence mode when it changes\n useEffect(() => {\n setPersistenceEnabled(persistenceEnabled);\n }, [persistenceEnabled]);\n\n return (\n <ThemeProvider theme={theme || defaultTheme}>\n <CssBaseline />\n <div style={{ height: '100%', overflow: 'auto' }}>\n <SnackbarProvider>\n <EmailEditorProvider\n initialTemplate={resolvedTemplate}\n initialTemplateId={initialTemplateId}\n initialTemplateName={initialTemplateName}\n onSave={onSave}\n onChange={onChange}\n >\n <EmailEditorInternal\n ref={ref}\n drawerEnterDuration={drawerEnterDuration}\n drawerExitDuration={drawerExitDuration}\n samplesDrawerEnabled={samplesDrawerEnabled}\n minHeight={minHeight}\n loadSamples={loadSamples}\n loadTemplates={loadTemplates}\n loadTemplate={loadTemplate}\n deleteTemplate={deleteTemplate}\n copyTemplate={copyTemplate}\n saveAs={saveAs}\n onChange={onChange}\n />\n </EmailEditorProvider>\n </SnackbarProvider>\n </div>\n </ThemeProvider>\n );\n});\n\nEmailEditor.displayName = 'EmailEditor';\nEmailEditorInternal.displayName = 'EmailEditorInternal';\n\n// Export both as default and named\nexport default EmailEditor;\nexport { EmailEditor };\n\n// Export context and hooks\nexport {\n EmailEditorProvider,\n useEmailEditor,\n type EmailEditorContextType,\n type EmailEditorProviderProps\n};\n\n// Export utility\nexport { htmlToEditorConfig }; "]}
|