admin-menu.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import type { DefaultNavbarMetadata } from '@/features/ui/components/types/default-navbar-metadata'
  2. import NavDropdownMenu from '@/features/ui/components/bootstrap-5/navbar/nav-dropdown-menu'
  3. import NavDropdownLinkItem from '@/features/ui/components/bootstrap-5/navbar/nav-dropdown-link-item'
  4. import { useSendProjectListMB } from '@/features/project-list/components/project-list-events'
  5. export default function AdminMenu({
  6. canDisplayAdminMenu,
  7. canDisplayAdminRedirect,
  8. canDisplaySplitTestMenu,
  9. canDisplaySurveyMenu,
  10. canDisplayScriptLogMenu,
  11. adminUrl,
  12. }: Pick<
  13. DefaultNavbarMetadata,
  14. | 'canDisplayAdminMenu'
  15. | 'canDisplayAdminRedirect'
  16. | 'canDisplaySplitTestMenu'
  17. | 'canDisplaySurveyMenu'
  18. | 'canDisplayScriptLogMenu'
  19. | 'adminUrl'
  20. >) {
  21. const sendProjectListMB = useSendProjectListMB()
  22. return (
  23. <NavDropdownMenu
  24. title="Admin"
  25. className="subdued"
  26. onToggle={nextShow => {
  27. if (nextShow) {
  28. sendProjectListMB('menu-expand', {
  29. item: 'admin',
  30. location: 'top-menu',
  31. })
  32. }
  33. }}
  34. >
  35. {canDisplayAdminMenu ? (
  36. <>
  37. <NavDropdownLinkItem href="/admin">Manage Site</NavDropdownLinkItem>
  38. <NavDropdownLinkItem href="/admin/user">
  39. Manage Users
  40. </NavDropdownLinkItem>
  41. <NavDropdownLinkItem href="/admin/project">
  42. Project URL lookup
  43. </NavDropdownLinkItem>
  44. </>
  45. ) : null}
  46. {canDisplayAdminRedirect && adminUrl ? (
  47. <NavDropdownLinkItem href={adminUrl}>
  48. Switch to Admin
  49. </NavDropdownLinkItem>
  50. ) : null}
  51. {canDisplaySplitTestMenu ? (
  52. <NavDropdownLinkItem href="/admin/split-test">
  53. Manage Feature Flags
  54. </NavDropdownLinkItem>
  55. ) : null}
  56. {canDisplaySurveyMenu ? (
  57. <NavDropdownLinkItem href="/admin/survey">
  58. Manage Surveys
  59. </NavDropdownLinkItem>
  60. ) : null}
  61. {canDisplayScriptLogMenu ? (
  62. <NavDropdownLinkItem href="/admin/script-logs">
  63. View Script Logs
  64. </NavDropdownLinkItem>
  65. ) : null}
  66. </NavDropdownMenu>
  67. )
  68. }