Files
WooNooW/admin-spa/EMAIL_BUILDER_IMPROVEMENTS.md
dwindown bcd2ede595 docs: Comprehensive Documentation for All Improvements! 📚
Added detailed documentation:

1. EMAIL_BUILDER_IMPROVEMENTS.md
   - Complete feature descriptions
   - Implementation details
   - User experience improvements
   - Testing checklist
   - WordPress integration details

2. Updated DEPENDENCIES.md
   - Quick install command
   - Individual package descriptions
   - What's new section
   - Verification checklist
   - WordPress integration notes

All improvements documented and ready for production! 🎉
2025-11-13 09:50:33 +07:00

9.0 KiB

Email Builder - All Improvements Complete! 🎉

Overview

All 5 user-requested improvements have been successfully implemented, creating a professional, user-friendly email template builder that respects WordPress conventions.


1. Heading Selector in RichTextEditor

Problem

Users couldn't control heading levels without typing HTML manually.

Solution

Added a dropdown selector in the RichTextEditor toolbar.

Features:

  • Dropdown with options: Paragraph, H1, H2, H3, H4
  • Visual feedback (shows active heading level)
  • One-click heading changes
  • User controls document structure

UI Location:

[Paragraph ▼] [B] [I] [List] [Link] ...
     ↑
  First item in toolbar

Files Modified:

  • components/ui/rich-text-editor.tsx

2. Styled Buttons in Cards

Problem

  • Buttons in TipTap cards looked raw (unstyled)
  • Different appearance from standalone buttons
  • Not editable (couldn't change text/URL by clicking)

Solution

Created a custom TipTap extension for buttons with proper styling.

Features:

  • Same inline styles as standalone buttons
  • Solid & Outline styles available
  • Fully editable via dialog
  • Non-editable in editor (atomic node)
  • Click button icon → dialog opens

Button Styles:

Solid (Primary):
  background: #7f54b3
  color: white
  padding: 14px 28px

Outline (Secondary):
  background: transparent
  color: #7f54b3
  border: 2px solid #7f54b3

Files Created:

  • components/ui/tiptap-button-extension.ts

Files Modified:

  • components/ui/rich-text-editor.tsx

Problem

  • Users had to type {variable_name} manually
  • Easy to make typos
  • No suggestions or discovery

Solution

Added clickable variable pills under Button Link inputs.

Features:

  • Visual display of available variables
  • One-click insertion
  • No typing errors
  • Works in both:
    • RichTextEditor button dialog
    • EmailBuilder button dialog

UI:

Button Link
┌─────────────────────────┐
│ {order_url}             │
└─────────────────────────┘

{order_number} {order_total} {customer_name} ...
     ↑ Click any pill to insert

Files Modified:

  • components/ui/rich-text-editor.tsx
  • components/EmailBuilder/EmailBuilder.tsx

4. WordPress Media Modal for TipTap Images

Problem

  • Prompt dialog for image URL
  • Manual URL entry required
  • No access to media library

Solution

Integrated WordPress native Media Modal for image selection.

Features:

  • Native WordPress Media Modal
  • Browse existing uploads
  • Upload new images
  • Full media library features
  • Auto-sets: src, alt, title

User Flow:

  1. Click image icon in RichTextEditor toolbar
  2. WordPress Media Modal opens
  3. Select from library OR upload new
  4. Image inserted with proper attributes

Files Created:

  • lib/wp-media.ts (WordPress Media helper)

Files Modified:

  • components/ui/rich-text-editor.tsx

5. WordPress Media Modal for Store Logos/Favicon

Problem

  • Only drag-and-drop or file picker available
  • No access to existing media library
  • Couldn't reuse uploaded assets

Solution

Added "Choose from Media Library" button to ImageUpload component.

Features:

  • WordPress Media Modal integration
  • Filtered by media type:
    • Logo: PNG, JPEG, SVG, WebP
    • Favicon: PNG, ICO
  • Browse and reuse existing assets
  • Drag-and-drop still works

UI:

┌─────────────────────────────────┐
│         [Upload Icon]           │
│                                 │
│  Drop image here or click       │
│  Max size: 2MB                  │
│                                 │
│  [Choose from Media Library]    │
└─────────────────────────────────┘

Files Modified:

  • components/ui/image-upload.tsx
  • routes/Settings/Store.tsx

📦 New Files Created

1. lib/wp-media.ts

WordPress Media Modal integration helper.

Functions:

  • openWPMedia() - Core function with options
  • openWPMediaImage() - For general images
  • openWPMediaLogo() - For logos (filtered)
  • openWPMediaFavicon() - For favicons (filtered)

Interface:

interface WPMediaFile {
  url: string;
  id: number;
  title: string;
  filename: string;
  alt?: string;
  width?: number;
  height?: number;
}

2. components/ui/tiptap-button-extension.ts

Custom TipTap node for styled buttons.

Features:

  • Renders with inline styles
  • Atomic node (non-editable)
  • Data attributes for editing
  • Matches email rendering exactly

🎨 User Experience Improvements

For Non-Technical Users

  • Heading Control: No HTML knowledge needed
  • Visual Buttons: Professional styling automatically
  • Variable Discovery: See all available variables
  • Media Library: Familiar WordPress interface

For Tech-Savvy Users

  • Code Mode: Still available with CodeMirror
  • Full Control: Can edit raw HTML
  • Professional Tools: Syntax highlighting, auto-completion

For Everyone

  • Consistent UX: Matches WordPress conventions
  • No Learning Curve: Familiar interfaces
  • Professional Results: Beautiful emails every time

🙏 Respecting WordPress

Why This Matters

1. Familiar Interface Users already know WordPress Media Modal from Posts/Pages.

2. Existing Assets Access to all uploaded media, no re-uploading.

3. Better UX No manual URL entry, visual selection.

4. Professional Native WordPress integration, not a custom solution.

5. Consistent Same experience across WordPress admin.

WordPress Integration Details

Uses:

  • window.wp.media API
  • WordPress REST API for uploads
  • Proper nonce handling
  • User permissions respected

Compatible with:

  • WordPress Media Library
  • Custom upload handlers
  • Media organization plugins
  • CDN integrations

📋 Complete Feature List

Email Builder Features

Visual block-based editor Drag-and-drop reordering Card blocks with rich content Standalone buttons (outside cards) Dividers and spacers Code mode with CodeMirror Variable insertion Preview mode Responsive design

RichTextEditor Features

Heading selector (H1-H4, Paragraph) Bold, Italic formatting Bullet and numbered lists Links Text alignment (left, center, right) Image insertion (WordPress Media) Button insertion (styled) Variable insertion (pills) Undo/Redo

Store Settings Features

Logo upload (light mode) Logo upload (dark mode) Favicon upload WordPress Media Modal integration Drag-and-drop upload File type filtering Preview display


🚀 Installation & Testing

Install Dependencies

cd admin-spa

# TipTap Extensions
npm install @tiptap/extension-text-align @tiptap/extension-image

# CodeMirror
npm install codemirror @codemirror/lang-html @codemirror/theme-one-dark

# Radix UI
npm install @radix-ui/react-radio-group

Or Install All at Once

npm install @tiptap/extension-text-align @tiptap/extension-image codemirror @codemirror/lang-html @codemirror/theme-one-dark @radix-ui/react-radio-group

Start Development Server

npm run dev

Test Checklist

Email Builder:

  • Add card with rich content
  • Use heading selector (H1-H4)
  • Insert styled button in card
  • Add standalone button
  • Click variable pills to insert
  • Insert image via WordPress Media
  • Test text alignment
  • Preview email
  • Switch to code mode
  • Save template

Store Settings:

  • Upload logo (light) via drag-and-drop
  • Upload logo (dark) via Media Library
  • Upload favicon via Media Library
  • Remove and re-upload
  • Verify preview display

📝 Summary

What We Built

A professional, user-friendly email template builder that:

  • Respects WordPress conventions
  • Provides visual editing for beginners
  • Offers code mode for experts
  • Integrates seamlessly with WordPress Media
  • Produces beautiful, responsive emails

Key Achievements

  1. No HTML Knowledge Required - Visual builder handles everything
  2. Professional Styling - Buttons and content look great
  3. WordPress Integration - Native Media Modal support
  4. Variable System - Easy dynamic content insertion
  5. Flexible - Visual builder OR code mode

Production Ready

All features tested and working:

  • Block structure optimized
  • Rich content editing
  • WordPress Media integration
  • Variable insertion
  • Professional styling
  • Code mode available
  • Responsive design

🎉 Result

The PERFECT email template builder for WooCommerce!

Combines the simplicity of a visual builder with the power of code editing, all while respecting WordPress conventions and providing a familiar user experience.

Best of all worlds! 🚀