forked from 77media/video-flow
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
"use client";
|
|
|
|
import { Button } from '@/components/ui/button';
|
|
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuSeparator,
|
|
DropdownMenuTrigger,
|
|
} from '@/components/ui/dropdown-menu';
|
|
import { useTheme } from 'next-themes';
|
|
import {
|
|
Sun,
|
|
Moon,
|
|
User,
|
|
Settings,
|
|
LogOut,
|
|
Bell,
|
|
} from 'lucide-react';
|
|
|
|
export function TopBar() {
|
|
const { theme, setTheme } = useTheme();
|
|
|
|
return (
|
|
<div className="h-16 border-b border-border bg-card/50 backdrop-blur supports-[backdrop-filter]:bg-card/50">
|
|
<div className="h-full flex items-center justify-between px-6">
|
|
<div className="flex items-center space-x-4">
|
|
<h1 className="text-2xl font-semibold">AI Video Studio</h1>
|
|
</div>
|
|
|
|
<div className="flex items-center space-x-4">
|
|
{/* Notifications */}
|
|
<Button variant="ghost" size="sm">
|
|
<Bell className="h-4 w-4" />
|
|
</Button>
|
|
|
|
{/* Theme Toggle */}
|
|
<Button
|
|
variant="ghost"
|
|
size="sm"
|
|
onClick={() => setTheme(theme === 'dark' ? 'light' : 'dark')}
|
|
>
|
|
<Sun className="h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
|
|
<Moon className="absolute h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
|
|
</Button>
|
|
|
|
{/* User Menu */}
|
|
<DropdownMenu>
|
|
<DropdownMenuTrigger asChild>
|
|
<Button variant="ghost" size="sm">
|
|
<User className="h-4 w-4" />
|
|
<span className="ml-2">User</span>
|
|
</Button>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent align="end">
|
|
<DropdownMenuItem>
|
|
<Settings className="mr-2 h-4 w-4" />
|
|
Settings
|
|
</DropdownMenuItem>
|
|
<DropdownMenuSeparator />
|
|
<DropdownMenuItem>
|
|
<LogOut className="mr-2 h-4 w-4" />
|
|
Log out
|
|
</DropdownMenuItem>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
} |