diff --git a/src/i18n/lang/en-US/comp.ts b/src/i18n/lang/en-US/comp.ts index 3e2000b..1972e18 100644 --- a/src/i18n/lang/en-US/comp.ts +++ b/src/i18n/lang/en-US/comp.ts @@ -127,7 +127,7 @@ export default { title: 'Recommended MVs' }, newAlbum: { - title: 'New Albums', + title: 'Albums', empty: 'No new albums' }, recommendNewMusic: { @@ -153,6 +153,23 @@ export default { toplistDesc: 'Trending now', mvDesc: 'Music videos', playlistDesc: 'Curated playlists', + personalFm: 'Personal FM', + discoverMusic: 'Discover Music', + personalFmDesc: 'Based on your taste', + recentPlays: 'Recent Plays', + viewAll: 'View All', + followedArtists: 'Followed Artists', + newSongs: ' new songs', + fromFollowedArtists: 'From artists you follow', + recommendNewMusic: 'New Music', + newSongExpress: 'New Releases', + discoverNewReleases: 'Discover the latest releases', + hotPlaylists: 'Hot Playlists', + hotArtists: 'Hot Artists', + hotArtistsTitle: 'Popular Artists', + hotArtistsDesc: 'Most popular artists right now', + fmTrash: 'Dislike', + fmNext: 'Next', quickNav: { myFavorite: 'My Favorites', playHistory: 'History', diff --git a/src/i18n/lang/ja-JP/comp.ts b/src/i18n/lang/ja-JP/comp.ts index c130d94..d1b0bf0 100644 --- a/src/i18n/lang/ja-JP/comp.ts +++ b/src/i18n/lang/ja-JP/comp.ts @@ -127,7 +127,7 @@ export default { title: 'おすすめMV' }, newAlbum: { - title: '新着アルバム', + title: 'アルバム', empty: '新しいアルバムがありません' }, recommendNewMusic: { @@ -153,6 +153,23 @@ export default { toplistDesc: 'トレンド', mvDesc: 'ミュージックビデオ', playlistDesc: '厳選プレイリスト', + personalFm: 'パーソナルFM', + discoverMusic: '新しい音楽を発見', + personalFmDesc: 'あなたの好みに基づいて', + recentPlays: '最近再生した曲', + viewAll: 'すべて表示', + followedArtists: 'フォロー中', + newSongs: '曲の新曲', + fromFollowedArtists: 'フォロー中のアーティストから', + recommendNewMusic: 'おすすめ新曲', + newSongExpress: '新曲速報', + discoverNewReleases: '最新リリースを見つけよう', + hotPlaylists: '人気プレイリスト', + hotArtists: '人気アーティスト', + hotArtistsTitle: '人気アーティスト', + hotArtistsDesc: '今最も人気のあるアーティスト', + fmTrash: '嫌い', + fmNext: '次へ', quickNav: { myFavorite: 'お気に入り', playHistory: '再生履歴', diff --git a/src/i18n/lang/ko-KR/comp.ts b/src/i18n/lang/ko-KR/comp.ts index 90cf3fe..8acb640 100644 --- a/src/i18n/lang/ko-KR/comp.ts +++ b/src/i18n/lang/ko-KR/comp.ts @@ -126,7 +126,7 @@ export default { title: '추천 MV' }, newAlbum: { - title: '신곡 앨범', + title: '앨범', empty: '새 앨범이 없습니다' }, recommendNewMusic: { @@ -152,6 +152,23 @@ export default { toplistDesc: '인기 차트', mvDesc: '뮤직비디오', playlistDesc: '엄선된 플레이리스트', + personalFm: '개인 FM', + discoverMusic: '새로운 음악 발견', + personalFmDesc: '취향에 맞춘 추천', + recentPlays: '최근 재생', + viewAll: '전체 보기', + followedArtists: '팔로우 아티스트', + newSongs: '곡의 신곡', + fromFollowedArtists: '팔로우한 아티스트의 신곡', + recommendNewMusic: '추천 신곡', + newSongExpress: '신곡 속보', + discoverNewReleases: '최신 발매 곡을 발견하세요', + hotPlaylists: '인기 플레이리스트', + hotArtists: '인기 아티스트', + hotArtistsTitle: '인기 아티스트', + hotArtistsDesc: '지금 가장 인기 있는 아티스트', + fmTrash: '싫어요', + fmNext: '다음', quickNav: { myFavorite: '내 즐겨찾기', playHistory: '재생 기록', diff --git a/src/i18n/lang/zh-CN/comp.ts b/src/i18n/lang/zh-CN/comp.ts index 800b7b5..f6a0f98 100644 --- a/src/i18n/lang/zh-CN/comp.ts +++ b/src/i18n/lang/zh-CN/comp.ts @@ -120,7 +120,7 @@ export default { title: '推荐MV' }, newAlbum: { - title: '新碟上架', + title: '专辑', empty: '暂无新专辑' }, recommendNewMusic: { @@ -146,6 +146,23 @@ export default { toplistDesc: '热门榜单', mvDesc: '音乐视频', playlistDesc: '精选歌单', + personalFm: '私人FM', + discoverMusic: '发现新音乐', + personalFmDesc: '根据你的喜好推荐', + recentPlays: '最近播放', + viewAll: '查看全部', + followedArtists: '关注歌手', + newSongs: '首新歌', + fromFollowedArtists: '来自你关注的歌手', + recommendNewMusic: '推荐新音乐', + newSongExpress: '新歌速递', + discoverNewReleases: '发现最新发行的好歌', + hotPlaylists: '精选歌单', + hotArtists: '热门歌手', + hotArtistsTitle: '热门艺人', + hotArtistsDesc: '当下最受欢迎的歌手', + fmTrash: '不喜欢', + fmNext: '下一首', quickNav: { myFavorite: '我的收藏', playHistory: '播放历史', diff --git a/src/i18n/lang/zh-Hant/comp.ts b/src/i18n/lang/zh-Hant/comp.ts index ee6af30..fd271ce 100644 --- a/src/i18n/lang/zh-Hant/comp.ts +++ b/src/i18n/lang/zh-Hant/comp.ts @@ -120,7 +120,7 @@ export default { title: '推薦MV' }, newAlbum: { - title: '新碟上架', + title: '專輯', empty: '暫無新專輯' }, recommendNewMusic: { @@ -146,6 +146,23 @@ export default { toplistDesc: '熱門榜單', mvDesc: '音樂視訊', playlistDesc: '精選播放清單', + personalFm: '私人FM', + discoverMusic: '發現新音樂', + personalFmDesc: '根據你的喜好推薦', + recentPlays: '最近播放', + viewAll: '查看全部', + followedArtists: '關注歌手', + newSongs: '首新歌', + fromFollowedArtists: '來自你關注的歌手', + recommendNewMusic: '推薦新音樂', + newSongExpress: '新歌速遞', + discoverNewReleases: '發現最新發行的好歌', + hotPlaylists: '精選歌單', + hotArtists: '熱門歌手', + hotArtistsTitle: '熱門藝人', + hotArtistsDesc: '當下最受歡迎的歌手', + fmTrash: '不喜歡', + fmNext: '下一首', quickNav: { myFavorite: '我的收藏', playHistory: '播放歷史', diff --git a/src/renderer/components/common/CategorySelector.vue b/src/renderer/components/common/CategorySelector.vue index 8c6e0d8..d247dfb 100644 --- a/src/renderer/components/common/CategorySelector.vue +++ b/src/renderer/components/common/CategorySelector.vue @@ -12,6 +12,7 @@ class="py-1.5 px-4 mr-3 inline-block rounded-full cursor-pointer transition-all duration-300 text-sm font-medium bg-gray-100 dark:bg-neutral-800 text-neutral-600 dark:text-neutral-400 hover:bg-gray-200 dark:hover:bg-neutral-700 hover:text-neutral-900 dark:hover:text-white" :class="[ animationClass, + index === 0 ? 'ml-0.5' : '', isActive(category) ? 'bg-primary text-white shadow-lg shadow-primary/25 scale-105' : '' ]" :style="getAnimationDelay(index)" diff --git a/src/renderer/components/common/StickyTabPage.vue b/src/renderer/components/common/StickyTabPage.vue new file mode 100644 index 0000000..a4e3345 --- /dev/null +++ b/src/renderer/components/common/StickyTabPage.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/renderer/components/podcast/RadioCard.vue b/src/renderer/components/podcast/RadioCard.vue index e427fdf..4fc5956 100644 --- a/src/renderer/components/podcast/RadioCard.vue +++ b/src/renderer/components/podcast/RadioCard.vue @@ -1,6 +1,4 @@ diff --git a/src/renderer/layout/components/SearchBar.vue b/src/renderer/layout/components/SearchBar.vue index f0c60b6..146b5c5 100644 --- a/src/renderer/layout/components/SearchBar.vue +++ b/src/renderer/layout/components/SearchBar.vue @@ -66,8 +66,9 @@ trigger="hover" :options="searchTypeOptions" @select="selectSearchType" + @mousedown.prevent > -
+
{{ searchTypeOptions.find((i) => i.key === searchStore.searchType)?.label }} @@ -238,21 +239,28 @@ const showBackButton = computed(() => { const goBack = () => router.back(); // ── Tabs ────────────────────────────────────────────── -const tabs = computed(() => [ - { - key: 'playlist', - label: t('comp.searchBar.tabPlaylist'), - path: '/', - icon: 'ri-play-list-2-fill' - }, - { key: 'mv', label: t('comp.searchBar.tabMv'), path: '/mv', icon: 'ri-movie-2-fill' }, - { - key: 'charts', - label: t('comp.searchBar.tabCharts'), - path: '/toplist', - icon: 'ri-bar-chart-grouped-fill' - } -]); +const tabs = computed(() => { + const items = [ + { key: 'home', label: t('comp.home'), path: '/', icon: 'ri-home-4-fill' }, + { key: 'playlist', label: t('comp.list'), path: '/list', icon: 'ri-play-list-2-fill' }, + { key: 'album', label: t('comp.newAlbum.title'), path: '/album', icon: 'ri-album-fill' }, + { + key: 'charts', + label: t('comp.toplist'), + path: '/toplist', + icon: 'ri-bar-chart-grouped-fill' + }, + { key: 'mv', label: t('comp.mv'), path: '/mv', icon: 'ri-movie-2-fill' }, + { + key: 'localMusic', + label: t('comp.localMusic'), + path: '/local-music', + icon: 'ri-folder-music-fill', + electronOnly: true + } + ]; + return items.filter((tab) => !tab.electronOnly || isElectron); +}); const isTabActive = (path: string) => route.path === path; // Sliding pill @@ -323,6 +331,7 @@ const selectSearchType = (key: number) => { searchStore.searchType = key; if (searchValue.value) router.push({ path: '/search-result', query: { keyword: searchValue.value, type: key } }); + nextTick(() => inputRef.value?.focus()); }; const rawSearchTypes = ref(SEARCH_TYPES); diff --git a/src/renderer/router/home.ts b/src/renderer/router/home.ts index 8ff0b34..24fa50d 100644 --- a/src/renderer/router/home.ts +++ b/src/renderer/router/home.ts @@ -62,7 +62,8 @@ const layoutRouter = [ icon: 'icon-recordfill', keepAlive: true, isMobile: false, - back: true + back: true, + hideInSidebar: true }, component: () => import('@/views/mv/index.vue') }, @@ -97,7 +98,8 @@ const layoutRouter = [ icon: 'ri-folder-music-fill', keepAlive: true, isMobile: false, - electronOnly: true + electronOnly: true, + hideInSidebar: true }, component: () => import('@/views/local-music/index.vue') }, diff --git a/src/renderer/store/modules/menu.ts b/src/renderer/store/modules/menu.ts index d18ac2e..d005a51 100644 --- a/src/renderer/store/modules/menu.ts +++ b/src/renderer/store/modules/menu.ts @@ -14,6 +14,9 @@ export const useMenuStore = defineStore('menu', () => { if (item.meta?.electronOnly && !isElectron) { return false; } + if (item.meta?.hideInSidebar) { + return false; + } if (settingsStore.isMobile) { return item.meta?.isMobile !== false; } diff --git a/src/renderer/views/album/index.vue b/src/renderer/views/album/index.vue index 2de70f7..755861d 100644 --- a/src/renderer/views/album/index.vue +++ b/src/renderer/views/album/index.vue @@ -1,113 +1,95 @@ diff --git a/src/renderer/views/mv/index.vue b/src/renderer/views/mv/index.vue index 6b136d8..c17d0a6 100644 --- a/src/renderer/views/mv/index.vue +++ b/src/renderer/views/mv/index.vue @@ -1,115 +1,93 @@