Commit Graph

7 Commits

Author SHA1 Message Date
841d6ca0a5 feat(phase-13): implement crop tool with visual guides and handles
Add comprehensive crop tool with visual guides, resize handles, and Apply/Cancel UI.

Features:
- Interactive crop area selection with drag-to-create
- 8 resize handles (corners and edges) for precise cropping
- Visual overlay with dimmed areas outside crop region
- Rule of thirds grid overlay for composition guidance
- Drag crop area to reposition
- Apply/Cancel buttons in tool options
- White border and handles for clear visibility

Changes:
- Created tools/crop-tool.ts with CropTool class
- Added crop tool to lib/tool-loader.ts
- Added Crop icon and button to tool palette with 'C' shortcut
- Added crop tool options UI in components/editor/tool-options.tsx
- Exported CropTool from tools/index.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 19:54:05 +01:00
8f595ac6c4 feat(phase-13): implement gradient tool with linear, radial, and angular modes
Add comprehensive gradient tool with three gradient types and full UI integration.

Features:
- Gradient tool with drag-to-create interaction
- Three gradient types: Linear, Radial, and Angular (conic)
- Live preview during drag with 70% opacity overlay
- Primary and secondary color selection
- Gradient type selector in tool options
- Undo/redo support through command system
- Fallback to radial gradient for browsers without conic gradient support

Changes:
- Created tools/gradient-tool.ts with GradientTool class
- Added 'gradient' to ToolType in types/tool.ts
- Extended ToolSettings with secondaryColor and gradientType
- Updated store/tool-store.ts with setSecondaryColor and setGradientType methods
- Added gradient tool loading in lib/tool-loader.ts
- Added gradient button to tool palette with 'G' shortcut
- Added gradient tool options UI in components/editor/tool-options.tsx

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 19:48:00 +01:00
041db0aaff feat(text): integrate Google Fonts API with dynamic loading
Added Google Fonts support to text tool:

Font Loader System:
- Created GoogleFontsLoader class with caching and loading states
- Singleton instance with preloading of popular fonts (Roboto, Open Sans, Lato, Montserrat)
- Handles font loading via Google Fonts API with error handling
- Tracks loaded, loading, and error states per font

UI Improvements:
- Updated font selector with optgroups (Web Safe Fonts vs Google Fonts)
- 13 web-safe fonts + 14 popular Google Fonts
- Font preview in dropdown (fontFamily style applied to options)
- Async loading on font selection with error handling

Features:
- 27 total fonts available (13 web-safe + 14 Google Fonts)
- Automatic preloading of 4 most popular fonts on app start
- Font caching to avoid redundant loads
- Fallback to web-safe fonts if Google Fonts fail to load

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 16:44:42 +01:00
f948d544a6 feat(text-tool): add comprehensive text formatting controls
Enhanced the text tool toolbar with professional formatting options:
- Font style controls: Bold and Italic toggle buttons
- Text alignment: Left, Center, Right buttons with visual feedback
- Line height slider: Range 0.5-3.0 with 0.1 step precision
- Letter spacing slider: Range -10px to 50px
- Expanded font family: Added 10 more fonts (16 total)
  - Added: Trebuchet MS, Impact, Comic Sans MS, Palatino, Garamond,
    Bookman, Tahoma, Lucida Console, Monaco, Consolas

All controls have active state highlighting and smooth transitions
for better user experience.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 15:16:52 +01:00
4e6dc6cb14 fix: enable text tool pointer events and add tool options
Fixed two critical issues preventing text tool usage:

**Pointer Event Integration:**
- Added text tool to canvas pointer event handler
- Text tool now properly responds to canvas clicks
- Opens text dialog on click with correct position

**Tool Options Bar:**
- Added text tool options section to toolbar
- Font family selection (6 common fonts)
- Font size control (8-500px with number input)
- Color picker with hex input
- Helpful hint: "Click on canvas to add text"
- Options bar now appears when text tool is active

**Changes:**
- components/canvas/canvas-with-tools.tsx:
  - Added dedicated text tool handler before selection tools
  - Handles pointer down event to open text dialog

- components/editor/tool-options.tsx:
  - Imported useTextStore
  - Added isTextTool check
  - Created text tool options UI section
  - Shows font, size, and color controls

Text tool is now fully functional - click the Type icon, then
click anywhere on canvas to open the text editor dialog!

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 09:47:51 +01:00
b7b072f6d2 feat: improve UI and transparency support
UI Improvements:
- Style scrollbars with primary color accent
- Scrollbar thumb transitions on hover (40% → 60% → 80% opacity)
- Add fill tool options to toolbar (color picker + opacity)
- Support for Firefox with scrollbar-color property

Transparency Support:
- Set default canvas background to transparent
- First layer now transparent instead of white fill
- Enables creating images with transparency
- Checkerboard pattern shows through transparent areas
- Proper PNG export support with alpha channel

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 09:17:12 +01:00
a723be7731 feat: restructure layout to professional image editor standard
Restructure the UI to match professional image editors (Photoshop, Affinity)
with a clean, predictable layout that maximizes canvas space.

Changes:
- **Top Bar** (48px): Unified horizontal bar with three sections:
  * Left: Title + File Menu
  * Center: Context-sensitive tool options
  * Right: Undo/Redo, Zoom controls, New Layer button

- **Left Side** (64px): Single tool palette (unchanged)

- **Center**: Maximized canvas workspace (flex-1)

- **Right Side** (280px): Unified panel dock with hybrid organization:
  * Always visible: Layers Panel (400px) + Color Panel (200px)
  * Tabbed sections: Adjustments, Tools, History
  * Collapsible panels within tabs for efficient space usage

New Components:
- `components/editor/tool-options.tsx`: Horizontal tool options bar
  * Shows context-sensitive options for active tool
  * Drawing tools: color, size, opacity, hardness, flow
  * Shape tool: shape type selector
  * Selection tool: mode selector (rectangular, elliptical, lasso, magic wand)

- `components/editor/panel-dock.tsx`: Unified right panel system
  * Fixed 280px width (compact professional standard)
  * Tab system for organizing feature panels
  * Collapsible sections within tabs
  * Hybrid approach: essential panels always visible, others tabbed

Removed from Left Sidebar:
- ToolSettings panel (now in top bar)
- ColorPanel (now in panel dock)
- FilterPanel (now in panel dock)
- SelectionPanel (now in panel dock)
- TransformPanel (now in panel dock)
- ShapePanel (now in panel dock)

Benefits:
- Reclaimed ~400px horizontal space for canvas
- Predictable, stable UI (no panels appearing/disappearing)
- Professional, industry-standard layout
- All features accessible in organized panel dock
- Cleaner, less cluttered interface

Build Status: ✓ Successful (1266ms)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 07:12:51 +01:00