Commit graph

168 commits

Author SHA1 Message Date
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
5370ae020d refactor: consolidate photo grid components into unified PhotoGrid
- Create single PhotoGrid component with columns (1,2,3,auto) and masonry options
- Remove 5 duplicate grid components
- Update HorizontalScrollPhotoGrid to HorizontalPhotoScroll with Photo type
- Add interactive test page for PhotoGrid
- Update all pages to use new unified component
- Use svelte-bricks for proper masonry layout
- Single column always uses natural aspect ratios
- Square thumbnails (object-fit: cover) for multi-column non-masonry layouts

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-26 08:13:30 -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
ba50981e09 fix: restore avatar eyes by replacing $dark-blue with hex value
The Avatar component was also using $dark-blue as a string literal
in the SVG paths, which needed to be replaced with the actual hex
value #070610.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:08:17 -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
cf35980104 fix: resolve build errors from variable refactoring
- Add missing variables: $unit-22x, $gray-5, $salmon-pink
- Fix AvatarSVG.svelte to use actual color values instead of SCSS variables
- SVG fill attributes cannot use SCSS variables directly

This resolves all preprocessing errors after the color system refactor.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 22:04:36 -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
9d201a7583 refactor: implement comprehensive color scale system
Major improvements to the color system:

1. Create proper color scales (00-100) for:
   - Gray: 14 shades from darkest to lightest
   - Red: 12 shades with brand colors
   - Blue: 12 shades for primary colors
   - Yellow: 12 shades for warnings
   - Green: 12 shades for success states
   - Orange: 12 shades for secondary accents

2. Semantic color assignments:
   - Map all semantic colors to scale values
   - Background colors use gray scale
   - Text colors use appropriate gray shades
   - Status colors (success, error, warning, info)
   - Component-specific colors reference scales

3. Backward compatibility:
   - Maintain $grey-* aliases for existing code
   - Map old variables to new scale system
   - TODO comments for future migration

This provides a more maintainable and scalable color system.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 21:28:37 -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
ddfe1cac8f refactor: remove 5 unused components
- Remove Squiggly.svelte
- Remove PhotoLightbox.svelte
- Remove Pill.svelte
- Remove SVGHoverEffect.svelte
- Remove MusicPreview.svelte

These components were identified as unused in the codebase analysis.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 21:00:49 -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
fb01527469 feat: add tooltips to link bubble menu buttons
- Create reusable tooltip action using Tippy.js
- Add tooltips to link menu buttons (copy, edit, open, remove)
- Implement visual feedback with green flash animation on URL copy
- Configure bubble menu scale animation for smooth appearance
- Add scoped tooltip styles with dark theme

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-25 01:06:17 +01:00
ae15e7978c fix: reorder universe card content and update truncation logic
- Move embeds to display before text content in UniversePostCard
- Show full content for non-essay posts (no truncation)
- Increase essay truncation limit from 150 to 300 characters
- Add styles to hide duplicate embeds in rendered content

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 18:07:51 +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
ce13e5225d feat(ui): update components and stores for album support
- Update NavDropdown with album navigation support
- Enhance UniverseAlbumCard with better styling
- Update album-stream store for new album structure
- Improve now-playing-stream with better error handling
- Add TypeScript improvements throughout
- Better component prop validation

Enhances UI components for the new album system.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:15:12 +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
52df43b667 feat(editor): improve gallery and image components
- Enhance GalleryExtended with better layout options
- Update GalleryPlaceholder with improved media selection
- Improve ImagePlaceholder with better preview handling
- Add support for multiple gallery layouts
- Improve component styling and interactions
- Better integration with UnifiedMediaModal

Enhances content editing with improved media components.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:14:23 +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
02e41ed3d6 feat(photos): enhance photo viewing with improved grids and metadata
- Add PhotoGrid component as base for photo grid layouts
- Update PhotoItem with color placeholder loading states
- Enhance PhotoMetadata display with better formatting
- Improve PhotoViewEnhanced with smoother transitions
- Update single and two-column grid layouts
- Fix photo routing for album-based photo URLs
- Add support for direct photo ID routes
- Improve photo page performance and loading states

Creates a more polished photo viewing experience.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:13:31 +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
8627b1d574 feat(editor): add geolocation support for content editing
- Add geolocation Tiptap extension for embedding maps
- Create GeolocationExtended component for rendering map embeds
- Create GeolocationPlaceholder for editor insertion
- Add GeoCard component for displaying location data
- Support latitude, longitude, zoom level, and optional labels
- Enable location-based content in albums and posts

Allows editors to embed interactive maps with specific locations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:12:34 +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
bb434d40dc Change default view 2025-06-19 11:27:21 +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
aa0677090b feat: enhance photo loading with color placeholders
- Use dominant color as placeholder background while images load
- Add aspect ratio support for proper image dimensions
- Improve loading state with smoother transitions
- Remove shimmer animation in favor of solid color placeholders

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:59:23 +01:00
26ef48fa95 Update ViewModeSelector with new view modes
- Add two-column view mode option
- Import new view mode icons
- Hide selector on mobile devices
- Update ViewMode type to include all options

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:55:18 +01:00
049b6be57f Add new photo grid view components
- SingleColumnPhotoGrid: Displays photos in a single centered column
- TwoColumnPhotoGrid: Splits photos evenly between two columns
- HorizontalScrollPhotoGrid: Shows photos in a horizontal scrolling view

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:55:04 +01:00
ba37e9829e Add and update view mode icons
- Update view-single icon with text representation
- Add view-horizontal icon with side scroll indicator
- Add view-two-column icon for two-column layout
- Simplify width-normal and width-wide icons

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:54:50 +01:00
b2488bd301 Add ViewModeSelector component with width controls
- Create ViewModeSelector component with masonry view mode button
- Add width toggle controls (normal 700px / wide 900px)
- Create width-normal and width-wide SVG icons
- Integrate component into photos route with smooth transitions
- Use SCSS variables throughout for consistent styling

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 10:26:14 +01:00
a69f1098de Revert masonry thumbnail change 2025-06-18 04:36:47 +01:00
4aaf33f19e Ran linter 2025-06-16 17:05:43 +01:00
5bd4c40342 Fix masonry gap 2025-06-16 13:32:16 +01:00
f540aed895 Add new layout to album pages and remove tests and PhotoGrid 2025-06-16 10:10:59 +01:00
6132c17a9b Add better masonry and infinite scrolling 2025-06-16 09:58:07 +01:00
47e9e300db Update Universe character count and Photos og:desc 2025-06-16 01:38:15 +01:00
4ffcb25a67 Updates for now playing 2025-06-14 18:52:13 -04:00
090b2b95bd Stream new albums over SSE 2025-06-14 14:42:08 -04:00
1bbc4260de Update album component motion and interaction 2025-06-14 14:33:29 -04:00
188e95f597 Update Album to use new Svelte 5 motion 2025-06-14 14:17:59 -04:00
4a99aca101 Use new Avatar component 2025-06-14 14:09:08 -04:00
b7e9deb087 Fix visual bug with Albums 2025-06-14 11:42:41 -04:00
dd8f97979c Now playing refinements 2025-06-14 10:42:26 -04:00