import Link from 'next/link' import { observer } from 'mobx-react-lite' import * as Tooltip from '@radix-ui/react-tooltip' import { useParams } from 'common' import { Badge, Button, IconCommand, IconSearch, useCommandMenu } from 'ui' import { detectOS } from 'lib/helpers' import { IS_PLATFORM, PRICING_TIER_PRODUCT_IDS } from 'lib/constants' import { useFlag, useStore } 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 { getResourcesExceededLimits } from 'components/ui/OveragesBanner/OveragesBanner.utils' import { useProjectUsageQuery } from 'data/usage/project-usage-query' import { useProjectReadOnlyQuery } from 'data/config/project-read-only-query' import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext' const LayoutHeader = ({ customHeaderComponents, breadcrumbs = [], headerBorder = true }: any) => { const { ui } = useStore() const { selectedOrganization, selectedProject } = ui const os = detectOS() const { setIsOpen } = useCommandMenu() const showCmdkHelper = useFlag('dashboardCmdk') const { ref: projectRef } = useParams() const { project } = useProjectContext() const { data: isReadOnlyMode } = useProjectReadOnlyQuery({ projectRef: project?.ref, connectionString: project?.connectionString, }) const { data: usage } = useProjectUsageQuery({ projectRef }) const resourcesExceededLimits = getResourcesExceededLimits(usage) const projectHasNoLimits = ui.selectedProject?.subscription_tier === PRICING_TIER_PRODUCT_IDS.PAYG || ui.selectedProject?.subscription_tier === PRICING_TIER_PRODUCT_IDS.ENTERPRISE || ui.selectedProject?.subscription_tier === PRICING_TIER_PRODUCT_IDS.TEAM const showOverUsageBadge = useFlag('overusageBadge') && selectedProject?.subscription_tier !== undefined && !projectHasNoLimits && resourcesExceededLimits.length > 0 return (
{/* Organization is selected */} {projectRef && selectedOrganization ? ( <> {/* Org Dropdown */} {/* Project is selected */} {selectedProject && ( <> {/* Project Dropdown */} {/* [Terry] Temporary until we figure out how we want to display this permanently */} {/* context: https://www.notion.so/supabase/DB-Disk-Size-Free-tier-Read-only-Critical-f2b8937c13a149e3ac769fe5888f6db0*/} {isReadOnlyMode && (
Project is in read-only mode
)} {showOverUsageBadge && (
Exceeding usage limits
)} )} ) : ( Supabase )} {/* Additional breadcrumbs are supplied */}
{customHeaderComponents && customHeaderComponents} {IS_PLATFORM && showCmdkHelper && (
{os === 'macos' ? ( ) : (

CTRL

)}

K

)} {IS_PLATFORM && } {IS_PLATFORM && } {IS_PLATFORM && }
) } export default observer(LayoutHeader)