From a54d1ef077bddfb00583361d3051ba560c5b337b Mon Sep 17 00:00:00 2001 From: XShine555 Date: Thu, 24 Sep 2026 13:58:13 +0200 Subject: [PATCH] Move store-connected components out of ui/ into components/music and lint the ui boundary --- web-player/eslint.config.js | 28 +++++++++++++++++++ .../overlay => music}/AlbumContextMenu.svelte | 2 +- .../{ui/media => music}/PlayAllButton.svelte | 0 .../overlay => music}/TrackContextMenu.svelte | 2 +- .../{ui/media => music}/TrackList.svelte | 4 +-- web-player/src/routes/(app)/+page.svelte | 4 +-- .../src/routes/(app)/albums/[id]/+page.svelte | 4 +-- .../src/routes/(app)/explore/+page.svelte | 4 +-- .../src/routes/(app)/library/+page.svelte | 2 +- .../src/routes/(app)/liked/+page.svelte | 4 +-- .../src/routes/(app)/mixes/[id]/+page.svelte | 6 ++-- .../routes/(app)/playlists/[id]/+page.svelte | 4 +-- 12 files changed, 46 insertions(+), 18 deletions(-) rename web-player/src/lib/components/{ui/overlay => music}/AlbumContextMenu.svelte (94%) rename web-player/src/lib/components/{ui/media => music}/PlayAllButton.svelte (100%) rename web-player/src/lib/components/{ui/overlay => music}/TrackContextMenu.svelte (91%) rename web-player/src/lib/components/{ui/media => music}/TrackList.svelte (97%) diff --git a/web-player/eslint.config.js b/web-player/eslint.config.js index 8a7a022..64f98d8 100644 --- a/web-player/eslint.config.js +++ b/web-player/eslint.config.js @@ -48,6 +48,34 @@ export default ts.config( '@typescript-eslint/no-unused-expressions': 'off' } }, + { + files: ['src/lib/components/ui/**'], + rules: { + 'no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['../*'], + message: 'Use $lib/... instead of relative parent imports.' + }, + { + group: [ + '$lib/player/*', + '$lib/data/*', + '$lib/server/*', + '$lib/components/music/*', + '$lib/components/shell/*', + '$lib/components/player/*' + ], + message: + 'components/ui is the presentation layer: it cannot depend on app state, data or other component layers.' + } + ] + } + ] + } + }, { ignores: ['build/', '.svelte-kit/', 'static/', 'src/lib/api/schema.d.ts'] } diff --git a/web-player/src/lib/components/ui/overlay/AlbumContextMenu.svelte b/web-player/src/lib/components/music/AlbumContextMenu.svelte similarity index 94% rename from web-player/src/lib/components/ui/overlay/AlbumContextMenu.svelte rename to web-player/src/lib/components/music/AlbumContextMenu.svelte index 12b044c..8a572ce 100644 --- a/web-player/src/lib/components/ui/overlay/AlbumContextMenu.svelte +++ b/web-player/src/lib/components/music/AlbumContextMenu.svelte @@ -5,7 +5,7 @@ import { fetchAlbumTracks } from '$lib/data/albums'; import type { Menu } from '$lib/state/menu.svelte'; import type { Playlist } from '$lib/types'; - import ContextMenu from './ContextMenu.svelte'; + import ContextMenu from '$lib/components/ui/overlay/ContextMenu.svelte'; interface Props { menu: Menu; diff --git a/web-player/src/lib/components/ui/media/PlayAllButton.svelte b/web-player/src/lib/components/music/PlayAllButton.svelte similarity index 100% rename from web-player/src/lib/components/ui/media/PlayAllButton.svelte rename to web-player/src/lib/components/music/PlayAllButton.svelte diff --git a/web-player/src/lib/components/ui/overlay/TrackContextMenu.svelte b/web-player/src/lib/components/music/TrackContextMenu.svelte similarity index 91% rename from web-player/src/lib/components/ui/overlay/TrackContextMenu.svelte rename to web-player/src/lib/components/music/TrackContextMenu.svelte index 4e4bcb1..e5780a5 100644 --- a/web-player/src/lib/components/ui/overlay/TrackContextMenu.svelte +++ b/web-player/src/lib/components/music/TrackContextMenu.svelte @@ -3,7 +3,7 @@ import { player } from '$lib/player/player.svelte'; import type { Menu } from '$lib/state/menu.svelte'; import type { Playlist, Track } from '$lib/types'; - import ContextMenu from './ContextMenu.svelte'; + import ContextMenu from '$lib/components/ui/overlay/ContextMenu.svelte'; interface Props { menu: Menu; diff --git a/web-player/src/lib/components/ui/media/TrackList.svelte b/web-player/src/lib/components/music/TrackList.svelte similarity index 97% rename from web-player/src/lib/components/ui/media/TrackList.svelte rename to web-player/src/lib/components/music/TrackList.svelte index 5327309..38e7ac7 100644 --- a/web-player/src/lib/components/ui/media/TrackList.svelte +++ b/web-player/src/lib/components/music/TrackList.svelte @@ -25,8 +25,8 @@ import { player } from '$lib/player/player.svelte'; import { fmtTime, fmtDate } from '$lib/utils/format'; import { pressable } from '$lib/actions/pressable'; - import MediaIdentity from './MediaIdentity.svelte'; - import EqBars from './EqBars.svelte'; + import MediaIdentity from '$lib/components/ui/media/MediaIdentity.svelte'; + import EqBars from '$lib/components/ui/media/EqBars.svelte'; import IconButton from '$lib/components/ui/primitives/IconButton.svelte'; interface RowAction { diff --git a/web-player/src/routes/(app)/+page.svelte b/web-player/src/routes/(app)/+page.svelte index 9835de5..7feb42c 100644 --- a/web-player/src/routes/(app)/+page.svelte +++ b/web-player/src/routes/(app)/+page.svelte @@ -16,8 +16,8 @@ import SectionHeading from '$lib/components/ui/layout/SectionHeading.svelte'; import EmptyState from '$lib/components/ui/primitives/EmptyState.svelte'; import Button from '$lib/components/ui/primitives/Button.svelte'; - import PlayAllButton from '$lib/components/ui/media/PlayAllButton.svelte'; - import TrackContextMenu from '$lib/components/ui/overlay/TrackContextMenu.svelte'; + import PlayAllButton from '$lib/components/music/PlayAllButton.svelte'; + import TrackContextMenu from '$lib/components/music/TrackContextMenu.svelte'; import { createMenu } from '$lib/state/menu.svelte'; import { HOME_CONTINUE_LIMIT } from '$lib/config'; diff --git a/web-player/src/routes/(app)/albums/[id]/+page.svelte b/web-player/src/routes/(app)/albums/[id]/+page.svelte index fb24a80..530fc5c 100644 --- a/web-player/src/routes/(app)/albums/[id]/+page.svelte +++ b/web-player/src/routes/(app)/albums/[id]/+page.svelte @@ -1,7 +1,7 @@