import { useParams } from 'common' import { type ReactNode } from 'react' import { API_DOCS_CATEGORIES } from './ProjectAPIDocs.constants' import { SecondLevelNavLayout, type MenuItemFilter } from './SecondLevelNav.Layout' import { ResourcePickerList } from './SecondLevelNav.ResourcePicker' import { StorageResourceList } from './SecondLevelNav.StoragePicker' import { useApiDocsFunctions, useApiDocsTables } from './useApiDocsEntities' import { useEdgeFunctionsQuery } from '@/data/edge-functions/edge-functions-query' import { useBucketInfoQueryPreferCached } from '@/data/storage/buckets-query' import { DOCS_URL } from '@/lib/constants' import { useAppStateSnapshot } from '@/state/app-state' const EntitiesSecondLevelNav = () => { const { visibleEntities: tables } = useApiDocsTables() return ( ( )} /> ) } const StoredProceduresSecondLevelNav = () => { const { visibleEntities: functions } = useApiDocsFunctions() return ( ( )} /> ) } const EdgeFunctionsSecondLevelNav = () => { const { ref } = useParams() const { data: edgeFunctions } = useEdgeFunctionsQuery({ projectRef: ref }) return ( ( )} /> ) } const StorageSecondLevelNav = () => { const { ref } = useParams() const snap = useAppStateSnapshot() const [, resource] = snap.activeDocsSection const selectedBucket = useBucketInfoQueryPreferCached(resource, ref) const menuItemFilter: MenuItemFilter | undefined = selectedBucket ? (item) => { if (!selectedBucket.public && item.key === 'retrieve-public-url') return false if (selectedBucket.public && item.key === 'create-signed-url') return false return true } : undefined return ( } /> ) } const SECTION_COMPONENTS: Record ReactNode> = { [API_DOCS_CATEGORIES.ENTITIES]: EntitiesSecondLevelNav, [API_DOCS_CATEGORIES.STORED_PROCEDURES]: StoredProceduresSecondLevelNav, [API_DOCS_CATEGORIES.STORAGE]: StorageSecondLevelNav, [API_DOCS_CATEGORIES.EDGE_FUNCTIONS]: EdgeFunctionsSecondLevelNav, } export const SecondLevelNav = () => { const snap = useAppStateSnapshot() const [section] = snap.activeDocsSection const SectionComponent = SECTION_COMPONENTS[section] if (!SectionComponent) return null return }