style: enhance layout and typography for Browse, Favorites, and Settings pages
This commit is contained in:
@@ -91,13 +91,18 @@ export default function BrowsePage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full px-4 py-6 lg:px-8">
|
<div className="container mx-auto p-6 pb-24 max-w-none">
|
||||||
<>
|
<div className="space-y-6">
|
||||||
<Tabs defaultValue="music" className="h-full flex flex-col space-y-6">
|
<div className="text-left">
|
||||||
<TabsContent value="music" className="border-none p-0 outline-hidden flex flex-col grow">
|
<h1 className="text-3xl font-semibold tracking-tight">Browse</h1>
|
||||||
|
<p className="text-muted-foreground">Explore your complete music library</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="flex items-center justify-between">
|
<Tabs defaultValue="music" className="h-full flex flex-col space-y-6">
|
||||||
<div className="space-y-1">
|
<TabsContent value="music" className="border-none p-0 outline-hidden flex flex-col grow">
|
||||||
|
|
||||||
|
<div className="flex items-center justify-between">
|
||||||
|
<div className="space-y-1">
|
||||||
<p className="text-2xl font-semibold tracking-tight">
|
<p className="text-2xl font-semibold tracking-tight">
|
||||||
Artists
|
Artists
|
||||||
</p>
|
</p>
|
||||||
@@ -178,7 +183,7 @@ export default function BrowsePage() {
|
|||||||
</div>
|
</div>
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -118,16 +118,24 @@ const FavoritesPage = () => {
|
|||||||
|
|
||||||
if (!isConnected) {
|
if (!isConnected) {
|
||||||
return (
|
return (
|
||||||
<div className="container mx-auto p-6">
|
<div className="container mx-auto p-6 pb-24 max-w-none">
|
||||||
<div className="text-center">
|
<div className="space-y-6">
|
||||||
<p className="text-muted-foreground">Please connect to your Navidrome server to view favorites.</p>
|
<div className="text-left">
|
||||||
|
<h1 className="text-3xl font-semibold tracking-tight">Favorites</h1>
|
||||||
|
<p className="text-muted-foreground">Please connect to your Navidrome server to view favorites.</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container mx-auto p-6 pb-24">
|
<div className="container mx-auto p-6 pb-24 max-w-none">
|
||||||
|
<div className="space-y-6">
|
||||||
|
<div className="text-left">
|
||||||
|
<h1 className="text-3xl font-semibold tracking-tight">Favorites</h1>
|
||||||
|
<p className="text-muted-foreground">Your starred albums, songs, and artists</p>
|
||||||
|
</div>
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<div>
|
<div>
|
||||||
@@ -257,6 +265,7 @@ const FavoritesPage = () => {
|
|||||||
)}
|
)}
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -303,9 +303,9 @@ const SettingsPage = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container mx-auto p-6 pb-24 max-w-2xl">
|
<div className="container mx-auto p-6 pb-24 max-w-none">
|
||||||
{!isClient ? (
|
{!isClient ? (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6 max-w-2xl mx-auto">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-3xl font-semibold tracking-tight">Settings</h1>
|
<h1 className="text-3xl font-semibold tracking-tight">Settings</h1>
|
||||||
<p className="text-muted-foreground">Loading...</p>
|
<p className="text-muted-foreground">Loading...</p>
|
||||||
@@ -313,13 +313,15 @@ const SettingsPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
<div>
|
<div className="text-left">
|
||||||
<h1 className="text-3xl font-semibold tracking-tight">Settings</h1>
|
<h1 className="text-3xl font-semibold tracking-tight">Settings</h1>
|
||||||
<p className="text-muted-foreground">Customize your music experience</p>
|
<p className="text-muted-foreground">Customize your music experience</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="columns-1 md:columns-2 xl:columns-3 gap-6 space-y-0">
|
||||||
|
|
||||||
{!hasEnvConfig && (
|
{!hasEnvConfig && (
|
||||||
<Card>
|
<Card className="break-inside-avoid mb-6">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle className="flex items-center gap-2">
|
<CardTitle className="flex items-center gap-2">
|
||||||
<FaServer className="w-5 h-5" />
|
<FaServer className="w-5 h-5" />
|
||||||
@@ -408,7 +410,7 @@ const SettingsPage = () => {
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{hasEnvConfig && (
|
{hasEnvConfig && (
|
||||||
<Card>
|
<Card className="break-inside-avoid mb-6">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle className="flex items-center gap-2">
|
<CardTitle className="flex items-center gap-2">
|
||||||
<FaServer className="w-5 h-5" />
|
<FaServer className="w-5 h-5" />
|
||||||
@@ -435,7 +437,7 @@ const SettingsPage = () => {
|
|||||||
</Card>
|
</Card>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Card>
|
<Card className="break-inside-avoid mb-6">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle className="flex items-center gap-2">
|
<CardTitle className="flex items-center gap-2">
|
||||||
<FaLastfm className="w-5 h-5" />
|
<FaLastfm className="w-5 h-5" />
|
||||||
@@ -513,7 +515,7 @@ const SettingsPage = () => {
|
|||||||
</CardContent>
|
</CardContent>
|
||||||
</Card> */}
|
</Card> */}
|
||||||
|
|
||||||
<Card>
|
<Card className="break-inside-avoid mb-6">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle className="flex items-center gap-2">
|
<CardTitle className="flex items-center gap-2">
|
||||||
<Settings className="w-5 h-5" />
|
<Settings className="w-5 h-5" />
|
||||||
@@ -548,7 +550,7 @@ const SettingsPage = () => {
|
|||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card>
|
<Card className="break-inside-avoid mb-6">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle className="flex items-center gap-2">
|
<CardTitle className="flex items-center gap-2">
|
||||||
<FaLastfm className="w-5 h-5" />
|
<FaLastfm className="w-5 h-5" />
|
||||||
@@ -643,7 +645,7 @@ const SettingsPage = () => {
|
|||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card>
|
<Card className="break-inside-avoid mb-6">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Appearance</CardTitle>
|
<CardTitle>Appearance</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
@@ -692,7 +694,7 @@ const SettingsPage = () => {
|
|||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
{/* Theme Preview */}
|
{/* Theme Preview */}
|
||||||
<Card>
|
<Card className="break-inside-avoid mb-6">
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>Preview</CardTitle>
|
<CardTitle>Preview</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
@@ -721,6 +723,7 @@ const SettingsPage = () => {
|
|||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user