import { useContainer } from '@tldraw/editor'
import { DropdownMenu as _DropdownMenu } from 'radix-ui'
import { ReactNode, memo } from 'react'
import { useMenuIsOpen } from '../../hooks/useMenuIsOpen'
import { useDirection, useTranslation } from '../../hooks/useTranslation/useTranslation'
import { TldrawUiButton } from '../primitives/Button/TldrawUiButton'
import { TldrawUiButtonIcon } from '../primitives/Button/TldrawUiButtonIcon'
import { TldrawUiMenuContextProvider } from '../primitives/menus/TldrawUiMenuContext'
import { DefaultMainMenuContent } from './DefaultMainMenuContent'
/** @public */
export interface TLUiMainMenuProps {
children?: ReactNode
}
/** @public @react */
export const DefaultMainMenu = memo(function DefaultMainMenu({ children }: TLUiMainMenuProps) {
const container = useContainer()
const [isOpen, onOpenChange] = useMenuIsOpen('main menu')
const msg = useTranslation()
const dir = useDirection()
// Get the main menu content, either the default component or the user's
// override. If there's no menu content, then the user has set it to null,
// so skip rendering the menu.
const content = children ??
return (
<_DropdownMenu.Root dir={dir} open={isOpen} onOpenChange={onOpenChange} modal={false}>
<_DropdownMenu.Trigger asChild dir={dir}>
<_DropdownMenu.Portal container={container}>
<_DropdownMenu.Content
className="tlui-menu"
side="bottom"
align="start"
collisionPadding={4}
alignOffset={0}
sideOffset={6}
>
{content}
)
})