DatabaseTriggersLayout.tsx46 lines · main
1import { PermissionAction } from '@supabase/shared-types/out/constants'
2import { useParams } from 'common'
3import { PropsWithChildren } from 'react'
4
5import DatabaseLayout from './DatabaseLayout'
6import { PageLayout } from '@/components/layouts/PageLayout/PageLayout'
7import NoPermission from '@/components/ui/NoPermission'
8import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
9
10type DatabaseTriggersLayoutProps = PropsWithChildren
11
12export const DatabaseTriggersLayout = ({ children }: DatabaseTriggersLayoutProps) => {
13 const { ref } = useParams()
14 const { can: canReadTriggers, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
15 PermissionAction.TENANT_SQL_ADMIN_READ,
16 'triggers'
17 )
18
19 const navigationItems = [
20 {
21 label: 'Data',
22 href: `/project/${ref}/database/triggers/data`,
23 },
24 {
25 label: 'Event',
26 href: `/project/${ref}/database/triggers/event`,
27 },
28 ]
29
30 return (
31 <DatabaseLayout title="Triggers">
32 {isPermissionsLoaded && !canReadTriggers ? (
33 <NoPermission isFullPage resourceText="view database triggers" />
34 ) : (
35 <PageLayout
36 title="Database Triggers"
37 subtitle="Execute actions automatically when database events occur"
38 navigationItems={navigationItems}
39 size="large"
40 >
41 {children}
42 </PageLayout>
43 )}
44 </DatabaseLayout>
45 )
46}