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