mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
- Updates deps with minor bugfixes. - Fixes typos and removes debug console logs. - Less aggressive validation rules for alt text
130 lines
3.2 KiB
TypeScript
130 lines
3.2 KiB
TypeScript
import { CogIcon } from "@sanity/icons";
|
|
import { defineArrayMember, defineField, defineType } from "sanity";
|
|
|
|
import * as demo from "@/sanity/lib/demo";
|
|
|
|
export default defineType({
|
|
name: "settings",
|
|
title: "Settings",
|
|
type: "document",
|
|
icon: CogIcon,
|
|
fields: [
|
|
defineField({
|
|
name: "title",
|
|
description: "This field is the title of your blog.",
|
|
title: "Title",
|
|
type: "string",
|
|
initialValue: demo.title,
|
|
validation: (rule) => rule.required(),
|
|
}),
|
|
defineField({
|
|
name: "description",
|
|
description:
|
|
"Used both for the <meta> description tag for SEO, and the blog subheader.",
|
|
title: "Description",
|
|
type: "array",
|
|
initialValue: demo.description,
|
|
of: [
|
|
defineArrayMember({
|
|
type: "block",
|
|
options: {},
|
|
styles: [],
|
|
lists: [],
|
|
marks: {
|
|
decorators: [],
|
|
annotations: [
|
|
defineField({
|
|
type: "object",
|
|
name: "link",
|
|
fields: [
|
|
{
|
|
type: "string",
|
|
name: "href",
|
|
title: "URL",
|
|
validation: (rule) => rule.required(),
|
|
},
|
|
],
|
|
}),
|
|
],
|
|
},
|
|
}),
|
|
],
|
|
}),
|
|
defineField({
|
|
name: "footer",
|
|
description:
|
|
"This is a block of text that will be displayed at the bottom of the page.",
|
|
title: "Footer Info",
|
|
type: "array",
|
|
of: [
|
|
defineArrayMember({
|
|
type: "block",
|
|
marks: {
|
|
annotations: [
|
|
{
|
|
name: "link",
|
|
type: "object",
|
|
title: "Link",
|
|
fields: [
|
|
{
|
|
name: "href",
|
|
type: "url",
|
|
title: "Url",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
}),
|
|
],
|
|
}),
|
|
defineField({
|
|
name: "ogImage",
|
|
title: "Open Graph Image",
|
|
type: "image",
|
|
description: "Displayed on social cards and search engine results.",
|
|
options: {
|
|
hotspot: true,
|
|
aiAssist: {
|
|
imageDescriptionField: "alt",
|
|
},
|
|
},
|
|
fields: [
|
|
defineField({
|
|
name: "alt",
|
|
description: "Important for accessibility and SEO.",
|
|
title: "Alternative text",
|
|
type: "string",
|
|
validation: (rule) => {
|
|
return rule.custom((alt, context) => {
|
|
if ((context.document?.ogImage as any)?.asset?._ref && !alt) {
|
|
return "Required";
|
|
}
|
|
return true;
|
|
});
|
|
},
|
|
}),
|
|
defineField({
|
|
name: "metadataBase",
|
|
type: "url",
|
|
description: (
|
|
<a
|
|
href="https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase"
|
|
rel="noreferrer noopener"
|
|
>
|
|
More information
|
|
</a>
|
|
),
|
|
}),
|
|
],
|
|
}),
|
|
],
|
|
preview: {
|
|
prepare() {
|
|
return {
|
|
title: "Settings",
|
|
};
|
|
},
|
|
},
|
|
});
|