admin-menu.tsx 2.2 KB

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