"use client" import * as React from "react" import { FileIcon, FolderIcon, MoreHorizontalIcon } from "lucide-react" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { cn } from "@/lib/utils" export type FileManagerItem = { id: string name: string type: "file" | "folder" size?: React.ReactNode owner?: React.ReactNode status?: React.ReactNode } export type FileManagerProps = Omit, "onSelect"> & { items: FileManagerItem[] selectedId?: string onSelect?: (item: FileManagerItem) => void onOpen?: (item: FileManagerItem) => void onSearchChange?: (value: string) => void searchValue?: string actions?: React.ReactNode } function FileManager({ items, selectedId, onSelect, onOpen, searchValue, onSearchChange, actions, className, ...props }: FileManagerProps) { const [internalSearch, setInternalSearch] = React.useState("") const query = searchValue ?? internalSearch const filteredItems = items.filter((item) => item.name.toLowerCase().includes(query.toLowerCase())) return (
{ setInternalSearch(value) onSearchChange?.(value) }} className="max-w-sm" /> {actions}
{filteredItems.map((item) => ( ))}
) } export { FileManager }