TableContainer.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Card, CardContent, cn } from 'ui'
  2. import {
  3. Table,
  4. TableBody,
  5. TableHead,
  6. TableHeader,
  7. TableHeadSort,
  8. TableRow,
  9. } from 'ui/src/components/shadcn/ui/table'
  10. import { AccessTokenSort, AccessTokenSortColumn } from '../AccessToken.types'
  11. const tableHeaderClass = 'text-left font-mono uppercase text-xs text-foreground-lighter py-2'
  12. interface TableContainerProps {
  13. children: React.ReactNode
  14. sort: AccessTokenSort
  15. onSortChange: (column: AccessTokenSortColumn) => void
  16. }
  17. export const TableContainer = ({ children, sort, onSortChange }: TableContainerProps) => (
  18. <Card className="w-full overflow-hidden">
  19. <CardContent className="p-0">
  20. <Table className="p-5 table-auto">
  21. <TableHeader>
  22. <TableRow className="bg-200">
  23. <TableHead className={tableHeaderClass}>Token</TableHead>
  24. <TableHead className={tableHeaderClass}>
  25. <TableHeadSort column="last_used_at" currentSort={sort} onSortChange={onSortChange}>
  26. Last used
  27. </TableHeadSort>
  28. </TableHead>
  29. <TableHead className={tableHeaderClass}>
  30. <TableHeadSort column="expires_at" currentSort={sort} onSortChange={onSortChange}>
  31. Expires
  32. </TableHeadSort>
  33. </TableHead>
  34. <TableHead className={cn(tableHeaderClass, 'text-right!')} />
  35. </TableRow>
  36. </TableHeader>
  37. <TableBody>{children}</TableBody>
  38. </Table>
  39. </CardContent>
  40. </Card>
  41. )