Files
speckle-studio/schemaTypes/blogPost.ts
T
2025-01-13 13:17:23 +01:00

110 lines
2.1 KiB
TypeScript

import {defineType} from 'sanity'
export default defineType({
name: 'blogPost',
type: 'document',
title: 'Blog posts',
fields: [
{
name: 'title',
type: 'string',
title: 'Title',
validation: (Rule) => Rule.required()
},
{
name: 'summary',
type: 'text',
title: 'Summary'
},
{
name: 'categories',
type: 'array',
title: 'Categories',
of: [{type: 'reference', to: {type: 'blogCategory'}}]
},
{
name: 'publishedAt',
type: 'datetime',
title: 'Published at'
},
{
name: 'author',
type: 'reference',
title: 'Author',
to: {type: 'author'}
},
{
name: 'mainImage',
type: 'image',
title: 'Main Image',
options: {
hotspot: true
}
},
{
name: 'content',
type: 'array',
title: 'Content',
of: [
{
type: 'block'
},
{
type: 'image',
options: {
hotspot: true
}
},
{
type: 'code',
options: {
language: 'javascript',
languageAlternatives: [
{title: 'Javascript', value: 'javascript'},
{title: 'HTML', value: 'html'},
{title: 'TypeScript', value: 'typescript'},
],
withFilename: true,
}
},
{
name: 'youtube',
type: 'object',
title: 'YouTube Embed',
fields: [
{
name: 'url',
type: 'url',
title: 'YouTube URL'
}
]
},
{
name: 'video',
type: 'file',
title: 'Video',
options: {
accept: 'video/*'
}
},
{
name: 'audio',
type: 'file',
title: 'Audio',
options: {
accept: 'audio/*'
}
},
]
},
{
name: 'tags',
type: 'array',
title: 'Tags',
of: [{type: 'string'}],
options: {
layout: 'tags'
}
},
]
})