You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

sanity-plugin-singleton-tools

Package Overview
Dependencies
4
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

sanity-plugin-singleton-tools

A plugin to create and manage singletons in your Sanity Studio


Version published
Maintainers
1
Created

Readme

Source

sanity-plugin-singleton-tools

This is a Sanity Studio v3 plugin.

What does this plugin do?

This plugin adds convenience functions to reduce the overhead of creating single edit (singleton) documents in the Sanity Studio.

In short, this does the following:

  • Limits a singleton document's actions to Publish, Unpublish, and Discard Changes.
  • Removes the ability to create new versions of the singleton document in both the global Create menu and Structure.
  • Adds simple methods for customizing the way your singletons are listed in your Studio's Structure.

Installation

npm install sanity-plugin-singleton-tools

Usage

1. Add the plugin to your sanity.config

//sanity.config.js
import { defineConfig } from 'sanity';
import { singletonTools } from 'sanity-plugin-singleton-tools';

export default defineConfig({
  //...
  plugins: [singletonTools()],
});

2. Configure your singleton's schema

//mySingleton.js
export const mySingleton = {
  name: 'mySingleton',
  title: 'My Singleton',
  type: 'document',
  options: {
    singleton: true, // Identify this document as a singleton
  },
};

3. Customize how your singleton is shown in your Structure:

// structure.js
import {
  singletonDocumentListItem,
  singletonDocumentListItems,
  filteredDocumentListItems,
} from 'sanity-plugin-singleton-tools';
import { PlugIcon } from '@sanity/icons';

export const structure = (S, context) =>
  S.list()
    .title('Sanity Love Content')
    .items([
      // Create a list item for each singleton document in your schema that links directly to a document view
      ...singletonDocumentListItems({ S, context }),
      // Create a list item for a specific singleton
      singletonDocumentListItem({
        S,
        context,
        // Schema type
        type: 'mySingleton',
        // Required for showing multiple singletons of the same schema type
        title: 'My Singleton',
        // Required for showing multiple singletons of the same schema type
        id: 'mySingleton',
        // Specify a custom icon
        icon: PlugIcon,
      }),
      S.divider(),
      // Filter singleton documents out of the default S.documentTypeListItems() to prevent them from being rendered as lists or as duplicates
      ...filteredDocumentListItems({ S, context }),
    ]);

Notes

Notice something wrong with my TS? I'm stubborn and refuse to use TS, therefore I am a TS baby. If you notice something wrong with my implementation please let me know!

License

MIT © RD Pennell

Develop & test

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.

Keywords

FAQs

Package last updated on 05 Mar 2024

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc