{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "file-manager", "title": "File Manager", "description": "A filesystem-neutral file workspace with scoped state, navigation, search, list and grid views, CRUD, upload, download, copy and move operations, and bounded previews", "dependencies": [ "@base-ui/react@^1.6.0", "daisyui", "emittery@^2.0.0", "lucide-react", "mutative@^1.3.0", "react-resizable-panels@^4.12.1", "zustand@^5.0.14", "zustand-mutative@^1.3.1" ], "files": [ { "path": "registry/default/ui/addressable-frame.tsx", "content": "import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type AddressableFrameProps = ComponentPropsWithRef<'section'>;\n\nexport function AddressableFrame({ className, ...props }: AddressableFrameProps) {\n\treturn (\n\t\t\n\t);\n}\n\nexport type AddressableFrameBarProps = ComponentPropsWithRef<'div'>;\n\nexport function AddressableFrameBar({ className, ...props }: AddressableFrameBarProps) {\n\treturn (\n\t\t
\n\t);\n}\n\nexport type AddressableFrameNavigationProps = ComponentPropsWithRef<'nav'>;\n\nexport function AddressableFrameNavigation({ className, ...props }: AddressableFrameNavigationProps) {\n\treturn (\n\t\t\n\t);\n}\n\nexport type AddressableFrameAddressProps = ComponentPropsWithRef<'div'> & {\n\ticon?: ReactNode;\n};\n\nexport function AddressableFrameAddress({ icon, children, className, ...props }: AddressableFrameAddressProps) {\n\treturn (\n\t\t{props.messages.mediaLoadFailed(props.file)}
\n\t\t\t\t{messages.unsupportedDescription}
\n\t\t\t\t| \n\t\t\t\t\t\t\t actions.selectAll(allSelected ? [] : visiblePaths)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t | \n\t\t\t\t\t) : null}\n\t\t\t\t\t类型 | \n\t\t\t\t\t|||
|---|---|---|---|---|
| \n\t\t\t\t\t\t\t\t\t onSelect(entry, { toggle: true })}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{entry.kind === 'directory' ? '—' : formatFileManagerBytes(entry.size)}\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{entry.kind === 'directory' ? '目录' : getFileManagerExtension(entry.name).toUpperCase() || '文件'}\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{entry.mtime ? new Date(entry.mtime).toLocaleString() : '—'}\n\t\t\t\t\t\t\t | \n\t\t\t\t\t\t