'use client'; import * as React from 'react'; import { Folder as FolderIcon, Share2 } from 'lucide-react'; import { TableRow, TableCell } from '@/components/ui/table'; import type { Folder } from '@/app/api/files/route'; import { cn } from '@/lib/utils'; import { Checkbox } from './ui/checkbox'; import { Button } from './ui/button'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './ui/tooltip'; import { ShareDialog } from './share-dialog'; interface FolderItemProps extends React.HTMLAttributes { folder: Folder; onSelectFolder: (path: string) => void; isSelected: boolean; onSelectItem: (id: string, isSelected: boolean) => void; isSelectionActive: boolean; isPublicShare?: boolean; } export function FolderItem({ folder, onSelectFolder, isSelected, onSelectItem, isSelectionActive, isPublicShare, className, ...props }: FolderItemProps) { const [isShareOpen, setIsShareOpen] = React.useState(false); const handleRowClick = (e: React.MouseEvent) => { // Prevent row click from propagating when clicking checkbox or button if ((e.target as HTMLElement).closest('[role="checkbox"]') || (e.target as HTMLElement).closest('button')) { return; } if (isSelectionActive) { onSelectItem(folder.id, !isSelected); } else { onSelectFolder(folder.path); } } const handleShareClick = (e: React.MouseEvent) => { e.stopPropagation(); setIsShareOpen(true); } return ( <> e.stopPropagation()}> onSelectItem(folder.id, Boolean(checked))} aria-label={`Select folder ${folder.name}`} />
{folder.name}

Folder

{!isPublicShare && (

Share

)}
{!isPublicShare && ( )} ); }