mirror of
https://github.com/vercel/commerce.git
synced 2025-05-15 22:16:58 +00:00
55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import {EarthGlobeIcon} from '@sanity/icons'
|
|
import {defineField} from 'sanity'
|
|
|
|
export default defineField({
|
|
title: 'External Link',
|
|
name: 'linkExternal',
|
|
type: 'object',
|
|
icon: EarthGlobeIcon,
|
|
description: 'Link to content on external site.',
|
|
fields: [
|
|
// Title
|
|
defineField({
|
|
title: 'Title',
|
|
name: 'title',
|
|
type: 'string',
|
|
description: 'Descriptive text for the content on this link.'
|
|
}),
|
|
// URL
|
|
defineField({
|
|
name: 'url',
|
|
title: 'URL',
|
|
type: 'url',
|
|
description: 'Link to websites, e-mail address or phone number.',
|
|
validation: (Rule) => Rule.required().uri({scheme: ['http', 'https', 'mailto', 'tel']})
|
|
}),
|
|
// Open in a new window?
|
|
defineField({
|
|
title: 'Open in a new window?',
|
|
name: 'newWindow',
|
|
type: 'boolean',
|
|
description: 'If set to true, opens the link in a new window.',
|
|
initialValue: false,
|
|
})
|
|
],
|
|
preview: {
|
|
select: {
|
|
title: 'title',
|
|
url: 'url',
|
|
},
|
|
prepare(selection) {
|
|
const {title, url} = selection
|
|
|
|
let subtitle = []
|
|
if (url) {
|
|
subtitle.push(`→ ${url}`)
|
|
}
|
|
|
|
return {
|
|
title,
|
|
subtitle: subtitle.join(' '),
|
|
}
|
|
},
|
|
},
|
|
})
|