Source index
sanity/schemaTypes/guide.ts
import {defineArrayMember, defineField, defineType} from 'sanity'
const strings = (name: string, description?: string) => defineField({
name, type: 'array', description,
of: [defineArrayMember({type: 'string'})],
validation: (r) => r.required().min(1),
})
export const guide = defineType({
name: 'guide',
title: 'Keyboard and focus repair guide',
type: 'document',
fields: [
defineField({name: 'title', type: 'string', validation: (r) => r.required()}),
defineField({name: 'problem', type: 'text', validation: (r) => r.required()}),
strings('symptoms'),
defineField({name: 'pattern', type: 'string', options: {list: ['button', 'dialog', 'tabs', 'menu-button', 'keyboard', 'focus-visible', 'focus-not-obscured']}, validation: (r) => r.required()}),
strings('prerequisites'),
strings('constraints', 'Important exceptions and limits of this advice.'),
strings('repairSteps', 'Paraphrased repair suggestions; not proof that a repair was implemented or tested.'),
defineField({name: 'references', type: 'array', of: [defineArrayMember({type: 'reference', to: [{type: 'source'}]})], validation: (r) => r.required().min(1)}),
defineField({name: 'checks', type: 'array', of: [defineArrayMember({type: 'reference', to: [{type: 'check'}]})], validation: (r) => r.required().min(1)}),
strings('keywords'),
strings('unsupportedQuestions', 'Questions this guide cannot substantiate.'),
defineField({name: 'scopeNote', type: 'text', validation: (r) => r.required()}),
],
preview: {select: {title: 'title', subtitle: 'pattern'}},
})