import { IS_PLATFORM, useParams } from 'common' import Link from 'next/link' import { usePathname } from 'next/navigation' import { PropsWithChildren } from 'react' import { NavMenu, NavMenuItem } from 'ui' import { PageHeader, PageHeaderAside, PageHeaderDescription, PageHeaderMeta, PageHeaderNavigationTabs, PageHeaderSummary, PageHeaderTitle, } from 'ui-patterns/PageHeader' import { BUCKET_TYPES } from '@/components/interfaces/Storage/Storage.constants' import { useStorageV2Page } from '@/components/interfaces/Storage/Storage.utils' import { DocsButton } from '@/components/ui/DocsButton' export const StorageBucketsLayout = ({ title, hideSubtitle = false, children, }: PropsWithChildren<{ title?: string; hideSubtitle?: boolean }>) => { const { ref } = useParams() const pathname = usePathname() const page = useStorageV2Page() const config = !!page && page !== 's3' ? BUCKET_TYPES[page] : undefined const navigationItems = page === 'files' ? [ { label: 'Buckets', href: `/project/${ref}/storage/files`, }, ...(IS_PLATFORM ? [ { label: 'Settings', href: `/project/${ref}/storage/files/settings`, }, ] : []), { label: 'Policies', href: `/project/${ref}/storage/files/policies`, }, ] : [] return ( <> {title || (config?.displayName ?? 'Storage')} {!hideSubtitle && ( {config?.description || 'Manage your storage buckets and files.'} )} {config?.docsUrl && } {navigationItems.length > 0 && ( {navigationItems.map((item) => ( {item.label} ))} )} {children} ) }