Skip to content

@sqlrooms/s3-browser / S3FileBrowser

Function: S3FileBrowser()

S3FileBrowser(props, deprecatedLegacyContext?): ReactNode

A file browser component for navigating and selecting files from an S3-like storage.

This component provides a familiar file explorer interface with features like:

  • Directory navigation with breadcrumbs
  • File and directory listing
  • Multiple file selection
  • File metadata display (size, type, last modified)

S3 File Browser Interface

Parameters

ParameterTypeDescription
props{ files: ({ key: string; isDirectory: true; } | { key: string; isDirectory: false; lastModified: Date; size: number; contentType: string; })[]; selectedFiles: string[]; selectedDirectory: string; onCanConfirmChange: (canConfirm) => void; onChangeSelectedDirectory: (directory) => void; onChangeSelectedFiles: (files) => void; }The component props
props.files?({ key: string; isDirectory: true; } | { key: string; isDirectory: false; lastModified: Date; size: number; contentType: string; })[]Array of files and directories to display
props.selectedFiles?string[]Array of currently selected file keys
props.selectedDirectory?stringCurrent directory path (empty string for root)
props.onCanConfirmChange?(canConfirm) => voidCallback fired when selection state changes
props.onChangeSelectedDirectory?(directory) => voidCallback fired when directory navigation occurs
props.onChangeSelectedFiles?(files) => voidCallback fired when file selection changes
deprecatedLegacyContext?anyDeprecated See React Docs

Returns

ReactNode

Example

tsx
const [selectedFiles, setSelectedFiles] = useState<string[]>([]);
const [selectedDirectory, setSelectedDirectory] = useState('');

return (
  <S3FileBrowser
    files={[
      { key: 'documents', isDirectory: true },
      {
        key: 'example.txt',
        isDirectory: false,
        size: 1024,
        contentType: 'text/plain',
        lastModified: new Date()
      }
    ]}
    selectedFiles={selectedFiles}
    selectedDirectory={selectedDirectory}
    onCanConfirmChange={(canConfirm) => console.log('Can confirm:', canConfirm)}
    onChangeSelectedDirectory={setSelectedDirectory}
    onChangeSelectedFiles={setSelectedFiles}
  />
);