mirror of
https://github.com/supabase/supabase.git
synced 2026-05-09 18:30:12 -04:00
23c827bdda
- consolidate `top level menu` and `contextual menu` into nested menu on mobile - remove legacy mobile submenu
39 lines
1023 B
TypeScript
39 lines
1023 B
TypeScript
'use client'
|
|
|
|
import { useCallback, useState } from 'react'
|
|
|
|
import { getOrgMenuComponent } from './mobileOrgMenuRegistry'
|
|
import type { OrgNavItem } from './OrgMenuContent.utils'
|
|
|
|
export function orgItemHasSubmenu(item: OrgNavItem): boolean {
|
|
return getOrgMenuComponent(item.key) !== null
|
|
}
|
|
|
|
interface UseOrgMenuNavigationParams {
|
|
initialSectionKey: string | null
|
|
}
|
|
|
|
export function useOrgMenuNavigation({ initialSectionKey }: UseOrgMenuNavigationParams) {
|
|
const [viewLevel, setViewLevel] = useState<'top' | 'section'>(
|
|
initialSectionKey ? 'section' : 'top'
|
|
)
|
|
const [selectedSectionKey, setSelectedSectionKey] = useState<string | null>(initialSectionKey)
|
|
|
|
const handleSubmenuClick = useCallback((item: OrgNavItem) => {
|
|
setSelectedSectionKey(item.key)
|
|
setViewLevel('section')
|
|
}, [])
|
|
|
|
const handleBackToTop = useCallback(() => {
|
|
setViewLevel('top')
|
|
setSelectedSectionKey(null)
|
|
}, [])
|
|
|
|
return {
|
|
viewLevel,
|
|
selectedSectionKey,
|
|
handleSubmenuClick,
|
|
handleBackToTop,
|
|
}
|
|
}
|