ViewAppSheetPermissions.tsx67 lines · main
1import {
2 Card,
3 CardContent,
4 Table,
5 TableBody,
6 TableCell,
7 TableHead,
8 TableHeader,
9 TableRow,
10} from 'ui'
11
12import type { Permission } from '../Apps.constants'
13
14interface ViewAppSheetPermissionsProps {
15 permissions: Permission[]
16 isLoading: boolean
17}
18
19export 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}