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
30 lines
627 B
Svelte
30 lines
627 B
Svelte
<script lang="ts">
|
|
import type { Snippet } from 'svelte';
|
|
|
|
interface Props {
|
|
class?: string;
|
|
children: Snippet;
|
|
}
|
|
|
|
let { class: klass = '', children }: Props = $props();
|
|
|
|
let track: HTMLDivElement | undefined = $state();
|
|
|
|
export function scrollByPage(direction: 1 | -1) {
|
|
track?.scrollBy({ left: direction * track.clientWidth * 0.85, behavior: 'smooth' });
|
|
}
|
|
</script>
|
|
|
|
<div bind:this={track} class="no-scrollbar -mx-1 flex gap-4 overflow-x-auto px-1 pb-2 {klass}">
|
|
{@render children()}
|
|
</div>
|
|
|
|
<style>
|
|
.no-scrollbar {
|
|
scrollbar-width: none;
|
|
}
|
|
.no-scrollbar::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
</style>
|