import Link from 'next/link' import { observer } from 'mobx-react-lite' import { useRouter } from 'next/router' import { IS_PLATFORM, PRICING_TIER_PRODUCT_IDS } from 'lib/constants' import { useStore, useProjectUsage } from 'hooks' import BreadcrumbsView from './BreadcrumbsView' import OrgDropdown from './OrgDropdown' import ProjectDropdown from './ProjectDropdown' import FeedbackDropdown from './FeedbackDropdown' import HelpPopover from './HelpPopover' import NotificationsPopover from './NotificationsPopover' import { Badge } from 'ui' import { getResourcesExceededLimits } from 'components/ui/OveragesBanner/OveragesBanner.utils' const LayoutHeader = ({ customHeaderComponents, breadcrumbs = [], headerBorder = true }: any) => { const { ui } = useStore() const { selectedOrganization, selectedProject } = ui const router = useRouter() const { ref } = router.query const { usage } = useProjectUsage(ref as string) const resourcesExceededLimits = getResourcesExceededLimits(usage) const projectHasNoLimits = ui.selectedProject?.subscription_tier === PRICING_TIER_PRODUCT_IDS.PAYG || ui.selectedProject?.subscription_tier === PRICING_TIER_PRODUCT_IDS.ENTERPRISE const showOverUsageBadge = selectedProject?.subscription_tier !== undefined && !projectHasNoLimits && resourcesExceededLimits.length > 0 return (
{/* Organization is selected */} {selectedOrganization ? ( <> {/* Org Dropdown */} {/* Project is selected */} {selectedProject && ( <> {/* Project Dropdown */} {showOverUsageBadge && (
Project has exceeded usage limits
)} )} ) : ( Supabase )} {/* Additional breadcrumbs are supplied */}
{customHeaderComponents && customHeaderComponents} {IS_PLATFORM && } {IS_PLATFORM && } {IS_PLATFORM && }
) } export default observer(LayoutHeader)