Commit graph

25 commits

Author SHA1 Message Date
Michael Winter 8bb72b5d48 Update header layout; remove page titles from body; add text links for audio/video/images 2026-03-07 14:03:53 +01:00
Michael Winter 97debc4d10 Redesign with hamburger menu and separate pages for pieces/writings/albums/performances/lectures 2026-03-07 11:28:55 +01:00
Michael Winter 6e9f859d59 Make mobile and desktop behave identically
- Remove isMobile() function from IconButton and works page
- Remove mobile-specific conditionals for score and document icons
- Always show nav and score iframe on works page
- No more hydration mismatch - same HTML on server and client
2026-03-06 18:53:35 +01:00
Michael Winter 1bbb7e0250 Fix mobile handling for score and document icons
- Score icon: mobile downloads PDF, desktop opens modal
- Document icon: reverts to same behavior on mobile and desktop (opens modal)
- Remove console.log from isMobile
- Remove documentLink computed property
2026-03-06 18:36:40 +01:00
Michael Winter 54ab2d8b24 Add CSS-only mobile handling for PDFs
- Score icon: mobile downloads PDF, desktop opens modal
- Document icon: mobile downloads PDF, desktop opens modal
- Works page: mobile hides score iframe, Score link downloads PDF
- Uses pure CSS (md:hidden/hidden md:block) - no JS needed
2026-03-06 17:12:33 +01:00
Michael Winter d5fc1eed21 Add mobile-friendly
PDF handling- Score icon on mobile: direct link to PDF triggers download
- Works page: hide score iframe on mobile, Score link downloads PDF
- Desktop behavior unchanged
2026-03-06 16:31:36 +01:00
Michael Winter 8f73a3388e Clean up navigation links with hover underline
- Add hover:underline to header nav links
- Add hover:underline to works links
- Rename /work/ route to /works/
- Include works.json manual tweak
2026-03-06 15:49:29 +01:00
Michael Winter 6ffe5aa1fc Add work pages with hash-based modal URLs and proper 404 handling
- Create dedicated /work/[slug] pages with sticky nav
- Use hash URLs (#type|slug) for modals instead of work page URLs
- Make works without items non-clickable on index
- Add server route to return 404 for non-existent score files
2026-03-06 15:08:30 +01:00
Michael Winter 635cbe0482 Add shareable work pages with modal support
- Create IndexContent component to avoid code duplication
- Score icon links to /work/[slug] with clean URLs
- Modal opens automatically via slug prop (works with SSR)
- Crawler finds and prerenders all /work/ pages (145 routes)
- Work page redirects to / when modal closes
- Single source of truth for data fetching in IndexContent
2026-03-06 10:23:45 +01:00
Michael Winter 9af20c1e5d Add shareable URLs for works with scores
- Score icon updates URL to /?work=[slug] without navigation
- Modal closes to reset URL back to /
- Direct /work/[slug] access redirects to /?work=[slug]
- Index page opens modal when ?work= query param is present
- Works with SSG/prerendering for /?work= routes
2026-03-06 09:19:25 +01:00
Michael Winter 1089c9fe92 Use NuxtImg consistently for all images 2026-02-19 16:54:14 +01:00
Michael Winter 47993f76cb Fix PDF document buttons not opening in writings 2026-02-19 16:32:57 +01:00
Michael Winter 57014401ff Add internal page iframe modal, fix video scaling, and update max-width 2026-02-19 03:51:50 +01:00
Michael Winter af0dc19861 Open external links in new tab for buy and discogs buttons 2026-02-19 03:12:03 +01:00
Michael Winter 9d7ecd3dd1 Adjust carousel navigation arrows and spacing 2026-02-19 02:46:16 +01:00
Michael Winter 4bf23f0d25 Fix image carousel sizing and modal height for audio 2026-02-19 02:27:15 +01:00
Michael Winter 9d1391eae0 Add SoundCloud player to image modal when audio available 2026-02-19 02:09:33 +01:00
Michael Winter 62453e7188 Add SoundCloud player to PDF modal when audio available 2026-02-19 01:58:44 +01:00
Michael Winter 3c1dea94ce Fix video modal sizing and remove modal bottom padding 2026-02-19 01:37:29 +01:00
Michael Winter 2ed382c741 Open PDFs in modal iframe instead of new tab 2026-02-19 01:09:17 +01:00
Michael Winter 58c10d98c3 Revert "Add PDF viewer modal with @vue-pdf-viewer"
This reverts commit 85e2a7b28c.
2026-02-18 22:05:02 +01:00
Michael Winter 85e2a7b28c Add PDF viewer modal with @vue-pdf-viewer 2026-02-18 22:04:15 +01:00
Michael Winter 711b5b93c2 Clean up data files and fix icon/PDF links
- Clean all JSON data files: convert MongoDB format to clean JSON
  - works.json, images.json, publications.json, pubs.json, talks.json
  - releases.json, album_art.json, scores.json, my_image_gallery.json
  - events.json (with legacy program → program transformation)
  - resume.json (simplified structure)
- Simplify all API routes (remove cleanData functions)
- Fix PDF links to open in new tab (scores, writings, albums)
- Upgrade to Nuxt 4.3.1 and fix carousel (nuxt-swiper)
- Replace nuxt-icon with @nuxt/icon
- Fix IconButton component for new tab links
- Update cv.vue for resume data structure changes
- Add icon collections (@iconify-json packages)
2026-02-18 20:16:09 +01:00
Michael Winter 61332c28ef Upgrade to Nuxt 4 and fix icon issues
- Upgrade from Nuxt 3.6.0 to Nuxt 4.3.1
- Replace nuxt-icon with @nuxt/icon (Nuxt 4 compatible)
- Install missing icon collections (@iconify-json/ion, heroicons, etc.)
- Fix icon colors: use style instead of color prop
- Add AGENTS.md with coding guidelines
- Fix icon alignment in index.vue (items-center)
2026-02-18 17:34:37 +01:00
Michael Winter 22a3b8d00f Initial commit: Nuxt portfolio with local data 2026-02-18 03:06:14 +01:00