Source index
sanity/schemaTypes/source.ts
import {defineArrayMember, defineField, defineType} from 'sanity'
export const source = defineType({
name: 'source',
title: 'Verified public source',
type: 'document',
fields: [
defineField({name: 'title', type: 'string', validation: (r) => r.required()}),
defineField({name: 'url', title: 'Primary W3C URL', type: 'url', validation: (r) => r.required().uri({scheme: ['https']})}),
defineField({name: 'kind', type: 'string', options: {list: ['APG', 'WCAG-understanding']}, validation: (r) => r.required()}),
defineField({name: 'publisher', type: 'string', initialValue: 'W3C WAI', validation: (r) => r.required()}),
defineField({name: 'checkedAt', title: 'Source checked at', type: 'datetime', validation: (r) => r.required()}),
defineField({name: 'sections', type: 'array', of: [defineArrayMember({type: 'string'})], validation: (r) => r.required().min(1)}),
defineField({name: 'summary', type: 'text', validation: (r) => r.required()}),
defineField({name: 'standardsContext', type: 'text', description: 'Distinguish informative pattern guidance from a criterion and its level.', validation: (r) => r.required()}),
defineField({name: 'licenseUrl', type: 'url', validation: (r) => r.required().uri({scheme: ['https']})}),
defineField({name: 'copyrightNotice', type: 'text', validation: (r) => r.required()}),
defineField({name: 'derivationNotice', type: 'text', validation: (r) => r.required()}),
defineField({name: 'sourceStatus', type: 'string', description: 'Informative source status where explicitly recorded.'}),
defineField({name: 'sourceUpdatedAt', type: 'date', description: 'Update date displayed by the source, when available.'}),
],
preview: {select: {title: 'title', subtitle: 'kind'}},
})