commerce/lib/sanity/schemas/objects/blurbSection.tsx
2023-08-14 12:06:46 +02:00

133 lines
3.1 KiB
TypeScript

import {defineField} from 'sanity'
import {CommentIcon} from '@sanity/icons'
export default defineField({
name: 'blurbSection',
type: 'object',
title: 'Blurb section',
icon: CommentIcon,
fieldsets: [
{
name: 'layoutSettings',
title: 'Layout settings',
},
],
fields: [
{
name: 'disabled',
type: 'boolean',
title: 'Disabled?',
description: 'Set to true to disable this section.',
initialValue: 'false',
validation: (Rule) => Rule.required(),
},
{
name: 'title',
type: 'string',
title: 'Title',
description: 'Text displayed above blurbs.',
validation: (Rule) => Rule.required(),
},
{
name: 'mobileLayout',
type: 'string',
title: 'Mobile layout',
initialValue: 'stacked',
fieldset: 'layoutSettings',
description: 'Display blurbs stacked on top of each other or in a slider.',
validation: (Rule) => Rule.required(),
options: {
list: [
{
title: 'Vertical (1 column)',
value: 'vertical',
},
{
title: 'Horizontal (1 row with scroll)',
value: 'horizontal',
},
],
layout: 'radio',
direction: 'horizontal',
},
},
{
name: 'desktopLayout',
type: 'string',
title: 'Desktop layout',
initialValue: '3-column',
fieldset: 'layoutSettings',
description: 'Display blurbs in a 2- 3- or 4-column layout.',
validation: (Rule) => Rule.required(),
options: {
list: [
{
title: '2 columns',
value: '2-column',
},
{
title: '3 columns',
value: '3-column',
},
{
title: '4 columns',
value: '4-column',
},
],
layout: 'radio',
direction: 'horizontal',
},
},
{
name: 'imageFormat',
type: 'string',
title: 'Blurb image format',
initialValue: 'square',
description: 'Choose format to display blurb images in.',
validation: (Rule) => Rule.required(),
fieldset: 'layoutSettings',
options: {
list: [
{title: 'Square (1:1)', value: 'square'},
{title: 'Portrait (3:4)', value: 'portrait'},
{title: 'Landscape (16:9)', value: 'landscape'},
],
layout: 'radio',
},
},
{
name: 'blurbs',
type: 'array',
title: 'Blurbs',
description: 'Create blurbs or refer to existing blurbs.',
of: [
{
type: 'reference',
to: [
{
type: 'blurb',
},
],
},
],
validation: (Rule) => Rule.required(),
},
],
preview: {
select: {
title: 'title',
disabled: 'disabled',
},
prepare(selection) {
const {title, disabled} = selection
return {
title: `${title}`,
subtitle: `Blurb section ${disabled ? '(⚠️ Disabled)' : ''}`,
media: CommentIcon,
}
},
},
})