Commit graph

80 commits

Author SHA1 Message Date
82c39de7ea feat: implement enhanced bubble menu with text styles and color pickers
- Add ComposerBubbleMenu with formatting tools and dropdowns
- Create BubbleTextStyleMenu for paragraph/heading/list selection
- Add BubbleColorPicker with preset palettes and custom color selection
- Use lighter pastel colors for highlight presets
- Implement circle color swatches with even grid spacing
- Add strikethrough support and improved hover states
- Use absolute positioning to prevent scroll issues
- Integrate with existing editor configuration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 12:07:24 -04:00
15ce9caae9 style: enhance toolbar with glassmorphism and improved design
- Add white background with subtle gray border and rounded corners
- Remove initial drop shadow, add shadow on hover
- Reduce vertical padding for more compact design
- Update button hover states to use darker gray
- Add sticky positioning with gap from top
- Improve responsive padding and animations

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 11:58:34 -04:00
2f20209d66 feat: add toolbar feature flag to disable toolbar in favor of bubble menu
- Add toolbar property to ComposerFeatures interface
- Update default features to disable toolbar for inline/full variants
- Add conditional rendering check for toolbar feature flag
- Enable bubble menu by default for better UX

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 11:58:10 -04:00
1c38dc87e3 fix: drag handle actions now affect the correct block
- Added menuNode state to capture the node position when menu opens
- Updated all action functions to use menuNode instead of currentNode
- This ensures drag handle actions (Turn into, Delete, etc.) always affect the block where the handle was clicked, not where the mouse currently hovers
- Also formatted code with prettier

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 10:33:27 -04:00
569a124d02 style: move editor padding to block elements for better drag handle interaction
- Remove horizontal padding from editor container
- Add 3rem (2rem on mobile) horizontal padding to all block elements
- Ensures drag handle appears when hovering over visual margins
- Properly handle nested elements (blockquotes, lists, tables) to prevent double padding

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 10:11:43 -04:00
9da64583ba style: make editor more immersive with full-width design
- Remove border and background from full variant composer
- Increase padding for better readability
- Update toolbar padding to match content area
- Make case study panel full-width and transparent

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 10:01:10 -04:00
75b61021a0 fix: simplify editor content loading to prevent infinite loops
- Use a simple contentLoaded flag to load content once when editor is ready
- Remove complex change detection that was causing infinite update loops
- Remove debug logging now that issue is resolved

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 09:56:24 -04:00
922da5cf33 debug: add more detailed logging to trace content structure issue 2025-06-26 09:51:34 -04:00
7211ccff9f debug: add logging to trace editor content loading issue 2025-06-26 09:50:00 -04:00
639a4a2429 fix: update components to use Svelte 5 snippets and fix editor content loading
- Convert Button component to use snippets instead of slots
- Update BaseDropdown and StatusDropdown to use new Button snippet syntax
- Add effect to watch for data changes in ComposerCore and update editor content
- Fix SVG component usage in Album component for Svelte 5 compatibility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 09:22:19 -04:00
e64788962e refactor: remove EnhancedComposer backward compatibility
- Remove EnhancedComposer shim and old backup file
- Update all imports to use new Composer from ./composer
- Fix editor command implementations for link operations
- Fix dropdown hook usage with proper reactive patterns
- All 5 components now directly import the modular implementation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 09:12:08 -04:00
6077fa126b refactor: break down EnhancedComposer into focused components
- Extract ComposerToolbar component for toolbar UI and logic
- Create TextStyleDropdown and MediaInsertDropdown components
- Extract ComposerMediaHandler for all media operations
- Create ComposerLinkManager for link-related features
- Extract useComposerEvents hook for event handling
- Create editorConfig utility for configuration logic
- Refactor main component from 1,347 to ~300 lines
- Maintain backward compatibility with shim component
- Improve maintainability with single-responsibility components

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 09:02:47 -04:00
6ff2818e72 feat: extract File and Copy icons as reusable components
- Create FileIcon.svelte and CopyIcon.svelte components
- Update MediaDetailsModal to use new icon components
- Maintain consistent icon sizing and styling

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 08:45:25 -04:00
df3dd1abd9 feat: create reusable CloseButton icon component
- Create CloseButton.svelte with configurable size, color, strokeWidth props
- Replace inline close button SVGs in 7 components
- Update Modal, Lightbox, MediaDetailsModal, MediaInput, GalleryManager, AlbumSelectorModal, UnifiedMediaModal

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 08:40:32 -04:00
e92cc2393e feat: create unified PhotoGrid component
- Created PhotoGrid.new.svelte with flexible column layouts (1, 2, 3, auto)
- Supports ultrawide image handling from ThreeColumnPhotoGrid
- Maintains PhotoItem component usage for consistency
- Created wrapper components for backward compatibility:
  - SingleColumnPhotoGrid.new.svelte
  - TwoColumnPhotoGrid.new.svelte
  - ThreeColumnPhotoGrid.new.svelte
- Fixed FormFieldWrapper import errors (was already removed)

This consolidates 4 similar grid components into a single flexible component, reducing code duplication by ~60%.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 05:32:55 -04:00
153e0aa080 refactor: create BaseSegmentedController and refactor AdminSegmentedController
- Created BaseSegmentedController with shared logic for all segmented controls
- Refactored AdminSegmentedController to use BaseSegmentedController
- Added keyboard navigation support (arrow keys, Home/End)
- Added size variants (small, medium, large)
- Added support for custom pill colors
- Added proper ARIA attributes for accessibility
- Fixed missing CSS variables ($red-error, $shadow-*)

This eliminates significant code duplication and provides a consistent foundation for all segmented control patterns.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:27:16 -04:00
05ddafcdea refactor: merge FormField and FormFieldWrapper components
- Add children prop to FormField to support wrapper mode
- Update components using FormFieldWrapper to use FormField
- Remove redundant FormFieldWrapper component
- Maintain all existing functionality with unified API

This reduces code duplication and simplifies the form component hierarchy.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:14:10 -04:00
ea7ec61377 refactor: extract BaseDropdown component to reduce duplication
- Create BaseDropdown with shared dropdown logic:
  - Toggle state management
  - Click outside handling
  - Dropdown positioning
  - Trigger and dropdown slots

- Refactor StatusDropdown and PublishDropdown to use BaseDropdown
- Reduce code duplication by ~80 lines
- Maintain all existing functionality

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:12:16 -04:00
fa52bb716d refactor: extract BaseModal component to reduce duplication
- Create BaseModal with shared modal logic:
  - Backdrop click handling
  - Escape key handling
  - Body scroll locking
  - Transition animations
  - Size variants

- Refactor Modal and DeleteConfirmationModal to use BaseModal
- Reduce code duplication by ~100 lines
- Maintain all existing functionality

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:10:33 -04:00
d4490fd70c fix: add missing error and successMessage state variables in ProjectForm
Fixes ReferenceError where template was using undefined variables.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:07:28 -04:00
513b40bbc4 fix: update remaining $grey- variables in SCSS files
- Fix themes.scss to use $gray- variables
- Fix tooltip.scss to use $gray- variables
- Resolves build error with undefined variables

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:03:19 -04:00
599797f727 refactor: standardize spacing with unit variables
Replace hardcoded pixel values with unit variables in key components:
- GalleryExtended, MediaDetailsModal, UrlEmbedExtended
- EnhancedComposer, UniverseCard, NavDropdown, Button

Key replacements:
- Spacing: 1px→$unit-1px, 8px→$unit, 16px→$unit-2x, etc.
- Font sizes: Use semantic $font-size-* variables
- Border radius: Use $corner-radius-* variables

Added missing common pixel value variables for consistency.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 21:50:43 -04:00
a31291d69f refactor: replace deprecated $grey- variables with $gray-
- Replace 802 instances of $grey- variables with $gray- across 106 files
- Remove legacy color aliases from variables.scss
- Maintain consistent naming convention throughout codebase

This completes the migration to the new color scale system.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 21:41:50 -04:00
5875a52b47 refactor: standardize z-index values with CSS variables
- Create _z-index.scss with systematic z-index constants
- Replace 60+ hardcoded z-index values across 19 components
- Establish consistent layering hierarchy:
  - Base layers (1-3)
  - Interactive elements (10-200)
  - Overlays and modals (1000-1100)
  - Top-level elements (1200-10000)

This improves maintainability and prevents z-index conflicts.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 21:18:20 -04:00
a04d48e549 feat: enhance editor with drag handle and UI improvements
- Add drag handle functionality to editor blocks
- Improve dropdown menu component with better state management
- Enhance composer with AI-powered features
- Update form components to use toast notifications
- Add chevron-right and drag-handle SVG icons
- Various bug fixes and UI refinements

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 01:06:46 +01:00
2bbc306762 refactor: restructure routing - albums at /albums/[slug], photos at /photos/[id]
- Move album routes from /photos/[slug] to /albums/[slug]
- Simplify photo permalinks from /photos/p/[id] to /photos/[id]
- Remove album-scoped photo route /photos/[albumSlug]/[photoId]
- Update all component references to use new routes
- Simplify content.ts to always use direct photo permalinks
- Update PhotoItem, MasonryPhotoGrid, ThreeColumnPhotoGrid components
- Update UniverseAlbumCard and admin AlbumForm view links
- Remove album context from photo navigation

Breaking change: URLs have changed
- Albums: /photos/[slug] → /albums/[slug]
- Photos: /photos/p/[id] → /photos/[id]

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 10:35:21 +01:00
e305bf15ef refactor: replace button text changes with toast notifications
- Update all admin forms to use toast messages
- Remove temporary "Saving..." button text changes
- Remove inline error/success message displays
- Keep buttons disabled during operations
- Show loading, success, and error toasts appropriately

Updated components:
- AlbumForm: Save operations with descriptive messages
- StatusDropdown: Remove loading text from buttons
- MediaDetailsModal: Save, delete, and copy operations
- ProjectForm: Create and update operations
- EssayForm: Publish and save draft operations
- SimplePostForm: Create and update posts
- PhotoPostForm: Publish photo posts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:56:26 +01:00
b8d965370b feat(admin): update admin pages with new editor and workflows
- Update media management page with album associations
- Enhance media audit page with better reporting
- Improve regenerate thumbnails page
- Update post pages to use EnhancedComposer
- Update universe compose page with new editor
- Update ProjectForm to use EnhancedComposer
- Add better error handling and loading states
- Improve form validation across admin pages

Modernizes admin workflows with unified components.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:14:41 +01:00
0d4bf6d53f feat(admin): update admin components with improved UI and icons
- Add album and media icons for better navigation
- Update AdminNavBar with new routes and improved styling
- Enhance GalleryUploader with better drag-and-drop support
- Improve ImagePicker and ImageUploader components
- Remove unused ImageUploadPlaceholder component
- Update MediaDetailsModal with album association features
- Improve Modal component styling and animations
- Add PostDropdown for post management actions

Modernizes the admin interface with better usability.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:14:08 +01:00
e488107544 feat(admin): update album management UI for content support
- Update AlbumForm to use EnhancedComposer for content editing
- Add AlbumSelector component for album selection workflows
- Update AlbumListItem with improved styling and metadata display
- Enhance album edit/create pages with new content capabilities
- Add support for geolocation data in album forms
- Improve form validation and error handling

Modernizes the album management interface with rich content editing.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:12:54 +01:00
b548807d88 refactor(admin): consolidate media modals into UnifiedMediaModal
- Create UnifiedMediaModal to replace MediaLibraryModal and bulk album functionality
- Remove redundant MediaLibraryModal and MediaSelector components
- Add media-selection store for better state management
- Add AlbumSelectorModal for album selection workflows
- Add InlineComposerModal for inline content editing
- Improve modal reusability and reduce code duplication

Streamlines media selection with a single, flexible modal component.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:12:13 +01:00
6604032643 refactor(editor): consolidate editors into unified EnhancedComposer
- Create EnhancedComposer as the single unified editor component
- Remove redundant editor components (Editor, EditorWithUpload, CaseStudyEditor, UniverseComposer)
- Add editor-extensions.ts for centralized extension configuration
- Enhance image placeholder with better UI and selection support
- Update editor commands and slash command groups
- Improve editor state management and content handling

Simplifies the codebase by having one powerful editor component instead
of multiple specialized ones.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:11:57 +01:00
27dbdd43c0 fix: improve Cloudinary URL handling and admin navigation
- Fix extractPublicId to handle encoded URLs correctly
- Update admin media page to use goto for client-side navigation
- Add color display to media details modal
- Include color data in media API responses
- Clean up unused imports in audit page

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 02:00:00 +01:00
47e9e300db Update Universe character count and Photos og:desc 2025-06-16 01:38:15 +01:00
cc6eba7df1 Linter 2025-06-13 21:22:49 -04:00
a468668858 Fix styling of embeds in public site 2025-06-13 18:34:59 -04:00
1f7b388a6c Clean up URL cards 2025-06-13 17:40:55 -04:00
b1ddedd586 Embed URL cards 2025-06-13 17:29:29 -04:00
bcbf7e3121 Fix component deprecated errors 2025-06-13 15:12:46 -04:00
a75c8323ee Fix button font 2025-06-13 15:02:19 -04:00
81af86ae7f Add sorts in admin interface 2025-06-13 14:50:22 -04:00
f753d5fb8b Unify fullscreen editors 2025-06-13 14:17:26 -04:00
f1ab953b89 Style changes 2025-06-13 13:03:24 -04:00
3096c0ff51 Updates to MediaUploadModal 2025-06-13 12:43:56 -04:00
6b44c1b7d0 Simplify photos architecture 2025-06-13 06:55:21 -04:00
610a421207 Better single photo view 2025-06-13 03:47:52 -04:00
c50b8e2e53 Add view on site button 2025-06-12 03:28:34 -07:00
c615791090 Fix slug 2025-06-12 03:28:05 -07:00
d63574a09f Fix markdown link saving 2025-06-12 02:07:12 -07:00
6c2555b7c9 Fix sticky toolbar in editor 2025-06-11 02:09:59 -07:00