Add anonymous listening support and redesign web-player UI

Backend:
- Expose GET /config/playback so the frontend can detect whether
  anonymous listening is enabled without requiring auth
- Wire anonymous access through track streaming and YouTube resolve flows

Frontend:
- Allow browsing/listening without a session when the backend enables it
- Redesign Inicio, Sidebar and top bar with a new dark theme, typography,
  and layout (top bar with live quick-search, sticky/blurred on scroll)
- Populate Top música, Popular and Recomendados with real Musify +
  YouTube Music data instead of placeholders
- Various shape, spacing, color and animation refinements across the
  redesigned components
This commit is contained in:
2026-09-11 01:29:37 +02:00
parent 10766bbb47
commit 389b3b9244
40 changed files with 1172 additions and 452 deletions
+27 -9
View File
@@ -1,8 +1,8 @@
@import 'tailwindcss';
@theme {
--font-sans: 'Inter Variable', ui-sans-serif, system-ui, sans-serif;
--font-display: 'Sora Variable', 'Inter Variable', ui-sans-serif, system-ui, sans-serif;
--font-sans: 'Manrope Variable', ui-sans-serif, system-ui, sans-serif;
--font-display: 'Bricolage Grotesque Variable', ui-sans-serif, system-ui, sans-serif;
--color-bg: var(--mf-bg);
--color-elevated: var(--mf-elevated);
@@ -19,6 +19,8 @@
--color-muted: var(--mf-text-4);
--color-accent: var(--mf-accent);
--color-accent-soft: var(--mf-accent-soft);
--color-accent-glow: var(--mf-accent-glow);
--color-accent-dim: var(--mf-accent-dim);
--color-on-accent: var(--mf-on-art);
--color-scrim: var(--mf-scrim);
--color-on-art: var(--mf-on-art);
@@ -26,14 +28,15 @@
--color-danger-fg: oklch(88.5% 0.062 18.334);
--radius-control: 0.625rem;
--radius-panel: 1rem;
--radius-art: 0.75rem;
--radius-art-lg: 1rem;
--radius-panel: 1.125rem;
--radius-art: 0.85rem;
--radius-art-lg: 1.125rem;
--radius-art-round: 1.75rem;
--shadow-art: 0 12px 28px -10px rgba(0, 0, 0, 0.6);
--shadow-art-lg: 0 20px 45px -15px rgba(0, 0, 0, 0.7);
--shadow-art-lg: 0 24px 50px -16px rgba(0, 0, 0, 0.75);
--shadow-menu: 0 12px 28px -10px rgba(0, 0, 0, 0.6);
--shadow-glow: 0 0 0 1px var(--mf-border-strong), 0 20px 45px -20px var(--mf-accent-glow);
}
@utility page-x {
@@ -182,9 +185,24 @@ html {
overflow-x: hidden;
}
html.home {
background-image: linear-gradient(to bottom, var(--mf-accent), transparent 340px);
background-repeat: no-repeat;
::selection {
background-color: var(--mf-accent-dim);
color: var(--mf-text);
}
body {
position: relative;
}
body::after {
content: '';
position: fixed;
inset: 0;
z-index: 80;
pointer-events: none;
opacity: 0.035;
mix-blend-mode: overlay;
background-image: var(--mf-noise);
}
::-webkit-scrollbar {