A powerful TypeScript remark plugin that transforms markdown blockquotes into beautifully styled note elements. Add professional-looking notes, tips, quotes, and more to your markdown documentation with minimal effort!
- π¨ 5 Beautiful Note Types - Note, Tip, Important, Quote, and Bonus
- π― Semantic HTML Output - Clean and accessible HTML structure
- π Customizable Styling - Easy to override CSS classes
- π§ Easy Integration - Works with any remark-based markdown processor
npm install remark-notes-pluginimport { unified } from 'unified'
import remarkParse from 'remark-parse'
import remarkRehype from 'remark-rehype'
import rehypeStringify from 'rehype-stringify'
import remarkNotes from 'remark-notes-plugin'
const markdown = `
> [!note]
> This is a note about something important.
> [!tip]
> Here's a helpful tip for you.
> [!important]
> This is a very important message!
> [!quote]
> Here's a memorable quote.
> [!bonus]
> Here's some extra content for you!
`
const file = await unified()
.use(remarkParse)
.use(remarkNotes)
.use(remarkRehype)
.use(rehypeStringify)
.process(markdown)
console.log(String(file))import remarkNotes from 'remark-notes-plugin'
// Default configuration (styles are auto-injected)
unified().use(remarkNotes)
// Custom class prefix
unified().use(remarkNotes, {
classPrefix: 'my-callout'
})
// Generates classes like: my-callout-remark-note, my-callout-remark-note-tip, etc.
// Disable automatic style injection (import CSS manually)
unified().use(remarkNotes, {
injectStyles: false
})
// Then import: import 'remark-notes-plugin/styles.css'
// Both options
unified().use(remarkNotes, {
classPrefix: 'custom',
injectStyles: false
})The plugin supports five distinct types of notes, each with its own unique style:
-
Note - For general information and remarks
> [!note] > Your note content here
-
Tip - For helpful tips and tricks
> [!tip] > Your tip content here
-
Important - For critical information and warnings
> [!important] > Your important message here
-
Quote - For quotations and references
> [!quote] > Your quote content here
-
Bonus - For additional, supplementary content
> [!bonus] > Your bonus content here
By default, styles are automatically injected into your document. You can customize this behavior:
Styles are included automatically when you use the plugin with default settings:
unified().use(remarkNotes) // Styles auto-injectedIf you prefer to manage styles yourself (e.g., for SSR or custom build tools), disable auto-injection:
unified().use(remarkNotes, { injectStyles: false })Then manually import the CSS:
import 'remark-notes-plugin/styles.css'The plugin uses a modular class structure that makes it easy to customize the appearance:
.remark-note- Base container for all note types.remark-note-header- Note header container.remark-note-icon- Icon styling.remark-note-title- Note title styling.remark-note-content- Note content container
.remark-note-note- Note type styling.remark-note-tip- Tip type styling.remark-note-important- Important type styling.remark-note-quote- Quote type styling.remark-note-bonus- Bonus type styling
You can add a custom prefix to all CSS classes:
unified().use(remarkNotes, { classPrefix: 'my-callout' })This generates classes like:
.my-callout-remark-note.my-callout-remark-note-tip.my-callout-remark-note-header- etc.
/* Example: Customize the Note type */
.remark-note-note {
background-color: #your-color;
border-color: #your-border-color;
}
.remark-note-note .remark-note-title {
color: #your-text-color;
}This project is written in TypeScript. To contribute or modify:
# Install dependencies
yarn
# Build the project
yarn build
# Run tests
yarn test
# Watch mode for development
yarn watchContributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
Please ensure your pull request passes all tests and includes appropriate documentation.
βοΈ If you find this plugin useful, please consider giving it a star on GitHub! βοΈ