@parathantl/react-email-editor 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/styles/toolbar.module.css","../src/styles/editor.module.css","../src/styles/sidebar.module.css","../src/styles/blocks.module.css","../src/styles/tiptap.module.css","../src/styles/canvas.module.css","../src/styles/properties.module.css","../src/styles/variables.css"],"sourcesContent":[".toolbar {\n display: flex;\n align-items: center;\n height: var(--ee-toolbar-height);\n padding: 0 var(--ee-space-lg);\n background: var(--ee-bg-toolbar);\n border-bottom: 1px solid var(--ee-border-color);\n gap: var(--ee-space-sm);\n flex-shrink: 0;\n}\n\n.toolbarGroup {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.toolbarSeparator {\n width: 1px;\n height: 24px;\n background: var(--ee-border-color);\n margin: 0 var(--ee-space-sm);\n}\n\n.toolbarSpacer {\n flex: 1;\n}\n\n.toolbarBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--ee-space-xs);\n padding: 6px 10px;\n font-size: var(--ee-font-size-sm);\n font-family: var(--ee-font-family);\n font-weight: var(--ee-font-weight-medium);\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n color: var(--ee-text-secondary);\n transition: all var(--ee-transition-fast);\n white-space: nowrap;\n}\n\n.toolbarBtn:hover {\n background: var(--ee-bg-hover);\n color: var(--ee-text-primary);\n border-color: var(--ee-border-color);\n}\n\n.toolbarBtn:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.toolbarBtnActive {\n background: var(--ee-bg-selected);\n color: var(--ee-color-primary);\n border-color: var(--ee-color-primary);\n}\n\n.toolbarBtnPrimary {\n background: var(--ee-color-primary);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-primary);\n}\n\n.toolbarBtnPrimary:hover {\n background: var(--ee-color-primary-hover);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-primary-hover);\n}\n\n/* Tab bar within toolbar */\n.tabBar {\n display: flex;\n gap: 2px;\n background: var(--ee-bg-app);\n border-radius: var(--ee-border-radius);\n padding: 2px;\n}\n\n.tabBtn {\n padding: 4px 12px;\n font-size: var(--ee-font-size-sm);\n font-family: var(--ee-font-family);\n font-weight: var(--ee-font-weight-medium);\n background: transparent;\n border: none;\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n color: var(--ee-text-secondary);\n transition: all var(--ee-transition-fast);\n}\n\n.tabBtn:hover {\n color: var(--ee-text-primary);\n}\n\n.tabBtnActive {\n background: var(--ee-bg-panel);\n color: var(--ee-text-primary);\n box-shadow: var(--ee-shadow-sm);\n}\n\n/* Panel toggle buttons (visible only on narrow screens via editor.module.css) */\n.panelToggleBtn {\n composes: toolbarBtn;\n font-size: var(--ee-font-size-lg);\n padding: 4px 8px;\n line-height: 1;\n}\n\n.panelToggleBtnActive {\n background: var(--ee-bg-selected);\n color: var(--ee-color-primary);\n border-color: var(--ee-color-primary);\n}\n\n/* Rich text toolbar */\n.richTextToolbar {\n display: flex;\n align-items: center;\n gap: 2px;\n padding: var(--ee-space-xs) var(--ee-space-sm);\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n box-shadow: var(--ee-shadow-sm);\n flex-wrap: wrap;\n}\n\n.richTextBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n font-size: var(--ee-font-size-sm);\n background: transparent;\n border: none;\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n color: var(--ee-text-secondary);\n transition: all var(--ee-transition-fast);\n}\n\n.richTextBtn:hover {\n background: var(--ee-bg-hover);\n color: var(--ee-text-primary);\n}\n\n.richTextBtnActive {\n background: var(--ee-bg-selected);\n color: var(--ee-color-primary);\n}\n\n.richTextSeparator {\n width: 1px;\n height: 20px;\n background: var(--ee-border-color);\n margin: 0 2px;\n}\n\n/* Rich text select controls */\n.richTextSelect {\n height: 28px;\n padding: 0 4px;\n font-size: var(--ee-font-size-xs);\n font-family: var(--ee-font-family);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n background: var(--ee-bg-input);\n color: var(--ee-text-primary);\n outline: none;\n cursor: pointer;\n max-width: 110px;\n}\n\n.richTextSelect:focus {\n border-color: var(--ee-border-focus);\n}\n\n.richTextSelectSmall {\n composes: richTextSelect;\n max-width: 64px;\n}\n\n/* Rich text inline color picker */\n.richTextColorWrapper {\n position: relative;\n}\n\n.richTextColorLabel {\n font-weight: var(--ee-font-weight-semibold);\n font-size: var(--ee-font-size-sm);\n}\n\n.richTextColorIndicator {\n display: block;\n width: 16px;\n height: 3px;\n border-radius: 1px;\n margin-top: 1px;\n}\n\n.richTextColorDropdown {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n padding: var(--ee-space-sm);\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n box-shadow: var(--ee-shadow-md);\n z-index: var(--ee-z-dropdown);\n min-width: 176px;\n}\n\n.richTextColorGrid {\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n gap: 4px;\n margin-bottom: var(--ee-space-sm);\n}\n\n.richTextColorSwatch {\n width: 24px;\n height: 24px;\n border-radius: 3px;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 0;\n transition: all var(--ee-transition-fast);\n}\n\n.richTextColorSwatch:hover {\n transform: scale(1.2);\n border-color: var(--ee-border-color-strong);\n}\n\n.richTextColorActions {\n display: flex;\n align-items: center;\n gap: var(--ee-space-sm);\n border-top: 1px solid var(--ee-border-color);\n padding-top: var(--ee-space-sm);\n}\n\n.richTextColorInput {\n width: 28px;\n height: 28px;\n padding: 0;\n border: 1px solid var(--ee-border-color);\n border-radius: 3px;\n cursor: pointer;\n background: none;\n}\n\n.richTextColorClearBtn {\n font-size: var(--ee-font-size-xs);\n font-family: var(--ee-font-family);\n color: var(--ee-text-secondary);\n background: transparent;\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n padding: 3px 8px;\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n}\n\n.richTextColorClearBtn:hover {\n background: var(--ee-bg-hover);\n color: var(--ee-text-primary);\n}\n\n/* Link editor popover */\n.richTextLinkDropdown {\n position: absolute;\n top: 100%;\n left: 0;\n margin-top: 4px;\n padding: var(--ee-space-sm);\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n box-shadow: var(--ee-shadow-md);\n z-index: var(--ee-z-dropdown);\n min-width: 260px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.richTextLinkLabel {\n font-size: var(--ee-font-size-xs);\n font-weight: var(--ee-font-weight-semibold);\n color: var(--ee-text-secondary);\n}\n\n.richTextLinkInput {\n width: 100%;\n padding: 6px 8px;\n font-size: var(--ee-font-size-sm);\n font-family: var(--ee-font-family);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n background: var(--ee-bg-input);\n color: var(--ee-text-primary);\n outline: none;\n box-sizing: border-box;\n}\n\n.richTextLinkInput:focus {\n border-color: var(--ee-border-focus);\n}\n\n.richTextLinkActions {\n display: flex;\n gap: 6px;\n}\n\n.richTextLinkApply {\n flex: 1;\n padding: 4px 10px;\n font-size: var(--ee-font-size-xs);\n font-family: var(--ee-font-family);\n font-weight: var(--ee-font-weight-medium);\n color: var(--ee-text-inverse);\n background: var(--ee-color-primary);\n border: none;\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n transition: background var(--ee-transition-fast);\n}\n\n.richTextLinkApply:hover {\n background: var(--ee-color-primary-hover);\n}\n\n.richTextLinkRemove {\n padding: 4px 10px;\n font-size: var(--ee-font-size-xs);\n font-family: var(--ee-font-family);\n color: var(--ee-color-danger, #ef4444);\n background: transparent;\n border: 1px solid var(--ee-color-danger, #ef4444);\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n}\n\n.richTextLinkRemove:hover {\n background: var(--ee-color-danger, #ef4444);\n color: #fff;\n}\n\n",".editorContainer {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 500px;\n font-family: var(--ee-font-family);\n font-size: var(--ee-font-size-base);\n color: var(--ee-text-primary);\n background: var(--ee-bg-app);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-lg);\n overflow: hidden;\n}\n\n.editorContainer:focus {\n outline: none;\n}\n\n.editorBody {\n display: flex;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.editorPanel {\n min-height: 0;\n max-height: 100%;\n}\n\n.sidebarPanel {\n width: var(--ee-sidebar-width);\n border-right: 1px solid var(--ee-border-color);\n background: var(--ee-bg-panel);\n overflow-y: auto;\n flex-shrink: 0;\n}\n\n.canvasPanel {\n flex: 1;\n min-width: 0;\n background: var(--ee-bg-canvas);\n overflow-y: auto;\n}\n\n.propertiesPanel {\n width: var(--ee-properties-width);\n border-left: 1px solid var(--ee-border-color);\n background: var(--ee-bg-panel);\n overflow-y: auto;\n flex-shrink: 0;\n}\n\n/* Panel toggle buttons — hidden on desktop, shown on narrow screens */\n.panelToggle {\n display: none;\n}\n\n/* Overlay backdrop */\n.panelOverlay {\n display: none;\n}\n\n/* ---- Responsive: tablet / narrow screens ---- */\n@media (max-width: 1023px) {\n .editorBody {\n position: relative;\n }\n\n .sidebarPanel {\n display: none;\n }\n\n .propertiesPanel {\n display: none;\n }\n\n .panelToggle {\n display: flex;\n }\n\n /* Sidebar overlay (open state) */\n .sidebarPanel.sidebarOpen {\n display: block;\n position: absolute;\n z-index: var(--ee-z-overlay);\n left: 0;\n top: 0;\n bottom: 0;\n box-shadow: var(--ee-shadow-lg);\n }\n\n /* Properties overlay (open state) */\n .propertiesPanel.propertiesOpen {\n display: block;\n position: absolute;\n z-index: var(--ee-z-overlay);\n right: 0;\n top: 0;\n bottom: 0;\n box-shadow: var(--ee-shadow-lg);\n }\n\n /* Backdrop when a panel is open */\n .panelOverlay.panelOverlayVisible {\n display: block;\n position: absolute;\n inset: 0;\n background: var(--ee-overlay-backdrop);\n z-index: calc(var(--ee-z-overlay) - 1);\n }\n}\n\n/* ---- Responsive: mobile ---- */\n@media (max-width: 767px) {\n .editorContainer {\n min-height: 400px;\n }\n}\n",".sidebar {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.sectionTitle {\n font-size: var(--ee-font-size-sm);\n font-weight: var(--ee-font-weight-semibold);\n color: var(--ee-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n padding: var(--ee-space-md) var(--ee-space-lg);\n margin: 0;\n border-bottom: 1px solid var(--ee-border-color);\n}\n\n/* Block Palette */\n.blockPalette {\n padding: var(--ee-space-sm);\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--ee-space-sm);\n}\n\n.blockCard {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--ee-space-xs);\n padding: var(--ee-space-md) var(--ee-space-sm);\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n cursor: grab;\n transition: all var(--ee-transition-fast);\n user-select: none;\n}\n\n.blockCard:hover {\n border-color: var(--ee-border-focus);\n background: var(--ee-bg-selected);\n box-shadow: var(--ee-shadow-sm);\n}\n\n.blockCard:active {\n cursor: grabbing;\n opacity: 0.7;\n}\n\n.blockCardIcon {\n font-size: 20px;\n line-height: 1;\n}\n\n.blockCardLabel {\n font-size: var(--ee-font-size-sm);\n font-weight: var(--ee-font-weight-medium);\n color: var(--ee-text-primary);\n}\n\n/* Variable List */\n.variableList {\n padding: var(--ee-space-sm) var(--ee-space-lg);\n}\n\n.variableHint {\n font-size: var(--ee-font-size-xs);\n color: var(--ee-text-muted);\n margin: 0 0 var(--ee-space-sm) 0;\n line-height: 1.4;\n font-style: italic;\n}\n\n.variableGroup {\n margin-bottom: var(--ee-space-md);\n}\n\n.variableGroupTitle {\n font-size: var(--ee-font-size-xs);\n font-weight: var(--ee-font-weight-semibold);\n color: var(--ee-text-muted);\n margin: 0 0 var(--ee-space-xs) 0;\n text-transform: uppercase;\n}\n\n.variableChips {\n display: flex;\n flex-wrap: wrap;\n gap: var(--ee-space-xs);\n}\n\n.variableChip {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n padding: 2px 8px;\n font-size: var(--ee-font-size-xs);\n font-weight: var(--ee-font-weight-medium);\n background: var(--ee-variable-bg);\n color: var(--ee-variable-color);\n border: 1px solid var(--ee-variable-border);\n border-radius: 12px;\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n white-space: nowrap;\n}\n\n.variableChip:hover {\n background: var(--ee-color-primary-light);\n border-color: var(--ee-color-primary);\n transform: translateY(-1px);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.variableChip:active {\n transform: translateY(0);\n box-shadow: none;\n}\n\n.variableChipInserted {\n background: var(--ee-color-primary);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-primary);\n transition: all 0.15s ease;\n}\n\n.variableChipCustom {\n background: #f0fdf4;\n color: #166534;\n border-color: #86efac;\n}\n\n.variableChipCustom:hover {\n background: #dcfce7;\n border-color: #22c55e;\n}\n\n.variableChipDelete {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 14px;\n height: 14px;\n margin-left: 2px;\n padding: 0;\n font-size: 9px;\n line-height: 1;\n background: transparent;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n color: inherit;\n opacity: 0.5;\n transition: all var(--ee-transition-fast);\n}\n\n.variableChipDelete:hover {\n opacity: 1;\n background: rgba(0, 0, 0, 0.1);\n}\n\n.variableChipIcon {\n font-size: 11px;\n}\n\n/* Add Variable */\n.addVariableSection {\n padding: var(--ee-space-xs) var(--ee-space-lg) var(--ee-space-lg);\n}\n\n.addVariableBtn {\n width: 100%;\n padding: 6px 12px;\n font-size: var(--ee-font-size-sm);\n font-family: var(--ee-font-family);\n font-weight: var(--ee-font-weight-medium);\n color: var(--ee-color-primary);\n background: transparent;\n border: 1px dashed var(--ee-color-primary);\n border-radius: var(--ee-border-radius);\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n}\n\n.addVariableBtn:hover {\n background: var(--ee-color-primary-light);\n}\n\n.addVariableForm {\n display: flex;\n flex-direction: column;\n gap: var(--ee-space-sm);\n padding: var(--ee-space-md);\n background: var(--ee-bg-hover);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n}\n\n.addVariableField {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.addVariableLabel {\n font-size: 10px;\n font-weight: var(--ee-font-weight-medium);\n color: var(--ee-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.addVariableInput {\n width: 100%;\n padding: 5px 8px;\n font-size: var(--ee-font-size-sm);\n font-family: var(--ee-font-family);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n background: var(--ee-bg-input);\n color: var(--ee-text-primary);\n outline: none;\n box-sizing: border-box;\n transition: border-color var(--ee-transition-fast);\n}\n\n.addVariableInput:focus {\n border-color: var(--ee-border-focus);\n box-shadow: var(--ee-shadow-focus);\n}\n\n.addVariableError {\n font-size: var(--ee-font-size-xs);\n color: var(--ee-color-danger);\n padding: 2px 0;\n}\n\n.addVariableActions {\n display: flex;\n gap: var(--ee-space-sm);\n justify-content: flex-end;\n padding-top: var(--ee-space-xs);\n}\n\n.addVariableCancelBtn {\n padding: 4px 12px;\n font-size: var(--ee-font-size-sm);\n font-family: var(--ee-font-family);\n color: var(--ee-text-secondary);\n background: transparent;\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n}\n\n.addVariableCancelBtn:hover {\n background: var(--ee-bg-hover);\n}\n\n.addVariableSubmitBtn {\n padding: 4px 16px;\n font-size: var(--ee-font-size-sm);\n font-family: var(--ee-font-family);\n font-weight: var(--ee-font-weight-medium);\n color: var(--ee-text-inverse);\n background: var(--ee-color-primary);\n border: 1px solid var(--ee-color-primary);\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n}\n\n.addVariableSubmitBtn:hover {\n background: var(--ee-color-primary-hover);\n}\n\n/* Layout section */\n.layoutSection {\n padding: var(--ee-space-sm) var(--ee-space-lg);\n}\n\n.layoutOption {\n display: flex;\n align-items: center;\n gap: var(--ee-space-sm);\n padding: var(--ee-space-sm) var(--ee-space-md);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n cursor: pointer;\n margin-bottom: var(--ee-space-xs);\n transition: all var(--ee-transition-fast);\n}\n\n.layoutOption:hover {\n border-color: var(--ee-border-focus);\n background: var(--ee-bg-selected);\n}\n\n.layoutPreview {\n display: flex;\n gap: 2px;\n flex: 1;\n height: 20px;\n}\n\n.layoutColumn {\n background: var(--ee-color-primary-light);\n border: 1px solid var(--ee-color-primary);\n border-radius: 2px;\n height: 100%;\n}\n\n.layoutLabel {\n font-size: var(--ee-font-size-xs);\n color: var(--ee-text-secondary);\n white-space: nowrap;\n}\n","/* Text Block */\n.textBlock {\n min-height: 24px;\n cursor: text;\n position: relative;\n}\n\n.textBlockToolbar {\n position: sticky;\n top: 0;\n z-index: 20;\n margin-bottom: 4px;\n}\n\n/* Button Block */\n.buttonBlock {\n display: flex;\n padding: 10px 25px;\n}\n\n.buttonBlockLeft {\n justify-content: flex-start;\n}\n\n.buttonBlockCenter {\n justify-content: center;\n}\n\n.buttonBlockRight {\n justify-content: flex-end;\n}\n\n.buttonPreview {\n display: inline-block;\n padding: 12px 24px;\n font-weight: var(--ee-font-weight-medium);\n text-decoration: none;\n cursor: pointer;\n text-align: center;\n line-height: 1.4;\n border: none;\n}\n\n/* Image Block */\n.imageBlock {\n display: flex;\n padding: 10px 25px;\n}\n\n.imageBlockLeft {\n justify-content: flex-start;\n}\n\n.imageBlockCenter {\n justify-content: center;\n}\n\n.imageBlockRight {\n justify-content: flex-end;\n}\n\n.imagePreview {\n max-width: 100%;\n height: auto;\n display: block;\n}\n\n.imagePlaceholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ee-space-sm);\n width: 100%;\n min-height: 120px;\n background: var(--ee-bg-app);\n border: 2px dashed var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n color: var(--ee-text-muted);\n font-size: var(--ee-font-size-sm);\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n}\n\n.imagePlaceholder:hover {\n border-color: var(--ee-color-primary);\n color: var(--ee-color-primary);\n background: var(--ee-color-primary-light);\n}\n\n.imagePlaceholderIcon {\n font-size: 32px;\n}\n\n.imageUploading {\n position: relative;\n}\n\n.imageProgress {\n position: absolute;\n bottom: 0;\n left: 0;\n height: 4px;\n background: var(--ee-color-primary);\n border-radius: 2px;\n transition: width 200ms ease;\n}\n\n.imageError {\n color: var(--ee-color-danger);\n font-size: var(--ee-font-size-xs);\n padding: var(--ee-space-xs);\n text-align: center;\n}\n\n/* Divider Block */\n.dividerBlock {\n display: flex;\n align-items: center;\n}\n\n.dividerLine {\n height: 0;\n border: none;\n margin: 0;\n}\n\n/* Spacer Block */\n.spacerBlock {\n position: relative;\n background: repeating-linear-gradient(\n 45deg,\n transparent,\n transparent 5px,\n var(--ee-bg-app) 5px,\n var(--ee-bg-app) 10px\n );\n opacity: 0.5;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.spacerLabel {\n font-size: var(--ee-font-size-xs);\n color: var(--ee-text-muted);\n background: var(--ee-bg-panel);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n/* Social Block */\n.socialBlock {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n min-height: 30px;\n}\n\n.socialElement {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.socialIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: bold;\n line-height: 1;\n flex-shrink: 0;\n}\n\n.socialLabel {\n white-space: nowrap;\n}\n\n.socialElementsContainer {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.socialElementItem {\n padding: 8px;\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n background: var(--ee-bg-app);\n}\n\n/* HTML Block */\n.htmlBlock {\n min-height: 24px;\n position: relative;\n}\n\n.htmlPlaceholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ee-space-sm);\n width: 100%;\n min-height: 80px;\n background: var(--ee-bg-app);\n border: 2px dashed var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n color: var(--ee-text-muted);\n font-size: var(--ee-font-size-sm);\n font-family: monospace;\n}\n\n/* Video Block */\n.videoBlock {\n display: flex;\n padding: 10px 25px;\n}\n\n.videoBlockLeft {\n justify-content: flex-start;\n}\n\n.videoBlockCenter {\n justify-content: center;\n}\n\n.videoBlockRight {\n justify-content: flex-end;\n}\n\n.videoPreview {\n position: relative;\n display: inline-block;\n max-width: 100%;\n}\n\n.playOverlay {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 60px;\n height: 60px;\n background: rgba(0, 0, 0, 0.6);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n font-size: 24px;\n pointer-events: none;\n}\n\n.videoPlaceholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ee-space-sm);\n width: 100%;\n min-height: 120px;\n background: var(--ee-bg-app);\n border: 2px dashed var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n color: var(--ee-text-muted);\n font-size: var(--ee-font-size-sm);\n}\n\n/* Heading Block */\n.headingBlock {\n min-height: 24px;\n cursor: text;\n position: relative;\n}\n\n/* Countdown Block */\n.countdownBlock {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.countdownLabel {\n font-size: 14px;\n font-weight: 500;\n}\n\n.countdownDigits {\n display: flex;\n gap: 12px;\n}\n\n.countdownUnit {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n}\n\n.countdownDigitBox {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 56px;\n padding: 8px 12px;\n border-radius: 6px;\n font-weight: bold;\n font-variant-numeric: tabular-nums;\n}\n\n.countdownUnitLabel {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Menu Block */\n.menuBlock {\n display: flex;\n}\n\n.menuItems {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.menuItem {\n padding: 6px 12px;\n text-decoration: none;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.menuItemsContainer {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.menuItemEntry {\n padding: 8px;\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n background: var(--ee-bg-app);\n}\n\n/* Hero Block */\n.heroBlock {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n}\n\n.heroHeading {\n margin: 0;\n font-weight: bold;\n line-height: 1.2;\n}\n\n.heroSubtext {\n margin: 0;\n line-height: 1.5;\n}\n\n.heroButton {\n display: inline-block;\n padding: 12px 28px;\n font-weight: 600;\n font-size: 16px;\n text-decoration: none;\n cursor: pointer;\n}\n",".tiptapWrapper {\n position: relative;\n}\n\n.tiptapWrapper :global(.ProseMirror) {\n outline: none;\n min-height: 24px;\n padding: 4px;\n word-break: break-word;\n}\n\n.tiptapWrapper :global(.ProseMirror) p {\n margin: 0 0 0.5em 0;\n}\n\n.tiptapWrapper :global(.ProseMirror) p:last-child {\n margin-bottom: 0;\n}\n\n.tiptapWrapper :global(.ProseMirror) h1,\n.tiptapWrapper :global(.ProseMirror) h2,\n.tiptapWrapper :global(.ProseMirror) h3,\n.tiptapWrapper :global(.ProseMirror) h4 {\n margin: 0 0 0.5em 0;\n line-height: 1.3;\n}\n\n.tiptapWrapper :global(.ProseMirror) ul,\n.tiptapWrapper :global(.ProseMirror) ol {\n margin: 0 0 0.5em 0;\n padding-left: 1.5em;\n}\n\n.tiptapWrapper :global(.ProseMirror) blockquote {\n border-left: 3px solid var(--ee-border-color-strong);\n margin: 0 0 0.5em 0;\n padding-left: 1em;\n color: var(--ee-text-secondary);\n}\n\n.tiptapWrapper :global(.ProseMirror) a {\n color: var(--ee-text-link);\n text-decoration: underline;\n}\n\n/* Variable chips in TipTap */\n.tiptapWrapper :global(.ee-variable-chip) {\n display: inline-flex;\n align-items: center;\n padding: 1px 6px;\n margin: 0 1px;\n font-size: inherit;\n font-family: inherit;\n font-weight: inherit;\n font-style: inherit;\n background: #dbeafe;\n color: #1e40af;\n border: 1px solid #93c5fd;\n border-radius: 4px;\n vertical-align: baseline;\n user-select: none;\n white-space: nowrap;\n}\n\n/* Focus styling */\n.tiptapWrapper :global(.ProseMirror-focused) {\n outline: none;\n}\n\n/* Placeholder — uses TipTap Placeholder extension's data-placeholder attribute */\n.tiptapWrapper :global(.ProseMirror) :global(.is-editor-empty):first-child::before {\n content: attr(data-placeholder);\n float: left;\n color: var(--ee-text-muted);\n pointer-events: none;\n height: 0;\n font-style: italic;\n opacity: 0.6;\n}\n",".canvasWrapper {\n display: flex;\n justify-content: center;\n padding: var(--ee-space-xl);\n}\n\n.canvasBody {\n width: 600px;\n min-height: 400px;\n background: #ffffff;\n box-shadow: var(--ee-shadow-lg);\n border-radius: var(--ee-border-radius);\n position: relative;\n transition: box-shadow var(--ee-transition-fast);\n}\n\n.canvasBodyDragOver {\n box-shadow: var(--ee-shadow-lg), 0 0 0 3px var(--ee-dropzone-color);\n}\n\n/* Section */\n.section {\n position: relative;\n border: 2px solid transparent;\n transition: border-color var(--ee-transition-fast);\n cursor: pointer;\n}\n\n.section:hover {\n border-color: var(--ee-border-color-strong);\n}\n\n.sectionSelected {\n border-color: var(--ee-border-selected) !important;\n}\n\n.sectionFullWidth {\n border-left: 3px solid var(--ee-color-primary);\n}\n\n.sectionOverlay {\n position: absolute;\n top: -1px;\n right: -1px;\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity var(--ee-transition-fast);\n z-index: 10;\n}\n\n.section:hover .sectionOverlay {\n opacity: 1;\n}\n\n.sectionBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n cursor: pointer;\n font-size: 12px;\n color: var(--ee-text-secondary);\n transition: all var(--ee-transition-fast);\n}\n\n.sectionBtn:hover {\n background: var(--ee-color-danger);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-danger);\n}\n\n.sectionBtnDuplicate:hover {\n background: var(--ee-color-primary);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-primary);\n}\n\n.sectionDragHandle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n cursor: grab;\n font-size: 14px;\n color: var(--ee-text-secondary);\n transition: all var(--ee-transition-fast);\n user-select: none;\n line-height: 1;\n}\n\n.sectionDragHandle:hover {\n background: var(--ee-color-primary);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-primary);\n}\n\n.sectionDragHandle:active {\n cursor: grabbing;\n}\n\n.sectionContent {\n display: flex;\n min-height: 40px;\n}\n\n/* Column */\n.column {\n flex: 1;\n min-height: 40px;\n padding: 4px;\n position: relative;\n}\n\n/* Block */\n.blockWrapper {\n position: relative;\n border: 1px solid transparent;\n border-radius: var(--ee-border-radius-sm);\n transition: all var(--ee-transition-fast);\n cursor: pointer;\n}\n\n.blockWrapper:hover {\n border-color: var(--ee-border-color-strong);\n}\n\n.blockSelected {\n border-color: var(--ee-border-selected) !important;\n box-shadow: var(--ee-shadow-focus);\n}\n\n.blockOverlay {\n position: absolute;\n top: -1px;\n right: -1px;\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity var(--ee-transition-fast);\n z-index: 10;\n}\n\n.blockWrapper:hover .blockOverlay {\n opacity: 1;\n}\n\n.blockBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: 3px;\n cursor: pointer;\n font-size: 10px;\n color: var(--ee-text-secondary);\n transition: all var(--ee-transition-fast);\n}\n\n.blockBtn:hover {\n background: var(--ee-color-danger);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-danger);\n}\n\n.blockBtnDuplicate:hover {\n background: var(--ee-color-primary);\n color: var(--ee-text-inverse);\n border-color: var(--ee-color-primary);\n}\n\n/* Drop Zone */\n.dropZone {\n min-height: 8px;\n padding: 4px 0;\n transition: all var(--ee-transition-fast);\n position: relative;\n margin: 0 4px;\n}\n\n.dropZoneActive {\n min-height: var(--ee-dropzone-height-active);\n background: var(--ee-dropzone-bg);\n border: 2px dashed var(--ee-dropzone-color);\n border-radius: var(--ee-border-radius-sm);\n}\n\n.dropZoneLabel {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--ee-font-size-xs);\n color: var(--ee-dropzone-color);\n font-weight: var(--ee-font-weight-medium);\n}\n\n/* Empty column */\n.emptyColumn {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n border: 2px dashed var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n color: var(--ee-text-muted);\n font-size: var(--ee-font-size-sm);\n margin: var(--ee-space-sm);\n transition: all var(--ee-transition-fast);\n cursor: default;\n}\n\n.emptyColumnActive {\n border-color: var(--ee-dropzone-color);\n background: var(--ee-dropzone-bg);\n color: var(--ee-dropzone-color);\n font-weight: var(--ee-font-weight-medium);\n}\n\n/* Section Drop Zone */\n.sectionDropZone {\n min-height: 4px;\n transition: all var(--ee-transition-fast);\n position: relative;\n}\n\n.sectionDropZoneActive {\n min-height: 40px;\n background: var(--ee-dropzone-bg);\n border: 2px dashed var(--ee-dropzone-color);\n border-radius: var(--ee-border-radius-sm);\n margin: 2px 4px;\n}\n\n.sectionDropZoneLabel {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--ee-font-size-xs);\n color: var(--ee-dropzone-color);\n font-weight: var(--ee-font-weight-medium);\n}\n\n/* Add section button */\n.addSectionBtn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--ee-space-sm);\n padding: var(--ee-space-md);\n margin: var(--ee-space-sm) var(--ee-space-lg);\n border: 2px dashed var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n background: transparent;\n color: var(--ee-text-secondary);\n font-size: var(--ee-font-size-sm);\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n width: calc(100% - 2 * var(--ee-space-lg));\n}\n\n.addSectionBtn:hover {\n border-color: var(--ee-color-primary);\n color: var(--ee-color-primary);\n background: var(--ee-color-primary-light);\n}\n",".propertiesPanel {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n}\n\n.propertiesHeader {\n padding: var(--ee-space-md) var(--ee-space-lg);\n border-bottom: 1px solid var(--ee-border-color);\n font-size: var(--ee-font-size-sm);\n font-weight: var(--ee-font-weight-semibold);\n color: var(--ee-text-primary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.propertiesBody {\n padding: var(--ee-space-md) var(--ee-space-lg);\n display: flex;\n flex-direction: column;\n gap: var(--ee-space-md);\n}\n\n.emptyProperties {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: var(--ee-text-muted);\n font-size: var(--ee-font-size-sm);\n text-align: center;\n padding: var(--ee-space-lg);\n}\n\n.fieldHint {\n font-size: var(--ee-font-size-xs);\n color: var(--ee-text-muted);\n background: var(--ee-bg-hover);\n padding: var(--ee-space-sm) var(--ee-space-md);\n border-radius: var(--ee-border-radius-sm);\n margin: 0;\n line-height: 1.4;\n}\n\n/* Form controls */\n.fieldGroup {\n display: flex;\n flex-direction: column;\n gap: var(--ee-space-xs);\n}\n\n.fieldLabel {\n font-size: var(--ee-font-size-xs);\n font-weight: var(--ee-font-weight-medium);\n color: var(--ee-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.fieldInput {\n width: 100%;\n padding: 6px 8px;\n font-size: var(--ee-font-size-md);\n font-family: var(--ee-font-family);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n background: var(--ee-bg-input);\n color: var(--ee-text-primary);\n outline: none;\n transition: border-color var(--ee-transition-fast);\n box-sizing: border-box;\n}\n\n.fieldInput:focus {\n border-color: var(--ee-border-focus);\n box-shadow: var(--ee-shadow-focus);\n}\n\n.fieldTextarea {\n composes: fieldInput;\n resize: vertical;\n min-height: 60px;\n}\n\n.fieldSelect {\n composes: fieldInput;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M3 5l3 3 3-3z'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 8px center;\n padding-right: 24px;\n}\n\n.fieldRow {\n display: flex;\n gap: var(--ee-space-sm);\n align-items: center;\n}\n\n.fieldHalf {\n flex: 1;\n}\n\n/* Color Picker */\n.colorPickerWrapper {\n position: relative;\n}\n\n.colorPickerTrigger {\n display: flex;\n align-items: center;\n gap: var(--ee-space-sm);\n padding: 6px 8px;\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n background: var(--ee-bg-input);\n cursor: pointer;\n width: 100%;\n box-sizing: border-box;\n}\n\n.colorSwatch {\n width: 20px;\n height: 20px;\n border-radius: 3px;\n border: 1px solid var(--ee-border-color);\n flex-shrink: 0;\n}\n\n.colorValue {\n font-size: var(--ee-font-size-sm);\n color: var(--ee-text-primary);\n font-family: monospace;\n}\n\n.colorPresets {\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n gap: 4px;\n padding: var(--ee-space-sm);\n background: var(--ee-bg-panel);\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius);\n box-shadow: var(--ee-shadow-md);\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: var(--ee-z-dropdown);\n margin-top: 4px;\n}\n\n.colorPresetBtn {\n width: 28px;\n height: 28px;\n border-radius: 4px;\n border: 2px solid transparent;\n cursor: pointer;\n transition: all var(--ee-transition-fast);\n}\n\n.colorPresetBtn:hover {\n transform: scale(1.15);\n}\n\n.colorPresetBtnActive {\n border-color: var(--ee-color-primary);\n}\n\n/* Padding Input */\n.paddingGrid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--ee-space-xs);\n}\n\n.paddingField {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.paddingLabel {\n font-size: 10px;\n color: var(--ee-text-muted);\n text-align: center;\n}\n\n.paddingInput {\n composes: fieldInput;\n text-align: center;\n padding: 4px;\n font-size: var(--ee-font-size-xs);\n}\n\n/* Alignment Picker */\n.alignmentPicker {\n display: flex;\n border: 1px solid var(--ee-border-color);\n border-radius: var(--ee-border-radius-sm);\n overflow: hidden;\n}\n\n.alignmentBtn {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 6px;\n background: var(--ee-bg-input);\n border: none;\n border-right: 1px solid var(--ee-border-color);\n cursor: pointer;\n font-size: var(--ee-font-size-sm);\n color: var(--ee-text-secondary);\n transition: all var(--ee-transition-fast);\n}\n\n.alignmentBtn:last-child {\n border-right: none;\n}\n\n.alignmentBtn:hover {\n background: var(--ee-bg-hover);\n}\n\n.alignmentBtnActive {\n background: var(--ee-color-primary) !important;\n color: var(--ee-text-inverse);\n}\n\n/* Slider Input */\n.sliderWrapper {\n display: flex;\n align-items: center;\n gap: var(--ee-space-sm);\n}\n\n.sliderInput {\n flex: 1;\n height: 4px;\n appearance: none;\n background: var(--ee-border-color);\n border-radius: 2px;\n outline: none;\n}\n\n.sliderInput::-webkit-slider-thumb {\n appearance: none;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: var(--ee-color-primary);\n cursor: pointer;\n}\n\n.sliderValue {\n font-size: var(--ee-font-size-xs);\n color: var(--ee-text-secondary);\n min-width: 36px;\n text-align: right;\n font-family: monospace;\n}\n\n/* Separator */\n.separator {\n height: 1px;\n background: var(--ee-border-color);\n margin: var(--ee-space-xs) 0;\n}\n",":root {\n /* Colors */\n --ee-color-primary: #2563eb;\n --ee-color-primary-hover: #1d4ed8;\n --ee-color-primary-light: #dbeafe;\n --ee-color-danger: #ef4444;\n --ee-color-danger-hover: #dc2626;\n --ee-color-success: #22c55e;\n --ee-color-warning: #f59e0b;\n\n /* Surfaces */\n --ee-bg-app: #f3f4f6;\n --ee-bg-panel: #ffffff;\n --ee-bg-canvas: #e5e7eb;\n --ee-bg-hover: #f9fafb;\n --ee-bg-selected: #eff6ff;\n --ee-bg-input: #ffffff;\n --ee-bg-toolbar: #ffffff;\n\n /* Borders */\n --ee-border-color: #e5e7eb;\n --ee-border-color-strong: #d1d5db;\n --ee-border-focus: #2563eb;\n --ee-border-selected: #3b82f6;\n --ee-border-radius: 6px;\n --ee-border-radius-sm: 4px;\n --ee-border-radius-lg: 8px;\n\n /* Text */\n --ee-text-primary: #111827;\n --ee-text-secondary: #6b7280;\n --ee-text-muted: #9ca3af;\n --ee-text-inverse: #ffffff;\n --ee-text-link: #2563eb;\n\n /* Spacing */\n --ee-space-xs: 4px;\n --ee-space-sm: 8px;\n --ee-space-md: 12px;\n --ee-space-lg: 16px;\n --ee-space-xl: 24px;\n --ee-space-2xl: 32px;\n\n /* Typography */\n --ee-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n --ee-font-size-xs: 11px;\n --ee-font-size-sm: 12px;\n --ee-font-size-md: 13px;\n --ee-font-size-base: 14px;\n --ee-font-size-lg: 16px;\n --ee-font-size-xl: 18px;\n --ee-font-weight-normal: 400;\n --ee-font-weight-medium: 500;\n --ee-font-weight-semibold: 600;\n\n /* Layout */\n --ee-sidebar-width: 260px;\n --ee-properties-width: 280px;\n --ee-toolbar-height: 48px;\n\n /* Shadows */\n --ee-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\n --ee-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n --ee-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);\n --ee-shadow-focus: 0 0 0 3px rgba(37, 99, 235, 0.15);\n\n /* Transitions */\n --ee-transition-fast: 150ms ease;\n --ee-transition-normal: 200ms ease;\n\n /* Z-index */\n --ee-z-dropdown: 100;\n --ee-z-toolbar: 200;\n --ee-z-overlay: 250;\n --ee-z-modal: 300;\n --ee-z-tooltip: 400;\n\n /* Overlay */\n --ee-overlay-backdrop: rgba(0, 0, 0, 0.2);\n\n /* Drop zone */\n --ee-dropzone-color: #3b82f6;\n --ee-dropzone-bg: rgba(59, 130, 246, 0.08);\n --ee-dropzone-height: 4px;\n --ee-dropzone-height-active: 40px;\n\n /* Variable chips */\n --ee-variable-bg: #dbeafe;\n --ee-variable-color: #1e40af;\n --ee-variable-border: #93c5fd;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,515 @@
1
+ import * as React$1 from 'react';
2
+ import React__default, { ReactNode, ComponentType } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import * as _tiptap_core from '@tiptap/core';
5
+ import { Editor, Node } from '@tiptap/core';
6
+ import * as _tiptap_extension_underline from '@tiptap/extension-underline';
7
+
8
+ type BlockType = 'text' | 'button' | 'image' | 'divider' | 'spacer' | 'social' | 'html' | 'video' | 'heading' | 'countdown' | 'menu' | 'hero';
9
+ interface TextBlockProperties {
10
+ content: string;
11
+ fontFamily: string;
12
+ fontSize: string;
13
+ color: string;
14
+ lineHeight: string;
15
+ padding: string;
16
+ align: 'left' | 'center' | 'right' | 'justify';
17
+ fontWeight: string;
18
+ textTransform: string;
19
+ letterSpacing: string;
20
+ }
21
+ interface ButtonBlockProperties {
22
+ text: string;
23
+ href: string;
24
+ backgroundColor: string;
25
+ color: string;
26
+ fontFamily: string;
27
+ fontSize: string;
28
+ borderRadius: string;
29
+ padding: string;
30
+ innerPadding: string;
31
+ align: 'left' | 'center' | 'right';
32
+ width: string;
33
+ fontWeight: string;
34
+ textTransform: string;
35
+ letterSpacing: string;
36
+ }
37
+ interface ImageBlockProperties {
38
+ src: string;
39
+ alt: string;
40
+ href: string;
41
+ width: string;
42
+ height: string;
43
+ padding: string;
44
+ align: 'left' | 'center' | 'right';
45
+ fluidOnMobile: boolean;
46
+ }
47
+ interface DividerBlockProperties {
48
+ borderColor: string;
49
+ borderWidth: string;
50
+ borderStyle: 'solid' | 'dashed' | 'dotted';
51
+ padding: string;
52
+ width: string;
53
+ }
54
+ interface SpacerBlockProperties {
55
+ height: string;
56
+ }
57
+ interface SocialElement {
58
+ name: string;
59
+ href: string;
60
+ src?: string;
61
+ content?: string;
62
+ backgroundColor?: string;
63
+ color?: string;
64
+ }
65
+ interface SocialBlockProperties {
66
+ elements: SocialElement[];
67
+ mode: 'horizontal' | 'vertical';
68
+ align: 'left' | 'center' | 'right';
69
+ iconSize: string;
70
+ iconPadding: string;
71
+ padding: string;
72
+ fontSize: string;
73
+ color: string;
74
+ borderRadius: string;
75
+ }
76
+ interface HtmlBlockProperties {
77
+ content: string;
78
+ padding: string;
79
+ }
80
+ interface VideoBlockProperties {
81
+ src: string;
82
+ thumbnailUrl: string;
83
+ alt: string;
84
+ padding: string;
85
+ align: 'left' | 'center' | 'right';
86
+ }
87
+ interface HeadingBlockProperties {
88
+ content: string;
89
+ level: 'h1' | 'h2' | 'h3' | 'h4';
90
+ fontFamily: string;
91
+ fontSize: string;
92
+ color: string;
93
+ lineHeight: string;
94
+ fontWeight: string;
95
+ padding: string;
96
+ align: 'left' | 'center' | 'right' | 'justify';
97
+ textTransform: string;
98
+ letterSpacing: string;
99
+ }
100
+ interface CountdownBlockProperties {
101
+ targetDate: string;
102
+ label: string;
103
+ digitBackgroundColor: string;
104
+ digitColor: string;
105
+ labelColor: string;
106
+ fontSize: string;
107
+ padding: string;
108
+ align: 'left' | 'center' | 'right';
109
+ }
110
+ interface MenuItem {
111
+ text: string;
112
+ href: string;
113
+ }
114
+ interface MenuBlockProperties {
115
+ items: MenuItem[];
116
+ align: 'left' | 'center' | 'right';
117
+ fontFamily: string;
118
+ fontSize: string;
119
+ color: string;
120
+ padding: string;
121
+ hamburger: boolean;
122
+ iconColor: string;
123
+ }
124
+ interface HeroBlockProperties {
125
+ heading: string;
126
+ subtext: string;
127
+ buttonText: string;
128
+ buttonHref: string;
129
+ headingColor: string;
130
+ headingFontSize: string;
131
+ subtextColor: string;
132
+ subtextFontSize: string;
133
+ buttonBackgroundColor: string;
134
+ buttonColor: string;
135
+ buttonBorderRadius: string;
136
+ align: 'left' | 'center' | 'right';
137
+ padding: string;
138
+ }
139
+ type BlockProperties = TextBlockProperties | ButtonBlockProperties | ImageBlockProperties | DividerBlockProperties | SpacerBlockProperties | SocialBlockProperties | HtmlBlockProperties | VideoBlockProperties | HeadingBlockProperties | CountdownBlockProperties | MenuBlockProperties | HeroBlockProperties;
140
+ interface BlockPropertiesMap {
141
+ text: TextBlockProperties;
142
+ button: ButtonBlockProperties;
143
+ image: ImageBlockProperties;
144
+ divider: DividerBlockProperties;
145
+ spacer: SpacerBlockProperties;
146
+ social: SocialBlockProperties;
147
+ html: HtmlBlockProperties;
148
+ video: VideoBlockProperties;
149
+ heading: HeadingBlockProperties;
150
+ countdown: CountdownBlockProperties;
151
+ menu: MenuBlockProperties;
152
+ hero: HeroBlockProperties;
153
+ }
154
+ interface Block {
155
+ id: string;
156
+ type: BlockType;
157
+ properties: Record<string, any>;
158
+ }
159
+ interface Column {
160
+ id: string;
161
+ width: string;
162
+ blocks: Block[];
163
+ }
164
+ interface SectionProperties {
165
+ backgroundColor: string;
166
+ padding: string;
167
+ borderRadius: string;
168
+ fullWidth: boolean;
169
+ backgroundImage?: string;
170
+ backgroundSize?: string;
171
+ backgroundRepeat?: string;
172
+ }
173
+ interface Section {
174
+ id: string;
175
+ columns: Column[];
176
+ properties: SectionProperties;
177
+ }
178
+ interface GlobalStyles {
179
+ backgroundColor: string;
180
+ width: number;
181
+ fontFamily: string;
182
+ }
183
+ interface HeadMetadata {
184
+ title: string;
185
+ previewText: string;
186
+ headStyles: string[];
187
+ }
188
+ interface EmailTemplate {
189
+ sections: Section[];
190
+ globalStyles: GlobalStyles;
191
+ headMetadata?: HeadMetadata;
192
+ }
193
+ interface Variable {
194
+ key: string;
195
+ icon?: string;
196
+ sample: string;
197
+ label?: string;
198
+ group?: string;
199
+ }
200
+ interface VariableChipStyle {
201
+ backgroundColor: string;
202
+ color: string;
203
+ borderColor: string;
204
+ fontSize: string;
205
+ borderRadius: string;
206
+ }
207
+ interface PersistenceAdapter {
208
+ save(key: string, template: EmailTemplate): void;
209
+ load(key: string): EmailTemplate | null;
210
+ remove(key: string): void;
211
+ }
212
+ interface UploadOptions {
213
+ context: string;
214
+ blockId: string;
215
+ signal: AbortSignal;
216
+ }
217
+ interface UploadResult {
218
+ url: string;
219
+ width?: number;
220
+ height?: number;
221
+ alt?: string;
222
+ }
223
+ interface BrowseResult {
224
+ url: string;
225
+ width?: number;
226
+ height?: number;
227
+ alt?: string;
228
+ }
229
+ interface TransformOptions {
230
+ width: number;
231
+ height?: number;
232
+ fit: string;
233
+ format: string;
234
+ quality: number;
235
+ }
236
+ interface ImageUploadAdapter {
237
+ upload: (file: File, opts?: UploadOptions) => Promise<UploadResult>;
238
+ browse?: () => Promise<BrowseResult | null>;
239
+ delete?: (url: string) => Promise<void>;
240
+ validate?: (file: File) => string | null;
241
+ transform?: (url: string, opts: TransformOptions) => string;
242
+ }
243
+ type ActiveTab = 'visual' | 'source' | 'preview';
244
+ interface SelectionState {
245
+ sectionId: string | null;
246
+ columnId: string | null;
247
+ blockId: string | null;
248
+ }
249
+ interface EditorState {
250
+ template: EmailTemplate;
251
+ selection: SelectionState;
252
+ activeTab: ActiveTab;
253
+ history: EmailTemplate[];
254
+ historyIndex: number;
255
+ isDirty: boolean;
256
+ }
257
+ type EditorAction = {
258
+ type: 'SET_TEMPLATE';
259
+ payload: EmailTemplate;
260
+ } | {
261
+ type: 'ADD_SECTION';
262
+ payload: {
263
+ section: Section;
264
+ index?: number;
265
+ };
266
+ } | {
267
+ type: 'REMOVE_SECTION';
268
+ payload: {
269
+ sectionId: string;
270
+ };
271
+ } | {
272
+ type: 'MOVE_SECTION';
273
+ payload: {
274
+ sectionId: string;
275
+ toIndex: number;
276
+ };
277
+ } | {
278
+ type: 'UPDATE_SECTION';
279
+ payload: {
280
+ sectionId: string;
281
+ properties: Partial<SectionProperties>;
282
+ };
283
+ } | {
284
+ type: 'ADD_BLOCK';
285
+ payload: {
286
+ sectionId: string;
287
+ columnId: string;
288
+ block: Block;
289
+ index?: number;
290
+ };
291
+ } | {
292
+ type: 'REMOVE_BLOCK';
293
+ payload: {
294
+ sectionId: string;
295
+ columnId: string;
296
+ blockId: string;
297
+ };
298
+ } | {
299
+ type: 'MOVE_BLOCK';
300
+ payload: {
301
+ fromSectionId: string;
302
+ fromColumnId: string;
303
+ blockId: string;
304
+ toSectionId: string;
305
+ toColumnId: string;
306
+ toIndex: number;
307
+ };
308
+ } | {
309
+ type: 'UPDATE_BLOCK';
310
+ payload: {
311
+ blockId: string;
312
+ properties: Partial<BlockProperties>;
313
+ };
314
+ } | {
315
+ type: 'SELECT_BLOCK';
316
+ payload: {
317
+ sectionId: string;
318
+ columnId: string;
319
+ blockId: string;
320
+ } | null;
321
+ } | {
322
+ type: 'SELECT_SECTION';
323
+ payload: {
324
+ sectionId: string;
325
+ } | null;
326
+ } | {
327
+ type: 'SET_ACTIVE_TAB';
328
+ payload: ActiveTab;
329
+ } | {
330
+ type: 'UPDATE_GLOBAL_STYLES';
331
+ payload: Partial<GlobalStyles>;
332
+ } | {
333
+ type: 'UPDATE_HEAD_METADATA';
334
+ payload: Partial<HeadMetadata>;
335
+ } | {
336
+ type: 'DUPLICATE_BLOCK';
337
+ payload: {
338
+ sectionId: string;
339
+ columnId: string;
340
+ blockId: string;
341
+ };
342
+ } | {
343
+ type: 'DUPLICATE_SECTION';
344
+ payload: {
345
+ sectionId: string;
346
+ };
347
+ } | {
348
+ type: 'UNDO';
349
+ } | {
350
+ type: 'REDO';
351
+ };
352
+ interface EmailEditorProps {
353
+ initialTemplate?: EmailTemplate;
354
+ initialMJML?: string;
355
+ variables?: Variable[];
356
+ imageUploadAdapter?: ImageUploadAdapter;
357
+ onChange?: (template: EmailTemplate) => void;
358
+ onSave?: (mjml: string, html: string) => void;
359
+ onReady?: () => void;
360
+ /** Custom font family options for the rich text toolbar. Falls back to FONT_OPTIONS constant. */
361
+ fontFamilies?: string[];
362
+ /** Custom font size options for the rich text toolbar (e.g. ['12px', '14px', '16px']). Falls back to DEFAULT_FONT_SIZES constant. */
363
+ fontSizes?: string[];
364
+ /** Key for auto-persisting the template. Different keys allow multiple editor instances to coexist. */
365
+ persistenceKey?: string;
366
+ /** Custom persistence adapter. Defaults to localStorage when persistenceKey is set. */
367
+ persistenceAdapter?: PersistenceAdapter;
368
+ className?: string;
369
+ style?: React.CSSProperties;
370
+ }
371
+ interface EmailEditorRef {
372
+ getMJML: () => string;
373
+ getHTML: () => Promise<string>;
374
+ getJSON: () => EmailTemplate;
375
+ loadMJML: (source: string) => void;
376
+ loadJSON: (template: EmailTemplate) => void;
377
+ insertBlock: (type: BlockType, sectionIdx?: number) => void;
378
+ getVariables: () => string[];
379
+ undo: () => void;
380
+ redo: () => void;
381
+ reset: () => void;
382
+ exportPDF: () => Promise<void>;
383
+ /** Remove persisted template data for the current persistenceKey. No-op if no key is set. */
384
+ clearPersisted: () => void;
385
+ }
386
+
387
+ declare const EmailEditor: React$1.ForwardRefExoticComponent<EmailEditorProps & React$1.RefAttributes<EmailEditorRef>>;
388
+
389
+ interface EditorContextValue {
390
+ state: EditorState;
391
+ dispatch: React__default.Dispatch<EditorAction>;
392
+ /** All variables: pre-defined (props) + custom (user-created) */
393
+ variables: Variable[];
394
+ /** Pre-defined variables from props (read-only) */
395
+ predefinedVariables: Variable[];
396
+ /** User-created custom variables */
397
+ customVariables: Variable[];
398
+ imageUploadAdapter?: ImageUploadAdapter;
399
+ setActiveEditor: (editor: Editor | null) => void;
400
+ getActiveEditor: () => Editor | null;
401
+ insertVariable: (key: string) => boolean;
402
+ addCustomVariable: (variable: Variable) => void;
403
+ removeCustomVariable: (key: string) => void;
404
+ variableChipStyle: VariableChipStyle;
405
+ updateVariableChipStyle: (style: Partial<VariableChipStyle>) => void;
406
+ /** Font family options for the rich text toolbar */
407
+ fontFamilies: string[];
408
+ /** Font size options for the rich text toolbar */
409
+ fontSizes: string[];
410
+ /** Remove persisted template for the current key. No-op if no persistenceKey. */
411
+ clearPersisted: () => void;
412
+ }
413
+ declare function useEditor(): EditorContextValue;
414
+ declare function useEditorState(): EditorState;
415
+ declare function useEditorDispatch(): React__default.Dispatch<EditorAction>;
416
+ declare function useSelectedBlock(): Block | null;
417
+ declare function useSelectedSection(): Section | null;
418
+ interface EditorProviderProps {
419
+ children: ReactNode;
420
+ initialTemplate?: EmailTemplate;
421
+ variables?: Variable[];
422
+ imageUploadAdapter?: ImageUploadAdapter;
423
+ onChange?: (template: EmailTemplate) => void;
424
+ fontFamilies?: string[];
425
+ fontSizes?: string[];
426
+ persistenceKey?: string;
427
+ persistenceAdapter?: PersistenceAdapter;
428
+ }
429
+ declare function EditorProvider({ children, initialTemplate, variables: predefinedVariables, imageUploadAdapter, onChange, fontFamilies: fontFamiliesProp, fontSizes: fontSizesProp, persistenceKey, persistenceAdapter, }: EditorProviderProps): react_jsx_runtime.JSX.Element;
430
+
431
+ declare function parseMJML(mjmlString: string): EmailTemplate;
432
+
433
+ declare function generateMJML(template: EmailTemplate): string;
434
+
435
+ interface CompileResult {
436
+ html: string;
437
+ errors: CompileError[];
438
+ }
439
+ interface CompileError {
440
+ line: number;
441
+ message: string;
442
+ tagName: string;
443
+ }
444
+ declare function compileMJMLToHTML(mjmlString: string): Promise<CompileResult>;
445
+
446
+ declare function getExtensions(placeholder?: string): (_tiptap_core.Node<any, any> | _tiptap_core.Extension<any, any> | _tiptap_core.Mark<_tiptap_extension_underline.UnderlineOptions, any>)[];
447
+
448
+ declare module '@tiptap/core' {
449
+ interface Commands<ReturnType> {
450
+ variableNode: {
451
+ insertVariable: (key: string) => ReturnType;
452
+ };
453
+ }
454
+ }
455
+ declare const VariableNode: Node<any, any>;
456
+
457
+ declare function generateId(prefix?: string): string;
458
+ declare function generateBlockId(): string;
459
+ declare function generateSectionId(): string;
460
+ declare function generateColumnId(): string;
461
+
462
+ declare function extractVariableKeys(text: string): string[];
463
+ declare function replaceVariables(text: string, variables: Variable[], useSample?: boolean): string;
464
+ declare function groupVariables(variables: Variable[]): Map<string, Variable[]>;
465
+
466
+ declare function sanitizeHTML(html: string): string;
467
+ declare function escapeHTML(str: string): string;
468
+
469
+ /**
470
+ * Default persistence adapter using localStorage.
471
+ * All operations are wrapped in try/catch to handle quota errors,
472
+ * private browsing restrictions, and SSR environments.
473
+ */
474
+ declare const localStorageAdapter: PersistenceAdapter;
475
+
476
+ /**
477
+ * Block type registries — single source of truth for mapping block types
478
+ * to their renderers, property panels, generators, and parsers.
479
+ *
480
+ * Adding a new block type requires only adding entries here (Open/Closed Principle).
481
+ */
482
+
483
+ declare function registerBlockRenderer(type: BlockType, component: ComponentType<{
484
+ block: Block;
485
+ }>): void;
486
+ declare function registerBlockProperties(type: BlockType, component: ComponentType<{
487
+ block: Block;
488
+ }>): void;
489
+ declare function registerBlockGenerator(type: BlockType, generator: (block: Block, indent: string) => string): void;
490
+ declare function registerBlockParser(mjmlTag: string, parser: (el: Element) => Block): void;
491
+
492
+ declare const DEFAULT_SOCIAL_PROPERTIES: SocialBlockProperties;
493
+ declare const DEFAULT_BLOCK_PROPERTIES: {
494
+ [K in BlockType]: BlockPropertiesMap[K];
495
+ };
496
+ declare const DEFAULT_SECTION_PROPERTIES: SectionProperties;
497
+ declare const DEFAULT_HEAD_METADATA: HeadMetadata;
498
+ declare const DEFAULT_GLOBAL_STYLES: GlobalStyles;
499
+ declare const DEFAULT_VARIABLE_CHIP_STYLE: VariableChipStyle;
500
+ interface BlockDefinition {
501
+ type: BlockType;
502
+ label: string;
503
+ icon: string;
504
+ description: string;
505
+ }
506
+ declare const BLOCK_DEFINITIONS: BlockDefinition[];
507
+ declare const DEFAULT_FONT_SIZES: string[];
508
+ declare const FONT_OPTIONS: string[];
509
+ declare const COLOR_PRESETS: string[];
510
+ declare const COLUMN_LAYOUTS: {
511
+ label: string;
512
+ widths: string[];
513
+ }[];
514
+
515
+ export { type ActiveTab, BLOCK_DEFINITIONS, type Block, type BlockProperties, type BlockPropertiesMap, type BlockType, type BrowseResult, type ButtonBlockProperties, COLOR_PRESETS, COLUMN_LAYOUTS, type Column, type CountdownBlockProperties, DEFAULT_BLOCK_PROPERTIES, DEFAULT_FONT_SIZES, DEFAULT_GLOBAL_STYLES, DEFAULT_HEAD_METADATA, DEFAULT_SECTION_PROPERTIES, DEFAULT_SOCIAL_PROPERTIES, DEFAULT_VARIABLE_CHIP_STYLE, type DividerBlockProperties, type EditorAction, EditorProvider, type EditorState, EmailEditor, type EmailEditorProps, type EmailEditorRef, type EmailTemplate, FONT_OPTIONS, type GlobalStyles, type HeadMetadata, type HeroBlockProperties, type ImageBlockProperties, type ImageUploadAdapter, type MenuBlockProperties, type MenuItem, type PersistenceAdapter, type Section, type SectionProperties, type SelectionState, type SocialBlockProperties, type SocialElement, type SpacerBlockProperties, type TextBlockProperties, type TransformOptions, type UploadOptions, type UploadResult, type Variable, type VariableChipStyle, VariableNode, compileMJMLToHTML, escapeHTML, extractVariableKeys, generateBlockId, generateColumnId, generateId, generateMJML, generateSectionId, getExtensions, groupVariables, localStorageAdapter, parseMJML, registerBlockGenerator, registerBlockParser, registerBlockProperties, registerBlockRenderer, replaceVariables, sanitizeHTML, useEditor, useEditorDispatch, useEditorState, useSelectedBlock, useSelectedSection };