
Security News
Meet Socket at Black Hat Europe and BSides London 2025
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.
@q42/sanity-plugin-user-guide
Advanced tools
This is a Sanity Studio v3 plugin.
npm install sanity-plugin-user-guide
Define your page structure for the user guide:
const userGuideStructure = defineUserGuide([
page().title('Home').markdown(home).icon(HomeIcon),
divider(),
page().title('ContactPage').markdown(contactPage).icon(CommentIcon).documentType('contactPage'),
multiPage().title('ContentPage').icon(DocumentIcon).pages([
page().title('Creating a content page').markdown(creatingAContentPage).documentType('contentPage'),
page().title('Content Blocks').markdown(contentBlocks),
page().title('Uploading media').markdown(uploadingMedia),
]),
]);
Add it as a plugin in sanity.config.ts (or .js):
import {defineConfig} from 'sanity'
import {userGuidePlugin} from 'sanity-plugin-user-guide'
export default defineConfig({
//...
plugins: [userGuidePlugin({userGuideStructure})],
})
If you want to import markdown files from a typescript file, you can add the following snippet to your global.d.ts.
declare module '*.md' {
const content: string;
export default content;
}
Then you can import the markdown file as a string:
import home from './home.md';
The plugin uses an API similar to Sanity's structure builder to define the user guide structure. Currently, the following methods are available:
A single page in the user guide. To describe the content of the page, you can use either markdown or a react component.
It is possible to link a page to document type(s) or id(s). This will add it to the user menu for those documents. Clicking the link will open the user guide in a side panel of the structure tool.
page().title('Home').markdown(home).icon(HomeIcon).documentType('home')
| Methods | Description |
|---|---|
| title(title) | Sets the title of the page. Parameters: title: string |
| slug(slug) | Sets the slug of the page. Uses the title by default. Parameters: slug: string |
| markdown(markdown) | Sets the content of the page using markdown. Parameters: markdown: string |
| component(component) | Sets the content of the page using a React component. Parameters: component: React.ElementType |
| icon(icon) | Sets an Icon for this page in the page tree. Parameters: icon: React.ElementType |
| documentType(documentType) | Selects one or multiple document types that link to this page. Parameters: documentType: string | string[] |
| documentId(documentId) | Selects one or multiple document IDs that link to this page. Parameters: documentId: string | string[] |
A page that contains multiple subpages. This is useful for splitting up a large topic into multiple steps.
multiPage().title('ContentPage').icon(DocumentIcon).pages([
page().title('Creating a content page').markdown(creatingAContentPage).documentType(contentPage),
page().title('Content Blocks').markdown(contentBlocks),
page().title('Uploading media').markdown(uploadingMedia),
])
| Methods | Description |
|---|---|
| title(title) | Sets the title of the page. Parameters: title: string |
| slug(slug) | Sets the slug of the page. Uses the title by default. Parameters: slug: string |
| pages(pages) | Set the pages to be displayed within this multi page. You can use the page method above to generate these pages. Parameters: pages: PageBuilder[] |
| icon(icon) | Sets an Icon for this page in the page tree. Parameters: icon: React.ElementType |
A simple divider in the user guide tree to separate groups of pages. This has no additional methods.
divider()
MIT © Q42
This plugin uses @sanity/plugin-kit with default configuration for build & watch scripts.
See Testing a plugin in Sanity Studio on how to run this plugin with hotreload in the studio.
FAQs
A Sanity plugin to add a simple user guide to the CMS
The npm package @q42/sanity-plugin-user-guide receives a total of 24 weekly downloads. As such, @q42/sanity-plugin-user-guide popularity was classified as not popular.
We found that @q42/sanity-plugin-user-guide demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 17 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket is heading to London! Stop by our booth or schedule a meeting to see what we've been working on.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.