Components
Comments Popover
Comments Popover
View and manage comments within a popover interface.
Installation
npx @udecode/plate-ui@latest add combobox
Examples
💬 Comments
Add comments to your content to provide additional context, insights, or collaborate with others
'use client';
import React, { useRef } from 'react';
import { CommentsProvider } from '@udecode/plate-comments';
import { Plate } from '@udecode/plate-common';
import { ELEMENT_PARAGRAPH } from '@udecode/plate-paragraph';
import { DndProvider } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import { commentsUsers, myUserId } from '@/lib/plate/comments';
import { MENTIONABLES } from '@/lib/plate/mentionables';
import { plugins } from '@/lib/plate/plate-plugins';
import { cn } from '@/lib/utils';
import { CommentsPopover } from '@/components/plate-ui/comments-popover';
import { CursorOverlay } from '@/components/plate-ui/cursor-overlay';
import { Editor } from '@/components/plate-ui/editor';
import { FixedToolbar } from '@/components/plate-ui/fixed-toolbar';
import { FixedToolbarButtons } from '@/components/plate-ui/fixed-toolbar-buttons';
import { FloatingToolbar } from '@/components/plate-ui/floating-toolbar';
import { FloatingToolbarButtons } from '@/components/plate-ui/floating-toolbar-buttons';
import { MentionCombobox } from '@/components/plate-ui/mention-combobox';
export default function PlateEditor() {
const containerRef = useRef(null);
const initialValue = [
{
id: '1',
type: ELEMENT_PARAGRAPH,
children: [{ text: 'Hello, World!' }],
},
];
return (
<DndProvider backend={HTML5Backend}>
<CommentsProvider users={commentsUsers} myUserId={myUserId}>
<Plate plugins={plugins} initialValue={initialValue}>
<div
ref={containerRef}
className={cn(
// Block selection
'[&_.slate-start-area-left]:!w-[64px] [&_.slate-start-area-right]:!w-[64px] [&_.slate-start-area-top]:!h-4'
)}
>
<FixedToolbar>
<FixedToolbarButtons />
</FixedToolbar>
<Editor
className="px-[96px] py-16"
autoFocus
focusRing={false}
variant="ghost"
size="md"
/>
<FloatingToolbar>
<FloatingToolbarButtons />
</FloatingToolbar>
<MentionCombobox items={MENTIONABLES} />
<CommentsPopover />
<CursorOverlay containerRef={containerRef} />
</div>
</Plate>
</CommentsProvider>
</DndProvider>
);
}
export const commentsUsers = {
1: {
id: '1',
name: 'zbeyens',
avatarUrl: 'https://avatars.githubusercontent.com/u/19695832?s=96&v=4',
},
};
export const myUserId = '1';