{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/ui/file-manager/index.cjs","../../../../src/components/ui/file-manager/file-manager.tsx","../../../../src/components/ui/file-manager/file-manager-breadcrumb.tsx","../../../../src/components/ui/file-manager/file-manager-action-bar.tsx","../../../../src/components/ui/file-manager/file-manager-table.tsx","../../../../src/components/ui/file-manager/file-manager-table-row.tsx","../../../../src/components/ui/file-manager/file-icon.tsx","../../../../src/components/ui/file-manager/file-manager-context-menu.tsx","../../../../src/components/ui/file-manager/file-manager-empty.tsx","../../../../src/components/ui/file-manager/file-manager-skeleton.tsx"],"names":["jsxs","jsx","Copy","Scissors","React","MoreHorizontal","ChevronRight","useState"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/ui/file-manager/index.cjs","sourcesContent":[null,"'use client'\n\nimport React, { useMemo } from 'react'\nimport { cn } from '../../../utils/cn'\nimport { Input } from '../input'\nimport { SearchIcon } from '../../icons-v2-generated/interface/search-icon'\nimport { FileManagerBreadcrumb } from './file-manager-breadcrumb'\nimport { FileManagerActionBar } from './file-manager-action-bar'\nimport { FileManagerTable } from './file-manager-table'\nimport type { FileManagerProps, BreadcrumbItem } from './types'\nimport { Loader2 } from 'lucide-react'\n\nexport function FileManager({ \n  files,\n  currentPath,\n  selectedFiles,\n  searchQuery,\n  loading = false,\n  isSearching,\n  showCheckboxes = true,\n  showSearch = true,\n  showActions = true,\n  canPaste = false,\n  disableSearch = false,\n  resultsCount,\n  onNavigate,\n  onBreadcrumbClick,\n  onSearch,\n  onSelectFile,\n  onSelectAll,\n  onFileAction,\n  onFileClick,\n  onFolderOpen,\n  className \n}: FileManagerProps) {\n  const breadcrumbItems = useMemo((): BreadcrumbItem[] => {\n    const items: BreadcrumbItem[] = []\n    \n    items.push({ label: 'Root', path: '' })\n    \n    if (!currentPath || currentPath === '' || currentPath === '/') {\n      return items\n    }\n    \n    const isWindowsPath = currentPath.includes('\\\\') || /^[A-Za-z]:/.test(currentPath)\n    const separator = isWindowsPath ? '\\\\' : '/'\n    \n    const parts = currentPath.split(separator).filter(Boolean)\n    \n    let startIndex = 0\n    if (isWindowsPath && parts.length > 0) {\n      const driveMatch = parts[0].match(/^([A-Za-z]:)/)\n      if (driveMatch) {\n        items.push({\n          label: driveMatch[1],\n          path: driveMatch[1] + separator\n        })\n        if (parts[0] === driveMatch[1]) {\n          startIndex = 1\n        } else {\n          parts[0] = parts[0].substring(driveMatch[1].length)\n        }\n      }\n    }\n    \n    let accumulatedPath = ''\n    if (isWindowsPath && items.length > 1) {\n      accumulatedPath = items[items.length - 1].path\n    }\n    \n    for (let i = startIndex; i < parts.length; i++) {\n      const part = parts[i]\n      if (!part) continue\n      \n      if (isWindowsPath) {\n        accumulatedPath = accumulatedPath.endsWith(separator) \n          ? accumulatedPath + part \n          : accumulatedPath + separator + part\n      } else {\n        accumulatedPath = accumulatedPath === '' || accumulatedPath === '/'\n          ? '/' + part \n          : accumulatedPath + '/' + part\n      }\n      \n      items.push({\n        label: part,\n        path: accumulatedPath\n      })\n    }\n    \n    return items\n  }, [currentPath])\n\n  const handleBreadcrumbClick = (path: string) => {\n    onBreadcrumbClick?.(path)\n    onNavigate?.(path)\n  }\n\n  const handleFolderOpen = (file: any) => {\n    let newPath: string\n    \n    if (!currentPath || currentPath === '') {\n      if (file.name && /^[A-Za-z]:/.test(file.name)) {\n        newPath = file.name + (file.name.endsWith('\\\\') ? '' : '\\\\')\n      } else {\n        newPath = file.name\n      }\n    } else {\n      const separator = currentPath.includes('\\\\') ? '\\\\' : '/'\n      \n      if (currentPath === '/') {\n        newPath = '/' + file.name\n      } else if (currentPath.endsWith(separator)) {\n        newPath = currentPath + file.name\n      } else {\n        newPath = currentPath + separator + file.name\n      }\n    }\n    \n    onFolderOpen?.(file)\n    onNavigate?.(newPath)\n  }\n\n  const handleSelectAll = (selected: boolean) => {\n    onSelectAll?.(selected)\n  }\n\n  const handleSelectFile = (fileId: string, selected: boolean) => {\n    onSelectFile?.(fileId, selected)\n  }\n\n  return (\n    <div className={cn('flex flex-col h-full bg-ods-bg', className)}>\n      <div className=\"flex-1 flex flex-col py-2 space-y-6 min-h-0\">\n        <div className=\"flex flex-col justify-between gap-4 mb-4 md:flex-row\">\n          <FileManagerBreadcrumb\n            items={breadcrumbItems}\n            onItemClick={handleBreadcrumbClick}\n          />\n\n          {showActions && (\n            <FileManagerActionBar\n              canPaste={canPaste}\n              hasSelection={selectedFiles.length > 0}\n              onNewFolder={() => onFileAction?.('new-folder')}\n              onPaste={() => onFileAction?.('paste')}\n              onCopy={() => onFileAction?.('copy')}\n              onCut={() => onFileAction?.('cut')}\n              onUpload={() => onFileAction?.('upload')}\n              onSelectAll={() => handleSelectAll(true)}\n            />\n          )}\n        </div>\n        \n        {showSearch && (\n          <Input\n            value={searchQuery}\n            onChange={(e) => onSearch?.(e.target.value)}\n            placeholder=\"Search...\"\n            disabled={disableSearch}\n            startAdornment={<SearchIcon />}\n            loading={isSearching}\n          />\n        )}\n        \n        <div className=\"flex-1 min-h-0\">\n          <FileManagerTable\n            files={files}\n            selectedFiles={selectedFiles}\n            resultsCount={resultsCount || files.length}\n            showCheckboxes={showCheckboxes}\n            loading={loading}\n            isSearchResult={!!searchQuery}\n            onSelectFile={handleSelectFile}\n            onSelectAll={handleSelectAll}\n            onFileClick={onFileClick}\n            onFolderOpen={handleFolderOpen}\n            onFileAction={onFileAction}\n          />\n        </div>\n      </div>\n    </div>\n  )\n}","'use client'\n\nimport React from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerBreadcrumbProps } from './types'\n\nexport function FileManagerBreadcrumb({ \n  items, \n  onItemClick, \n  className \n}: FileManagerBreadcrumbProps) {\n  return (\n    <nav className={cn(\n      'flex flex-wrap items-center gap-x-1 gap-y-1 text-h6 break-words',\n      className\n    )}>\n      {items.map((item, index) => (\n        <React.Fragment key={item.path}>\n          {index > 0 && (\n            <ChevronRight className=\"h-4 w-4 text-ods-text-tertiary flex-shrink-0\" />\n          )}\n          <button\n            onClick={() => onItemClick?.(item.path)}\n            className={cn(\n              'shrink-0 px-1 py-0.5 rounded hover:bg-ods-bg-hover transition-colors',\n              'text-ods-text-primary hover:text-ods-accent text-left break-all',\n              index === items.length - 1 && 'font-medium'\n            )}\n          >\n            {item.label}\n          </button>\n        </React.Fragment>\n      ))}\n    </nav>\n  )\n}","'use client'\n\nimport React from 'react'\nimport { FolderPlus, Clipboard, Upload, CheckSquare, Copy, Scissors } from 'lucide-react'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerActionBarProps } from './types'\n\nexport function FileManagerActionBar({ \n  canPaste = false,\n  hasSelection = false,\n  onNewFolder,\n  onPaste,\n  onCopy,\n  onCut,\n  onUpload,\n  onSelectAll,\n  className \n}: FileManagerActionBarProps) {\n  return (\n    <div className={cn('flex items-center gap-4 flex-wrap md:justify-end', className)}>\n      <Button\n        variant=\"outline\"\n        size=\"small-legacy\"\n        onClick={onNewFolder}\n        leftIcon={<FolderPlus className=\"h-4 w-4\" />}\n      >\n        New Folder\n      </Button>\n\n      <Button\n        variant=\"outline\"\n        size=\"small-legacy\"\n        onClick={onCopy}\n        disabled={!hasSelection}\n        leftIcon={<Copy className=\"h-4 w-4\" />}\n      >\n        Copy\n      </Button>\n\n      <Button\n        variant=\"outline\"\n        size=\"small-legacy\"\n        onClick={onCut}\n        disabled={!hasSelection}\n        leftIcon={<Scissors className=\"h-4 w-4\" />}\n      >\n        Cut\n      </Button>\n\n      <Button\n        variant=\"outline\"\n        size=\"small-legacy\"\n        onClick={onPaste}\n        disabled={!canPaste}\n        leftIcon={<Clipboard className=\"h-4 w-4\" />}\n      >\n        Paste\n      </Button>\n\n      <Button\n        variant=\"outline\"\n        size=\"small-legacy\"\n        onClick={onUpload}\n        leftIcon={<Upload className=\"h-4 w-4\" />}\n      >\n        Upload\n      </Button>\n\n      <Button\n        variant=\"outline\"\n        size=\"small-legacy\"\n        onClick={onSelectAll}\n        leftIcon={<CheckSquare className=\"h-4 w-4\" />}\n      >\n        Select All\n      </Button>\n    </div>\n  )\n}","'use client'\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { Checkbox } from '../checkbox'\nimport { Skeleton } from '../skeleton'\nimport { cn } from '../../../utils/cn'\nimport { FileManagerTableRow } from './file-manager-table-row'\nimport { FileManagerEmpty } from './file-manager-empty'\nimport type { FileManagerTableProps } from './types'\n\nexport function FileManagerTable({ \n  files,\n  selectedFiles,\n  showCheckboxes = true,\n  loading = false,\n  isSearchResult = false,\n  onSelectFile,\n  onSelectAll,\n  onFileClick,\n  onFolderOpen,\n  onFileAction,\n  className \n}: FileManagerTableProps) {\n  const allSelected = useMemo(() => {\n    return files.length > 0 && selectedFiles.length === files.length\n  }, [files.length, selectedFiles.length])\n\n  const someSelected = useMemo(() => {\n    return selectedFiles.length > 0 && selectedFiles.length < files.length\n  }, [files.length, selectedFiles.length])\n\n  const containerRef = useRef<HTMLDivElement>(null)\n  const [tableHeight, setTableHeight] = useState<number | null>(null)\n\n  useLayoutEffect(() => {\n    if (loading || files.length === 0) {\n      setTableHeight(null)\n      return\n    }\n\n    const handleResize = () => {\n      const node = containerRef.current\n      if (!node) return\n      const rect = node.getBoundingClientRect()\n      const availableHeight = window.innerHeight - rect.top\n      setTableHeight(availableHeight > 0 ? availableHeight : null)\n    }\n\n    handleResize()\n\n    window.addEventListener('resize', handleResize)\n    window.addEventListener('scroll', handleResize, true)\n\n    const resizeObserver = new ResizeObserver(handleResize)\n    const parent = containerRef.current?.parentElement\n    if (parent) {\n      resizeObserver.observe(parent)\n    } else if (containerRef.current) {\n      resizeObserver.observe(containerRef.current)\n    }\n\n    return () => {\n      window.removeEventListener('resize', handleResize)\n      window.removeEventListener('scroll', handleResize, true)\n      resizeObserver.disconnect()\n    }\n  }, [loading, files.length])\n\n  const handleSelectAll = (checked: boolean) => {\n    onSelectAll?.(checked)\n  }\n\n  if (loading) {\n    const skeletonRows = 8\n    \n    return (\n      <div className={cn('bg-ods-bg border border-ods-border rounded-lg flex flex-col', className)}>\n        {/* Table header */}\n        <div className=\"flex items-center h-12 px-4 bg-ods-bg-surface border-b border-ods-border rounded-t-lg\">\n          {showCheckboxes && (\n            <div className=\"mr-4\">\n              <Skeleton className=\"h-5 w-5 rounded\" />\n            </div>\n          )}\n          \n          <div className=\"flex items-center gap-3 flex-1 min-w-0 text-h5 text-ods-text-secondary\">\n            NAME\n          </div>\n          \n          <div className=\"w-24 shrink-0 pr-4 text-h5 text-ods-text-secondary\">\n            SIZE\n          </div>\n          \n          <div className=\"w-36 shrink-0 pl-4 text-h5 text-ods-text-secondary\">\n            EDITED\n          </div>\n          \n          <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n            {/* Space for action buttons */}\n          </div>\n        </div>\n        \n        {/* Skeleton rows */}\n        <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto\">\n          {Array.from({ length: skeletonRows }).map((_, idx) => (\n            <div key={idx} className=\"bg-ods-card group flex items-center h-16 px-4 border-ods-border\">\n              {showCheckboxes && (\n                <div className=\"mr-4\">\n                  <Skeleton className=\"h-5 w-5 rounded\" />\n                </div>\n              )}\n              \n              {/* File icon and name column */}\n              <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n                <Skeleton className=\"h-6 w-6 rounded\" />\n                <div className=\"flex flex-col min-w-0\">\n                  <Skeleton className=\"h-4 w-32\" />\n                  {isSearchResult && (\n                    <Skeleton className=\"h-3 w-48 mt-1\" />\n                  )}\n                </div>\n              </div>\n              \n              {/* Size column */}\n              <div className=\"w-24 shrink-0 pr-4\">\n                <Skeleton className=\"h-4 w-16\" />\n              </div>\n              \n              {/* Modified date column */}\n              <div className=\"w-36 shrink-0 pl-4\">\n                <Skeleton className=\"h-4 w-24\" />\n              </div>\n              \n              {/* Action buttons column */}\n              <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\">\n                <Skeleton className=\"h-8 w-8 rounded\" />\n                <Skeleton className=\"h-8 w-8 rounded\" />\n              </div>\n            </div>\n          ))}\n        </div>\n      </div>\n    )\n  }\n\n  if (files.length === 0) {\n    return <FileManagerEmpty />\n  }\n\n  return (\n    <div\n      ref={containerRef}\n      className={cn('bg-ods-bg border border-ods-border rounded-lg flex flex-col', className)}\n      style={tableHeight ? { height: `${tableHeight}px` } : undefined}\n    >\n      <div className=\"flex items-center h-12 px-4 bg-ods-bg-surface border-b border-ods-border rounded-t-lg\">\n        {showCheckboxes && (\n          <div className=\"mr-4\">\n            <Checkbox\n              checked={allSelected || someSelected}\n              onCheckedChange={handleSelectAll}\n              className=\"h-5 w-5\"\n            />\n          </div>\n        )}\n        \n        <div className=\"flex items-center gap-3 flex-1 min-w-0 text-h5 text-ods-text-secondary\">\n          NAME\n        </div>\n        \n        <div className=\"w-24 shrink-0 pr-4 text-h5 text-ods-text-secondary\">\n          SIZE\n        </div>\n        \n        <div className=\"w-36 shrink-0 pl-4 text-h5 text-ods-text-secondary\">\n          EDITED\n        </div>\n        \n        <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n          {/* Space for action buttons */}\n        </div>\n      </div>\n      \n      <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto\">\n        {files.map((file) => (\n          <FileManagerTableRow\n            key={file.id}\n            file={file}\n            isSelected={selectedFiles.includes(file.id)}\n            showCheckbox={showCheckboxes}\n            showPath={isSearchResult}\n            onSelect={(selected) => onSelectFile?.(file.id, selected)}\n            onClick={() => {\n              if (isSearchResult) {\n                onFileClick?.(file)\n              } else if (file.type === 'folder') {\n                onFolderOpen?.(file)\n              }\n            }}\n            onDoubleClick={() => {\n              if (file.type === 'folder' && !isSearchResult) {\n                onFolderOpen?.(file)\n              }\n            }}\n            onActionClick={(action) => onFileAction?.(action, file.id)}\n          />\n        ))}\n      </div>\n    </div>\n  )\n}","'use client'\n\nimport React, { useState } from 'react'\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\nimport { Checkbox } from '../checkbox'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport { FileIcon } from './file-icon'\nimport { FileManagerContextMenu } from './file-manager-context-menu'\nimport type { FileManagerTableRowProps } from './types'\n\nexport function FileManagerTableRow({ \n  file,\n  isSelected = false,\n  showCheckbox = true,\n  showPath = false,\n  onSelect,\n  onClick,\n  onDoubleClick,\n  onContextMenu,\n  onActionClick,\n  className \n}: FileManagerTableRowProps) {\n  const [contextMenuOpen, setContextMenuOpen] = useState(false)\n  \n  const handleRowClick = (e: React.MouseEvent) => {\n    // Don't trigger row click if clicking on interactive elements\n    if ((e.target as HTMLElement).closest('[data-no-row-click]')) {\n      return\n    }\n    onClick?.()\n  }\n\n  const handleCheckboxChange = (checked: boolean) => {\n    onSelect?.(checked)\n  }\n\n  const handleContextAction = (action: any) => {\n    onActionClick?.(action)\n    setContextMenuOpen(false)\n  }\n\n  const fileExtension = file.type === 'file' \n    ? file.name.split('.').pop() \n    : undefined\n\n  return (\n    <div\n      className={cn(\n        'bg-ods-card group flex items-center h-16 px-4 border-ods-border',\n        'hover:bg-ods-bg-hover transition-colors cursor-pointer',\n        isSelected && 'bg-ods-bg-surface',\n        className\n      )}\n      onClick={handleRowClick}\n      onDoubleClick={onDoubleClick}\n      onContextMenu={(e) => {\n        e.preventDefault()\n        onContextMenu?.(e)\n      }}\n    >\n      {showCheckbox && (\n        <div className=\"mr-4\" data-no-row-click>\n          <Checkbox\n            checked={isSelected}\n            onCheckedChange={handleCheckboxChange}\n            className=\"h-5 w-5\"\n          />\n        </div>\n      )}\n      \n      <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n        <FileIcon \n          type={file.type} \n          extension={fileExtension}\n          size=\"md\" \n        />\n        <div className=\"flex flex-col min-w-0\">\n          <span className=\"text-h6 text-ods-text-primary truncate\" title={file.name}>\n            {file.name}\n          </span>\n          {showPath && file.path && (\n            <span className=\"text-h6 text-ods-text-secondary truncate\" title={file.path}>\n              {file.path}\n            </span>\n          )}\n        </div>\n      </div>\n      \n      <div className=\"w-24 shrink-0 pr-4 text-h6 text-ods-text-secondary\">\n        {file.size || ''}\n      </div>\n\n      <div className=\"w-36 shrink-0 pl-4 text-h6 text-ods-text-secondary\">\n        {file.modified}\n      </div>\n      \n      <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\" data-no-row-click>\n        <FileManagerContextMenu\n          open={contextMenuOpen}\n          onOpenChange={setContextMenuOpen}\n          onAction={handleContextAction}\n          fileType={file.type}\n          trigger={\n            <Button\n              variant=\"transparent\"\n              size=\"small-legacy\"\n              className=\"h-8 w-8 p-0 opacity-0 group-hover:opacity-100 transition-opacity\"\n              onClick={(e) => {\n                e.stopPropagation()\n              }}\n            >\n              <MoreHorizontal className=\"h-4 w-4\" />\n            </Button>\n          }\n        />\n        \n        {file.type === 'folder' ? (\n          <Button\n            variant=\"transparent\"\n            size=\"small-legacy\"\n            className=\"h-8 w-8 p-0\"\n            onClick={(e) => {\n              e.stopPropagation()\n              onDoubleClick?.()\n            }}\n          >\n            <ChevronRight className=\"h-4 w-4\" />\n          </Button>\n        ) : (\n          <div className=\"w-8\" /> /* Space to maintain alignment when no chevron */\n        )}\n      </div>\n    </div>\n  )\n}","'use client'\n\nimport React from 'react'\nimport { Folder, File, FileText, Image, FileVideo, FileAudio, FileCode, FileArchive } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport type { FileIconProps } from './types'\n\nconst sizeMap = {\n  sm: 'h-4 w-4',\n  md: 'h-5 w-5',\n  lg: 'h-6 w-6'\n}\n\nconst getFileIcon = (extension?: string) => {\n  if (!extension) return File\n  \n  const ext = extension.toLowerCase()\n  \n  // Document files\n  if (['txt', 'doc', 'docx', 'pdf', 'rtf'].includes(ext)) return FileText\n  \n  // Image files\n  if (['jpg', 'jpeg', 'png', 'gif', 'svg', 'webp', 'bmp'].includes(ext)) return Image\n  \n  // Video files\n  if (['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv'].includes(ext)) return FileVideo\n  \n  // Audio files\n  if (['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma'].includes(ext)) return FileAudio\n  \n  // Code files\n  if (['js', 'ts', 'jsx', 'tsx', 'py', 'java', 'c', 'cpp', 'cs', 'html', 'css', 'json', 'xml'].includes(ext)) return FileCode\n  \n  // Archive files\n  if (['zip', 'rar', '7z', 'tar', 'gz', 'bz2'].includes(ext)) return FileArchive\n  \n  return File\n}\n\nexport function FileIcon({ type, extension, className, size = 'md' }: FileIconProps) {\n  const Icon = type === 'folder' ? Folder : getFileIcon(extension)\n  \n  return (\n    <Icon \n      className={cn(\n        sizeMap[size],\n        type === 'folder' ? 'text-ods-accent' : 'text-ods-text-secondary',\n        className\n      )}\n    />\n  )\n}","'use client'\n\nimport React from 'react'\nimport { Download, Copy, Edit2, Scissors, Archive, Trash2, MoreHorizontal } from 'lucide-react'\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from '../dropdown-menu'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerContextMenuProps } from './types'\n\nexport function FileManagerContextMenu({ \n  open,\n  onOpenChange,\n  onAction,\n  fileType = 'file',\n  hasSelection = false,\n  trigger,\n  className \n}: FileManagerContextMenuProps) {\n  const menuItems = [\n    {\n      action: 'download' as const,\n      label: 'Download',\n      icon: Download,\n      show: fileType === 'file' || hasSelection\n    },\n    {\n      action: 'copy' as const,\n      label: 'Copy',\n      icon: Copy,\n      show: true\n    },\n    {\n      action: 'rename' as const,\n      label: 'Rename',\n      icon: Edit2,\n      show: !hasSelection\n    },\n    {\n      action: 'cut' as const,\n      label: 'Cut',\n      icon: Scissors,\n      show: true\n    },\n    {\n      action: 'delete' as const,\n      label: 'Delete',\n      icon: Trash2,\n      show: true,\n      separator: true\n    }\n  ]\n\n  const visibleItems = menuItems.filter(item => item.show)\n\n  return (\n    <DropdownMenu open={open} onOpenChange={onOpenChange}>\n      <DropdownMenuTrigger asChild>\n        {trigger || (\n          <Button\n            variant=\"transparent\"\n            size=\"small-legacy\"\n            className=\"h-8 w-8 p-0\"\n          >\n            <MoreHorizontal className=\"h-4 w-4\" />\n          </Button>\n        )}\n      </DropdownMenuTrigger>\n      <DropdownMenuContent \n        align=\"end\" \n        className={cn('w-56', className)}\n        onClick={(e) => e.stopPropagation()}\n      >\n        {visibleItems.map((item, index) => (\n          <React.Fragment key={item.action}>\n            {item.separator && index > 0 && <DropdownMenuSeparator />}\n            <DropdownMenuItem\n              onClick={(e) => {\n                e.stopPropagation()\n                onAction(item.action)\n              }}\n              className=\"cursor-pointer\"\n            >\n              <item.icon className=\"mr-3 h-4 w-4\" />\n              <span>{item.label}</span>\n            </DropdownMenuItem>\n          </React.Fragment>\n        ))}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}","'use client'\n\nimport React from 'react'\nimport { FolderOpen } from 'lucide-react'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerEmptyProps } from './types'\n\nexport function FileManagerEmpty({ \n  message = 'No files or folders found',\n  description = 'This folder is empty. Create a new folder or upload files to get started.',\n  action,\n  className \n}: FileManagerEmptyProps) {\n  return (\n    <div className={cn(\n      'flex flex-col items-center justify-center py-20 px-4',\n      className\n    )}>\n      <div className=\"p-4 bg-ods-bg-surface rounded-full mb-6\">\n        <FolderOpen className=\"h-12 w-12 text-ods-text-tertiary\" />\n      </div>\n      \n      <h3 className=\"text-h4 text-ods-text-primary mb-2\">\n        {message}\n      </h3>\n      \n      <p className=\"text-h6 text-ods-text-secondary text-center max-w-md mb-6\">\n        {description}\n      </p>\n      \n      {action && (\n        <Button\n          variant=\"accent\"\n          size=\"small-legacy\"\n          onClick={action.onClick}\n        >\n          {action.label}\n        </Button>\n      )}\n    </div>\n  )\n}","'use client'\n\nimport React from 'react'\nimport { Skeleton } from '../skeleton'\n\ninterface FileManagerSkeletonProps {\n  rows?: number\n  showSearch?: boolean\n  showActions?: boolean\n}\n\nexport function FileManagerSkeleton({ \n  rows = 8,\n  showSearch = true,\n  showActions = true\n}: FileManagerSkeletonProps) {\n  const rowPlaceholders = Array.from({ length: rows })\n\n  return (\n    <div className=\"flex flex-col h-full bg-ods-bg\">\n      <div className=\"flex-1 flex flex-col py-6 space-y-6 min-h-0\">\n        {/* Breadcrumb and Action Bar */}\n        <div className=\"flex flex-wrap items-start justify-between gap-4\">\n          {/* Breadcrumb skeleton */}\n          <div className=\"flex-1 min-w-0 flex items-center gap-2\">\n            <Skeleton className=\"h-5 w-12\" />\n            <Skeleton className=\"h-4 w-4 rounded-full\" />\n            <Skeleton className=\"h-5 w-20\" />\n            <Skeleton className=\"h-4 w-4 rounded-full\" />\n            <Skeleton className=\"h-5 w-24\" />\n          </div>\n          \n          {/* Action buttons skeleton */}\n          {showActions && (\n            <div className=\"flex-shrink-0 flex items-center gap-2\">\n              <Skeleton className=\"h-9 w-24\" />\n              <Skeleton className=\"h-9 w-20\" />\n              <Skeleton className=\"h-9 w-20\" />\n              <Skeleton className=\"h-9 w-28\" />\n            </div>\n          )}\n        </div>\n        \n        {/* Search bar skeleton */}\n        {showSearch && (\n          <Skeleton className=\"h-10 w-full rounded-lg\" />\n        )}\n        \n        {/* Table skeleton */}\n        <div className=\"flex-1 min-h-0\">\n          <div className=\"bg-ods-bg border border-ods-border rounded-lg flex flex-col\">\n            {/* Table header */}\n            <div className=\"flex items-center h-12 px-4 bg-ods-bg-surface border-b border-ods-border rounded-t-lg\">\n              {/* Checkbox */}\n              <div className=\"mr-4\">\n                <Skeleton className=\"h-5 w-5 rounded\" />\n              </div>\n              \n              {/* Column headers */}\n              <div className=\"flex items-center gap-3 flex-1 min-w-0 text-h5 text-ods-text-secondary\">\n                NAME\n              </div>\n              \n              <div className=\"w-24 shrink-0 pr-4 text-h5 text-ods-text-secondary\">\n                SIZE\n              </div>\n              \n              <div className=\"w-36 shrink-0 pl-4 text-h5 text-ods-text-secondary\">\n                EDITED\n              </div>\n              \n              <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n                {/* Empty space for actions */}\n              </div>\n            </div>\n            \n            {/* Table rows */}\n            <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto min-h-0\">\n              {rowPlaceholders.map((_, idx) => (\n                <div key={idx} className=\"bg-ods-card flex items-center h-16 px-4 border-ods-border\">\n                  {/* Checkbox */}\n                  <div className=\"mr-4\">\n                    <Skeleton className=\"h-5 w-5 rounded\" />\n                  </div>\n                  \n                  {/* File icon and name */}\n                  <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n                    <Skeleton className=\"h-6 w-6 rounded\" />\n                    <div className=\"flex flex-col min-w-0\">\n                      <Skeleton className=\"h-4 w-32\" />\n                    </div>\n                  </div>\n                  \n                  {/* Size */}\n                  <div className=\"w-24 shrink-0 pr-4\">\n                    <Skeleton className=\"h-4 w-16\" />\n                  </div>\n                  \n                  {/* Modified date */}\n                  <div className=\"w-36 shrink-0 pl-4\">\n                    <Skeleton className=\"h-4 w-24\" />\n                  </div>\n                  \n                  {/* Action buttons */}\n                  <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\">\n                    <Skeleton className=\"h-8 w-8 rounded\" />\n                    <Skeleton className=\"h-8 w-8 rounded\" />\n                  </div>\n                </div>\n              ))}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n\n"]}