
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
@q42/sanity-plugin-user-guide
Advanced tools
A Sanity plugin to add a simple user guide to the CMS
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
We found that @q42/sanity-plugin-user-guide demonstrated a healthy version release cadence and project activity because the last version was released less than 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.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.