'use client'; import { cva } from 'class-variance-authority'; import { File as FileIcon, Folder as FolderIcon, FolderOpen, } from 'lucide-react'; import { type HTMLAttributes, type ReactNode, useState } from 'react'; import { cn } from '../lib/cn'; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from './ui/collapsible'; const itemVariants = cva( 'flex flex-row items-center gap-2 rounded-md px-2 py-1.5 text-sm hover:bg-fd-accent hover:text-fd-accent-foreground [&_svg]:size-4', ); export function Files({ className, ...props }: HTMLAttributes): React.ReactElement { return (
{props.children}
); } export interface FileProps extends HTMLAttributes { name: string; icon?: ReactNode; } export interface FolderProps extends HTMLAttributes { name: string; disabled?: boolean; /** * Open folder by default * * @defaultValue false */ defaultOpen?: boolean; } export function File({ name, icon = , className, ...rest }: FileProps): React.ReactElement { return (
{icon} {name}
); } export function Folder({ name, defaultOpen = false, ...props }: FolderProps): React.ReactElement { const [open, setOpen] = useState(defaultOpen); return ( {open ? : } {name}
{props.children}
); }