Settings
API Configuration
Configure the music API endpoint
Default: https://qqdl.site/api | EU: https://eu.qqdl.site/api
Appearance
Customize the look and feel of qstream
About
Information about qstream
"use client" import { useState } from "react" import { useRouter } from "next/navigation" import { ArrowLeft, Check } from "lucide-react" import { useSettingsStore } from "@/store/settings-store" import { Sidebar } from "@/components/app/sidebar" import { PlayerBar } from "@/components/app/player-bar" import { MobileNav } from "@/components/app/mobile-nav" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import type { Theme } from "@/lib/types" export default function SettingsPage() { const router = useRouter() const theme = useSettingsStore((state) => state.theme) const apiBaseUrl = useSettingsStore((state) => state.apiBaseUrl) const setTheme = useSettingsStore((state) => state.actions.setTheme) const setStoredApiBaseUrl = useSettingsStore((state) => state.actions.setApiBaseUrl) const [localApiUrl, setLocalApiUrl] = useState(apiBaseUrl) const [isSaved, setIsSaved] = useState(false) const handleThemeChange = (newTheme: Theme) => { setTheme(newTheme) } const handleSaveApiUrl = () => { setStoredApiBaseUrl(localApiUrl) setIsSaved(true) setTimeout(() => setIsSaved(false), 2000) } const themes: Array<{ value: Theme; label: string; description: string }> = [ { value: "default", label: "Default", description: "Classic dark theme" }, { value: "zinc", label: "Zinc", description: "Neutral gray tones" }, { value: "slate", label: "Slate", description: "Cool blue-gray" }, { value: "rose", label: "Rose", description: "Warm rose accents" }, ] return (
Configure the music API endpoint
Default: https://qqdl.site/api | EU: https://eu.qqdl.site/api
Customize the look and feel of qstream
Information about qstream