'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