Files
2026-03-31 11:32:05 -04:00

67 lines
1.5 KiB
TypeScript

import {defineField, defineType} from 'sanity'
export default defineType({
name: 'roadmapItem',
title: 'Roadmap Item',
type: 'document',
fields: [
defineField({
name: 'title',
title: 'Title',
type: 'string',
validation: (Rule) => Rule.required().max(100),
}),
defineField({
name: 'description',
title: 'Description',
type: 'text',
rows: 2,
description: 'Short description shown on the roadmap card.',
validation: (Rule) => Rule.max(300),
}),
defineField({
name: 'status',
title: 'Status',
type: 'string',
options: {
list: [
{title: 'Planned', value: 'planned'},
{title: 'In Progress', value: 'in-progress'},
{title: 'Shipped', value: 'shipped'},
],
layout: 'radio',
},
initialValue: 'planned',
validation: (Rule) => Rule.required(),
}),
defineField({
name: 'order',
title: 'Sort Order',
type: 'number',
description: 'Lower numbers appear first within each status group.',
initialValue: 100,
}),
],
orderings: [
{
title: 'Sort Order',
name: 'orderAsc',
by: [{field: 'order', direction: 'asc'}],
},
],
preview: {
select: {
title: 'title',
status: 'status',
},
prepare({title, status}) {
const badge =
status === 'in-progress' ? '🔄' : status === 'shipped' ? '✅' : '📋'
return {
title,
subtitle: `${badge} ${status ?? 'planned'}`,
}
},
},
})