@sanity/cli 3.36.4 → 3.36.5-canary.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/lib/_chunks-cjs/cli.js +1779 -1317
  2. package/lib/_chunks-cjs/cli.js.map +1 -1
  3. package/lib/_chunks-cjs/journeyConfig.js +11 -11
  4. package/lib/_chunks-cjs/journeyConfig.js.map +1 -1
  5. package/lib/_chunks-cjs/loadEnv.js +105 -2719
  6. package/lib/_chunks-cjs/loadEnv.js.map +1 -1
  7. package/lib/cli.d.ts +10 -0
  8. package/lib/index.d.ts +448 -0
  9. package/lib/index.esm.js +449 -5
  10. package/lib/index.esm.js.map +1 -1
  11. package/lib/index.js +3 -3
  12. package/lib/index.js.map +1 -1
  13. package/lib/index.mjs +452 -0
  14. package/lib/index.mjs.map +1 -0
  15. package/lib/run.d.ts +1 -0
  16. package/lib/workers/getAndWriteJourneySchema.d.ts +1 -0
  17. package/lib/workers/getCliConfig.d.ts +1 -0
  18. package/lib/workers/typegenGenerate.d.ts +37 -0
  19. package/lib/workers/typegenGenerate.js +6 -2
  20. package/lib/workers/typegenGenerate.js.map +1 -1
  21. package/package.json +18 -21
  22. package/src/actions/init-project/templates/shopify.ts +7 -0
  23. package/src/util/journeyConfig.ts +5 -5
  24. package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +1 -1
  25. package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +1 -1
  26. package/templates/shared/tsconfig.json +2 -4
  27. package/templates/shopify/README.md +3 -3
  28. package/templates/shopify/components/hotspots/ProductTooltip.tsx +1 -1
  29. package/templates/shopify/components/icons/Shopify.tsx +1 -1
  30. package/templates/shopify/components/inputs/CollectionHidden.tsx +1 -1
  31. package/templates/shopify/components/media/ColorTheme.tsx +1 -1
  32. package/templates/shopify/components/studio/Navbar.tsx +29 -0
  33. package/templates/shopify/constants.ts +31 -1
  34. package/templates/shopify/docs/features.md +6 -7
  35. package/templates/shopify/schemaTypes/documents/collection.tsx +11 -47
  36. package/templates/shopify/schemaTypes/documents/colorTheme.tsx +2 -17
  37. package/templates/shopify/schemaTypes/documents/page.ts +10 -37
  38. package/templates/shopify/schemaTypes/documents/product.tsx +4 -27
  39. package/templates/shopify/schemaTypes/documents/productVariant.tsx +4 -13
  40. package/templates/shopify/schemaTypes/index.ts +97 -126
  41. package/templates/shopify/schemaTypes/objects/collection/{group.ts → collectionGroupType.ts} +7 -10
  42. package/templates/shopify/schemaTypes/objects/collection/{links.ts → collectionLinksType.ts} +4 -4
  43. package/templates/shopify/schemaTypes/objects/customProductOption/{colorObject.tsx → customProductOptionColorObjectType.tsx} +3 -6
  44. package/templates/shopify/schemaTypes/objects/customProductOption/{color.tsx → customProductOptionColorType.tsx} +2 -10
  45. package/templates/shopify/schemaTypes/objects/customProductOption/{sizeObject.ts → customProductOptionSizeObjectType.ts} +3 -7
  46. package/templates/shopify/schemaTypes/objects/customProductOption/{size.ts → customProductOptionSizeType.ts} +3 -12
  47. package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
  48. package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
  49. package/templates/shopify/schemaTypes/objects/global/{menu.ts → menuType.ts} +2 -4
  50. package/templates/shopify/schemaTypes/objects/global/{notFoundPage.ts → notFoundPageType.ts} +1 -6
  51. package/templates/shopify/schemaTypes/objects/hotspot/{imageWithProductHotspots.ts → imageWithProductHotspotsType.ts} +4 -6
  52. package/templates/shopify/schemaTypes/objects/hotspot/{productHotspots.tsx → productHotspotsType.tsx} +3 -5
  53. package/templates/shopify/schemaTypes/objects/hotspot/{spot.tsx → spotType.tsx} +1 -3
  54. package/templates/shopify/schemaTypes/{annotations/linkEmail.tsx → objects/link/linkEmailType.tsx} +5 -13
  55. package/templates/shopify/schemaTypes/{annotations/linkExternal.tsx → objects/link/linkExternalType.tsx} +6 -13
  56. package/templates/shopify/schemaTypes/{annotations/linkInternal.tsx → objects/link/linkInternalType.tsx} +5 -12
  57. package/templates/shopify/schemaTypes/{annotations/product.tsx → objects/link/linkProductType.tsx} +4 -16
  58. package/templates/shopify/schemaTypes/objects/module/{accordionGroup.ts → accordionGroupType.ts} +6 -9
  59. package/templates/shopify/schemaTypes/objects/module/{accordion.ts → accordionType.ts} +4 -11
  60. package/templates/shopify/schemaTypes/objects/module/{callToAction.tsx → callToActionType.tsx} +10 -23
  61. package/templates/shopify/schemaTypes/objects/module/{callout.ts → calloutType.ts} +4 -10
  62. package/templates/shopify/schemaTypes/objects/module/{collection.tsx → collectionReferenceType.tsx} +4 -9
  63. package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
  64. package/templates/shopify/schemaTypes/objects/module/{grid.ts → gridType.ts} +7 -15
  65. package/templates/shopify/schemaTypes/objects/{hero/home.tsx → module/heroType.tsx} +14 -17
  66. package/templates/shopify/schemaTypes/objects/module/{imageCallToAction.tsx → imageCallToActionType.tsx} +6 -10
  67. package/templates/shopify/schemaTypes/objects/module/{image.ts → imageFeatureType.ts} +6 -18
  68. package/templates/shopify/schemaTypes/objects/module/{images.tsx → imageFeaturesType.tsx} +7 -25
  69. package/templates/shopify/schemaTypes/objects/module/{instagram.ts → instagramType.ts} +2 -2
  70. package/templates/shopify/schemaTypes/objects/module/{products.tsx → productFeaturesType.tsx} +6 -11
  71. package/templates/shopify/schemaTypes/objects/module/{product.tsx → productReferenceType.tsx} +6 -8
  72. package/templates/shopify/schemaTypes/objects/{seo/seo.ts → seoType.ts} +7 -6
  73. package/templates/shopify/schemaTypes/objects/shopify/{shopifyCollectionRule.tsx → collectionRuleType.tsx} +2 -10
  74. package/templates/shopify/schemaTypes/objects/shopify/{inventory.ts → inventoryType.ts} +7 -12
  75. package/templates/shopify/schemaTypes/objects/shopify/{option.tsx → optionType.tsx} +6 -12
  76. package/templates/shopify/schemaTypes/objects/shopify/{placeholderString.ts → placeholderStringType.ts} +3 -1
  77. package/templates/shopify/schemaTypes/objects/shopify/{priceRange.ts → priceRangeType.ts} +5 -7
  78. package/templates/shopify/schemaTypes/objects/shopify/{productWithVariant.tsx → productWithVariantType.tsx} +2 -2
  79. package/templates/shopify/schemaTypes/objects/shopify/{proxyString.ts → proxyStringType.ts} +1 -1
  80. package/templates/shopify/schemaTypes/objects/shopify/{shopifyCollection.ts → shopifyCollectionType.ts} +4 -25
  81. package/templates/shopify/schemaTypes/objects/shopify/{shopifyProduct.ts → shopifyProductType.ts} +5 -35
  82. package/templates/shopify/schemaTypes/objects/shopify/{shopifyProductVariant.ts → shopifyProductVariantType.ts} +1 -27
  83. package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
  84. package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
  85. package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
  86. package/templates/shopify/schemaTypes/singletons/{settings.ts → settingsType.ts} +7 -9
  87. package/templates/shopify/utils/shopifyUrls.ts +3 -3
  88. package/templates/shopify/utils/validateSlug.ts +3 -7
  89. package/lib/_chunks-cjs/index.js +0 -547
  90. package/lib/_chunks-cjs/index.js.map +0 -1
  91. package/lib/_chunks-cjs/node.js +0 -213
  92. package/lib/_chunks-cjs/node.js.map +0 -1
  93. package/lib/_chunks-cjs/stegaEncodeSourceMap.js +0 -357
  94. package/lib/_chunks-cjs/stegaEncodeSourceMap.js.map +0 -1
  95. package/lib/_chunks-es/index.js +0 -3336
  96. package/lib/_chunks-es/index.js.map +0 -1
  97. package/lib/_chunks-es/node.js +0 -216
  98. package/lib/_chunks-es/node.js.map +0 -1
  99. package/lib/_chunks-es/stegaEncodeSourceMap.js +0 -358
  100. package/lib/_chunks-es/stegaEncodeSourceMap.js.map +0 -1
  101. package/lib/index.cjs.mjs +0 -7
  102. package/templates/shopify/schemaTypes/blocks/body.tsx +0 -70
  103. package/templates/shopify/schemaTypes/objects/global/footer.ts +0 -57
  104. package/templates/shopify/schemaTypes/objects/global/linkExternal.ts +0 -52
  105. package/templates/shopify/schemaTypes/objects/global/linkInternal.ts +0 -65
  106. package/templates/shopify/schemaTypes/objects/global/links.ts +0 -16
  107. package/templates/shopify/schemaTypes/objects/hero/collection.tsx +0 -42
  108. package/templates/shopify/schemaTypes/objects/hero/page.tsx +0 -35
  109. package/templates/shopify/schemaTypes/objects/module/accordionBody.ts +0 -45
  110. package/templates/shopify/schemaTypes/objects/module/gridItem.ts +0 -91
  111. package/templates/shopify/schemaTypes/objects/seo/description.tsx +0 -10
  112. package/templates/shopify/schemaTypes/objects/seo/home.tsx +0 -31
  113. package/templates/shopify/schemaTypes/objects/seo/page.tsx +0 -37
  114. package/templates/shopify/schemaTypes/objects/seo/shopify.tsx +0 -40
  115. package/templates/shopify/schemaTypes/singletons/home.ts +0 -62
  116. /package/lib/{dts/src/index.d.ts → index.d.mts} +0 -0
@@ -1,29 +1,12 @@
1
1
  import {TagIcon} from '@sanity/icons'
2
2
  import pluralize from 'pluralize-esm'
3
- import ShopifyIcon from '../../components/icons/Shopify'
4
3
  import ProductHiddenInput from '../../components/inputs/ProductHidden'
5
4
  import ShopifyDocumentStatus from '../../components/media/ShopifyDocumentStatus'
6
5
  import {defineField, defineType} from 'sanity'
7
6
  import {getPriceRange} from '../../utils/getPriceRange'
7
+ import { GROUPS } from '../../constants'
8
8
 
9
- const GROUPS = [
10
- {
11
- name: 'editorial',
12
- title: 'Editorial',
13
- default: true,
14
- },
15
- {
16
- name: 'shopifySync',
17
- title: 'Shopify sync',
18
- icon: ShopifyIcon,
19
- },
20
- {
21
- name: 'seo',
22
- title: 'SEO',
23
- },
24
- ]
25
-
26
- export default defineType({
9
+ export const productType = defineType({
27
10
  name: 'product',
28
11
  title: 'Product',
29
12
  type: 'document',
@@ -43,37 +26,31 @@ export default defineType({
43
26
  return !parent?.store || (isActive && !isDeleted)
44
27
  },
45
28
  }),
46
- // Title (proxy)
47
29
  defineField({
48
30
  name: 'titleProxy',
49
31
  title: 'Title',
50
32
  type: 'proxyString',
51
33
  options: {field: 'store.title'},
52
34
  }),
53
- // Slug (proxy)
54
35
  defineField({
55
36
  name: 'slugProxy',
56
37
  title: 'Slug',
57
38
  type: 'proxyString',
58
39
  options: {field: 'store.slug.current'},
59
40
  }),
60
- // Color theme
61
41
  defineField({
62
42
  name: 'colorTheme',
63
- title: 'Color theme',
64
43
  type: 'reference',
65
44
  to: [{type: 'colorTheme'}],
66
45
  group: 'editorial',
67
46
  }),
68
47
  defineField({
69
48
  name: 'body',
70
- title: 'Body',
71
- type: 'body',
49
+ type: 'portableText',
72
50
  group: 'editorial',
73
51
  }),
74
52
  defineField({
75
53
  name: 'store',
76
- title: 'Shopify',
77
54
  type: 'shopifyProduct',
78
55
  description: 'Product data from Shopify (read-only)',
79
56
  group: 'shopifySync',
@@ -81,7 +58,7 @@ export default defineType({
81
58
  defineField({
82
59
  name: 'seo',
83
60
  title: 'SEO',
84
- type: 'seo.shopify',
61
+ type: 'seo',
85
62
  group: 'seo',
86
63
  }),
87
64
  ],
@@ -1,25 +1,18 @@
1
- import React from 'react'
1
+
2
2
  import { CopyIcon } from '@sanity/icons'
3
3
  import {defineField, defineType} from 'sanity'
4
4
 
5
- import ShopifyIcon from '../../components/icons/Shopify'
6
5
  import ProductVariantHiddenInput from '../../components/inputs/ProductVariantHidden'
7
6
  import ShopifyDocumentStatus from '../../components/media/ShopifyDocumentStatus'
7
+ import { GROUPS } from '../../constants'
8
8
 
9
- export default defineType({
9
+ export const productVariantType = defineType({
10
10
  name: 'productVariant',
11
11
  title: 'Product variant',
12
12
  type: 'document',
13
13
  icon: CopyIcon,
14
- groups: [
15
- {
16
- name: 'shopifySync',
17
- title: 'Shopify sync',
18
- icon: ShopifyIcon,
19
- },
20
- ],
14
+ groups: GROUPS,
21
15
  fields: [
22
- // Product variant hidden status
23
16
  defineField({
24
17
  name: 'hidden',
25
18
  type: 'string',
@@ -32,14 +25,12 @@ export default defineType({
32
25
  return !isDeleted
33
26
  },
34
27
  }),
35
- // Title (proxy)
36
28
  defineField({
37
29
  title: 'Title',
38
30
  name: 'titleProxy',
39
31
  type: 'proxyString',
40
32
  options: {field: 'store.title'},
41
33
  }),
42
- // Shopify product variant
43
34
  defineField({
44
35
  name: 'store',
45
36
  title: 'Shopify',
@@ -1,135 +1,106 @@
1
- // Rich text annotations used in the block content editor
2
- import annotationLinkEmail from './annotations/linkEmail'
3
- import annotationLinkExternal from './annotations/linkExternal'
4
- import annotationLinkInternal from './annotations/linkInternal'
5
- import annotationProduct from './annotations/product'
1
+ import {accordionGroupType} from './objects/module/accordionGroupType'
2
+ import {accordionType} from './objects/module/accordionType'
3
+ import {calloutType} from './objects/module/calloutType'
4
+ import {callToActionType} from './objects/module/callToActionType'
5
+ import {collectionGroupType} from './objects/collection/collectionGroupType'
6
+ import {collectionLinksType} from './objects/collection/collectionLinksType'
7
+ import {collectionReferenceType} from './objects/module/collectionReferenceType'
8
+ import {collectionRuleType} from './objects/shopify/collectionRuleType'
9
+ import {customProductOptionColorObjectType} from './objects/customProductOption/customProductOptionColorObjectType'
10
+ import {customProductOptionColorType} from './objects/customProductOption/customProductOptionColorType'
11
+ import {customProductOptionSizeObjectType} from './objects/customProductOption/customProductOptionSizeObjectType'
12
+ import {customProductOptionSizeType} from './objects/customProductOption/customProductOptionSizeType'
13
+ import {footerType} from './objects/global/footerType'
14
+ import {gridItemType} from './objects/module/gridItemType'
15
+ import {gridType} from './objects/module/gridType'
16
+ import {heroType} from './objects/module/heroType'
17
+ import {imageCallToActionType} from './objects/module/imageCallToActionType'
18
+ import {imageFeaturesType} from './objects/module/imageFeaturesType'
19
+ import {imageFeatureType} from './objects/module/imageFeatureType'
20
+ import {imageWithProductHotspotsType} from './objects/hotspot/imageWithProductHotspotsType'
21
+ import {instagramType} from './objects/module/instagramType'
22
+ import {inventoryType} from './objects/shopify/inventoryType'
23
+ import {linkEmailType} from './objects/link/linkEmailType'
24
+ import {linkExternalType} from './objects/link/linkExternalType'
25
+ import {linkInternalType} from './objects/link/linkInternalType'
26
+ import {linkProductType} from './objects/link/linkProductType'
27
+ import {menuLinksType} from './objects/global/menuLinksType'
28
+ import {menuType} from './objects/global/menuType'
29
+ import {notFoundPageType} from './objects/global/notFoundPageType'
30
+ import {optionType} from './objects/shopify/optionType'
31
+ import {placeholderStringType} from './objects/shopify/placeholderStringType'
32
+ import {priceRangeType} from './objects/shopify/priceRangeType'
33
+ import {productFeaturesType} from './objects/module/productFeaturesType'
34
+ import {productHotspotsType} from './objects/hotspot/productHotspotsType'
35
+ import {productReferenceType} from './objects/module/productReferenceType'
36
+ import {productWithVariantType} from './objects/shopify/productWithVariantType'
37
+ import {proxyStringType} from './objects/shopify/proxyStringType'
38
+ import {seoType} from './objects/seoType'
39
+ import {shopifyCollectionType} from './objects/shopify/shopifyCollectionType'
40
+ import {shopifyProductType} from './objects/shopify/shopifyProductType'
41
+ import {shopifyProductVariantType} from './objects/shopify/shopifyProductVariantType'
42
+ import {spotType} from './objects/hotspot/spotType'
6
43
 
7
- const annotations = [
8
- annotationLinkEmail,
9
- annotationLinkExternal,
10
- annotationLinkInternal,
11
- annotationProduct,
12
- ]
13
-
14
- // Document types
15
- import collection from './documents/collection'
16
- import colorTheme from './documents/colorTheme'
17
- import page from './documents/page'
18
- import product from './documents/product'
19
- import productVariant from './documents/productVariant'
44
+ // Objects used as annotations must be imported first
45
+ const annotations = [linkEmailType, linkExternalType, linkInternalType, linkProductType]
20
46
 
21
- const documents = [collection, colorTheme, page, product, productVariant]
22
-
23
- // Singleton document types
24
- import home from './singletons/home'
25
- import settings from './singletons/settings'
47
+ const objects = [
48
+ accordionGroupType,
49
+ accordionType,
50
+ calloutType,
51
+ callToActionType,
52
+ collectionGroupType,
53
+ collectionLinksType,
54
+ collectionReferenceType,
55
+ collectionRuleType,
56
+ customProductOptionColorObjectType,
57
+ customProductOptionColorType,
58
+ customProductOptionSizeObjectType,
59
+ customProductOptionSizeType,
60
+ footerType,
61
+ gridItemType,
62
+ gridType,
63
+ heroType,
64
+ imageCallToActionType,
65
+ imageFeaturesType,
66
+ imageFeatureType,
67
+ imageWithProductHotspotsType,
68
+ instagramType,
69
+ inventoryType,
70
+ menuLinksType,
71
+ menuType,
72
+ notFoundPageType,
73
+ optionType,
74
+ placeholderStringType,
75
+ priceRangeType,
76
+ productFeaturesType,
77
+ productHotspotsType,
78
+ productReferenceType,
79
+ productWithVariantType,
80
+ proxyStringType,
81
+ seoType,
82
+ shopifyCollectionType,
83
+ shopifyProductType,
84
+ shopifyProductVariantType,
85
+ spotType,
86
+ ]
26
87
 
27
- const singletons = [home, settings]
88
+ import {portableTextType} from './portableText/portableTextType'
89
+ import {portableTextSimpleType} from './portableText/portableTextSimpleType'
28
90
 
29
- // Block content
30
- import body from './blocks/body'
91
+ const blocks = [portableTextType, portableTextSimpleType]
31
92
 
32
- const blocks = [body]
93
+ import {collectionType} from './documents/collection'
94
+ import {colorThemeType} from './documents/colorTheme'
95
+ import {pageType} from './documents/page'
96
+ import {productType} from './documents/product'
97
+ import {productVariantType} from './documents/productVariant'
33
98
 
34
- // Object types
35
- import customProductOptionColor from './objects/customProductOption/color'
36
- import customProductOptionColorObject from './objects/customProductOption/colorObject'
37
- import customProductOptionSize from './objects/customProductOption/size'
38
- import customProductOptionSizeObject from './objects/customProductOption/sizeObject'
39
- import footer from './objects/global/footer'
40
- import imageWithProductHotspots from './objects/hotspot/imageWithProductHotspots'
41
- import inventory from './objects/shopify/inventory'
42
- import linkExternal from './objects/global/linkExternal'
43
- import linkInternal from './objects/global/linkInternal'
44
- import links from './objects/global/links'
45
- import notFoundPage from './objects/global/notFoundPage'
46
- import heroCollection from './objects/hero/collection'
47
- import heroHome from './objects/hero/home'
48
- import heroPage from './objects/hero/page'
49
- import moduleAccordion from './objects/module/accordion'
50
- import accordionBody from './objects/module/accordionBody'
51
- import accordionGroup from './objects/module/accordionGroup'
52
- import moduleCallout from './objects/module/callout'
53
- import moduleCallToAction from './objects/module/callToAction'
54
- import moduleCollection from './objects/module/collection'
55
- import moduleGrid from './objects/module/grid'
56
- import gridItems from './objects/module/gridItem'
57
- import menu from './objects/global/menu'
58
- import moduleImage from './objects/module/image'
59
- import moduleImageAction from './objects/module/imageCallToAction'
60
- import moduleImages from './objects/module/images'
61
- import moduleInstagram from './objects/module/instagram'
62
- import moduleProduct from './objects/module/product'
63
- import moduleProducts from './objects/module/products'
64
- import placeholderString from './objects/shopify/placeholderString'
65
- import priceRange from './objects/shopify/priceRange'
66
- import spot from './objects/hotspot/spot'
67
- import productHotspots from './objects/hotspot/productHotspots'
68
- import option from './objects/shopify/option'
69
- import productWithVariant from './objects/shopify/productWithVariant'
70
- import proxyString from './objects/shopify/proxyString'
71
- import seo from './objects/seo/seo'
72
- import seoHome from './objects/seo/home'
73
- import seoPage from './objects/seo/page'
74
- import seoDescription from './objects/seo/description'
75
- import seoShopify from './objects/seo/shopify'
76
- import shopifyCollection from './objects/shopify/shopifyCollection'
77
- import shopifyCollectionRule from './objects/shopify/shopifyCollectionRule'
78
- import shopifyProduct from './objects/shopify/shopifyProduct'
79
- import shopifyProductVariant from './objects/shopify/shopifyProductVariant'
99
+ const documents = [collectionType, colorThemeType, pageType, productType, productVariantType]
80
100
 
81
- // Collections
82
- import collectionGroup from './objects/collection/group'
83
- import collectionLinks from './objects/collection/links'
101
+ import {homeType} from './singletons/homeType'
102
+ import {settingsType} from './singletons/settingsType'
84
103
 
85
- const objects = [
86
- customProductOptionColor,
87
- customProductOptionColorObject,
88
- customProductOptionSize,
89
- customProductOptionSizeObject,
90
- footer,
91
- imageWithProductHotspots,
92
- inventory,
93
- links,
94
- linkExternal,
95
- linkInternal,
96
- notFoundPage,
97
- heroCollection,
98
- heroHome,
99
- heroPage,
100
- moduleAccordion,
101
- accordionBody,
102
- accordionGroup,
103
- menu,
104
- moduleCallout,
105
- moduleCallToAction,
106
- moduleCollection,
107
- moduleGrid,
108
- gridItems,
109
- moduleImage,
110
- moduleImageAction,
111
- moduleImages,
112
- moduleInstagram,
113
- moduleProduct,
114
- moduleProducts,
115
- placeholderString,
116
- priceRange,
117
- spot,
118
- productHotspots,
119
- option,
120
- productWithVariant,
121
- proxyString,
122
- seo,
123
- seoHome,
124
- seoPage,
125
- seoDescription,
126
- seoShopify,
127
- shopifyCollection,
128
- shopifyCollectionRule,
129
- shopifyProduct,
130
- shopifyProductVariant,
131
- collectionGroup,
132
- collectionLinks,
133
- ]
104
+ const singletons = [homeType, settingsType]
134
105
 
135
- export const schemaTypes = [...annotations, ...singletons, ...objects, ...blocks, ...documents]
106
+ export const schemaTypes = [...annotations, ...objects, ...singletons, ...blocks, ...documents]
@@ -1,30 +1,27 @@
1
1
  import {PackageIcon} from '@sanity/icons'
2
2
  import {defineField} from 'sanity'
3
3
 
4
- export default defineField({
4
+ export const collectionGroupType = defineField({
5
5
  name: 'collectionGroup',
6
6
  title: 'Collection group',
7
7
  type: 'object',
8
8
  icon: PackageIcon,
9
9
  fields: [
10
- {
10
+ defineField({
11
11
  name: 'title',
12
- title: 'Title',
13
12
  type: 'string',
14
13
  validation: (Rule) => Rule.required(),
15
- },
16
- {
14
+ }),
15
+ defineField({
17
16
  name: 'collectionLinks',
18
- title: 'Collection links',
19
17
  type: 'collectionLinks',
20
- },
21
- {
18
+ }),
19
+ defineField({
22
20
  name: 'collectionProducts',
23
- title: 'Collection products',
24
21
  type: 'reference',
25
22
  description: 'Products from this collection will be listed',
26
23
  weak: true,
27
24
  to: [{type: 'collection'}],
28
- },
25
+ }),
29
26
  ],
30
27
  })
@@ -1,16 +1,16 @@
1
- import {defineField} from 'sanity'
1
+ import {defineArrayMember, defineField} from 'sanity'
2
2
 
3
- export default defineField({
3
+ export const collectionLinksType = defineField({
4
4
  name: 'collectionLinks',
5
5
  title: 'Collection links',
6
6
  type: 'array',
7
7
  validation: (Rule) => Rule.unique().max(4),
8
8
  of: [
9
- {
9
+ defineArrayMember({
10
10
  name: 'collection',
11
11
  type: 'reference',
12
12
  weak: true,
13
13
  to: [{type: 'collection'}],
14
- },
14
+ }),
15
15
  ],
16
16
  })
@@ -1,4 +1,4 @@
1
- import React from 'react'
1
+
2
2
  import {defineField} from 'sanity'
3
3
 
4
4
  const ColorPreview = ({color}: {color: string}) => {
@@ -15,21 +15,19 @@ const ColorPreview = ({color}: {color: string}) => {
15
15
  )
16
16
  }
17
17
 
18
- export default defineField({
18
+ export const customProductOptionColorObjectType = defineField({
19
19
  name: 'customProductOption.colorObject',
20
20
  title: 'Color',
21
21
  type: 'object',
22
22
  fields: [
23
23
  defineField({
24
24
  name: 'title',
25
- title: 'Title',
26
25
  type: 'string',
27
26
  description: 'Shopify product option value (case sensitive)',
28
27
  validation: (Rule) => Rule.required(),
29
28
  }),
30
29
  defineField({
31
30
  name: 'color',
32
- title: 'Color',
33
31
  type: 'color',
34
32
  options: {disableAlpha: true},
35
33
  validation: (Rule) => Rule.required(),
@@ -40,8 +38,7 @@ export default defineField({
40
38
  color: 'color.hex',
41
39
  title: 'title',
42
40
  },
43
- prepare(selection) {
44
- const {color, title} = selection
41
+ prepare({color, title}) {
45
42
  return {
46
43
  media: <ColorPreview color={color} />,
47
44
  subtitle: color,
@@ -5,30 +5,22 @@ interface ColorOption {
5
5
  title: string
6
6
  }
7
7
 
8
- export default defineField({
8
+ export const customProductOptionColorType = defineField({
9
9
  name: 'customProductOption.color',
10
10
  title: 'Color',
11
11
  type: 'object',
12
12
  icon: false,
13
13
  fields: [
14
- // Title
15
14
  defineField({
16
15
  name: 'title',
17
- title: 'Title',
18
16
  type: 'string',
19
17
  description: 'Shopify product option name (case sensitive)',
20
18
  validation: (Rule) => Rule.required(),
21
19
  }),
22
- // Colors
23
20
  defineField({
24
21
  name: 'colors',
25
- title: 'Colors',
26
22
  type: 'array',
27
- of: [
28
- {
29
- type: 'customProductOption.colorObject',
30
- },
31
- ],
23
+ of: [{type: 'customProductOption.colorObject'}],
32
24
  validation: (Rule) =>
33
25
  Rule.custom((options: ColorOption[] | undefined) => {
34
26
  // Each size must have a unique title
@@ -1,27 +1,24 @@
1
1
  import {defineField} from 'sanity'
2
2
 
3
- export default defineField({
3
+ export const customProductOptionSizeObjectType = defineField({
4
4
  name: 'customProductOption.sizeObject',
5
5
  title: 'Size',
6
6
  type: 'object',
7
7
  fields: [
8
8
  defineField({
9
9
  name: 'title',
10
- title: 'Title',
11
10
  type: 'string',
12
11
  description: 'Shopify product option value (case sensitive)',
13
12
  validation: (Rule) => Rule.required(),
14
13
  }),
15
14
  defineField({
16
15
  name: 'width',
17
- title: 'Width',
18
16
  type: 'number',
19
17
  description: 'In mm',
20
18
  validation: (Rule) => Rule.required().precision(2),
21
19
  }),
22
20
  defineField({
23
21
  name: 'height',
24
- title: 'Height',
25
22
  type: 'number',
26
23
  description: 'In mm',
27
24
  validation: (Rule) => Rule.required().precision(2),
@@ -33,10 +30,9 @@ export default defineField({
33
30
  title: 'title',
34
31
  width: 'width',
35
32
  },
36
- prepare(selection) {
37
- const {height, title, width} = selection
33
+ prepare({height, title, width}) {
38
34
  return {
39
- subtitle: `${width || '??'}cm x ${height || '??'}cm`,
35
+ subtitle: `${width || '??'}mm x ${height || '??'}mm`,
40
36
  title,
41
37
  }
42
38
  },
@@ -5,30 +5,22 @@ interface SizeOption {
5
5
  title: string
6
6
  }
7
7
 
8
- export default defineField({
8
+ export const customProductOptionSizeType = defineField({
9
9
  name: 'customProductOption.size',
10
10
  title: 'Size',
11
11
  type: 'object',
12
12
  icon: false,
13
13
  fields: [
14
- // Title
15
14
  defineField({
16
15
  name: 'title',
17
- title: 'Title',
18
16
  type: 'string',
19
17
  description: 'Shopify product option name (case sensitive)',
20
18
  validation: (Rule) => Rule.required(),
21
19
  }),
22
- // Sizes
23
20
  defineField({
24
21
  name: 'sizes',
25
- title: 'Sizes',
26
22
  type: 'array',
27
- of: [
28
- {
29
- type: 'customProductOption.sizeObject',
30
- },
31
- ],
23
+ of: [{type: 'customProductOption.sizeObject'}],
32
24
  validation: (Rule) =>
33
25
  Rule.custom((options: SizeOption[] | undefined) => {
34
26
  // Each size must have a unique title
@@ -47,8 +39,7 @@ export default defineField({
47
39
  sizes: 'sizes',
48
40
  title: 'title',
49
41
  },
50
- prepare(selection) {
51
- const {sizes, title} = selection
42
+ prepare({sizes, title}) {
52
43
  return {
53
44
  subtitle: sizes.length > 0 ? pluralize('size', sizes.length, true) : 'No sizes',
54
45
  title,
@@ -0,0 +1,22 @@
1
+ import {defineField} from 'sanity'
2
+
3
+ export const footerType = defineField({
4
+ name: 'footerSettings',
5
+ title: 'Footer',
6
+ type: 'object',
7
+ options: {
8
+ collapsed: false,
9
+ collapsible: true,
10
+ },
11
+ fields: [
12
+ defineField({
13
+ name: 'links',
14
+ type: 'array',
15
+ of: [{type: 'linkInternal'}, {type: 'linkExternal'}],
16
+ }),
17
+ defineField({
18
+ name: 'text',
19
+ type: 'portableTextSimple',
20
+ }),
21
+ ],
22
+ })
@@ -0,0 +1,21 @@
1
+ import {defineField} from 'sanity'
2
+
3
+ export const menuLinksType = defineField({
4
+ name: 'menuLinks',
5
+ title: 'Menu Links',
6
+ type: 'array',
7
+ of: [
8
+ defineField({
9
+ name: 'collectionGroup',
10
+ type: 'collectionGroup',
11
+ }),
12
+ defineField({
13
+ name: 'linkInternal',
14
+ type: 'linkInternal',
15
+ }),
16
+ defineField({
17
+ name: 'linkExternal',
18
+ type: 'linkExternal',
19
+ }),
20
+ ],
21
+ })
@@ -1,7 +1,7 @@
1
1
  import {defineField} from 'sanity'
2
2
 
3
- export default defineField({
4
- name: 'menuSettings',
3
+ export const menuType = defineField({
4
+ name: 'menu',
5
5
  title: 'Menu',
6
6
  type: 'object',
7
7
  options: {
@@ -9,10 +9,8 @@ export default defineField({
9
9
  collapsible: true,
10
10
  },
11
11
  fields: [
12
- // Links
13
12
  defineField({
14
13
  name: 'links',
15
- title: 'Links',
16
14
  type: 'menuLinks',
17
15
  }),
18
16
  ],