78 lines
1.7 KiB
TypeScript
78 lines
1.7 KiB
TypeScript
import { defineType, defineField } from 'sanity';
|
|
|
|
export default defineType({
|
|
name: 'processStep',
|
|
title: 'Étape du processus',
|
|
type: 'document',
|
|
fields: [
|
|
defineField({
|
|
name: 'title',
|
|
title: "Titre de l'étape",
|
|
type: 'string',
|
|
validation: (rule) => rule.required(),
|
|
}),
|
|
defineField({
|
|
name: 'stepNumber',
|
|
title: "Numéro d'étape",
|
|
type: 'number',
|
|
validation: (rule) => rule.required().min(1).max(10),
|
|
}),
|
|
defineField({
|
|
name: 'subtitle',
|
|
title: 'Sous-titre',
|
|
type: 'string',
|
|
}),
|
|
defineField({
|
|
name: 'description',
|
|
title: 'Description',
|
|
type: 'text',
|
|
rows: 4,
|
|
}),
|
|
defineField({
|
|
name: 'icon',
|
|
title: "Icône / illustration de l'étape",
|
|
type: 'image',
|
|
}),
|
|
defineField({
|
|
name: 'gallery',
|
|
title: 'Photos illustratives',
|
|
type: 'array',
|
|
of: [
|
|
{
|
|
type: 'image',
|
|
options: { hotspot: true },
|
|
fields: [
|
|
defineField({ name: 'alt', title: 'Texte alternatif', type: 'string' }),
|
|
defineField({ name: 'caption', title: 'Légende', type: 'string' }),
|
|
],
|
|
},
|
|
],
|
|
}),
|
|
defineField({
|
|
name: 'duration',
|
|
title: 'Durée estimée',
|
|
type: 'string',
|
|
}),
|
|
],
|
|
preview: {
|
|
select: {
|
|
title: 'title',
|
|
subtitle: 'subtitle',
|
|
stepNumber: 'stepNumber',
|
|
},
|
|
prepare({ title, subtitle, stepNumber }) {
|
|
return {
|
|
title: `${stepNumber}. ${title}`,
|
|
subtitle,
|
|
};
|
|
},
|
|
},
|
|
orderings: [
|
|
{
|
|
title: 'Par numéro',
|
|
name: 'stepNumberAsc',
|
|
by: [{ field: 'stepNumber', direction: 'asc' }],
|
|
},
|
|
],
|
|
});
|