# Editor Layout
Build a rich text editor with toolbars, slash commands, mentions, and drag-and-drop.
## Component tree
```
UApp
├── UHeader
├── UMain
│ └── NuxtPage
│ └── UContainer
│ └── UEditor
│ ├── UEditorToolbar (fixed / bubble / floating)
│ ├── UEditorDragHandle
│ ├── UEditorSuggestionMenu
│ ├── UEditorMentionMenu
│ └── UEditorEmojiMenu
└── UFooter
```
## Page
```vue [pages/editor.vue]
```
> If you encounter prosemirror-related errors, add prosemirror packages to `vite.optimizeDeps.include` in `nuxt.config.ts`.
## Key components
- `UEditor` — Rich text editor (`v-model` accepts JSON, HTML, or markdown via `content-type` prop)
- `UEditorToolbar` — Toolbar with `layout`: `'fixed'` (default), `'bubble'` (on selection), `'floating'` (on empty lines)
- `UEditorDragHandle` — Block drag-and-drop handle
- `UEditorSuggestionMenu` — Slash command menu
- `UEditorMentionMenu` — @ mention menu
- `UEditorEmojiMenu` — Emoji picker
## Toolbar modes
```vue
```
## Content types
```vue
```
## With document sidebar
Combine with Dashboard components for a multi-document editor with a sidebar.
```vue [layouts/editor.vue]
```
```vue [pages/editor/[id].vue]
```