BucketTableHeader.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { TableHead, TableHeader, TableRow } from 'ui'
  2. import {
  3. VirtualizedTableHead,
  4. VirtualizedTableHeader,
  5. VirtualizedTableRow,
  6. } from '@/components/ui/VirtualizedTable'
  7. type BucketTableMode = 'standard' | 'virtualized'
  8. type BucketTableHeaderProps = {
  9. mode: BucketTableMode
  10. hasBuckets?: boolean
  11. }
  12. export const BucketTableHeader = ({ mode, hasBuckets = true }: BucketTableHeaderProps) => {
  13. const BucketTableHeader = mode === 'standard' ? TableHeader : VirtualizedTableHeader
  14. const BucketTableRow = mode === 'standard' ? TableRow : VirtualizedTableRow
  15. const BucketTableHead = mode === 'standard' ? TableHead : VirtualizedTableHead
  16. const stickyClasses = 'sticky top-0 z-10 bg-200'
  17. return (
  18. <BucketTableHeader>
  19. <BucketTableRow>
  20. {hasBuckets && (
  21. <BucketTableHead className={`${stickyClasses} w-2 pr-1`}>
  22. <span className="sr-only">Icon</span>
  23. </BucketTableHead>
  24. )}
  25. <BucketTableHead className={stickyClasses}>Name</BucketTableHead>
  26. <BucketTableHead className={stickyClasses}>Policies</BucketTableHead>
  27. <BucketTableHead className={stickyClasses}>File size limit</BucketTableHead>
  28. <BucketTableHead className={stickyClasses}>Allowed MIME types</BucketTableHead>
  29. <BucketTableHead className={stickyClasses}>
  30. <span className="sr-only">Actions</span>
  31. </BucketTableHead>
  32. </BucketTableRow>
  33. </BucketTableHeader>
  34. )
  35. }