feat: add Vue.js WebUI — YesPlayMusic-inspired SPA with all pages and components

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
saopig1andClaude Opus 4.6 committed 2026-03-30 00:58:33 +08:00
1 parent 2a966e914c
commit 694e3c953b
25 files changed
+5388 -1

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
@use 'variables';
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-size: 16px;
}
body {
font-family: var(--font-primary);
background: var(--bg-primary);
color: var(--text-primary);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
text-decoration: none;
color: inherit;
}
button {
border: none;
background: none;
cursor: pointer;
font-family: inherit;
color: inherit;
}
// Scrollbar
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--text-tertiary);
border-radius: 4px;
}
// Shared utility classes
.frosted-glass {
background: var(--bg-navbar);
backdrop-filter: saturate(180%) blur(20px);
-webkit-backdrop-filter: saturate(180%) blur(20px);
}
.hover-scale {
transition: transform var(--transition-fast);
&:hover {
transform: scale(1.04);
}
&:active {
transform: scale(0.96);
}
}
+48
View File
@@ -0,0 +1,48 @@
// YesPlayMusic-inspired design tokens
:root {
// Fonts
--font-primary: 'Barlow', -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif;
// Spacing
--navbar-height: 56px;
--player-height: 56px;
// Radius
--radius-sm: 6px;
--radius-md: 10px;
--radius-lg: 14px;
--radius-xl: 20px;
// Transitions
--transition-fast: 0.2s ease;
--transition-normal: 0.3s ease;
// Accent
--color-primary: #335eea;
--color-primary-bg: #eaeffd;
}
[data-theme='dark'] {
--bg-primary: #222222;
--bg-secondary: #323232;
--bg-card: rgba(255, 255, 255, 0.04);
--bg-navbar: rgba(34, 34, 34, 0.86);
--text-primary: #ffffff;
--text-secondary: rgba(255, 255, 255, 0.58);
--text-tertiary: rgba(255, 255, 255, 0.38);
--border-color: rgba(255, 255, 255, 0.06);
--hover-bg: rgba(255, 255, 255, 0.08);
}
[data-theme='light'] {
--bg-primary: #ffffff;
--bg-secondary: #f5f5f7;
--bg-card: rgba(0, 0, 0, 0.02);
--bg-navbar: rgba(255, 255, 255, 0.86);
--text-primary: #000000;
--text-secondary: rgba(0, 0, 0, 0.58);
--text-tertiary: rgba(0, 0, 0, 0.38);
--border-color: rgba(0, 0, 0, 0.06);
--hover-bg: rgba(0, 0, 0, 0.04);
}