import { ChevronRight, MoreVertical } from 'lucide-react' import Link from 'next/link' import { forwardRef, HTMLAttributes, KeyboardEvent, ReactNode } from 'react' import { Button, CardContent, cn, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from 'ui' export interface ResourceAction { label: string onClick: () => void } export interface ResourceItemProps extends HTMLAttributes { media?: ReactNode meta?: ReactNode onClick?: () => void children?: ReactNode actions?: ResourceAction[] href?: string target?: string rel?: string } export const ResourceItem = forwardRef( ( { media, meta, onClick, children, className, actions, href, target, rel, onKeyDown, role, tabIndex, ...props }, ref ) => { const handleKeyDown = (event: KeyboardEvent) => { onKeyDown?.(event) if (event.defaultPrevented || !onClick || event.target !== event.currentTarget) return if (event.key === 'Enter' || event.key === ' ') { event.preventDefault() onClick() } } const content = ( <> {media && (
{media}
)}
{children}
{meta &&
{meta}
} {actions && actions.length > 0 ? (