BucketFilePickerExplorer.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { useParams } from 'common'
  2. import { cn } from 'ui'
  3. import { STORAGE_VIEWS } from '../Storage.constants'
  4. import { useStoragePreference } from '../StorageExplorer/useStoragePreference'
  5. import { BucketFilePickerColumn } from './BucketFilePickerColumn'
  6. import { BucketFilePickerHeader } from './BucketFilePickerHeader'
  7. import { BucketFilePickerHeaderSelection } from './BucketFilePickerHeaderSelection'
  8. import { PreviewPane } from './BucketFilePickerPreviewPane'
  9. import { useBucketFilePickerStateSnapshot } from './BucketFilePickerState'
  10. export function BucketFilePickerExplorer({ onSelect }: { onSelect: (value: string) => void }) {
  11. const { ref: projectRef } = useParams()
  12. const { view } = useStoragePreference(projectRef!)
  13. const { selectedItems, columns } = useBucketFilePickerStateSnapshot()
  14. return (
  15. <div className="flex-1 min-h-0">
  16. <div className="bg-studio border rounded-md border-overlay flex h-full w-full flex-col">
  17. {selectedItems.length === 0 ? (
  18. <BucketFilePickerHeader />
  19. ) : (
  20. <BucketFilePickerHeaderSelection />
  21. )}
  22. <div className="flex flex-1 min-h-0">
  23. <div
  24. className={cn(
  25. 'file-explorer flex grow overflow-x-auto justify-between h-full w-full relative',
  26. view === STORAGE_VIEWS.LIST && 'flex-col'
  27. )}
  28. >
  29. {view === STORAGE_VIEWS.COLUMNS ? (
  30. <div className="flex">
  31. <BucketFilePickerColumn index={0} />
  32. </div>
  33. ) : (
  34. <BucketFilePickerColumn fullWidth index={columns.length} />
  35. )}
  36. </div>
  37. <PreviewPane onSelect={onSelect} />
  38. </div>
  39. </div>
  40. </div>
  41. )
  42. }