Multiple lists not possible in a single pane, but grouping list items is. Check out Sanity's documentation.

2 replies
Last updated: Apr 8, 2020
Is it possible to have multiple lists in the desk structure? E.g. a list with title content, and a list with title Settings below.
AI Update

Yes, absolutely! You can have multiple lists in the desk structure, including separate lists for "Content" and "Settings" or any other grouping you need.

The Structure Builder API provides several ways to organize your lists. Here are the most common approaches:

Using Dividers to Separate Lists

The simplest way is to use S.divider() to create visual separation between different sections. Here's an example that shows content types first, then settings below:

// ./structure/index.ts
import type {StructureResolver} from 'sanity/structure'

export const structure: StructureResolver = (S) =>
  S.list()
    .title('Content')
    .items([
      // Content section
      S.documentTypeListItem('post').title('Posts'),
      S.documentTypeListItem('page').title('Pages'),
      S.documentTypeListItem('author').title('Authors'),
      
      // Divider to separate sections
      S.divider(),
      
      // Settings section
      S.documentTypeListItem('siteSettings').title('Site Settings'),
      S.documentTypeListItem('navigationMenu').title('Navigation'),
    ])

You can also filter out certain document types from the default list and manually place them in a separate section:

export const structure: StructureResolver = (S) =>
  S.list()
    .title('Content')
    .items([
      // All document types except settings
      ...S.documentTypeListItems().filter(
        (item) => item.getId() !== 'siteSettings'
      ),
      
      S.divider(),
      
      // Settings placed separately
      S.documentTypeListItem('siteSettings').title('Settings'),
    ])

Creating Nested Lists

For more complex organization, you can create nested list items where clicking on a parent item reveals child lists:

export const structure: StructureResolver = (S) =>
  S.list()
    .title('Content')
    .items([
      // Content section as a nested list
      S.listItem()
        .title('Content')
        .child(
          S.list()
            .title('Content')
            .items([
              S.documentTypeListItem('post').title('Posts'),
              S.documentTypeListItem('page').title('Pages'),
            ])
        ),
      
      S.divider(),
      
      // Settings section as a nested list
      S.listItem()
        .title('Settings')
        .child(
          S.list()
            .title('Settings')
            .items([
              S.documentTypeListItem('siteSettings').title('Site Settings'),
              S.documentTypeListItem('redirects').title('Redirects'),
            ])
        ),
    ])

The Structure Builder cheat sheet has great examples of all these patterns, and you can learn more about the full capabilities in the Structure Builder introduction guide.

Show original thread
2 replies
what do you mean multiple lists? you can customize with grouping listItems however you want, I have a settings list that itself is not an object nor document, just for grouping setting documents
If you mean adding multiple heading/titles in a single pane and list items under each one, then no, this is not currently possible with the current API. But as Cali said above, you can have multiple list items in a single pane that opens different lists in child panes. You can find more info about how to do that and how it looks like here: https://www.sanity.io/guides/getting-started-with-structure-builder

Sanity – Build the way you think, not the way your CMS thinks

Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.

Was this answer helpful?