A very performant and light (2mb in memory) link shortener and tracker. Written in Rust and React and uses Postgres/SQLite.
1import { Moon, Sun } from "lucide-react"
2
3import { Button } from "@/components/ui/button"
4import {
5 DropdownMenu,
6 DropdownMenuContent,
7 DropdownMenuItem,
8 DropdownMenuTrigger,
9} from "@/components/ui/dropdown-menu"
10import { useTheme } from "@/components/theme-provider"
11
12export function ModeToggle() {
13 const { setTheme } = useTheme()
14
15 return (
16 <DropdownMenu>
17 <DropdownMenuTrigger asChild>
18 <Button variant="outline" size="icon">
19 <Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
20 <Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
21 <span className="sr-only">Toggle theme</span>
22 </Button>
23 </DropdownMenuTrigger>
24 <DropdownMenuContent align="end">
25 <DropdownMenuItem onClick={() => setTheme("light")}>
26 Light
27 </DropdownMenuItem>
28 <DropdownMenuItem onClick={() => setTheme("dark")}>
29 Dark
30 </DropdownMenuItem>
31 <DropdownMenuItem onClick={() => setTheme("system")}>
32 System
33 </DropdownMenuItem>
34 </DropdownMenuContent>
35 </DropdownMenu>
36 )
37}