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'}},
})