'use client'; import React from 'react'; import type { DropdownMenuProps } from '@radix-ui/react-dropdown-menu'; import { setAlign } from '@udecode/plate-alignment'; import { useEditorRef, useSelectionFragmentProp } from '@udecode/plate/react'; import { AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, } from 'lucide-react'; import { STRUCTURAL_TYPES } from '@plone/plate/components/editor/transforms'; import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, useOpenState, } from './dropdown-menu'; import { ToolbarButton } from './toolbar'; const items = [ { icon: AlignLeftIcon, value: 'left', }, { icon: AlignCenterIcon, value: 'center', }, { icon: AlignRightIcon, value: 'right', }, { icon: AlignJustifyIcon, value: 'justify', }, ]; export function AlignDropdownMenu({ children, ...props }: DropdownMenuProps) { const editor = useEditorRef(); const value = useSelectionFragmentProp({ defaultValue: 'start', structuralTypes: STRUCTURAL_TYPES, getProp: (node) => node.align, }); const openState = useOpenState(); const IconValue = items.find((item) => item.value === value)?.icon ?? AlignLeftIcon; return ( { setAlign(editor, { value: value }); editor.tf.focus(); }} > {items.map(({ icon: Icon, value: itemValue }) => ( ))} ); }