mirror of
https://github.com/atdunbg/Nekosonic-Music.git
synced 2026-08-06 03:44:18 +08:00
- 详情页统一 DetailLayout 组件(常驻头部 + 独立滚动 + 紧凑态动画) - 歌曲/评论 tab 切换(懒加载 + 保活),专辑模糊搜索 - 皮肤系统 skins.ts(19 语义色 + 14 预设 + 自定义皮肤 + 壁纸) - 设置页皮肤模块(外观/主题色/皮肤编辑器/壁纸选择) - 可折叠侧边栏 + TopBar + 折叠态歌单浮层(高度不越 PlayerBar) - 首页扩展至 6 区块 + 通用卡片组件 + 虚拟歌曲列表 - audio.rs 拆为 8 模块,api.ts 拆为 api/ 目录,player store 拆为 4 store - 修复播放竞态、seek 暂停、评论提前加载、紧凑态卡死等
34 lines
966 B
Vue
34 lines
966 B
Vue
<template>
|
|
<div class="flex items-center justify-between mb-4 mt-2">
|
|
<div class="flex items-center gap-2 min-w-0">
|
|
<component :is="icon" v-if="icon" class="w-5 h-5 text-accent-text flex-shrink-0" />
|
|
<h2 class="text-xl font-semibold text-content truncate">{{ title }}</h2>
|
|
<span v-if="subtitle" class="text-xs text-content-3 truncate hidden sm:inline">· {{ subtitle }}</span>
|
|
</div>
|
|
<button
|
|
v-if="showMore"
|
|
@click="$emit('more')"
|
|
class="flex items-center gap-1 text-sm text-content-2 hover:text-content transition flex-shrink-0"
|
|
>
|
|
<span>更多</span>
|
|
<IconChevronRight class="w-4 h-4" />
|
|
</button>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import type { Component } from 'vue';
|
|
import IconChevronRight from '~icons/lucide/chevron-right';
|
|
|
|
defineProps<{
|
|
title: string;
|
|
subtitle?: string;
|
|
icon?: Component;
|
|
showMore?: boolean;
|
|
}>();
|
|
|
|
defineEmits<{
|
|
(e: 'more'): void;
|
|
}>();
|
|
</script>
|