DatabaseBackupsNav.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import Link from 'next/link'
  2. import { Badge, NavMenu, NavMenuItem } from 'ui'
  3. import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
  4. import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject'
  5. type Props = {
  6. active: 'pitr' | 'scheduled' | 'rtnp'
  7. }
  8. function DatabaseBackupsNav({ active }: Props) {
  9. const { ref, cloud_provider } = useSelectedProjectQuery()?.data || {}
  10. const { databaseRestoreToNewProject } = useIsFeatureEnabled(['database:restore_to_new_project'])
  11. const navMenuItems = [
  12. {
  13. enabled: true,
  14. id: 'scheduled',
  15. label: 'Scheduled backups',
  16. href: `/project/${ref}/database/backups/scheduled`,
  17. },
  18. {
  19. enabled: true,
  20. id: 'pitr',
  21. label: 'Point in time',
  22. href: `/project/${ref}/database/backups/pitr`,
  23. },
  24. {
  25. enabled: databaseRestoreToNewProject && cloud_provider !== 'FLY',
  26. id: 'rtnp',
  27. label: (
  28. <div className="flex items-center gap-2">
  29. Restore to new project <Badge variant="warning">Beta</Badge>
  30. </div>
  31. ),
  32. href: `/project/${ref}/database/backups/restore-to-new-project`,
  33. },
  34. ] as const
  35. return (
  36. <NavMenu className="overflow-hidden overflow-x-auto">
  37. {navMenuItems.map(
  38. (item) =>
  39. item.enabled && (
  40. <NavMenuItem key={item.id} active={item.id === active}>
  41. <Link href={item.href}>{item.label}</Link>
  42. </NavMenuItem>
  43. )
  44. )}
  45. </NavMenu>
  46. )
  47. }
  48. export default DatabaseBackupsNav