'use client'; import * as React from 'react'; import { ListStyleType, someList, toggleList } from '@platejs/list'; import { useIndentTodoToolBarButton, useIndentTodoToolBarButtonState, } from '@platejs/list/react'; import { List, ListOrdered, ListTodoIcon } from 'lucide-react'; import { useEditorRef, useEditorSelector } from 'platejs/react'; import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { ToolbarButton, ToolbarSplitButton, ToolbarSplitButtonPrimary, ToolbarSplitButtonSecondary, } from './toolbar'; export function BulletedListToolbarButton() { const editor = useEditorRef(); const [open, setOpen] = React.useState(false); const pressed = useEditorSelector( (editor) => someList(editor, [ ListStyleType.Disc, ListStyleType.Circle, ListStyleType.Square, ]), [] ); return ( { toggleList(editor, { listStyleType: ListStyleType.Disc, }); }} data-state={pressed ? 'on' : 'off'} > toggleList(editor, { listStyleType: ListStyleType.Disc, }) } >
Default
toggleList(editor, { listStyleType: ListStyleType.Circle, }) } >
Circle
toggleList(editor, { listStyleType: ListStyleType.Square, }) } >
Square
); } export function NumberedListToolbarButton() { const editor = useEditorRef(); const [open, setOpen] = React.useState(false); const pressed = useEditorSelector( (editor) => someList(editor, [ ListStyleType.Decimal, ListStyleType.LowerAlpha, ListStyleType.UpperAlpha, ListStyleType.LowerRoman, ListStyleType.UpperRoman, ]), [] ); return ( toggleList(editor, { listStyleType: ListStyleType.Decimal, }) } data-state={pressed ? 'on' : 'off'} > toggleList(editor, { listStyleType: ListStyleType.Decimal, }) } > Decimal (1, 2, 3) toggleList(editor, { listStyleType: ListStyleType.LowerAlpha, }) } > Lower Alpha (a, b, c) toggleList(editor, { listStyleType: ListStyleType.UpperAlpha, }) } > Upper Alpha (A, B, C) toggleList(editor, { listStyleType: ListStyleType.LowerRoman, }) } > Lower Roman (i, ii, iii) toggleList(editor, { listStyleType: ListStyleType.UpperRoman, }) } > Upper Roman (I, II, III) ); } export function TodoListToolbarButton( props: React.ComponentProps ) { const state = useIndentTodoToolBarButtonState({ nodeType: 'todo' }); const { props: buttonProps } = useIndentTodoToolBarButton(state); return ( ); }