diff --git a/src/lib/components/admin/AdminSegmentedController.svelte b/src/lib/components/admin/AdminSegmentedController.svelte
deleted file mode 100644
index 54c6fc5..0000000
--- a/src/lib/components/admin/AdminSegmentedController.svelte
+++ /dev/null
@@ -1,205 +0,0 @@
-
-
-
-
-
diff --git a/src/lib/components/admin/AlbumMetadataPopover.svelte b/src/lib/components/admin/AlbumMetadataPopover.svelte
deleted file mode 100644
index b5c4ca3..0000000
--- a/src/lib/components/admin/AlbumMetadataPopover.svelte
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
diff --git a/src/lib/components/admin/BaseSegmentedController.svelte b/src/lib/components/admin/BaseSegmentedController.svelte
deleted file mode 100644
index de3b904..0000000
--- a/src/lib/components/admin/BaseSegmentedController.svelte
+++ /dev/null
@@ -1,340 +0,0 @@
-
-
-
-
-
diff --git a/src/lib/stores/album-stream.ts b/src/lib/stores/album-stream.ts
deleted file mode 100644
index 41df658..0000000
--- a/src/lib/stores/album-stream.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-import { writable, derived, get, type Readable } from 'svelte/store'
-import { browser } from '$app/environment'
-import type { Album } from '$lib/types/lastfm'
-
-interface AlbumStreamState {
- connected: boolean
- albums: Album[]
- lastUpdate: Date | null
-}
-
-function createAlbumStream() {
- const { subscribe, set, update } = writable({
- connected: false,
- albums: [],
- lastUpdate: null
- })
-
- let eventSource: EventSource | null = null
- let reconnectTimeout: NodeJS.Timeout | null = null
- let reconnectAttempts = 0
-
- function connect() {
- if (!browser || eventSource?.readyState === EventSource.OPEN) return
-
- // Don't connect in Storybook
- if (typeof window !== 'undefined' && window.parent !== window) {
- // We're in an iframe, likely Storybook
- console.log('Album stream disabled in Storybook')
- return
- }
-
- // Clean up existing connection
- disconnect()
-
- eventSource = new EventSource('/api/lastfm/stream')
-
- eventSource.addEventListener('connected', () => {
- console.log('Album stream connected')
- reconnectAttempts = 0
- update((state) => ({ ...state, connected: true }))
- })
-
- eventSource.addEventListener('albums', (event) => {
- try {
- const albums: Album[] = JSON.parse(event.data)
- const nowPlayingAlbum = albums.find((a) => a.isNowPlaying)
- console.log('Album stream received albums:', {
- totalAlbums: albums.length,
- nowPlayingAlbum: nowPlayingAlbum
- ? `${nowPlayingAlbum.artist.name} - ${nowPlayingAlbum.name}`
- : 'none'
- })
- update((state) => ({
- ...state,
- albums,
- lastUpdate: new Date()
- }))
- } catch (error) {
- console.error('Error parsing albums update:', error)
- }
- })
-
- eventSource.addEventListener('heartbeat', () => {
- // Heartbeat received, connection is healthy
- })
-
- eventSource.addEventListener('error', (error) => {
- console.error('Album stream error:', error)
- update((state) => ({ ...state, connected: false }))
-
- // Attempt to reconnect with exponential backoff
- if (reconnectAttempts < 5) {
- const delay = Math.min(1000 * Math.pow(2, reconnectAttempts), 30000)
- reconnectTimeout = setTimeout(() => {
- reconnectAttempts++
- connect()
- }, delay)
- }
- })
-
- eventSource.addEventListener('open', () => {
- update((state) => ({ ...state, connected: true }))
- })
- }
-
- function disconnect() {
- if (eventSource) {
- eventSource.close()
- eventSource = null
- }
-
- if (reconnectTimeout) {
- clearTimeout(reconnectTimeout)
- reconnectTimeout = null
- }
-
- update((state) => ({ ...state, connected: false }))
- }
-
- // Auto-connect in browser (but not in admin)
- if (browser && !window.location.pathname.startsWith('/admin')) {
- connect()
-
- // Reconnect on visibility change
- document.addEventListener('visibilitychange', () => {
- const currentState = get({ subscribe })
- if (
- document.visibilityState === 'visible' &&
- !currentState.connected &&
- !window.location.pathname.startsWith('/admin')
- ) {
- connect()
- }
- })
- }
-
- return {
- subscribe,
- connect,
- disconnect,
- // Derived store for just the albums
- albums: derived({ subscribe }, ($state) => $state.albums) as Readable
- }
-}
-
-export const albumStream = createAlbumStream()
diff --git a/src/routes/admin/buttons/+page.svelte b/src/routes/admin/buttons/+page.svelte
deleted file mode 100644
index 64256de..0000000
--- a/src/routes/admin/buttons/+page.svelte
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/routes/admin/form-components-test/+page.svelte b/src/routes/admin/form-components-test/+page.svelte
deleted file mode 100644
index 3ebc1cb..0000000
--- a/src/routes/admin/form-components-test/+page.svelte
+++ /dev/null
@@ -1,293 +0,0 @@
-
-
-
-
-
-
- MediaInput Component
- Generic input component for media selection with preview.
-
-
-
-
-
-
-
-
-
-
-
-
- ImagePicker Component
- Specialized image picker with enhanced preview and aspect ratio support.
-
-
-
-
-
-
-
-
-
-
- GalleryManager Component
- Multiple image management with drag-and-drop reordering.
-
-
-
-
-
-
-
-
-
-
- Form Actions
-
-
-
-
-
-
-
-
- Current Values
-
-
-
Single Media:
-
{JSON.stringify(singleMedia?.filename || null, null, 2)}
-
-
-
-
Multiple Media ({multipleMedia.length}):
-
{JSON.stringify(
- multipleMedia.map((m) => m.filename),
- null,
- 2
- )}
-
-
-
-
Featured Image:
-
{JSON.stringify(featuredImage?.filename || null, null, 2)}
-
-
-
-
Gallery Images ({galleryImages.length}):
-
{JSON.stringify(
- galleryImages.map((m) => m.filename),
- null,
- 2
- )}
-
-
-
-
Project Gallery ({projectGallery.length}):
-
{JSON.stringify(
- projectGallery.map((m) => m.filename),
- null,
- 2
- )}
-
-
-
-
-
-
-
diff --git a/src/routes/admin/image-uploader-test/+page.svelte b/src/routes/admin/image-uploader-test/+page.svelte
deleted file mode 100644
index 222a9f0..0000000
--- a/src/routes/admin/image-uploader-test/+page.svelte
+++ /dev/null
@@ -1,272 +0,0 @@
-
-
-
-
-
-
- Basic Image Upload
- Standard image upload with alt text support.
-
-
-
-
-
-
- Square Logo Upload
- Image upload with 1:1 aspect ratio constraint.
-
-
-
-
-
-
- Banner Image Upload
- Wide banner image with 16:9 aspect ratio.
-
-
-
-
-
-
- Actions
-
-
-
-
-
-
-
-
- Current Values
-
-
-
Single Image:
-
{JSON.stringify(
- singleImage
- ? {
- id: singleImage.id,
- filename: singleImage.filename,
- altText: singleImage.altText,
- description: singleImage.description
- }
- : null,
- null,
- 2
- )}
-
-
-
-
Logo Image:
-
{JSON.stringify(
- logoImage
- ? {
- id: logoImage.id,
- filename: logoImage.filename,
- altText: logoImage.altText,
- description: logoImage.description
- }
- : null,
- null,
- 2
- )}
-
-
-
-
Banner Image:
-
{JSON.stringify(
- bannerImage
- ? {
- id: bannerImage.id,
- filename: bannerImage.filename,
- altText: bannerImage.altText,
- description: bannerImage.description
- }
- : null,
- null,
- 2
- )}
-
-
-
-
-
-
-
diff --git a/src/routes/admin/inputs/+page.svelte b/src/routes/admin/inputs/+page.svelte
deleted file mode 100644
index 47cb1c5..0000000
--- a/src/routes/admin/inputs/+page.svelte
+++ /dev/null
@@ -1,257 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/routes/admin/media-library-test/+page.svelte b/src/routes/admin/media-library-test/+page.svelte
deleted file mode 100644
index bc3178c..0000000
--- a/src/routes/admin/media-library-test/+page.svelte
+++ /dev/null
@@ -1,258 +0,0 @@
-
-
-
-
-
- Single Selection Mode
- Test selecting a single media item.
-
-
-
- {#if selectedSingleMedia}
-
- {/if}
-
-
-
- Multiple Selection Mode
- Test selecting multiple media items.
-
-
-
- {#if selectedMultipleMedia.length > 0}
-
- {/if}
-
-
-
- Image Only Selection
- Test selecting only image files.
-
-
-
-
-
-
-
-
-
-
-
-