diff --git a/admin-spa/src/components/EmailBuilder/BlockRenderer.tsx b/admin-spa/src/components/EmailBuilder/BlockRenderer.tsx index 6e74f32..cbd93e2 100644 --- a/admin-spa/src/components/EmailBuilder/BlockRenderer.tsx +++ b/admin-spa/src/components/EmailBuilder/BlockRenderer.tsx @@ -39,33 +39,80 @@ export function BlockRenderer({ ); case 'card': - const cardClasses = { - default: 'bg-white border border-gray-200', - success: 'bg-green-50 border border-green-200', - info: 'bg-blue-50 border border-blue-200', - warning: 'bg-orange-50 border border-orange-200', - hero: 'bg-gradient-to-r from-purple-500 to-indigo-600 text-white' + const cardStyles: { [key: string]: React.CSSProperties } = { + default: { + background: '#ffffff', + borderRadius: '8px', + padding: '32px 40px', + marginBottom: '24px' + }, + success: { + background: '#e8f5e9', + border: '1px solid #4caf50', + borderRadius: '8px', + padding: '32px 40px', + marginBottom: '24px' + }, + info: { + background: '#f0f7ff', + border: '1px solid #0071e3', + borderRadius: '8px', + padding: '32px 40px', + marginBottom: '24px' + }, + warning: { + background: '#fff8e1', + border: '1px solid #ff9800', + borderRadius: '8px', + padding: '32px 40px', + marginBottom: '24px' + }, + hero: { + background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', + color: '#fff', + borderRadius: '8px', + padding: '32px 40px', + marginBottom: '24px' + } }; return ( -
+
); case 'button': - const buttonClasses = block.style === 'solid' - ? 'bg-purple-600 text-white hover:bg-purple-700' - : 'border-2 border-purple-600 text-purple-600 hover:bg-purple-50'; + const buttonStyle: React.CSSProperties = block.style === 'solid' + ? { + display: 'inline-block', + background: '#7f54b3', + color: '#fff', + padding: '14px 28px', + borderRadius: '6px', + textDecoration: 'none', + fontWeight: 600 + } + : { + display: 'inline-block', + background: 'transparent', + color: '#7f54b3', + padding: '12px 26px', + border: '2px solid #7f54b3', + borderRadius: '6px', + textDecoration: 'none', + fontWeight: 600 + }; return ( -
+
{block.text} diff --git a/admin-spa/src/components/EmailBuilder/EmailBuilder.tsx b/admin-spa/src/components/EmailBuilder/EmailBuilder.tsx index 770b37a..4d248b8 100644 --- a/admin-spa/src/components/EmailBuilder/EmailBuilder.tsx +++ b/admin-spa/src/components/EmailBuilder/EmailBuilder.tsx @@ -5,6 +5,7 @@ import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; +import { RichTextEditor } from '@/components/ui/rich-text-editor'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Plus, Type, Square, MousePointer, Minus, Space } from 'lucide-react'; @@ -179,8 +180,8 @@ export function EmailBuilder({ blocks, onChange, variables = [] }: EmailBuilderP
{/* Email Canvas */} -
-
+
+
{blocks.length === 0 ? (

{__('No blocks yet. Add blocks using the toolbar above.')}

@@ -221,14 +222,16 @@ export function EmailBuilder({ blocks, onChange, variables = [] }: EmailBuilderP
{(editingBlock?.type === 'header' || editingBlock?.type === 'text') && (
- -