ViewAppSheetPermissions.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import {
  2. Card,
  3. CardContent,
  4. Table,
  5. TableBody,
  6. TableCell,
  7. TableHead,
  8. TableHeader,
  9. TableRow,
  10. } from 'ui'
  11. import type { Permission } from '../Apps.constants'
  12. interface ViewAppSheetPermissionsProps {
  13. permissions: Permission[]
  14. isLoading: boolean
  15. }
  16. export function ViewAppSheetPermissions({ permissions, isLoading }: ViewAppSheetPermissionsProps) {
  17. return (
  18. <div className="px-5 sm:px-6 py-6 space-y-3">
  19. <h3 className="text-sm font-medium text-foreground">Permissions</h3>
  20. {isLoading ? (
  21. <p className="text-sm text-foreground-light py-4">Loading permissions...</p>
  22. ) : (
  23. <Card className="w-full overflow-hidden bg-surface-100">
  24. <CardContent className="p-0">
  25. <Table className="table-fixed w-full">
  26. <TableHeader>
  27. <TableRow>
  28. <TableHead className="text-left font-mono uppercase text-xs text-foreground-lighter h-auto py-2 w-[40%]">
  29. Permission
  30. </TableHead>
  31. <TableHead className="text-left font-mono uppercase text-xs text-foreground-lighter h-auto py-2 w-[60%]">
  32. Description
  33. </TableHead>
  34. </TableRow>
  35. </TableHeader>
  36. <TableBody>
  37. {permissions.length === 0 ? (
  38. <TableRow>
  39. <TableCell colSpan={2}>
  40. <p className="text-foreground-light text-center py-4">
  41. No permissions configured
  42. </p>
  43. </TableCell>
  44. </TableRow>
  45. ) : (
  46. permissions.map((p) => (
  47. <TableRow key={p.id}>
  48. <TableCell>
  49. <p className="text-sm truncate">{p.label}</p>
  50. </TableCell>
  51. <TableCell>
  52. <p className="text-foreground-light text-sm truncate">{p.description}</p>
  53. </TableCell>
  54. </TableRow>
  55. ))
  56. )}
  57. </TableBody>
  58. </Table>
  59. </CardContent>
  60. </Card>
  61. )}
  62. </div>
  63. )
  64. }