import React from 'react'; // Utility function to combine classNames function cn(...classes: (string | undefined | null | false)[]): string { return classes.filter(Boolean).join(' '); } // Item variants helper function getItemVariants( variant: 'default' | 'outline' | 'muted', size: 'default' | 'sm' ): string { const baseStyles = 'group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]'; const variantStyles = { default: 'bg-transparent', outline: 'border-border', muted: 'bg-muted/50', }; const sizeStyles = { default: 'p-4 gap-4', sm: 'py-3 px-4 gap-2.5', }; return cn(baseStyles, variantStyles[variant], sizeStyles[size]); } // Item media variants helper function getItemMediaVariants(variant: 'default' | 'icon' | 'image'): string { const baseStyles = 'flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none group-has-[[data-slot=item-description]]/item:translate-y-0.5'; const variantStyles = { default: 'bg-transparent', icon: "size-8 border border-border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4", image: 'size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover', }; return cn(baseStyles, variantStyles[variant]); } interface ItemGroupProps extends React.ComponentProps<'div'> {} function ItemGroup({ className, ...props }: ItemGroupProps) { return (
); } interface ItemSeparatorProps extends React.ComponentProps<'div'> {} function ItemSeparator({ className, ...props }: ItemSeparatorProps) { return (
); } interface ItemProps extends React.ComponentProps<'div'> { variant?: 'default' | 'outline' | 'muted'; size?: 'default' | 'sm'; asChild?: boolean; } function Item({ className, variant = 'default', size = 'default', asChild = false, ...props }: ItemProps) { const Comp = asChild ? 'div' : 'div'; return ( ); } interface ItemMediaProps extends React.ComponentProps<'div'> { variant?: 'default' | 'icon' | 'image'; } function ItemMedia({ className, variant = 'default', ...props }: ItemMediaProps) { return (
); } interface ItemContentProps extends React.ComponentProps<'div'> {} function ItemContent({ className, ...props }: ItemContentProps) { return (
); } interface ItemTitleProps extends React.ComponentProps<'div'> {} function ItemTitle({ className, ...props }: ItemTitleProps) { return (
); } interface ItemDescriptionProps extends React.ComponentProps<'p'> {} function ItemDescription({ className, ...props }: ItemDescriptionProps) { return (

a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4', className )} {...props} /> ); } interface ItemActionsProps extends React.ComponentProps<'div'> {} function ItemActions({ className, ...props }: ItemActionsProps) { return (

); } interface ItemHeaderProps extends React.ComponentProps<'div'> {} function ItemHeader({ className, ...props }: ItemHeaderProps) { return (
); } interface ItemFooterProps extends React.ComponentProps<'div'> {} function ItemFooter({ className, ...props }: ItemFooterProps) { return (
); } export { Item, ItemMedia, ItemContent, ItemActions, ItemGroup, ItemSeparator, ItemTitle, ItemDescription, ItemHeader, ItemFooter, };