Skip to content

Commit bf9c7f7

Browse files
DIMO-NetworkDIMO-Network
authored andcommitted
Add dark theme and update app branding with new logos
Remove Spotify integration, implement a dual-theme system with a toggle, update the application title to "Developer Kit", and incorporate new logos. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 40c2c854-b5eb-4af5-9353-8e934bcdd8f5 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0b0e3706-744d-42a8-93dc-5271e81245b9/40c2c854-b5eb-4af5-9353-8e934bcdd8f5/PSmhNV9
2 parents 842b8b8 + 2f97d1c commit bf9c7f7

13 files changed

Lines changed: 103 additions & 589 deletions

client/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
name="viewport"
77
content="width=device-width, initial-scale=1.0, maximum-scale=1"
88
/>
9-
<title>DriveTunes</title>
9+
<title>Developer Kit</title>
1010
<meta
1111
name="description"
12-
content="DriveTunes - A Spotify playlist generator based on your driving route"
12+
content="Developer Kit - Build with DIMO's vehicle data platform"
1313
/>
1414
<link rel="preconnect" href="https://fonts.googleapis.com" />
1515
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />

client/src/App.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { QueryClientProvider } from "@tanstack/react-query";
44
import { Toaster } from "@/components/ui/toaster";
55
import { TooltipProvider } from "@/components/ui/tooltip";
66
import { DimoAuthProvider, initializeDimoSDK } from "@dimo-network/login-with-dimo";
7+
import { ThemeProvider } from "@/components/theme-provider";
78
import NotFound from "@/pages/not-found";
89
import GpsVisualizer from "@/pages/gps-visualizer";
910

@@ -27,10 +28,12 @@ function App() {
2728
return (
2829
<QueryClientProvider client={queryClient}>
2930
<DimoAuthProvider>
30-
<TooltipProvider>
31-
<Toaster />
32-
<Router />
33-
</TooltipProvider>
31+
<ThemeProvider>
32+
<TooltipProvider>
33+
<Toaster />
34+
<Router />
35+
</TooltipProvider>
36+
</ThemeProvider>
3437
</DimoAuthProvider>
3538
</QueryClientProvider>
3639
);

client/src/assets/logo-black.png

26.2 KB
Loading

client/src/assets/logo-white.png

27.8 KB
Loading

client/src/components/spotify-playlist-generator.tsx

Lines changed: 0 additions & 242 deletions
This file was deleted.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { createContext, useContext, useEffect, useState } from "react";
2+
3+
type Theme = "light" | "dark";
4+
5+
interface ThemeContextType {
6+
theme: Theme;
7+
toggleTheme: () => void;
8+
}
9+
10+
const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
11+
12+
export function ThemeProvider({ children }: { children: React.ReactNode }) {
13+
const [theme, setTheme] = useState<Theme>(() => {
14+
// Check localStorage first, then system preference
15+
if (typeof window !== "undefined") {
16+
const stored = localStorage.getItem("theme") as Theme | null;
17+
if (stored) return stored;
18+
19+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
20+
}
21+
return "light";
22+
});
23+
24+
useEffect(() => {
25+
const root = document.documentElement;
26+
27+
if (theme === "dark") {
28+
root.classList.add("dark");
29+
} else {
30+
root.classList.remove("dark");
31+
}
32+
33+
localStorage.setItem("theme", theme);
34+
}, [theme]);
35+
36+
const toggleTheme = () => {
37+
setTheme(prev => prev === "light" ? "dark" : "light");
38+
};
39+
40+
return (
41+
<ThemeContext.Provider value={{ theme, toggleTheme }}>
42+
{children}
43+
</ThemeContext.Provider>
44+
);
45+
}
46+
47+
export function useTheme() {
48+
const context = useContext(ThemeContext);
49+
if (!context) {
50+
throw new Error("useTheme must be used within a ThemeProvider");
51+
}
52+
return context;
53+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Moon, Sun } from "lucide-react";
2+
import { Button } from "@/components/ui/button";
3+
import { useTheme } from "./theme-provider";
4+
5+
export default function ThemeToggle() {
6+
const { theme, toggleTheme } = useTheme();
7+
8+
return (
9+
<Button
10+
variant="ghost"
11+
size="icon"
12+
onClick={toggleTheme}
13+
data-testid="theme-toggle"
14+
className="h-10 w-10"
15+
>
16+
{theme === "light" ? (
17+
<Moon className="h-[1.2rem] w-[1.2rem]" />
18+
) : (
19+
<Sun className="h-[1.2rem] w-[1.2rem]" />
20+
)}
21+
<span className="sr-only">Toggle theme</span>
22+
</Button>
23+
);
24+
}

client/src/index.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@
105105
}
106106

107107
body {
108-
@apply font-sans antialiased bg-slate-50 text-foreground;
108+
@apply font-sans antialiased bg-background text-foreground;
109109
}
110110
}
111111

0 commit comments

Comments
 (0)