Skip to content

Commit 0adecb2

Browse files
committed
docs(studio): add visual editor info
1 parent 0b4c846 commit 0adecb2

File tree

1 file changed

+62
-79
lines changed

1 file changed

+62
-79
lines changed

docs/content/docs/9.studio/4.content.md

Lines changed: 62 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -8,87 +8,74 @@ seo:
88
description: Overview of our different Studio CMS editors to manage your content and your medias. Choose between our visual editors and our code editor.
99
---
1010

11-
::warning
12-
**Alpha Release**
11+
::note
12+
**Alpha Release - TipTap Visual Editor Now Available!**
1313

1414
:br
1515

16-
The current version only includes the code editor for Markdown, YAML, and JSON files.
17-
For now, this section covers the legacy documentation from the original Nuxt Studio platform.
16+
The alpha version now includes both the **Monaco code editor** and the **TipTap visual editor** for Markdown files. You can switch between them at any time using the editor mode toggle in the toolbar.
1817
::
1918

20-
Nuxt Studio offers a versatile workspace for both developers and content writers, giving them the freedom to choose between our differents editors:
21-
22-
- [Notion-like editor](#notion-like-editor-markdown-files) for `Markdown` files
23-
- [Form editor](#form-editor) for `YAML` and `JSON` files
24-
- [Code editor](#code-editor) for any kind of files (for technical users only)
25-
26-
Each editor serves its own purpose. Some users are used to code edition, while others prefer a non-technical, visual approach. At the end, **code syntax is the final output** for both editors.
27-
28-
## Code editor
29-
30-
![Edit directly your raw content with our code editor](/docs/studio/code-editor.webp)
19+
Nuxt Studio offers a versatile workspace for both developers and content writers, giving them the freedom to choose between our different editors:
3120

32-
It provides full control over your content, allowing you to write raw content directly:
21+
- [Notion-like editor](#notion-like-editor-markdown-files){target="_blank"} for `Markdown` files
22+
- [Form editor](#form-editor){target="_blank"} for `YAML` and `JSON` files
23+
- [Code editor](#code-editor){target="_blank"} for any kind of files (for technical users only)
24+
Each editor serves its own purpose. Some users prefer visual editing, while others prefer direct code manipulation. At the end, **Markdown and MDC syntax is the final output** for both editors, with seamless conversion between visual and code modes.
3325

34-
- [MDC](/docs/files/markdown) syntax for `Markdown` files
35-
- [JSON](/docs/files/json) or [YAML](/docs/files/yaml) syntax
26+
## Editor Mode Switching
3627

37-
## Notion-like editor (`Markdown` files)
28+
You can switch between the visual editor and code editor at any time by clicking the **actions dropdown** in the toolbar:
3829

39-
::warning
40-
**Alpha Release**
30+
- **Visual Mode** (TipTap) - Notion-like editing experience
31+
- **Code Mode** (Monaco) - Direct Markdown/MDC syntax editing
4132

42-
:br
33+
Your preference is saved and will be used for all Markdown files.
4334

44-
The visual editor isn’t available yet — it’s coming in the beta release.
45-
For now, this section covers the legacy documentation from the original Nuxt Studio platform.
46-
::
35+
## TipTap Visual Editor (`Markdown` files)
4736

48-
![edit your website with a visual interface](/docs/studio/visual-markdown-editor.webp)
37+
The TipTap visual editor provides a modern Notion-like editing experience for Markdown content, powered by the popular [TipTap](https://tiptap.dev/) editor integrated by [Nuxt UI Editor](https://ui.nuxt.com/pro/components/editor).
4938

50-
This editor is heavily inspired by Notion, well known for its intuitive design and flexibility. Much like a standard text editor, this editor is designed to be familiar and easy to use. However, it stands out with its additional features that improve the writing experience.
39+
### Key Features
5140

52-
::tip{to="/blog/visual-editor"}
53-
You want to know how we've built this editor and how it works under the hood? Check this blog post.
54-
::
41+
- **Rich Text Editing** - Format text with headings, bold, italic, strikethrough, code, links, and more
42+
- **MDC Component Support** - Insert and edit custom Vue components directly in the visual editor
43+
- **Media Integration** - Browse in media picker to insert images from your library
44+
- **Slash Commands** - Type `/` to access a menu of formatting options and components
45+
- **Drag & Drop** - Reorder content blocks by dragging them
46+
- **Link Editor** - Floating popover for editing links with external link support
47+
- **Toolbar** - Bubble toolbar appears when you select text, providing quick access to formatting options
48+
- **Real-time Conversion** - Seamlessly converts between visual content and MDC/Markdown syntax
5549

56-
### Frontmatter
50+
### Debug Mode
5751

58-
[Frontmatter](/docs/files/markdown#frontmatter) is a convention of Markdown-based CMS to provide meta-data to pages, like description or title or any other data you would like to store as `key: value` pair.
52+
Enable **debug mode** from the footer menu to see the real-time conversion between:
5953

60-
Based on the user [collection and schema](/docs/collections/define) provided, a form is generated to edit this metadata from the editor.
54+
- TipTap JSON format
55+
- MDC AST
56+
- Final Markdown output
6157

62-
:video{autoplay controls loop poster="/home/videos/HomeNotionLikePoster.webp" src="https://res.cloudinary.com/nuxt/video/upload/v1739982761/frontmatterform_yjafgt.mp4"}
58+
This is useful for understanding how content is transformed and to share troubleshooting.
6359

64-
::prose-note{to="#form-editor-yaml-and-json-files"}
65-
Check this section to learn more about form generation based on schema.
66-
::
60+
## Code Editor
6761

68-
### Toolbar
62+
The Monaco code editor provides full control over your content, allowing you to write raw content directly:
6963

70-
Highlight your text to reveal the toolbar, giving you access to all the standard text editing features (title formatting, Bold, Italic, Strike-through, code, link, class, bullet list, numerated list...).
64+
- MDC syntax for [Markdown](/docs/files/markdown){target="_blank"} files
65+
- [JSON](/docs/files/json){target="_blank"} or [YAML](/docs/files/yaml){target="_blank"} syntax
7166

72-
### Medias
67+
## Working with Vue Components
7368

74-
Users can simply drag and drop images directly into the editor. An upload modal will open to let you choose the destination folder.
69+
One of the TipTap visual editor's standout features is its ability to integrate and edit custom Vue components directly within the editor interface.
7570

76-
By typing `/` and searching for `Image` or `Video`, they can quickly insert a media. A modal will open to let them choose the media they want to insert from the media gallery (aka the`public` folder of the Nuxt application).
71+
### Create and Integrate Custom Components
7772

78-
From the media modal, you can set the [alt attribute](https://www.w3schools.com/tags/att_img_alt.asp) for SEO and accessibility purpose.
79-
80-
### Vue Components
81-
82-
One of this editor standout features is its ability to integrate and customize any complex `Vue` component directly within the editor.
83-
84-
#### Create and integrate your own component
85-
86-
A developer can create any kind of visually complex components and editors will be able to use them and focus on the content. An editor can also play with the component properties, styles, and behaviour to fit its specific requirements as long as the developer made it customisable.
73+
Developers can create visually complex components, and editors can use them without technical knowledge. The visual editor handles component integration seamlessly.
8774

8875
::steps{level="4"}
8976
#### Create your component
9077

91-
You can create Vue components and integrate them into Markdown. They just need to be located in the `/components/content` folder to be available.
78+
Vue components need to be located in the `/components/content` folder to be available in Studio:
9279

9380
```vue [components/content/HomeFeature.vue]
9481
<template>
@@ -111,13 +98,15 @@ You can create Vue components and integrate them into Markdown. They just need t
11198
defineProps({
11299
icon: {
113100
type: String,
114-
default: 'i-ph-cursor-click',
101+
default: 'i-lucide-cursor-click',
115102
},
116103
})
117104
</script>
118105
```
119106

120-
#### Integrate these components easily within any Markdown file using [MDC syntax](/docs/files/markdown#mdc-syntax)
107+
#### Use in Markdown with MDC syntax
108+
109+
Components can be integrated using [MDC syntax](/docs/files/markdown#mdc-syntax){target="_blank"}:
121110

122111
```mdc [content/index.md]
123112
::home-feature
@@ -127,34 +116,27 @@ defineProps({
127116
#title
128117
Embedded Vue components
129118
#description
130-
Edit slots and props inside the Notion-like editor.
119+
Edit slots and props inside the visual editor.
131120
::
132121
```
133122

134-
#### Edit them with our Studio editors
123+
#### Edit in the Visual Editor
135124

136-
The visual editor simplifies the component edition, allowing you to integrate and edit them directly in the visual editor. Non technical users can play with **slots** and **props** without any technical knowledge.
125+
All components in the `/components/content` folder are automatically available:
137126

138-
:video{autoplay controls loop src="https://res.cloudinary.com/nuxt/video/upload/v1744126742/studio/finalpropscomps_usfabp.mp4"}
139-
140-
All components in the `/components/content` folder are available in the editor. Studio users can type `/` anywhere while editing to access the list of available components.
127+
1. Type `/` anywhere while editing
128+
2. Search for your component in the list
129+
3. Insert and edit component slots directly in the editor
130+
4. Props editing with visual interface coming in beta
141131

142132
:::tip{to="/docs/studio/debug"}
143-
Take a look at this section to validate your
144-
145-
`Vue`
146-
147-
component integration in the editor in local development.
133+
Enable debug mode to validate your Vue component integration in local development.
148134
:::
149135
::
150136

151-
#### Integrate built-in components from external libraries
152-
153-
By default, you can integrate any component inside a Markdown file and it should work and be editable from Studio but external components **won't be displayed in the components list in Studio and can't be integrated manually by a Studio editor**.
137+
### Integrate External Library Components
154138

155-
To list this component inside Studio and fetch all its metadata, you need to set it as global in your Nuxt config file.
156-
157-
Here is an example to integrate Button and Icon components from the [Nuxt UI](https://ui.nuxt.com) library:
139+
By default, components from external libraries (like Nuxt UI) won't appear in Studio's component list. To make them available, set them as global in your Nuxt config:
158140

159141
```ts
160142
export default defineNuxtConfig({
@@ -168,22 +150,23 @@ export default defineNuxtConfig({
168150
})
169151
```
170152

171-
## Form editor
153+
## Form Editor (Coming in Beta)
172154

173155
::warning
174-
**Alpha Release**
156+
**Coming in Beta**
175157

176158
:br
177159

178-
The visual editor isn’t available yet — it’s coming in the beta release.
179-
For now, this section covers the legacy documentation from the original Nuxt Studio platform.
160+
The form editor for frontmatter, YAML, and JSON files is currently under development and will be available in the beta release.
180161
::
181162

182-
![YAML and JSON edition with auto generated form](/blog/frontmatters.png)
163+
The form editor will be used for editing:
183164

184-
This editor is used whether you’re editing the frontmatter of a `Markdown` file or a `JSON` / `YAML` file.
165+
- **Frontmatter** in `Markdown` files
166+
- **YAML** files
167+
- **JSON** files
185168

186-
It eliminates the need to interact directly with complex file syntax. Instead, a form is automatically generated based on the provided user [collection schema](/docs/collections/define).
169+
It will eliminate the need to interact directly with complex file syntax. Instead, forms will be automatically generated based on your [collection schema](/docs/collections/define){target="_blank"} definition.
187170

188171
### **Defining your form with** `zod` Schema
189172

@@ -223,7 +206,7 @@ export default defineContentConfig({
223206
}),
224207
}),
225208
},
226-
})
209+
})
227210
```
228211

229212
:::code-preview{icon="i-lucide-eye" label="Generated Form"}

0 commit comments

Comments
 (0)