jackmerrill.com/sanity/schemas/post.ts

81 lines
1.6 KiB
TypeScript
Raw Permalink Normal View History

2023-06-13 20:57:59 -07:00
import { defineField, defineType } from "sanity";
2023-05-24 21:49:48 -07:00
export default defineType({
2023-06-13 20:57:59 -07:00
name: "post",
title: "Post",
type: "document",
2023-05-24 21:49:48 -07:00
fields: [
defineField({
2023-06-13 20:57:59 -07:00
name: "title",
title: "Title",
type: "string",
2023-05-24 21:49:48 -07:00
}),
defineField({
2023-06-13 20:57:59 -07:00
name: "subtitle",
title: "Subtitle",
type: "string",
}),
defineField({
name: "slug",
title: "Slug",
type: "slug",
2023-05-24 21:49:48 -07:00
options: {
2023-06-13 20:57:59 -07:00
source: "title",
2023-05-24 21:49:48 -07:00
maxLength: 96,
},
}),
defineField({
2023-06-13 20:57:59 -07:00
name: "author",
title: "Author",
type: "reference",
to: { type: "author" },
2023-05-24 21:49:48 -07:00
}),
defineField({
2023-06-13 20:57:59 -07:00
name: "mainImage",
title: "Main image",
type: "image",
2023-05-24 21:49:48 -07:00
options: {
hotspot: true,
},
fields: [
{
2023-06-13 20:57:59 -07:00
name: "alt",
type: "string",
title: "Alternative Text",
},
],
2023-05-24 21:49:48 -07:00
}),
defineField({
2023-06-13 20:57:59 -07:00
name: "categories",
title: "Categories",
type: "array",
of: [{ type: "reference", to: { type: "category" } }],
2023-05-24 21:49:48 -07:00
}),
defineField({
2023-06-13 20:57:59 -07:00
name: "publishedAt",
title: "Published at",
type: "datetime",
2023-05-24 21:49:48 -07:00
}),
defineField({
2023-06-13 20:57:59 -07:00
name: "content",
title: "Body",
type: "markdown",
options: {
imageUrl: (imageAsset) => `${imageAsset.url}`,
},
2023-05-24 21:49:48 -07:00
}),
],
preview: {
select: {
2023-06-13 20:57:59 -07:00
title: "title",
author: "author.name",
media: "mainImage",
2023-05-24 21:49:48 -07:00
},
prepare(selection) {
2023-06-13 20:57:59 -07:00
const { author } = selection;
return { ...selection, subtitle: author && `by ${author}` };
2023-05-24 21:49:48 -07:00
},
},
2023-06-13 20:57:59 -07:00
});