'use client' import { signOut } from "@/app/actions/user" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" import { toast } from "@/hooks/use-toast" import { settingsAtom, userSelectAtom } from "@/lib/atoms" import { useHelpers } from "@/lib/client-helpers" import { useAtom } from "jotai" import { ArrowRightLeft, Crown, Info, LogOut, Moon, Palette, Settings, Sun, User } from "lucide-react" import { useTheme } from "next-themes" import Link from "next/link" import { useState } from "react" import AboutModal from "./AboutModal" import { Dialog, DialogContent, DialogHeader, DialogTitle } from './ui/dialog' import UserForm from './UserForm' export function Profile() { const [settings] = useAtom(settingsAtom) const [userSelect, setUserSelect] = useAtom(userSelectAtom) const [isEditing, setIsEditing] = useState(false) const [showAbout, setShowAbout] = useState(false) const { theme, setTheme } = useTheme() const { currentUser: user } = useHelpers() const [open, setOpen] = useState(false) const handleSignOut = async () => { try { await signOut() toast({ title: "Signed out successfully", description: "You have been logged out of your account", }) setTimeout(() => window.location.reload(), 300); } catch (error) { toast({ title: "Error", description: "Failed to sign out", variant: "destructive", }) } } return ( <> {user?.username || "Guest"} {user?.isAdmin && } {user && ( { e.stopPropagation(); setOpen(false); setIsEditing(true); }} className="text-xs text-muted-foreground hover:text-primary transition-colors text-left" > Edit profile )} {user && ( { e.stopPropagation(); setOpen(false); handleSignOut(); }} className="border border-primary/50 text-primary rounded-md p-1.5 transition-colors hover:bg-primary/10 hover:border-primary active:scale-95" > )} { setOpen(false); // Close the dropdown setUserSelect(true); // Open the user select modal }}> Switch user Settings setShowAbout(true)} className="flex items-center w-full gap-3" > About Theme { e.stopPropagation(); setTheme(theme === 'dark' ? 'light' : 'dark'); }} className={` w-12 h-6 rounded-full relative transition-all duration-300 ease-in-out hover:scale-105 shadow-inner ${theme === 'dark' ? 'bg-blue-600/90 hover:bg-blue-600' : 'bg-gray-200 hover:bg-gray-300' } `} > {theme === 'dark' ? ( ) : ( )} setShowAbout(false)} /> {/* Add the UserForm dialog */} {isEditing && user && ( setIsEditing(false)}> Edit Profile setIsEditing(false)} onSuccess={() => { setIsEditing(false); window.location.reload(); }} /> )} > ) }