web-player: P12 — chrome de la app (layout, navegación, reproductor)

PlayerExtras se fusiona en PlayerBar, que ahora renderiza volumen y
botón de cola inline y usa el nuevo Slider (input range real con
grosor de thumb controlado por variables CSS) para barra de progreso
y volumen, sustituyendo a SeekBar y VolumeControl (se confirmó por
grep que el modo `compact` de SeekBar era código muerto).

Sidebar y TabsBar migran a appNavLinks(user, counts?) (creado en P5),
eliminando la duplicación de los enlaces de navegación entre ambos.
Decisión tomada sin bloquear: Sidebar gana la marca-gradiente Logo
que no tenía antes, para consistencia visual con MobileHeader y la
pantalla de login.

z-index de PlayerDock y MobileHeader corregido a z-(--z-sticky) (son
barras fijas, no menús) y el de SegmentedControl a z-(--z-raised),
tal como indica la nota B.1.5 del plan. glass-bar y theme-transition
se aplican en PlayerBar (ambas variantes), TabsBar, Queue e Inicio
(hero/spotlight), sustituyendo estilos duplicados de blur/transición.

Verificado con npm run check (0 errores) y npm run build; smoke test
de /login sin errores de consola. Sin QA visual autenticada (Docker
no disponible en esta sesión).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-21 14:39:20 +02:00
co-authored by Claude Sonnet 5
parent 90f9a76628
commit 39e6c2d552
15 changed files with 155 additions and 185 deletions
+3 -7
View File
@@ -1,5 +1,6 @@
<script lang="ts">
import Button from '$lib/components/ui/Button.svelte';
import Logo from '$lib/components/ui/Logo.svelte';
let { data } = $props();
@@ -15,12 +16,7 @@
<div class="pointer-events-none absolute inset-0" style="background:var(--mf-ambient)"></div>
<div class="relative flex w-full max-w-4xl flex-col items-center gap-12 text-center">
<div class="flex items-center gap-3">
<span class="h-8 w-8 rounded-xl bg-[image:var(--mf-logo-grad)]"></span>
<span class="font-display text-[clamp(1.5rem,3vw,2.5rem)] font-semibold tracking-tight">
Musify
</span>
</div>
<Logo size="lg" />
<div class="animate-enter flex flex-col items-center gap-5">
<h1
@@ -32,7 +28,7 @@
<p class="text-lg text-fg-2">Inicia sesión para continuar.</p>
</div>
<div class="flex w-full max-w-80 flex-col gap-3">
<div class="flex w-full max-w-cta flex-col gap-3">
<Button href={`/auth/login?${returnParam}`} reload size="lg" class="w-full">
Iniciar sesión
</Button>