mirror of
https://github.com/vercel/commerce.git
synced 2025-05-15 22:16:58 +00:00
133 lines
3.1 KiB
TypeScript
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,
|
|
}
|
|
},
|
|
},
|
|
})
|