diff --git a/src/components/MobilePlayerView.tsx b/src/components/MobilePlayerView.tsx index 4c6fe7c0..340564b7 100644 --- a/src/components/MobilePlayerView.tsx +++ b/src/components/MobilePlayerView.tsx @@ -24,8 +24,8 @@ import { } from '@/features/playback/store/queueTrackResolver'; import LyricsPane from './LyricsPane'; import { usePlaybackDelayPress } from '../hooks/usePlaybackDelayPress'; -import PlaybackDelayModal from './PlaybackDelayModal'; -import PlaybackScheduleBadge from './PlaybackScheduleBadge'; +import PlaybackDelayModal from '@/features/playback/components/PlaybackDelayModal'; +import PlaybackScheduleBadge from '@/features/playback/components/PlaybackScheduleBadge'; import { usePlaybackScheduleRemaining } from '../utils/format/playbackScheduleFormat'; // ── Color extraction ────────────────────────────────────────────────────────── diff --git a/src/features/fullscreenPlayer/components/FsPlayBtn.tsx b/src/features/fullscreenPlayer/components/FsPlayBtn.tsx index 1adb9bbe..afd7b83c 100644 --- a/src/features/fullscreenPlayer/components/FsPlayBtn.tsx +++ b/src/features/fullscreenPlayer/components/FsPlayBtn.tsx @@ -4,8 +4,8 @@ import { useTranslation } from 'react-i18next'; import { usePlayerStore } from '@/features/playback/store/playerStore'; import { usePlaybackDelayPress } from '@/hooks/usePlaybackDelayPress'; import { usePlaybackScheduleRemaining } from '@/utils/format/playbackScheduleFormat'; -import PlaybackDelayModal from '@/components/PlaybackDelayModal'; -import PlaybackScheduleBadge from '@/components/PlaybackScheduleBadge'; +import PlaybackDelayModal from '@/features/playback/components/PlaybackDelayModal'; +import PlaybackScheduleBadge from '@/features/playback/components/PlaybackScheduleBadge'; // Play/Pause button (isolated — subscribes to isPlaying only). export const FsPlayBtn = memo(function FsPlayBtn({ diff --git a/src/components/HostApprovalQueue.tsx b/src/features/orbit/components/HostApprovalQueue.tsx similarity index 98% rename from src/components/HostApprovalQueue.tsx rename to src/features/orbit/components/HostApprovalQueue.tsx index 11d639fa..8d84ae04 100644 --- a/src/components/HostApprovalQueue.tsx +++ b/src/features/orbit/components/HostApprovalQueue.tsx @@ -9,7 +9,7 @@ import { declineOrbitSuggestion, suggestionKey, } from '@/features/orbit'; -import { TrackCoverArtImage } from '../cover/TrackCoverArtImage'; +import { TrackCoverArtImage } from '@/cover/TrackCoverArtImage'; import { ORBIT_DEFAULT_SETTINGS } from '@/features/orbit'; const HOST_APPROVAL_COVER_CSS_PX = 36; diff --git a/src/components/PlaybackDelayModal.tsx b/src/features/playback/components/PlaybackDelayModal.tsx similarity index 98% rename from src/components/PlaybackDelayModal.tsx rename to src/features/playback/components/PlaybackDelayModal.tsx index 9fbf7246..06a462d5 100644 --- a/src/components/PlaybackDelayModal.tsx +++ b/src/features/playback/components/PlaybackDelayModal.tsx @@ -3,11 +3,11 @@ import { createPortal } from 'react-dom'; import { X, Moon, Sunrise } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { usePlayerStore } from '@/features/playback/store/playerStore'; -import { useAuthStore } from '../store/authStore'; +import { useAuthStore } from '@/store/authStore'; import { useShallow } from 'zustand/react/shallow'; import type { TFunction } from 'i18next'; -import { formatPlaybackScheduleRemaining } from '../utils/format/playbackScheduleFormat'; +import { formatPlaybackScheduleRemaining } from '@/utils/format/playbackScheduleFormat'; import { formatClockTime } from '@/lib/format/formatClockTime'; import { isValidPlaybackSchedulePreviewTimestamp, diff --git a/src/components/PlaybackScheduleBadge.tsx b/src/features/playback/components/PlaybackScheduleBadge.tsx similarity index 98% rename from src/components/PlaybackScheduleBadge.tsx rename to src/features/playback/components/PlaybackScheduleBadge.tsx index 77c7a4bd..4362d15d 100644 --- a/src/components/PlaybackScheduleBadge.tsx +++ b/src/features/playback/components/PlaybackScheduleBadge.tsx @@ -3,7 +3,7 @@ import { createPortal } from 'react-dom'; import { useTranslation } from 'react-i18next'; import { usePlayerStore } from '@/features/playback/store/playerStore'; import { useShallow } from 'zustand/react/shallow'; -import { formatPlaybackScheduleRemaining } from '../utils/format/playbackScheduleFormat'; +import { formatPlaybackScheduleRemaining } from '@/utils/format/playbackScheduleFormat'; import { useWindowVisibility } from '@/lib/hooks/useWindowVisibility'; export interface PlaybackScheduleBadgeProps { diff --git a/src/features/playback/components/PlayerBar.tsx b/src/features/playback/components/PlayerBar.tsx index 469bf80e..a00518df 100644 --- a/src/features/playback/components/PlayerBar.tsx +++ b/src/features/playback/components/PlayerBar.tsx @@ -18,7 +18,7 @@ import { usePlaybackLibraryNavigate } from '@/hooks/usePlaybackLibraryNavigate'; import { useRadioMetadata } from '@/features/radio'; import { useRadioMprisSync } from '@/features/radio'; import { usePlaybackDelayPress } from '@/hooks/usePlaybackDelayPress'; -import PlaybackDelayModal from '@/components/PlaybackDelayModal'; +import PlaybackDelayModal from '@/features/playback/components/PlaybackDelayModal'; import { usePlaybackScheduleRemaining } from '@/utils/format/playbackScheduleFormat'; import { usePreviewStore } from '@/features/playback/store/previewStore'; import { usePerfProbeFlags } from '@/utils/perf/perfFlags'; diff --git a/src/features/playback/components/playerBar/PlayerTransportControls.tsx b/src/features/playback/components/playerBar/PlayerTransportControls.tsx index 7958b76d..ffa7f66f 100644 --- a/src/features/playback/components/playerBar/PlayerTransportControls.tsx +++ b/src/features/playback/components/playerBar/PlayerTransportControls.tsx @@ -5,7 +5,7 @@ import type { TFunction } from 'i18next'; import type { PlayerState } from '@/features/playback/store/playerStoreTypes'; import { useAutodjTransitionUi } from '@/features/playback/store/autodjTransitionUi'; import { usePreviewStore } from '@/features/playback/store/previewStore'; -import PlaybackScheduleBadge from '@/components/PlaybackScheduleBadge'; +import PlaybackScheduleBadge from '@/features/playback/components/PlaybackScheduleBadge'; import { usePlaybackDelayPress } from '@/hooks/usePlaybackDelayPress'; import { usePlaybackScheduleRemaining } from '@/utils/format/playbackScheduleFormat'; diff --git a/src/features/queue/components/QueuePanel.tsx b/src/features/queue/components/QueuePanel.tsx index 2848fe0a..9dbdd5eb 100644 --- a/src/features/queue/components/QueuePanel.tsx +++ b/src/features/queue/components/QueuePanel.tsx @@ -7,7 +7,7 @@ import { useState, useRef, useMemo } from 'react'; import { usePlayerStore } from '@/features/playback/store/playerStore'; import { useOrbitStore } from '@/features/orbit'; import { OrbitGuestQueue, OrbitQueueHead } from '@/features/orbit'; -import HostApprovalQueue from '@/components/HostApprovalQueue'; +import HostApprovalQueue from '@/features/orbit/components/HostApprovalQueue'; import { usePlaylistStore } from '@/features/playlist'; import { useTranslation } from 'react-i18next'; import { usePlaybackLibraryNavigate } from '@/hooks/usePlaybackLibraryNavigate'; diff --git a/src/components/LicensesPanel.tsx b/src/features/settings/components/LicensesPanel.tsx similarity index 99% rename from src/components/LicensesPanel.tsx rename to src/features/settings/components/LicensesPanel.tsx index 7d804658..00d5b72a 100644 --- a/src/components/LicensesPanel.tsx +++ b/src/features/settings/components/LicensesPanel.tsx @@ -8,8 +8,8 @@ import { loadLicensesData, type LicenseEntry, type LicensesData, -} from '../utils/licensesData'; -import LicenseTextModal from './LicenseTextModal'; +} from '@/utils/licensesData'; +import LicenseTextModal from '@/components/LicenseTextModal'; const ROW_HEIGHT = 56; diff --git a/src/features/settings/components/SystemTab.tsx b/src/features/settings/components/SystemTab.tsx index 50f925c1..f06d4a9d 100644 --- a/src/features/settings/components/SystemTab.tsx +++ b/src/features/settings/components/SystemTab.tsx @@ -13,7 +13,7 @@ import { IS_LINUX } from '@/lib/util/platform'; import { showToast } from '@/utils/ui/toast'; import { AboutPsysonicBrandHeader } from '@/components/AboutPsysonicLol'; import CustomSelect from '@/ui/CustomSelect'; -import LicensesPanel from '@/components/LicensesPanel'; +import LicensesPanel from '@/features/settings/components/LicensesPanel'; import SettingsSubSection from '@/features/settings/components/SettingsSubSection'; import { SettingsGroup } from '@/features/settings/components/SettingsGroup'; import { SettingsToggle } from '@/features/settings/components/SettingsToggle';