Skip to content

Commit 1b8058f

Browse files
committed
Theme switcher and minor fixes
1 parent 7f97646 commit 1b8058f

3 files changed

Lines changed: 51 additions & 18 deletions

File tree

app/home/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Button } from "@/components/ui/button";
55
export default function Home({ setCurrentTab }: { setCurrentTab?: (tab: string) => void }) {
66
return (
77
<div className="relative flex flex-col w-full items-center">
8-
<div className="absolute top-0 left-0 right-0 h-[30vh] bg-linear-to-b from-primary/4 to-transparent pointer-events-none" />
8+
<div className="absolute top-0 left-0 right-0 h-[40vh] bg-linear-to-b from-primary/8 dark:from-primary/4 to-transparent pointer-events-none" />
99

1010
{/* <img className="rounded-md mt-10 mb-6" width={570} height={240} src="/banner.png" alt="JavaBee Logo" /> */}
1111
<div className="rounded-md mb-6 mt-10 bg-black w-142.5 h-60 flex items-center justify-center">
@@ -21,7 +21,7 @@ export default function Home({ setCurrentTab }: { setCurrentTab?: (tab: string)
2121
</p>
2222
</div>
2323

24-
<div className="flex items-center gap-4 mt-8">
24+
<div className="flex items-center gap-4 mt-6">
2525
<Button size="lg" onClick={() => setCurrentTab?.('docs')}>Get Started with JavaBee</Button>
2626
<Button variant="outline" size="lg" onClick={() => setCurrentTab?.('ftc-utils')}>General FTC Utilities</Button>
2727
</div>

components/menu-bar.tsx

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,41 @@
22

33
import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"
44
import { Discord, Github } from "@/components/media-buttons";
5+
import ThemeSwitch from "@/components/theme-switch";
6+
import { Separator } from "@/components/ui/separator";
57

68
interface MenuBarProps {
79
currentTab: string;
810
onTabChange: (tab: string) => void;
911
}
1012

1113
export function MenuBar({ currentTab, onTabChange }: MenuBarProps) {
12-
1314
return (
1415
<div className="w-full h-16 border-b flex items-center justify-between px-6 bg-background shrink-0">
15-
{/* Logo and Title */}
16-
<div className="flex flex-1 items-center gap-3 font-bold text-lg">
17-
{/* <img src="/logo.png" alt="JavaBee Logo" width={40} height={40} className="rounded-md" /> */}
18-
<div className="rounded-md bg-black w-10 h-10 flex items-center justify-center">
19-
<p className="text-xs">Logo</p>
20-
</div>
21-
22-
<span className="text-primary">JavaBee Utilities</span>
16+
<div className="flex flex-1 items-center gap-3 font-bold text-lg">
17+
{/* <img src="/logo.png" alt="JavaBee Logo" width={40} height={40} className="rounded-md" /> */}
18+
<div className="rounded-md bg-black w-10 h-10 flex items-center justify-center">
19+
<p className="text-xs">Logo</p>
2320
</div>
2421

22+
<span className="text-primary">JavaBee Utilities</span>
23+
</div>
24+
2525
<Tabs value={currentTab} onValueChange={onTabChange}>
2626
<TabsList variant="line">
27-
<TabsTrigger value="home">Home</TabsTrigger>
28-
<TabsTrigger value="ftc-utils">General FTC Utilities</TabsTrigger>
29-
<TabsTrigger value="docs">Docs</TabsTrigger>
27+
<TabsTrigger value="home">Home</TabsTrigger>
28+
<TabsTrigger value="ftc-utils">General FTC Utilities</TabsTrigger>
29+
<TabsTrigger value="docs">Docs</TabsTrigger>
3030
</TabsList>
31-
</Tabs>
31+
</Tabs>
3232

33-
<div className="flex flex-1 items-center justify-end space-x-4">
34-
<Discord />
35-
<Github />
33+
<div className="flex flex-1 items-center justify-end">
34+
<ThemeSwitch />
35+
<Separator orientation="vertical" className="h-8" />
36+
<div className="flex ml-4 gap-4">
37+
<Discord />
38+
<Github />
39+
</div>
3640
</div>
3741
</div>
3842
);

components/theme-switch.tsx

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use client'
2+
3+
import { Sun, Moon } from 'lucide-react'
4+
import { Switch } from '@/components/ui/switch'
5+
import { useTheme } from 'next-themes';
6+
7+
// Derived from: https://shadcnstudio.com/docs/components/switch 12
8+
export default function ThemeSwitch() {
9+
const { theme, setTheme } = useTheme();
10+
11+
return (
12+
<div>
13+
<div className='relative inline-grid h-7 grid-cols-[1fr_1fr] items-center text-sm font-medium'>
14+
<Switch
15+
checked={theme === 'light'}
16+
onCheckedChange={(checked) => setTheme(checked ? 'light' : 'dark')}
17+
className='peer data-[state=checked]:bg-input/50 data-[state=unchecked]:bg-input/50 [&_span]:bg-background! absolute inset-0 data-[size=default]:h-[inherit] data-[size=default]:w-14 [&_span]:transition-transform [&_span]:duration-300 [&_span]:ease-[cubic-bezier(0.16,1,0.3,1)] [&_span]:group-data-[size=default]/switch:size-6.5 [&_span]:data-[state=checked]:translate-x-7 [&_span]:data-[state=checked]:rtl:-translate-x-7'
18+
aria-label='Switch with icon indicators'
19+
/>
20+
<span className='peer-data-[state=checked]:text-muted-foreground/70 pointer-events-none relative ml-1.75 flex min-w-7 items-center text-center'>
21+
<Moon className='size-4' aria-hidden='true' />
22+
</span>
23+
<span className='peer-data-[state=unchecked]:text-muted-foreground/70 pointer-events-none relative -ms-px flex min-w-7 items-center text-center'>
24+
<Sun className='size-4' aria-hidden='true' />
25+
</span>
26+
</div>
27+
</div>
28+
)
29+
}

0 commit comments

Comments
 (0)