Add a text mark button
A button for toggling text marks like bold, italic, underline, etc.
Installation
You can add the component via Tiptap CLI (for Vite or Next.js)
npx @tiptap/cli add mark-button
Manual Integration
For frameworks other than Vite or Next.js, add the component manually from the open-source repository.
Import styles
This component requires you to import our styles which were added to styles/keyframe-animation.scss
and styles/_variables.scss
.
Usage
import { EditorContent, EditorContext, useEditor } from '@tiptap/react'
import { StarterKit } from '@tiptap/starter-kit'
import { Underline } from '@tiptap/extension-underline'
import { Superscript } from '@tiptap/extension-superscript'
import { Subscript } from '@tiptap/extension-subscript'
import { MarkButton } from '@/components/tiptap-ui/mark-button'
import '@/components/tiptap-node/code-block-node/code-block-node.scss'
import '@/components/tiptap-node/paragraph-node/paragraph-node.scss'
export default function MyEditor() {
const editor = useEditor({
immediatelyRender: false,
extensions: [StarterKit, Underline, Superscript, Subscript],
content: `
<p>
<strong>Bold</strong> for emphasis with <code>**</code> or <code>⌘+B</code> or the <code>B</code> button.
</p>
<p>
<em>Italic</em> for subtle nuances with <code>*</code> or <code>⌘+I</code> or the <code>I</code> button.
</p>
<p>
<s>Strikethrough</s> to show revisions with <code>~~</code> or the <code>~~S~~</code> button.
</p>
<p>
<code>Code</code> for code snippets with <code>:</code> or <code>⌘+⇧+C</code> or the <code>C</code> button.
</p>
<p>
<u>Underline</u> for emphasis with <code>⌘+U</code> or the <code>U</code> button.
</p>
<p>
<sup>Superscript</sup> for footnotes with <code>⌘+.</code> or the <code>.</code> button.
</p>
<p>
<sub>Subscript</sub> for chemical formulas with <code>⌘+,</code> or the <code>,</code> button.
</p>
`,
})
return (
<EditorContext.Provider value={{ editor }}>
<div className="tiptap-button-group" data-orientation="horizontal">
<MarkButton type="bold" />
<MarkButton type="italic" />
<MarkButton type="strike" />
<MarkButton type="code" />
<MarkButton type="underline" />
<MarkButton type="superscript" />
<MarkButton type="subscript" />
</div>
<EditorContent editor={editor} role="presentation" />
</EditorContext.Provider>
)
}
Props
Name | Type | Default | Description |
---|---|---|---|
editor | Editor | null | null | The Tiptap editor instance |
type | 'bold' | 'italic' | 'strike' | 'code' | 'underline' | 'superscript' | 'subscript' | required | The type of mark to toggle |
hideWhenUnavailable | boolean | false | Whether the button should be hide if not available |
text | string | - | Text to display alongside the icon |
Requirements
Used reference components
use-tiptap-editor
(hook)tiptap-utils
(lib)button
(primitive)bold-icon
(icon)code2-icon
(icon)italic-icon
(icon)strike-icon
(icon)subscript-icon
(icon)underline-icon
(icon)superscript-icon
(icon)
Open source feature(s)
@tiptap/extension-underline
@tiptap/extension-subscript
@tiptap/extension-superscript