49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { defineConfig } from 'sanity'
|
|
import { structureTool } from 'sanity/structure'
|
|
import { visionTool } from '@sanity/vision'
|
|
import { schemaTypes } from './src/sanity/schemas'
|
|
|
|
export default defineConfig({
|
|
projectId: import.meta.env.PUBLIC_SANITY_PROJECT_ID,
|
|
dataset: import.meta.env.PUBLIC_SANITY_DATASET ?? 'production',
|
|
document: {
|
|
// Filter document actions
|
|
actions: (prev, context) => {
|
|
// For singleton documents like site settings
|
|
if (context.schemaType === 'theaterHomepage') {
|
|
// Only allow publish action (equivalent to ["update", "publish"])
|
|
return prev.filter(({action}) => action === 'publish')
|
|
}
|
|
return prev
|
|
},
|
|
|
|
// Prevent creating new documents of this type
|
|
newDocumentOptions: (prev, context) => {
|
|
return prev.filter(
|
|
(template) => template.templateId !== 'siteSettings'
|
|
)
|
|
}
|
|
},
|
|
plugins: [
|
|
structureTool({
|
|
structure: (S) =>
|
|
S.list()
|
|
.title('Content')
|
|
.items([
|
|
S.listItem()
|
|
.title('Theater Homepage')
|
|
.child(
|
|
S.document()
|
|
.schemaType('theaterHomepage')
|
|
.documentId('theaterHomepage')
|
|
),
|
|
S.divider(),
|
|
S.documentTypeListItem('post').title('Blog Posts'),
|
|
S.documentTypeListItem('page').title('Pages'),
|
|
]),
|
|
}),
|
|
visionTool(),
|
|
],
|
|
schema: { types: schemaTypes },
|
|
})
|