import { Link } from "wouter"
import { SearchIcon, SettingsIcon, TagsIcon, ArchiveIcon, UserIcon, LayoutListIcon, PanelLeftIcon, PanelLeftCloseIcon, MenuIcon, XIcon } from "lucide-react"
import { Button, buttonVariants } from "@/components/ui/button.tsx"
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip.tsx"
import { useLogin } from "@/state/user.ts";
import { useNavItems } from "./navAtom";
import { Separator } from "../ui/separator";
import { cn } from "@/lib/utils";
interface NavItemProps {
icon: React.ReactNode;
to: string;
name: string;
}
export function NavItem({
icon,
to,
name
}: NavItemProps) {
return
{icon}
{name}
{name}
}
interface NavItemButtonProps {
icon: React.ReactNode;
onClick: () => void;
name: string;
className?: string;
}
export function NavItemButton({
icon,
onClick,
name,
className
}: NavItemButtonProps) {
return
{name}
}
export function NavList() {
const loginInfo = useLogin();
const navItems = useNavItems();
return
}
// 사이드바 토글 버튼
export function SidebarToggle({ isOpen, onToggle }: { isOpen: boolean; onToggle: () => void }) {
return (
{isOpen ? "Close sidebar" : "Open sidebar"}
);
}
// 모바일용 사이드바 토글 버튼
export function MobileSidebarToggle({ isOpen, onToggle }: { isOpen: boolean; onToggle: () => void }) {
return (
);
}
// 데스크탑용 사이드바 네비게이션
export function SidebarNav({ isCollapsed, onNavigate }: { isCollapsed: boolean; onNavigate?: () => void }) {
const loginInfo = useLogin();
const navItems = useNavItems();
return (
}
to={loginInfo ? "/profile" : "/login"}
name={loginInfo ? "Profiles" : "Login"}
isCollapsed={isCollapsed}
onNavigate={onNavigate}
/>
}
to="/setting"
name="Settings"
isCollapsed={isCollapsed}
onNavigate={onNavigate}
/>
);
}
// 사이드바 네비게이션 아이템
interface SidebarNavItemProps {
icon: React.ReactNode;
to: string;
name: string;
isCollapsed: boolean;
onNavigate?: () => void;
}
function SidebarNavItem({ icon, to, name, isCollapsed, onNavigate }: SidebarNavItemProps) {
if (isCollapsed) {
return (
{icon}
{name}
{name}
);
}
return (
{icon}
{name}
);
}
// 모바일용 하단 네비게이션
export function BottomNav() {
const loginInfo = useLogin();
const navItems = useNavItems();
return (
);
}
// 하단 네비게이션 아이템
interface BottomNavItemProps {
icon: React.ReactNode;
to: string;
name: string;
className?: string;
}
function BottomNavItem({ icon, to, name, className }: BottomNavItemProps) {
return (
{icon}
{name}
);
}