diff --git a/app/components/sanity/richtext/components/ImageBlock.tsx b/app/components/sanity/richtext/components/ImageBlock.tsx index 3eae048..92d73dc 100644 --- a/app/components/sanity/richtext/components/ImageBlock.tsx +++ b/app/components/sanity/richtext/components/ImageBlock.tsx @@ -38,6 +38,8 @@ export function ImageBlock( }, }); + if (!props._ref || !props.url || !props.width) return null; + return ( diff --git a/studio/schemas/objects/global/headerNavigation.ts b/studio/schemas/objects/global/headerNavigation.ts index bbb657f..1d387d1 100644 --- a/studio/schemas/objects/global/headerNavigation.ts +++ b/studio/schemas/objects/global/headerNavigation.ts @@ -1,4 +1,4 @@ -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; import {ExternalLink, Link, MenuSquare} from 'lucide-react'; export const internalLinkField = defineField({ @@ -65,7 +65,10 @@ export const nestedNav = { defineField({ name: 'childLinks', type: 'array', - of: [internalLinkObject, externalLinkObject], + of: [ + defineArrayMember(internalLinkObject), + defineArrayMember(externalLinkObject), + ], }), ], }; @@ -73,5 +76,9 @@ export const nestedNav = { export default defineField({ name: 'headerNavigation', type: 'array', - of: [internalLinkObject, externalLinkObject, nestedNav], + of: [ + defineArrayMember(internalLinkObject), + defineArrayMember(externalLinkObject), + defineArrayMember(nestedNav), + ], }); diff --git a/studio/schemas/objects/global/productRichtext.tsx b/studio/schemas/objects/global/productRichtext.tsx index ede5bc7..6e4e5ee 100644 --- a/studio/schemas/objects/global/productRichtext.tsx +++ b/studio/schemas/objects/global/productRichtext.tsx @@ -6,14 +6,14 @@ import { Text, Type, } from 'lucide-react'; -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; import {internalLinkFields} from './richtext'; export default defineField({ name: 'productRichtext', type: 'array', of: [ - { + defineArrayMember({ type: 'block', marks: { decorators: [ @@ -48,8 +48,8 @@ export default defineField({ }, ], }, - }, - { + }), + defineArrayMember({ name: 'shopifyTitle', title: 'Title', type: 'object', @@ -69,8 +69,8 @@ export default defineField({ }; }, }, - }, - { + }), + defineArrayMember({ name: 'shopifyDescription', title: 'Description', type: 'object', @@ -90,8 +90,8 @@ export default defineField({ }; }, }, - }, - { + }), + defineArrayMember({ name: 'price', type: 'object', fields: [ @@ -110,8 +110,8 @@ export default defineField({ }; }, }, - }, - { + }), + defineArrayMember({ name: 'addToCartButton', type: 'object', fields: [ @@ -132,6 +132,6 @@ export default defineField({ }; }, }, - }, + }), ], }); diff --git a/studio/schemas/objects/global/richtext.tsx b/studio/schemas/objects/global/richtext.tsx index 7740896..e5ff57f 100644 --- a/studio/schemas/objects/global/richtext.tsx +++ b/studio/schemas/objects/global/richtext.tsx @@ -1,4 +1,4 @@ -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; import {internalLinkField} from './headerNavigation'; import {ExternalLink, Link, MousePointerSquare} from 'lucide-react'; @@ -15,7 +15,7 @@ export default defineField({ name: 'richtext', type: 'array', of: [ - { + defineArrayMember({ type: 'block', marks: { decorators: [ @@ -50,8 +50,8 @@ export default defineField({ }, ], }, - }, - { + }), + defineArrayMember({ type: 'image', fields: [ { @@ -91,8 +91,8 @@ export default defineField({ maxWidth: 900, alignment: 'center', }, - }, - { + }), + defineArrayMember({ name: 'button', type: 'object', fields: [ @@ -113,6 +113,6 @@ export default defineField({ }; }, }, - }, + }), ], }); diff --git a/studio/schemas/objects/sections/carouselSection.tsx b/studio/schemas/objects/sections/carouselSection.tsx index e593021..85c49b2 100644 --- a/studio/schemas/objects/sections/carouselSection.tsx +++ b/studio/schemas/objects/sections/carouselSection.tsx @@ -1,5 +1,5 @@ import {EyeOff, GalleryHorizontal} from 'lucide-react'; -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; export default defineField({ name: 'carouselSection', @@ -55,7 +55,7 @@ export default defineField({ name: 'slides', type: 'array', of: [ - defineField({ + defineArrayMember({ name: 'slide', type: 'object', fields: [ diff --git a/studio/schemas/objects/sections/collectionListSection.tsx b/studio/schemas/objects/sections/collectionListSection.tsx index 1207c3f..33fbd07 100644 --- a/studio/schemas/objects/sections/collectionListSection.tsx +++ b/studio/schemas/objects/sections/collectionListSection.tsx @@ -1,5 +1,5 @@ import {EyeOff, LayoutGrid} from 'lucide-react'; -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; export default defineField({ name: 'collectionListSection', @@ -13,7 +13,7 @@ export default defineField({ layout: 'grid', }, of: [ - defineField({ + defineArrayMember({ name: 'collection', type: 'reference', to: [{type: 'collection'}], diff --git a/studio/schemas/objects/shopify/options.ts b/studio/schemas/objects/shopify/options.ts index 8eb1f3d..0fa9a64 100644 --- a/studio/schemas/objects/shopify/options.ts +++ b/studio/schemas/objects/shopify/options.ts @@ -1,5 +1,5 @@ import {SunIcon} from '@sanity/icons'; -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; export default defineField({ title: 'Product option', @@ -19,7 +19,7 @@ export default defineField({ title: 'Values', name: 'values', type: 'array', - of: [{type: 'string'}], + of: [defineArrayMember({type: 'string'})], }, ], preview: { diff --git a/studio/schemas/objects/shopify/shopifyCollection.ts b/studio/schemas/objects/shopify/shopifyCollection.ts index 8b465cf..bedb8d9 100644 --- a/studio/schemas/objects/shopify/shopifyCollection.ts +++ b/studio/schemas/objects/shopify/shopifyCollection.ts @@ -1,4 +1,4 @@ -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; export default defineField({ name: 'shopifyCollection', @@ -84,9 +84,9 @@ export default defineField({ type: 'array', description: 'Include Shopify products that satisfy these conditions', of: [ - { + defineArrayMember({ type: 'collectionRule', - }, + }), ], }), // Disjunctive rules diff --git a/studio/schemas/objects/shopify/shopifyProduct.ts b/studio/schemas/objects/shopify/shopifyProduct.ts index fdb7f8f..df3095d 100644 --- a/studio/schemas/objects/shopify/shopifyProduct.ts +++ b/studio/schemas/objects/shopify/shopifyProduct.ts @@ -1,4 +1,4 @@ -import {defineField} from 'sanity'; +import {defineArrayMember, defineField} from 'sanity'; export default defineField({ name: 'shopifyProduct', @@ -138,9 +138,9 @@ export default defineField({ title: 'Options', type: 'array', of: [ - { + defineArrayMember({ type: 'option', - }, + }), ], }), // Variants @@ -150,12 +150,12 @@ export default defineField({ title: 'Variants', type: 'array', of: [ - { + defineArrayMember({ title: 'Variant', type: 'reference', weak: true, to: [{type: 'productVariant'}], - }, + }), ], }), ], diff --git a/studio/schemas/singletons/settings.ts b/studio/schemas/singletons/settings.ts index 769f755..4f634f1 100644 --- a/studio/schemas/singletons/settings.ts +++ b/studio/schemas/singletons/settings.ts @@ -1,4 +1,4 @@ -import {defineField, defineType} from 'sanity'; +import {defineArrayMember, defineField, defineType} from 'sanity'; import {getAllCountries} from '../../../countries'; const GROUPS = [ @@ -268,7 +268,7 @@ export default defineType({ description: 'Select which countries where you want to show trailing zeros ($15.00).', type: 'array', - of: [{type: 'string'}], + of: [defineArrayMember({type: 'string'})], options: { list: getAllCountries().map((country) => { return {