From 5dd4ffe17d319808d8f263efbc16443f764e727a Mon Sep 17 00:00:00 2001 From: End Date: Sat, 1 Feb 2025 19:38:05 -0700 Subject: [PATCH] fix: update music display and base styles --- src/App.tsx | 20 +++++----- src/components/MusicDisplay.tsx | 67 ++++++++++++++++++++++----------- src/styles/base.css | 38 +++++++++++++------ 3 files changed, 82 insertions(+), 43 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 83c4c53..cc0080c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,15 +1,15 @@ -import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; -import Navbar from '@/components/Navbar'; -import AboutPage from '@/pages/AboutPage'; -import ProjectsPage from '@/pages/ProjectsPage'; +import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; +import Navbar from "@/components/Navbar"; +import AboutPage from "@/pages/AboutPage"; +import ProjectsPage from "@/pages/ProjectsPage"; const App = () => { return ( -
+
{/* Background Logo */}
-
+
Background Logo {
{/* Main Content */} -
+
-
+
} /> } /> -

404: Page Not Found

+
+

404: Page Not Found

This fox couldn't find what you're looking for.

} /> diff --git a/src/components/MusicDisplay.tsx b/src/components/MusicDisplay.tsx index 09ae504..cba0be3 100644 --- a/src/components/MusicDisplay.tsx +++ b/src/components/MusicDisplay.tsx @@ -1,26 +1,42 @@ -import { useState, useEffect } from 'react'; -import { Music, Loader } from 'lucide-react'; +import { useState, useEffect } from "react"; +import { Music, Loader } from "lucide-react"; -const playlists = [ - "58ggvvTcs95yhcSeSxLGks", // Playlist 1 - "6e2q3GgjEDxMWJBSln2Py5" // Playlist 2 +interface Track { + name: string; + artist: string; + playlistId?: string; +} + +const PLAYLISTS = [ + "58ggvvTcs95yhcSeSxLGks", + "6e2q3GgjEDxMWJBSln2Py5" ]; const MusicDisplay = () => { - const [currentTrack, setCurrentTrack] = useState(null); + const [currentTrack, setCurrentTrack] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { - const getRandomPlaylist = () => playlists[Math.floor(Math.random() * playlists.length)]; + const getRandomPlaylist = () => PLAYLISTS[Math.floor(Math.random() * PLAYLISTS.length)]; const updateTrack = async () => { - setLoading(true); - const playlist = getRandomPlaylist(); - setCurrentTrack({ - name: "Music from Playlist", - artist: "Current Mix" - }); - setLoading(false); + try { + setLoading(true); + const playlistId = getRandomPlaylist(); + + const track: Track = { + name: "Music from Playlist", + artist: "Current Mix", + playlistId + }; + + setCurrentTrack(track); + } catch (error) { + console.error("Failed to update track:", error); + setCurrentTrack(null); + } finally { + setLoading(false); + } }; updateTrack(); @@ -30,31 +46,40 @@ const MusicDisplay = () => { if (loading) { return ( -
+
Loading music...
); } + if (!currentTrack) { + return ( +
+ + No track available +
+ ); + } + return ( -
-
+
+
{[...Array(3)].map((_, i) => (
))}
-
-

{currentTrack?.name}

-

{currentTrack?.artist}

+
+

{currentTrack.name}

+

{currentTrack.artist}

); diff --git a/src/styles/base.css b/src/styles/base.css index 055cbb0..1805946 100644 --- a/src/styles/base.css +++ b/src/styles/base.css @@ -19,14 +19,31 @@ body { @apply bg-background-primary text-text-primary; - font-family: 'Inter', sans-serif; + font-family: "Inter", sans-serif; + } + + /* Global spacing */ + .content-wrapper { + @apply max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8; + } + + .section-spacing { + @apply space-y-12; + } + + .card-spacing { + @apply space-y-8; + } + + .element-spacing { + @apply space-y-4; } } @layer components { .nav-link { - @apply flex items-center gap-2 px-4 py-2 rounded-lg transition-all - hover:bg-accent-primary/10 hover:text-accent-neon; + @apply flex items-center gap-3 px-4 py-2 rounded-lg transition-all + hover:bg-accent-primary/10 hover:text-accent-neon my-1; } .nav-link.active { @@ -34,20 +51,17 @@ } .fox-card { - @apply relative bg-gradient-card rounded-xl p-6 border border-accent-primary/20 + @apply relative bg-gradient-card rounded-xl p-8 border border-accent-primary/20 transition-all hover:border-accent-neon/40 hover:shadow-lg - hover:shadow-accent-primary/10; + hover:shadow-accent-primary/10 mb-8; } .text-glow { @apply text-text-primary drop-shadow-[0_0_10px_rgba(224,170,255,0.5)]; } -} -.content-grid { - @apply grid gap-8 grid-cols-1 md:grid-cols-2 lg:grid-cols-3; -} - -.card-spacing > * + * { - @apply mt-8; + /* Card Grid */ + .content-grid { + @apply grid gap-8 grid-cols-1 md:grid-cols-2 lg:grid-cols-3; + } }