'use client' import React, { CSSProperties } from 'react' import { Button } from "@/components/ui/button"; import { Icon } from '@/components/ui/icon' import { type Menu } from '@/lib/menus'; import { Link } from '@/components/navigation'; import { cn } from "@/lib/utils"; import { GripVertical } from 'lucide-react'; // for dnd import { useSortable, arrayMove, SortableContext, verticalListSortingStrategy, horizontalListSortingStrategy, } from "@dnd-kit/sortable"; interface MenuItemProps { id: string href: string label: string icon: string active: boolean collapsed: boolean } import { CSS } from "@dnd-kit/utilities"; import { useConfig } from '@/hooks/use-config'; import { useMediaQuery } from '@/hooks/use-media-query'; import { useMobileMenuConfig } from '@/hooks/use-mobile-menu'; import { useMenuHoverConfig } from '@/hooks/use-menu-hover'; const MenuItem = ({ href, label, icon, active, id, collapsed }: MenuItemProps) => { const [config] = useConfig(); const [hoverConfig] = useMenuHoverConfig(); const { hovered } = hoverConfig; const isDesktop = useMediaQuery("(min-width: 1280px)"); const [mobileMenuConfig, setMobileMenuConfig] = useMobileMenuConfig(); const { transform, transition, setNodeRef, isDragging, attributes, listeners } = useSortable({ id: id, }) const style: CSSProperties = { transform: CSS.Transform.toString(transform), transition: transition, opacity: isDragging ? 0.8 : 1, zIndex: isDragging ? 1 : 0, position: "relative", }; if (config.sidebar === 'draggable' && isDesktop) { return ( ) } if (config.sidebar === 'compact' && isDesktop) { return ( ) } return ( ) } export default MenuItem