2023-08-14 12:06:46 +02:00

65 lines
1.5 KiB
TypeScript

import {defineField} from 'sanity'
import {BlockElementIcon} from '@sanity/icons'
import {languages} from '../../languages'
export default defineField({
name: 'section',
type: 'document',
title: 'Reusable section',
icon: BlockElementIcon,
fields: [
defineField({
name: 'language',
type: 'string',
readOnly: true,
description: 'Language of this document.',
// hidden: true,
}),
// Title
defineField({
name: 'title',
title: 'Title',
type: 'string',
}),
defineField({
name: 'section',
title: 'Section',
type: 'object',
description: 'Reusable section to refer to from other pages.',
fields: [
defineField({
name: 'sectionType',
type: 'array',
title: 'Section type',
description: 'Select reusable component (only 1 allowed).',
of: [
{type: 'hero'},
{type: 'filteredProductList'},
{type: 'slider'},
{type: 'blurbSection'},
{type: 'uspSection'},
],
validation: (Rule) => Rule.length(1),
}),
],
}),
],
preview: {
select: {
title: 'title',
language: 'language',
},
prepare(selection) {
const {title, language} = selection
const currentLang = languages.find((lang) => lang.id === language)
return {
title: `${title}`,
media: BlockElementIcon,
subtitle: `${currentLang ? currentLang.title : ''}`,
}
},
},
})