Files
supabase/apps/studio/components/interfaces/Database/Backups/DatabaseBackupsNav.tsx
2026-04-01 10:22:37 +02:00

55 lines
1.5 KiB
TypeScript

import Link from 'next/link'
import { Badge, NavMenu, NavMenuItem } from 'ui'
import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
type Props = {
active: 'pitr' | 'scheduled' | 'rtnp'
}
function DatabaseBackupsNav({ active }: Props) {
const { ref, cloud_provider } = useSelectedProjectQuery()?.data || {}
const { databaseRestoreToNewProject } = useIsFeatureEnabled(['database:restore_to_new_project'])
const navMenuItems = [
{
enabled: true,
id: 'scheduled',
label: 'Scheduled backups',
href: `/project/${ref}/database/backups/scheduled`,
},
{
enabled: true,
id: 'pitr',
label: 'Point in time',
href: `/project/${ref}/database/backups/pitr`,
},
{
enabled: databaseRestoreToNewProject && cloud_provider !== 'FLY',
id: 'rtnp',
label: (
<div className="flex items-center gap-2">
Restore to new project <Badge variant="warning">Beta</Badge>
</div>
),
href: `/project/${ref}/database/backups/restore-to-new-project`,
},
] as const
return (
<NavMenu className="overflow-hidden overflow-x-auto">
{navMenuItems.map(
(item) =>
item.enabled && (
<NavMenuItem key={item.id} active={item.id === active}>
<Link href={item.href}>{item.label}</Link>
</NavMenuItem>
)
)}
</NavMenu>
)
}
export default DatabaseBackupsNav