From a081b85efc481793e2b57c818bad69deca0e22dd Mon Sep 17 00:00:00 2001 From: XShine555 Date: Fri, 25 Sep 2026 02:40:50 +0200 Subject: [PATCH] Restore the invitations tab, render library tracks on first paint and re-measure the tab indicator --- .../music/library/LibraryTracksSection.svelte | 2 ++ .../lib/components/ui/primitives/Tabs.svelte | 17 +++++++++++++++-- .../src/routes/(app)/library/+layout.svelte | 5 +++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/web-player/src/lib/components/music/library/LibraryTracksSection.svelte b/web-player/src/lib/components/music/library/LibraryTracksSection.svelte index 71cc45b..93ba321 100644 --- a/web-player/src/lib/components/music/library/LibraryTracksSection.svelte +++ b/web-player/src/lib/components/music/library/LibraryTracksSection.svelte @@ -57,6 +57,8 @@ (track) => track.id ); + untrack(() => list.reset(tracks)); + let search = $state(''); let selectedIds = $state([]); let pendingDelete = $state([]); diff --git a/web-player/src/lib/components/ui/primitives/Tabs.svelte b/web-player/src/lib/components/ui/primitives/Tabs.svelte index 3248908..18e0ec1 100644 --- a/web-player/src/lib/components/ui/primitives/Tabs.svelte +++ b/web-player/src/lib/components/ui/primitives/Tabs.svelte @@ -21,16 +21,29 @@ const activeHref = $derived(tabs.find((tab) => tab.active)?.href); - $effect(() => { + let nav = $state(); + + function measure() { const link = activeHref ? links[activeHref] : undefined; - if (!link) return; + if (!link || link.offsetWidth === 0) return; indicator = { x: link.offsetLeft, width: link.offsetWidth }; measured = true; if (!animated) requestAnimationFrame(() => (animated = true)); + } + + $effect(measure); + + $effect(() => { + if (!nav) return; + const observer = new ResizeObserver(() => measure()); + observer.observe(nav); + for (const link of Object.values(links)) if (link) observer.observe(link); + return () => observer.disconnect(); });