diff --git a/mobile/src/routes/+layout.svelte b/mobile/src/routes/+layout.svelte
index f16e2ae..f89ec5a 100644
--- a/mobile/src/routes/+layout.svelte
+++ b/mobile/src/routes/+layout.svelte
@@ -1,7 +1,7 @@
{@render children()}
diff --git a/mobile/src/routes/+layout.ts b/mobile/src/routes/+layout.ts
index 9d24899..2696395 100644
--- a/mobile/src/routes/+layout.ts
+++ b/mobile/src/routes/+layout.ts
@@ -2,4 +2,4 @@
// so we use adapter-static with a fallback to index.html to put the site in SPA mode
// See: https://svelte.dev/docs/kit/single-page-apps
// See: https://v2.tauri.app/start/frontend/sveltekit/ for more info
-export const ssr = false;
+export const ssr = false
diff --git a/mobile/src/routes/+page.svelte b/mobile/src/routes/+page.svelte
index b4f7a94..79f1fc2 100644
--- a/mobile/src/routes/+page.svelte
+++ b/mobile/src/routes/+page.svelte
@@ -1,82 +1,86 @@
-
- {#if error}
-
⚠ {error}
- {/if}
-
- {#snippet open_button()}
-
- {loading ? 'Loading…' : 'Open'}
-
- {/snippet}
+
+ {#if error}
+
+ ⚠ {error}
+
+ {/if}
+ {#snippet open_button()}
+
+ {loading ? 'Loading…' : 'Open'}
+
+ {/snippet}
- {#if library}
-
- {:else}
-
-
♪
-
-
No library loaded
-
- {@render open_button()}
-
-
-
+ {#if library}
+
+ {:else}
+
+
♪
+
+
No library loaded
+
+ {@render open_button()}
+
+
+
{/if}
diff --git a/mobile/src/routes/Library.svelte b/mobile/src/routes/Library.svelte
index 41924b8..71c1386 100644
--- a/mobile/src/routes/Library.svelte
+++ b/mobile/src/routes/Library.svelte
@@ -1,369 +1,461 @@
-
-
-
-
-
- {#if error}
-
⚠ {error}
- {/if}
-
-
- {#if view.kind === 'browser'}
-
- {#if current_children.length > 0}
-
- {#each current_children as child_id}
- {@const tl = get_tracklist(child_id)}
- {#if tl?.type === 'folder'}
-
- open_folder(child_id)}
- class="w-full flex items-center gap-3 px-4 py-3.5 hover:bg-neutral-100/50 dark:hover:bg-neutral-800/50 active:bg-neutral-100 dark:active:bg-neutral-800 transition-colors text-left"
- >
-
-
-
-
-
{tl.name}
-
- {tl.children.length} {tl.children.length === 1 ? 'item' : 'items'} · {count_tracks_in(child_id)} tracks
-
-
- ›
-
-
- {:else if tl?.type === 'playlist'}
-
- open_playlist(child_id)}
- class="w-full flex items-center gap-3 px-4 py-3.5 hover:bg-neutral-100/50 dark:hover:bg-neutral-800/50 active:bg-neutral-100 dark:active:bg-neutral-800 transition-colors text-left"
- >
-
-
-
-
-
{tl.name}
-
- {tl.tracks.length} {tl.tracks.length === 1 ? 'track' : 'tracks'}{tl.liked ? ' · ♥' : ''}
-
-
- ›
-
-
- {/if}
- {/each}
-
- {:else}
-
This folder is empty
- {/if}
-
-
-
- {:else if view.kind === 'tracks'}
-
-
-
-
- active_filter = { kind: 'all' }}
- class="shrink-0 px-2.5 py-1 rounded-full text-xs border transition-colors {active_filter.kind === 'all' ? 'bg-neutral-200 border-neutral-200 text-neutral-900 font-semibold' : 'border-neutral-300 dark:border-neutral-700 text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300'}">
- All
-
- active_filter = { kind: 'liked' }}
- class="shrink-0 px-2.5 py-1 rounded-full text-xs border transition-colors {active_filter.kind === 'liked' ? 'bg-rose-100 dark:bg-rose-900 border-rose-300 dark:border-rose-700 text-rose-700 dark:text-rose-200 font-semibold' : 'border-neutral-300 dark:border-neutral-700 text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300'}">
- ♥ Liked
-
- {#each genres as genre}
- active_filter = { kind: 'genre', value: genre }}
- class="shrink-0 px-2.5 py-1 rounded-full text-xs border transition-colors {active_filter.kind === 'genre' && active_filter.value === genre ? 'bg-neutral-200 dark:bg-neutral-700 border-neutral-400 dark:border-neutral-600 text-neutral-900 dark:text-neutral-100 font-semibold' : 'border-neutral-300 dark:border-neutral-700 text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-300'}">
- {genre}
-
- {/each}
-
-
-
-
- {#if filtered_tracks.length > 0}
-
- {:else}
-
-
⌕
-
No tracks match your search or filter
-
- {/if}
-
- {/if}
-
+
+
+
+
+ {#if error}
+
+ ⚠ {error}
+
+ {/if}
+
+
+ {#if view.kind === 'browser'}
+
+ {#if current_children.length > 0}
+
+ {#each current_children as child_id}
+ {@const tl = get_tracklist(child_id)}
+ {#if tl?.type === 'folder'}
+
+ open_folder(child_id)}
+ class="flex w-full items-center gap-3 px-4 py-3.5 text-left transition-colors hover:bg-neutral-100/50 active:bg-neutral-100 dark:hover:bg-neutral-800/50 dark:active:bg-neutral-800"
+ >
+
+
+
+
+
+ {tl.name}
+
+
+ {tl.children.length}
+ {tl.children.length === 1 ? 'item' : 'items'} · {count_tracks_in(child_id)} tracks
+
+
+ ›
+
+
+ {:else if tl?.type === 'playlist'}
+
+ open_playlist(child_id)}
+ class="flex w-full items-center gap-3 px-4 py-3.5 text-left transition-colors hover:bg-neutral-100/50 active:bg-neutral-100 dark:hover:bg-neutral-800/50 dark:active:bg-neutral-800"
+ >
+
+
+
+
+
+ {tl.name}
+
+
+ {tl.tracks.length}
+ {tl.tracks.length === 1 ? 'track' : 'tracks'}{tl.liked ? ' · ♥' : ''}
+
+
+ ›
+
+
+ {/if}
+ {/each}
+
+ {:else}
+
+ This folder is empty
+
+ {/if}
+
+
+
+ {:else if view.kind === 'tracks'}
+
+
+
+
+ (active_filter = { kind: 'all' })}
+ class="shrink-0 rounded-full border px-2.5 py-1 text-xs transition-colors {active_filter.kind ===
+ 'all'
+ ? 'border-neutral-200 bg-neutral-200 font-semibold text-neutral-900'
+ : 'border-neutral-300 text-neutral-500 hover:text-neutral-600 dark:border-neutral-700 dark:hover:text-neutral-300'}"
+ >
+ All
+
+ (active_filter = { kind: 'liked' })}
+ class="shrink-0 rounded-full border px-2.5 py-1 text-xs transition-colors {active_filter.kind ===
+ 'liked'
+ ? 'border-rose-300 bg-rose-100 font-semibold text-rose-700 dark:border-rose-700 dark:bg-rose-900 dark:text-rose-200'
+ : 'border-neutral-300 text-neutral-500 hover:text-neutral-600 dark:border-neutral-700 dark:hover:text-neutral-300'}"
+ >
+ ♥ Liked
+
+ {#each genres as genre}
+ (active_filter = { kind: 'genre', value: genre })}
+ class="shrink-0 rounded-full border px-2.5 py-1 text-xs transition-colors {active_filter.kind ===
+ 'genre' && active_filter.value === genre
+ ? 'border-neutral-400 bg-neutral-200 font-semibold text-neutral-900 dark:border-neutral-600 dark:bg-neutral-700 dark:text-neutral-100'
+ : 'border-neutral-300 text-neutral-500 hover:text-neutral-600 dark:border-neutral-700 dark:hover:text-neutral-300'}"
+ >
+ {genre}
+
+ {/each}
+
+
+
+
+ {#if filtered_tracks.length > 0}
+
+ {:else}
+
+
⌕
+
No tracks match your search or filter
+
+ {/if}
+
+ {/if}