shopify-accelerate-app 1.0.0

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 (47) hide show
  1. package/@types/metafields.ts +9 -0
  2. package/@types/sections.ts +1769 -0
  3. package/@types/settings.ts +3 -0
  4. package/@types/shopify.ts +1871 -0
  5. package/@types/types.d.ts +17 -0
  6. package/README.md +2 -0
  7. package/package.json +111 -0
  8. package/shopify-accelerate-app.ts +394 -0
  9. package/shopify.graphql +48866 -0
  10. package/src/esbuild/esbuild.ts +246 -0
  11. package/src/scaffold-theme/build-theme.ts +24 -0
  12. package/src/scaffold-theme/generate-asset-files.ts +48 -0
  13. package/src/scaffold-theme/generate-base-types.ts +23 -0
  14. package/src/scaffold-theme/generate-block-files.ts +194 -0
  15. package/src/scaffold-theme/generate-blocks-types.ts +242 -0
  16. package/src/scaffold-theme/generate-config-files.ts +34 -0
  17. package/src/scaffold-theme/generate-liquid-files.ts +995 -0
  18. package/src/scaffold-theme/generate-schema-locales.ts +195 -0
  19. package/src/scaffold-theme/generate-schema-variables.ts +380 -0
  20. package/src/scaffold-theme/generate-section-files.ts +303 -0
  21. package/src/scaffold-theme/generate-section-preset-files.ts +296 -0
  22. package/src/scaffold-theme/generate-section-types.ts +339 -0
  23. package/src/scaffold-theme/generate-setting-types.ts +123 -0
  24. package/src/scaffold-theme/generate-settings-file.ts +103 -0
  25. package/src/scaffold-theme/parse-files.ts +466 -0
  26. package/src/scaffold-theme/parse-locales.ts +98 -0
  27. package/src/shopify-cli/pull.ts +103 -0
  28. package/src/tailwind/postcss.config.js +8 -0
  29. package/src/tailwind/tailwind-watch.ts +133 -0
  30. package/src/tailwind/tailwind.config.js +261 -0
  31. package/src/telemetry/telemetry.ts +84 -0
  32. package/src/templates/.env.template +12 -0
  33. package/src/templates/shopify.theme.toml +9 -0
  34. package/src/utils/capitalize.ts +3 -0
  35. package/src/utils/delay.ts +3 -0
  36. package/src/utils/fs.ts +87 -0
  37. package/src/utils/is-object.ts +3 -0
  38. package/src/utils/json.ts +8 -0
  39. package/src/utils/to-camel-case.ts +6 -0
  40. package/src/utils/to-kebab-case.ts +6 -0
  41. package/src/utils/to-pascal-case.ts +12 -0
  42. package/src/utils/to-snake-case.ts +45 -0
  43. package/src/validate-cli-options.ts +281 -0
  44. package/src/watch-headless/watch-headless.ts +81 -0
  45. package/src/watch-theme/watch-theme.ts +84 -0
  46. package/tsconfig.json +82 -0
  47. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,1871 @@
1
+ import { _Article_metafields, _Blog_metafields, _Collection_metafields, _Page_metafields, _Product_metafields, _Shop_metafields, _Variant_metafields } from "./metafields";
2
+ import { Sections } from "./sections";
3
+ import { SettingsSchema } from "./settings";
4
+
5
+ export type ShopifyHeader = {
6
+ content: string;
7
+ type: "header";
8
+ info?: string;
9
+ };
10
+ export type ShopifyParagraph = {
11
+ content: string;
12
+ type: "paragraph";
13
+ info?: string;
14
+ };
15
+
16
+ export type ShopifyColorThemeGroupDefinition =
17
+ | ShopifyColor
18
+ | ShopifyColor_background
19
+ | ShopifyHeader
20
+ | ShopifyParagraph;
21
+
22
+ export type ShopifyColorThemeGroupRoles =
23
+ | "background"
24
+ | "text"
25
+ | "primary_button"
26
+ | "secondary_button"
27
+ | "primary_button_border"
28
+ | "secondary_button_border"
29
+ | "on_primary_button"
30
+ | "on_secondary_button"
31
+ | "links"
32
+ | "icons";
33
+
34
+ export type ShopifyColorThemeRole = Extract<
35
+ ShopifyColorThemeGroup["definition"][number],
36
+ { id: string }
37
+ >["id"];
38
+
39
+ export type ShopifyColorThemeOptionalGradientRole<T extends string> = T extends ReservedNames
40
+ ? {
41
+ solid: Extract<
42
+ ShopifyColorThemeGroup["definition"][number],
43
+ {
44
+ id: string;
45
+ }
46
+ >["id"];
47
+ gradient?: Extract<
48
+ ShopifyColorThemeGroup["definition"][number],
49
+ {
50
+ id: string;
51
+ }
52
+ >["id"];
53
+ }
54
+ : ShopifyColorThemeRole;
55
+
56
+ type ReservedNames = "background" | "primary_button" | "secondary_button";
57
+
58
+ export type ShopifyColorThemeGroup = {
59
+ definition: ShopifyColorThemeGroupDefinition[];
60
+ id: string;
61
+ role: {
62
+ background: {
63
+ solid: Extract<ShopifyColorThemeGroup["definition"][number], { id: string }>["id"];
64
+ gradient?: Extract<ShopifyColorThemeGroup["definition"][number], { id: string }>["id"];
65
+ };
66
+ icons: ShopifyColorThemeRole;
67
+ links: ShopifyColorThemeRole;
68
+ on_primary_button: ShopifyColorThemeRole;
69
+ on_secondary_button: ShopifyColorThemeRole;
70
+ primary_button: {
71
+ solid: Extract<ShopifyColorThemeGroup["definition"][number], { id: string }>["id"];
72
+ gradient?: Extract<ShopifyColorThemeGroup["definition"][number], { id: string }>["id"];
73
+ };
74
+ primary_button_border: ShopifyColorThemeRole;
75
+ secondary_button: {
76
+ solid: Extract<ShopifyColorThemeGroup["definition"][number], { id: string }>["id"];
77
+ gradient?: Extract<ShopifyColorThemeGroup["definition"][number], { id: string }>["id"];
78
+ };
79
+ secondary_button_border: ShopifyColorThemeRole;
80
+ text: ShopifyColorThemeRole;
81
+ };
82
+ type: "color_scheme_group";
83
+ };
84
+
85
+ export type ShopifyColorTheme = {
86
+ id: string;
87
+ label: string;
88
+ type: "color_scheme";
89
+ default?: string;
90
+ info?: string;
91
+ };
92
+
93
+ export type ShopifyCheckbox = {
94
+ id: string;
95
+ label: string;
96
+ type: "checkbox";
97
+ default?: boolean;
98
+ info?: string;
99
+ };
100
+ export type ShopifyNumber = {
101
+ id: string;
102
+ label: string;
103
+ type: "number";
104
+ default?: number;
105
+ info?: string;
106
+ placeholder?: string;
107
+ };
108
+ export type ShopifyRadio = {
109
+ id: string;
110
+ label: string;
111
+ options: { label: string; value: string }[];
112
+ type: "radio";
113
+ default?: string;
114
+ info?: string;
115
+ };
116
+ export type ShopifyRange = {
117
+ default: number;
118
+ id: string;
119
+ label: string;
120
+ max: number;
121
+ min: number;
122
+ step: number;
123
+ type: "range";
124
+ info?: string;
125
+ unit?: string;
126
+ };
127
+ export type ShopifySelect = {
128
+ id: string;
129
+ label: string;
130
+ options: { label: string; value: string; group?: string }[];
131
+ type: "select";
132
+ default?: string;
133
+ info?: string;
134
+ };
135
+ export type ShopifyText = {
136
+ id: string;
137
+ label: string;
138
+ type: "text";
139
+ default?: string;
140
+ info?: string;
141
+ placeholder?: string;
142
+ };
143
+ export type ShopifyTextarea = {
144
+ id: string;
145
+ label: string;
146
+ type: "textarea";
147
+ default?: string;
148
+ info?: string;
149
+ placeholder?: string;
150
+ };
151
+ export type ShopifyArticle = {
152
+ id: string;
153
+ label: string;
154
+ type: "article";
155
+ info?: string;
156
+ };
157
+ export type ShopifyBlog = {
158
+ id: string;
159
+ label: string;
160
+ type: "blog";
161
+ info?: string;
162
+ };
163
+ export type ShopifyCollection = {
164
+ id: string;
165
+ label: string;
166
+ type: "collection";
167
+ info?: string;
168
+ };
169
+ export type ShopifyCollection_list = {
170
+ id: string;
171
+ label: string;
172
+ type: "collection_list";
173
+ info?: string;
174
+ limit?: number;
175
+ };
176
+ export type ShopifyColor = {
177
+ id: string;
178
+ label: string;
179
+ type: "color";
180
+ default?: string;
181
+ info?: string;
182
+ };
183
+ export type ShopifyColor_background = {
184
+ id: string;
185
+ label: string;
186
+ type: "color_background";
187
+ default?: string;
188
+ info?: string;
189
+ };
190
+ export type ShopifyFont_picker = {
191
+ default: string;
192
+ id: string;
193
+ label: string;
194
+ type: "font_picker";
195
+ info?: string;
196
+ };
197
+ export type ShopifyFont = {
198
+ id: string;
199
+ label: string;
200
+ type: "font";
201
+ default?: string;
202
+ info?: string;
203
+ };
204
+ export type ShopifyHtml = {
205
+ id: string;
206
+ label: string;
207
+ type: "html";
208
+ default?: string;
209
+ info?: string;
210
+ placeholder?: string;
211
+ };
212
+ export type ShopifyImage_picker = {
213
+ id: string;
214
+ label: string;
215
+ type: "image_picker";
216
+ info?: string;
217
+ };
218
+ export type ShopifyLink_list = {
219
+ id: string;
220
+ label: string;
221
+ type: "link_list";
222
+ default?: "main-menu" | "footer" | string;
223
+ info?: string;
224
+ };
225
+ export type ShopifyLiquid = {
226
+ id: string;
227
+ label: string;
228
+ type: "liquid";
229
+ info?: string;
230
+ };
231
+ export type ShopifyPage = {
232
+ id: string;
233
+ label: string;
234
+ type: "page";
235
+ info?: string;
236
+ };
237
+ export type ShopifyProduct = {
238
+ id: string;
239
+ label: string;
240
+ type: "product";
241
+ info?: string;
242
+ };
243
+ export type ShopifyProduct_list = {
244
+ id: string;
245
+ label: string;
246
+ type: "product_list";
247
+ info?: string;
248
+ limit?: number;
249
+ };
250
+ export type ShopifyRichtext = {
251
+ id: string;
252
+ label: string;
253
+ type: "richtext";
254
+ default?: `<${_BlockTag}${string}</${_BlockTag}>`;
255
+ info?: string;
256
+ };
257
+ export type ShopifyInlineRichtext = {
258
+ id: string;
259
+ label: string;
260
+ type: "inline_richtext";
261
+ default?: string;
262
+ info?: string;
263
+ placeholder?: string;
264
+ };
265
+ export type ShopifyUrl = {
266
+ id: string;
267
+ label: string;
268
+ type: "url";
269
+ default?: string;
270
+ info?: string;
271
+ };
272
+ export type ShopifyVideo_url = {
273
+ accept: ("youtube" | "vimeo")[];
274
+ id: string;
275
+ label: string;
276
+ type: "video_url";
277
+ default?: string;
278
+ info?: string;
279
+ placeholder?: string;
280
+ };
281
+ export type ShopifyTextAlignment = {
282
+ id: string;
283
+ label: string;
284
+ type: "text_alignment";
285
+ default?: "left" | "center" | "right";
286
+ info?: string;
287
+ };
288
+
289
+ export type ShopifyVideo = {
290
+ id: string;
291
+ label: string;
292
+ type: "video";
293
+ default?: string;
294
+ info?: string;
295
+ placeholder?: string;
296
+ };
297
+
298
+ export type ShopifySettingsInput =
299
+ | ShopifyCheckbox
300
+ | ShopifyNumber
301
+ | ShopifyRadio
302
+ | ShopifyRange
303
+ | ShopifySelect
304
+ | ShopifyText
305
+ | ShopifyTextarea
306
+ | ShopifyArticle
307
+ | ShopifyBlog
308
+ | ShopifyCollection
309
+ | ShopifyCollection_list
310
+ | ShopifyColor
311
+ | ShopifyColor_background
312
+ | ShopifyFont_picker
313
+ | ShopifyFont
314
+ | ShopifyHtml
315
+ | ShopifyImage_picker
316
+ | ShopifyLink_list
317
+ | ShopifyLiquid
318
+ | ShopifyPage
319
+ | ShopifyProduct
320
+ | ShopifyProduct_list
321
+ | ShopifyRichtext
322
+ | ShopifyInlineRichtext
323
+ | ShopifyUrl
324
+ | ShopifyVideo
325
+ | ShopifyVideo_url
326
+ | ShopifyColorTheme
327
+ | ShopifyColorThemeGroup
328
+ | ShopifyTextAlignment;
329
+
330
+ export type HeadlessSettingsInput =
331
+ | ShopifyCheckbox
332
+ | ShopifyNumber
333
+ | ShopifyRadio
334
+ | ShopifyRange
335
+ | ShopifySelect
336
+ | ShopifyText
337
+ | ShopifyTextarea
338
+ | ShopifyColor
339
+ | ShopifyColor_background
340
+ | ShopifyFont_picker
341
+ | ShopifyFont
342
+ | ShopifyHtml
343
+ | ShopifyImage_picker
344
+ | ShopifyProduct
345
+ | ShopifyProduct_list
346
+ | ShopifyRichtext
347
+ | ShopifyInlineRichtext
348
+ | ShopifyUrl
349
+ | ShopifyVideo
350
+ | ShopifyVideo_url
351
+ | ShopifyTextAlignment;
352
+
353
+ type ExtractSettings<T extends ShopifySection | ShopifySectionBlock> = Extract<
354
+ /* @ts-ignore*/
355
+ T["settings"][number],
356
+ { id: string; type: string }
357
+ >;
358
+
359
+ type ExtractSetting<T extends ShopifySection | ShopifySectionBlock, ID extends string> = Extract<
360
+ ExtractSettings<T>,
361
+ { id: ID }
362
+ >;
363
+
364
+ type MapSettings<Section extends ShopifySection | ShopifySectionBlock> = {
365
+ [ID in ExtractSettings<Section>["id"]]: ExtractSetting<Section, ID>["type"] extends "article"
366
+ ? _Article_liquid
367
+ : ExtractSetting<Section, ID>["type"] extends "checkbox"
368
+ ? boolean
369
+ : ExtractSetting<Section, ID>["type"] extends "number" | "range"
370
+ ? number
371
+ : ExtractSetting<Section, ID>["type"] extends "radio" | "select"
372
+ ? // @ts-ignore
373
+ ExtractSetting<Section, ID>["options"][number]["value"]
374
+ : ExtractSetting<Section, ID>["type"] extends
375
+ | "text"
376
+ | "textarea"
377
+ | "inline_richtext"
378
+ | "color_background"
379
+ | "html"
380
+ | "liquid"
381
+ | "url"
382
+ | "font"
383
+ ? string
384
+ : ExtractSetting<Section, ID>["type"] extends "text_alignment"
385
+ ? "left" | "center" | "right"
386
+ : ExtractSetting<Section, ID>["type"] extends "blog"
387
+ ? _Blog_liquid
388
+ : ExtractSetting<Section, ID>["type"] extends "collection"
389
+ ? _Collection_liquid
390
+ : ExtractSetting<Section, ID>["type"] extends "collection_list"
391
+ ? _Collection_liquid[]
392
+ : ExtractSetting<Section, ID>["type"] extends "color"
393
+ ? _Color_liquid
394
+ : ExtractSetting<Section, ID>["type"] extends "font_picker"
395
+ ? _Font_liquid
396
+ : ExtractSetting<Section, ID>["type"] extends "image_picker"
397
+ ? _Image_liquid
398
+ : ExtractSetting<Section, ID>["type"] extends "link_list"
399
+ ? _Linklist_liquid
400
+ : ExtractSetting<Section, ID>["type"] extends "page"
401
+ ? _Page_liquid
402
+ : ExtractSetting<Section, ID>["type"] extends "product"
403
+ ? _Product_liquid
404
+ : ExtractSetting<Section, ID>["type"] extends "product_list"
405
+ ? _Product_liquid[]
406
+ : ExtractSetting<Section, ID>["type"] extends "richtext"
407
+ ? `<${_BlockTag}${string}</${_BlockTag}>`
408
+ : ExtractSetting<Section, ID>["type"] extends "video_url"
409
+ ? `${string}youtube${string}` | `${string}vimeo${string}`
410
+ : ExtractSetting<Section, ID>["type"] extends "video"
411
+ ? _Video_liquid
412
+ : never;
413
+ };
414
+
415
+ export type _BlockTag = "p" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "ol" | "ul";
416
+
417
+ type MapSection<T> = {
418
+ // @ts-ignore
419
+ blocks: MapBlocks<T>[keyof MapBlocks<T>][];
420
+ id: string;
421
+ // @ts-ignore
422
+ settings: MapSettings<T>;
423
+ // @ts-ignore
424
+ type: Lowercase<T["name"]>;
425
+ };
426
+
427
+ type MapBlocks<T extends { blocks: ShopifySectionBlock[] }> = {
428
+ [B in Extract<T["blocks"][number], { type: string }>["type"]]: {
429
+ id: string;
430
+ settings: MapSettings<Extract<T["blocks"][number], { type: B }>>;
431
+ type: B;
432
+ };
433
+ };
434
+
435
+ type MapBlocksPreset<T extends { blocks: ShopifySectionBlock[] }> = {
436
+ [B in Extract<T["blocks"][number], { type: string }>["type"]]: {
437
+ type: B;
438
+ settings?: Partial<MapSettings<Extract<T["blocks"][number], { type: B }>>>;
439
+ };
440
+ };
441
+
442
+ export type ShopifySectionDefault<T = never> = {
443
+ blocks?: T extends { blocks: Array<any> }
444
+ ? MapBlocksPreset<T>[keyof MapBlocksPreset<T>][] | undefined
445
+ : never;
446
+ settings?: T extends never
447
+ ? { [T: string]: string | number | boolean } | undefined
448
+ : T extends { settings: any }
449
+ ? Partial<T["settings"]> | undefined
450
+ : { [T: string]: string | number | boolean } | undefined;
451
+ };
452
+
453
+ type MapBlockContent<T extends { blocks: ShopifySectionBlock[] }> = {
454
+ [B in Extract<T["blocks"][number], { type: string }>["type"]]: {
455
+ id: string;
456
+ settings: Partial<MapSettings<Extract<T["blocks"][number], { type: B }>>>;
457
+ type: B;
458
+ };
459
+ };
460
+
461
+ export type ShopifySectionDefaultGuaranteed<T = never> = {
462
+ blocks: T extends { blocks: Array<any> } ? MapBlockContent<T>[keyof MapBlockContent<T>][] : [];
463
+ errors: { [T: string]: string | null };
464
+ settings: T extends never
465
+ ? { [T: string]: string | number | boolean }
466
+ : T extends { settings: any }
467
+ ? Partial<T["settings"]>
468
+ : { [T: string]: string | number | boolean };
469
+ };
470
+
471
+ export type ShopifySectionPreset<T = unknown> = {
472
+ name: string;
473
+ category?: string;
474
+ blocks?: T extends { blocks: Array<any> }
475
+ ? MapBlocksPreset<T>[keyof MapBlocksPreset<T>][]
476
+ : never;
477
+ settings?: T extends never
478
+ ? { [T: string]: string | number | boolean } | undefined
479
+ : T extends { settings: any }
480
+ ? Partial<T["settings"]> | undefined
481
+ : { [T: string]: string | number | boolean } | undefined;
482
+ };
483
+
484
+ export type PresetSchema<T = never> = {
485
+ type: T extends { type: string } ? T["type"] : Sections["type"];
486
+ name: string;
487
+ presets: {
488
+ enabled_on?: string[];
489
+ settings?: ShopifySectionPreset<T>["settings"];
490
+ blocks?: /* @ts-ignore */
491
+ Record<string, ShopifySectionPreset<T>["blocks"][number]> | ShopifySectionPreset<T>["blocks"];
492
+ block_order?: string[];
493
+ custom_css?: string[];
494
+ }[];
495
+ };
496
+
497
+ export type ShopifySectionBlock =
498
+ | {
499
+ name: string;
500
+ disabled?: boolean;
501
+ type: string;
502
+ limit?: number;
503
+ settings?: (ShopifySettingsInput | ShopifyHeader | ShopifyParagraph)[];
504
+ }
505
+ | { type: "@app"; disabled?: boolean; limit?: never; name?: never; settings?: never }
506
+ | { type: "@theme"; disabled?: boolean; limit?: never; name?: never; settings?: never };
507
+
508
+ export type HeadlessSectionBlock =
509
+ | {
510
+ name: string;
511
+ disabled?: boolean;
512
+ type: string;
513
+ limit?: number;
514
+ settings?: (HeadlessSettingsInput | ShopifyHeader | ShopifyParagraph)[];
515
+ }
516
+ | { type: "@theme"; disabled?: boolean; limit?: never; name?: never; settings?: never };
517
+
518
+ export type ShopifyTemplateTypes =
519
+ | "404"
520
+ | "article"
521
+ | "blog"
522
+ | "cart"
523
+ | "collection"
524
+ | "list-collections"
525
+ | "customers/account"
526
+ | "customers/activate_account"
527
+ | "customers/addresses"
528
+ | "customers/login"
529
+ | "customers/order"
530
+ | "customers/register"
531
+ | "customers/reset_password"
532
+ | "gift_card"
533
+ | "index"
534
+ | "page"
535
+ | "password"
536
+ | "product"
537
+ | "search";
538
+
539
+ export type ShopifySection<T = never> = {
540
+ name: string;
541
+ blocks?: ShopifySectionBlock[];
542
+ class?: string;
543
+ default?: ShopifySectionDefault<T>;
544
+ disabled?: boolean;
545
+ generate_block_files?: T extends { blocks: any } ? T["blocks"][number]["type"][] : string[];
546
+ limit?: number;
547
+ locales?: {
548
+ [T: string]: {
549
+ [V: string]: string;
550
+ };
551
+ };
552
+ max_blocks?: number;
553
+ presets?: ShopifySectionPreset<T>[];
554
+ settings?: (ShopifySettingsInput | ShopifyHeader | ShopifyParagraph)[];
555
+ tag?: "article" | "aside" | "div" | "footer" | "header" | "section";
556
+ } & (
557
+ | {
558
+ enabled_on?: {
559
+ groups?: string[];
560
+ templates?: ShopifyTemplateTypes[];
561
+ };
562
+ }
563
+ | {
564
+ disabled_on?: {
565
+ groups?: string[];
566
+ templates?: ShopifyTemplateTypes[];
567
+ };
568
+ }
569
+ );
570
+
571
+ export type HeadlessSection<T = never> = {
572
+ name: string;
573
+ blocks?: HeadlessSectionBlock[];
574
+ default?: ShopifySectionDefault<T>;
575
+ disabled?: boolean;
576
+ limit?: number;
577
+ max_blocks?: number;
578
+ presets?: ShopifySectionPreset<T>[];
579
+ settings?: (HeadlessSettingsInput | ShopifyHeader | ShopifyParagraph)[];
580
+ };
581
+
582
+ export type ShopifyBlock<T = never> = {
583
+ name: string;
584
+ blocks?: ShopifySectionBlock[];
585
+ class?: string;
586
+ disabled?: boolean;
587
+ presets?: ShopifySectionPreset<T>[];
588
+ settings?: (ShopifySettingsInput | ShopifyHeader | ShopifyParagraph)[];
589
+ tag?: "article" | "aside" | "div" | "footer" | "header" | "section" | null;
590
+ };
591
+
592
+ export type HeadlessBlock<T = never> = {
593
+ name: string;
594
+ blocks?: HeadlessSectionBlock[];
595
+ class?: string;
596
+ disabled?: boolean;
597
+ presets?: ShopifySectionPreset<T>[];
598
+ settings?: (HeadlessSettingsInput | ShopifyHeader | ShopifyParagraph)[];
599
+ tag?: "article" | "aside" | "div" | "footer" | "header" | "section" | null;
600
+ };
601
+
602
+ type ShopifyAppBlockDefault<T = never> = {
603
+ settings?: T extends never
604
+ ? { [T: string]: string | number | boolean } | undefined
605
+ : T extends { settings: any }
606
+ ? Partial<T["settings"]> | undefined
607
+ : { [T: string]: string | number | boolean } | undefined;
608
+ };
609
+
610
+ export type ShopifyAppBlock<T = never> = {
611
+ name: string;
612
+ target: "section" | "head" | "body";
613
+ available_if?: `{{ app.metafields.${string}.${string} }}`;
614
+ class?: string;
615
+ default?: ShopifyAppBlockDefault<T>;
616
+ javascript?: string;
617
+ locales?: {
618
+ [T: string]: {
619
+ [V: string]: string;
620
+ };
621
+ };
622
+ /* Max Settings: 25 - Max Content blocks: 6*/
623
+ settings?: (ShopifySettingsInput | ShopifyHeader | ShopifyParagraph)[];
624
+ stylesheet?: string;
625
+ tag?: "article" | "aside" | "div" | "footer" | "header" | "section";
626
+ } & (
627
+ | {
628
+ enabled_on?: {
629
+ groups?: string[];
630
+ templates?: ShopifyTemplateTypes[];
631
+ };
632
+ }
633
+ | {
634
+ disabled_on?: {
635
+ groups?: string[];
636
+ templates?: ShopifyTemplateTypes[];
637
+ };
638
+ }
639
+ );
640
+
641
+ export type ShopifySettings = (
642
+ | ({
643
+ name: "theme_info";
644
+ theme_author: string;
645
+ theme_documentation_url: string;
646
+ theme_name: string;
647
+
648
+ theme_version: string;
649
+ } & (
650
+ | {
651
+ theme_support_email: string;
652
+ }
653
+ | {
654
+ theme_support_url: string;
655
+ }
656
+ ))
657
+ | {
658
+ name: string;
659
+ settings: (
660
+ | ShopifySettingsInput
661
+ | ShopifyHeader
662
+ | ShopifyParagraph
663
+ | ShopifyColorThemeGroup
664
+ )[];
665
+ }
666
+ )[];
667
+
668
+ export type _Page_liquid = {
669
+ content: string;
670
+ handle: string;
671
+ id: number;
672
+ metafields: _Page_metafields;
673
+ published_at: string;
674
+ template_suffix: string;
675
+ title: string;
676
+ url: string;
677
+ author?: any;
678
+ };
679
+
680
+ export type _Blog_liquid = {
681
+ all_tags: any[];
682
+ articles: _Article_liquid[];
683
+ articles_count: number;
684
+ handle: string;
685
+ id: number;
686
+ metafields: _Blog_metafields;
687
+ tags: any[];
688
+ title: string;
689
+ url: string;
690
+ comments_enabled?: any;
691
+ moderated?: any;
692
+ };
693
+
694
+ export type _Article_liquid = {
695
+ author: string;
696
+ comment_post_url: string;
697
+ comments: any[];
698
+ comments_count: number;
699
+ content: string;
700
+ created_at: string;
701
+ excerpt: string;
702
+ excerpt_or_content: string;
703
+ featured_media: Omit<_Media_liquid, "media_type" | "position" | "preview_image">;
704
+ handle: string;
705
+ id: number;
706
+ metafields: _Article_metafields;
707
+ published_at: string;
708
+ tags: any[];
709
+ title: string;
710
+ updated_at: string;
711
+ url: string;
712
+ user: {
713
+ account_owner: boolean;
714
+ email: string;
715
+ first_name: string;
716
+ last_name: string;
717
+ bio?: any;
718
+ homepage?: any;
719
+ image?: any;
720
+ };
721
+ comments_enabled?: any;
722
+ image?: any;
723
+ moderated?: any;
724
+ };
725
+
726
+ export type _Product_liquid_json = {
727
+ available: boolean;
728
+ compare_at_price: number;
729
+ compare_at_price_max: number;
730
+ compare_at_price_min: number;
731
+ compare_at_price_varies: boolean;
732
+ content: string;
733
+ created_at: string;
734
+ description: string;
735
+ featured_image: string;
736
+ handle: string;
737
+ id: number;
738
+ images: string[];
739
+ media: _Media_liquid[];
740
+ options: string[];
741
+ price: number;
742
+ price_max: number;
743
+ price_min: number;
744
+ price_varies: boolean;
745
+ published_at: string;
746
+ requires_selling_plan: boolean;
747
+ selling_plan_groups: _Product_Selling_plan_groups_json[];
748
+ tags: string[];
749
+ title: string;
750
+ type: string;
751
+ variants: _Variant_liquid_json[];
752
+ vendor: string;
753
+ };
754
+ export type NewProductVariantsFeatured_image = {
755
+ created_at: string;
756
+ height: number;
757
+ id: number;
758
+ position: number;
759
+ product_id: number;
760
+ src: string;
761
+ updated_at: string;
762
+ variant_ids: number[];
763
+ width: number;
764
+ alt?: any;
765
+ };
766
+ export type NewProductVariantsFeatured_mediaPreview_image = {
767
+ aspect_ratio: number;
768
+ height: number;
769
+ src: string;
770
+ width: number;
771
+ };
772
+ export type NewProductVariantsFeatured_media = {
773
+ id: number;
774
+ position: number;
775
+ preview_image: NewProductVariantsFeatured_mediaPreview_image;
776
+ alt?: any;
777
+ };
778
+
779
+ export type _Variant_liquid_json = {
780
+ available: boolean;
781
+ barcode: string;
782
+ compare_at_price: number;
783
+ featured_image: _Image_liquid;
784
+ featured_media: _Media_liquid;
785
+ id: number;
786
+ inventory_management: string;
787
+ name: string;
788
+ option1: string;
789
+ options: string[];
790
+ price: number;
791
+ public_title: string;
792
+ quantity_rule: {
793
+ increment: number;
794
+ min: number;
795
+ max?: any;
796
+ };
797
+ requires_selling_plan: boolean;
798
+ requires_shipping: boolean;
799
+ selling_plan_allocations: {
800
+ compare_at_price: number;
801
+ per_delivery_price: number;
802
+ price: number;
803
+ price_adjustments: {
804
+ position: number;
805
+ price: number;
806
+ }[];
807
+ selling_plan_group_id: string;
808
+ selling_plan_id: number;
809
+ }[];
810
+ sku: string;
811
+ taxable: boolean;
812
+ title: string;
813
+ weight: number;
814
+ option2?: any;
815
+ option3?: any;
816
+ };
817
+
818
+ export type _Product_Selling_plan_groups_json = {
819
+ id: string;
820
+ name: string;
821
+ options: {
822
+ name: string;
823
+ position: number;
824
+ values: string[];
825
+ }[];
826
+ selling_plans: {
827
+ checkout_charge: {
828
+ value: number;
829
+ value_type: string;
830
+ };
831
+ id: number;
832
+ name: string;
833
+ options: {
834
+ name: string;
835
+ position: number;
836
+ value: string;
837
+ }[];
838
+ price_adjustments: {
839
+ position: number;
840
+ value: number;
841
+ value_type: string;
842
+ order_count?: any;
843
+ }[];
844
+ recurring_deliveries: boolean;
845
+ description?: any;
846
+ }[];
847
+ app_id?: any;
848
+ };
849
+
850
+ export type _Metafield_liquid_product_reference = {
851
+ type: "product_reference";
852
+ value?: Omit<_Product_liquid, "metafields">;
853
+ };
854
+
855
+ export type _Metafield_liquid_list_product_reference = {
856
+ type: "list.product_reference";
857
+ value?: Omit<_Product_liquid, "metafields">[];
858
+ };
859
+
860
+ export type _Metafield_liquid_collection_reference = {
861
+ type: "collection_reference";
862
+ value?: Omit<_Product_liquid, "metafields">;
863
+ };
864
+ export type _Metafield_liquid_list_collection_reference = {
865
+ type: "list.collection_reference";
866
+ value?: Omit<_Product_liquid, "metafields">[];
867
+ };
868
+
869
+ export type _Metafield_liquid_variant_reference = {
870
+ type: "variant_reference";
871
+ value?: _Variant_liquid_json;
872
+ };
873
+ export type _Metafield_liquid_list_variant_reference = {
874
+ type: "list.variant_reference";
875
+ value?: _Variant_liquid_json[];
876
+ };
877
+ export type _Metafield_liquid_page_reference = {
878
+ type: "page_reference";
879
+ value?: _Page_liquid_json;
880
+ };
881
+
882
+ export type _Metafield_liquid_file_reference_generic = {
883
+ media_type: "generic_file";
884
+ preview_image: {
885
+ aspect_ratio: number;
886
+ height: number;
887
+ src: string;
888
+ width: number;
889
+ };
890
+ url: string;
891
+ alt?: string;
892
+ };
893
+
894
+ export type _Metafield_liquid_file_reference_image = {
895
+ alt: string;
896
+ aspect_ratio: number;
897
+ height: number;
898
+ id: number;
899
+ media_type: "image";
900
+ position: null;
901
+ preview_image: {
902
+ aspect_ratio: number;
903
+ height: number;
904
+ src: string;
905
+ width: number;
906
+ };
907
+ src: string;
908
+ width: number;
909
+ };
910
+
911
+ export type _Metafield_liquid_file_reference = {
912
+ type: "file_reference";
913
+ value?: _Metafield_liquid_file_reference_generic | _Metafield_liquid_file_reference_image;
914
+ };
915
+
916
+ export type _Metafield_liquid_list_file_reference = {
917
+ type: "list.file_reference";
918
+ value?: (_Metafield_liquid_file_reference_generic | _Metafield_liquid_file_reference_image)[];
919
+ };
920
+
921
+ export type _Metafield_liquid_file_reference_force_generic = {
922
+ type: "file_reference";
923
+ value?: _Metafield_liquid_file_reference_generic;
924
+ };
925
+ export type _Metafield_liquid_file_reference_force_image = {
926
+ type: "file_reference";
927
+ value?: _Metafield_liquid_file_reference_image;
928
+ };
929
+
930
+ export type _Metafield_liquid =
931
+ | {
932
+ type:
933
+ | "color"
934
+ | "date"
935
+ | "date_time"
936
+ | "single_line_text_field"
937
+ | "multi_line_text_field"
938
+ | "url";
939
+ value?: string;
940
+ }
941
+ | {
942
+ type:
943
+ | "list.color"
944
+ | "list.date"
945
+ | "list.date_time"
946
+ | "list.single_line_text_field"
947
+ | "list.multi_line_text_field"
948
+ | "list.page_reference";
949
+ value?: string[];
950
+ }
951
+ | {
952
+ type: "number_integer";
953
+ value?: number;
954
+ }
955
+ | {
956
+ type: "list.number_integer";
957
+ value?: number[];
958
+ }
959
+ | {
960
+ type: "number_decimal";
961
+ value?: number | string;
962
+ }
963
+ | {
964
+ type: "list.number_decimal";
965
+ value?: (number | string)[];
966
+ }
967
+ | {
968
+ type: "json";
969
+ value?: unknown;
970
+ }
971
+ | {
972
+ type: "volume" | "weight" | "dimension";
973
+ value?: { type: string; unit: string; value: number };
974
+ }
975
+ | {
976
+ type: "rating";
977
+ value?: { rating: string; scale_max: string; scale_min: string };
978
+ }
979
+ | _Metafield_liquid_product_reference
980
+ | _Metafield_liquid_list_product_reference
981
+ | _Metafield_liquid_collection_reference
982
+ | _Metafield_liquid_list_collection_reference
983
+ | _Metafield_liquid_variant_reference
984
+ | _Metafield_liquid_list_variant_reference
985
+ | _Metafield_liquid_page_reference
986
+ | _Metafield_liquid_list_file_reference
987
+ | _Metafield_liquid_file_reference;
988
+
989
+ export type _Page_liquid_json = {
990
+ content: string;
991
+ handle: string;
992
+ id: number;
993
+ published_at: string;
994
+ template_suffix: string;
995
+ title: string;
996
+ url: string;
997
+ author?: string;
998
+ };
999
+
1000
+ export type _Selling_plan_liquid = {
1001
+ id: number;
1002
+ name: string;
1003
+ options: {
1004
+ name: string;
1005
+ position: number;
1006
+ value: string;
1007
+ }[];
1008
+ recurring_deliveries: boolean;
1009
+ price_adjustments: {
1010
+ position: number;
1011
+ value_type: string;
1012
+ value: number;
1013
+ }[];
1014
+ checkout_charge: {
1015
+ value_type: string;
1016
+ value: number;
1017
+ };
1018
+ };
1019
+
1020
+ export type _Variant_liquid = {
1021
+ available: boolean;
1022
+ barcode: string;
1023
+ id: number;
1024
+ inventory_policy: string;
1025
+ inventory_quantity: number;
1026
+ metafields: _Variant_metafields;
1027
+ option1: string;
1028
+ options: string[];
1029
+ price: number;
1030
+ requires_shipping: boolean;
1031
+ selling_plan_allocations: {
1032
+ compare_at_price: number;
1033
+ per_delivery_price: number;
1034
+ price: number;
1035
+ price_adjustments: {
1036
+ position: number;
1037
+ price: number;
1038
+ }[];
1039
+ selling_plan_group_id: string;
1040
+ selling_plan_id: number;
1041
+ selling_plan: _Selling_plan_liquid;
1042
+ }[];
1043
+ sku: string;
1044
+ taxable: boolean;
1045
+ title: string;
1046
+ url: string;
1047
+ weight: number;
1048
+ compare_at_price?: any;
1049
+ featured_media?: _Media_liquid;
1050
+ image?: any;
1051
+ inventory_management?: any;
1052
+ option2?: any;
1053
+ option3?: any;
1054
+ store_availabilities?: {
1055
+ available: boolean;
1056
+ location: {
1057
+ address: {};
1058
+ id: number;
1059
+ latitude: number;
1060
+ longitude: number;
1061
+ metafields: { [T: string]: _Metafield_liquid };
1062
+ name: string;
1063
+ };
1064
+ pick_up_enabled: true;
1065
+ pick_up_time: string;
1066
+ }[];
1067
+ };
1068
+
1069
+ export type _Product_liquid = {
1070
+ available: boolean;
1071
+ collections: {
1072
+ body_html: string;
1073
+ disjunctive: boolean;
1074
+ handle: string;
1075
+ id: number;
1076
+ published_at: string;
1077
+ published_scope: string;
1078
+ rules: {
1079
+ column: string;
1080
+ condition: string;
1081
+ relation: string;
1082
+ }[];
1083
+ sort_order: string;
1084
+ template_suffix: string;
1085
+ title: string;
1086
+ updated_at: string;
1087
+ }[];
1088
+ compare_at_price_max: number;
1089
+ compare_at_price_min: number;
1090
+ compare_at_price_varies: boolean;
1091
+ content: string;
1092
+ created_at: string;
1093
+ description: string;
1094
+ handle: string;
1095
+ id: number;
1096
+ images: any[];
1097
+ media: _Media_liquid[];
1098
+ metafields: _Product_metafields;
1099
+ options: string[];
1100
+ options_with_values: { name: string; position: 1 | 2 | 3; values: string[] }[];
1101
+ page_description: string;
1102
+ price: number;
1103
+ price_max: number;
1104
+ price_min: number;
1105
+ price_varies: boolean;
1106
+ published_at: string;
1107
+ selected_or_first_available_variant: _Variant_liquid;
1108
+ tags: string[];
1109
+ template_suffix: string;
1110
+ title: string;
1111
+ type: string;
1112
+ url: string;
1113
+ variants: _Variant_liquid[];
1114
+ vendor: string;
1115
+ compare_at_price?: number;
1116
+ featured_image?: string;
1117
+ featured_media?: _Media_liquid;
1118
+ requires_selling_plan?: boolean;
1119
+ selling_plan_groups?: _Product_selling_plan_groups_liquid[];
1120
+ };
1121
+
1122
+ export type _Product_selling_plan_liquid = {
1123
+ checkout_charge: {
1124
+ value: number;
1125
+ value_type: string;
1126
+ };
1127
+ id: number;
1128
+ name: string;
1129
+ options: {
1130
+ name: string;
1131
+ position: number;
1132
+ value: string;
1133
+ }[];
1134
+ price_adjustments: {
1135
+ position: number;
1136
+ value: number;
1137
+ value_type: string;
1138
+ }[];
1139
+ recurring_deliveries: boolean;
1140
+ };
1141
+ export type _Product_selling_plan_groups_liquid = {
1142
+ app_id: string;
1143
+ id: string;
1144
+ name: string;
1145
+ options: {
1146
+ name: string;
1147
+ position: number;
1148
+ values: string[];
1149
+ }[];
1150
+ selling_plans: _Product_selling_plan_liquid[];
1151
+ };
1152
+
1153
+ export type _Media_liquid =
1154
+ | {
1155
+ alt: string;
1156
+ aspect_ratio: number;
1157
+ height: number;
1158
+ id: number;
1159
+ media_type: "image";
1160
+ position: number;
1161
+ preview_image: {
1162
+ aspect_ratio: number;
1163
+ height: number;
1164
+ src: string;
1165
+ width: number;
1166
+ };
1167
+ src: string;
1168
+ width: number;
1169
+ focal_point?: string;
1170
+ }
1171
+ | {
1172
+ alt: string;
1173
+ aspect_ratio: number;
1174
+ height: number;
1175
+ id: number;
1176
+ media_type: "external_video";
1177
+ position: number;
1178
+ preview_image: {
1179
+ aspect_ratio: number;
1180
+ height: number;
1181
+ src: string;
1182
+ width: number;
1183
+ };
1184
+ src: string;
1185
+ width: number;
1186
+ external_id?: string;
1187
+ host?: "youtube" | "vimeo";
1188
+ }
1189
+ | {
1190
+ alt: string;
1191
+ aspect_ratio: number;
1192
+ height: number;
1193
+ id: number;
1194
+ media_type: "model";
1195
+ position: number;
1196
+ preview_image: {
1197
+ aspect_ratio: number;
1198
+ height: number;
1199
+ src: string;
1200
+ width: number;
1201
+ };
1202
+ src: string;
1203
+ width: number;
1204
+ sources?: _Media_liquid_source[];
1205
+ }
1206
+ | {
1207
+ alt: string;
1208
+ aspect_ratio: number;
1209
+ duration: number;
1210
+ height: number;
1211
+ id: number;
1212
+ media_type: "video";
1213
+ position: number;
1214
+ preview_image: {
1215
+ aspect_ratio: number;
1216
+ height: number;
1217
+ src: string;
1218
+ width: number;
1219
+ };
1220
+ src: string;
1221
+ width: number;
1222
+ sources?: _Media_liquid_source[];
1223
+ };
1224
+
1225
+ export type _Media_liquid_source = {
1226
+ format: "mp4" | "mov" | "m3u8" | "glb";
1227
+ height: number;
1228
+ mime_type: string;
1229
+ url: string;
1230
+ width: number;
1231
+ };
1232
+
1233
+ export type _Collection_liquid = {
1234
+ all_products_count: number;
1235
+ all_tags: string[];
1236
+ all_types: string[];
1237
+ all_vendors: string[];
1238
+ default_sort_by: _Collection_sort_options[number][0];
1239
+ description: string;
1240
+ filters: _Collection_filter[];
1241
+ handle: string;
1242
+ id: number;
1243
+ metafields: _Collection_metafields;
1244
+ products: _Product_liquid[];
1245
+ products_count: number;
1246
+ published_at: string;
1247
+ sort_by: _Collection_sort_options[number][0];
1248
+ sort_options: _Collection_sort_options;
1249
+ tags: string[];
1250
+ template_suffix: string;
1251
+ title: string;
1252
+ url: string;
1253
+ featured_image?: _Media_liquid;
1254
+ image?: _Media_liquid;
1255
+ product_pagination?: _Pagination_liquid;
1256
+ products_best_selling?: string[];
1257
+ products_manual?: string[];
1258
+ };
1259
+
1260
+ export type _Collection_sort_options = [
1261
+ ["manual", string],
1262
+ ["best-selling", string],
1263
+ ["title-ascending", string],
1264
+ ["title-descending", string],
1265
+ ["price-ascending", string],
1266
+ ["price-descending", string],
1267
+ ["created-ascending", string],
1268
+ ["created-descending", string],
1269
+ ];
1270
+
1271
+ export type _Collection_filter = {
1272
+ active_values: _Collection_filter_value[];
1273
+ inactive_values: _Collection_filter_value[];
1274
+ label: string;
1275
+ max_value: _Collection_filter_value;
1276
+ min_value: _Collection_filter_value;
1277
+ param_name: string;
1278
+ type: string;
1279
+ url_to_remove: string;
1280
+ values: _Collection_filter_value[];
1281
+ false_value?: _Collection_filter_value;
1282
+ range_max?: number;
1283
+ true_value?: _Collection_filter_value;
1284
+ };
1285
+ export type _Collection_filter_value = {
1286
+ active: boolean;
1287
+ count: number;
1288
+ label: string;
1289
+ param_name: string;
1290
+ url_to_add: string;
1291
+ url_to_remove: string;
1292
+ value: string;
1293
+ };
1294
+
1295
+ export type _Pagination_liquid = {
1296
+ current_offset: number;
1297
+ current_page: number;
1298
+ items: number;
1299
+ page_size: number;
1300
+ pages: number;
1301
+ parts: _Pagination_liquid_part[];
1302
+ next?: _Pagination_liquid_part;
1303
+ previous?: _Pagination_liquid_part;
1304
+ };
1305
+
1306
+ type _Pagination_liquid_part = {
1307
+ is_link: boolean;
1308
+ title: string;
1309
+ url: string;
1310
+ };
1311
+
1312
+ export type _Link_liquid = {
1313
+ active: boolean;
1314
+ child_active: boolean;
1315
+ child_current: boolean;
1316
+ current: boolean;
1317
+ handle: string;
1318
+ levels: number;
1319
+ links: _Link_liquid[];
1320
+ title: string;
1321
+ url: string;
1322
+ } & (
1323
+ | {
1324
+ type: "product_link";
1325
+ object?: _Product_liquid;
1326
+ }
1327
+ | {
1328
+ type: "collection_link";
1329
+ object?: _Collection_liquid;
1330
+ }
1331
+ | {
1332
+ type: "article_link";
1333
+ object?: _Article_liquid;
1334
+ }
1335
+ | {
1336
+ type: "blog_link";
1337
+ object?: _Blog_liquid;
1338
+ }
1339
+ | {
1340
+ type: "page_link";
1341
+ object?: _Page_liquid;
1342
+ }
1343
+ | {
1344
+ type: "policy_link";
1345
+ object?: string;
1346
+ }
1347
+ | {
1348
+ type: "http_link";
1349
+ object?: null;
1350
+ }
1351
+ | {
1352
+ type: "frontpage_link";
1353
+ object?: null;
1354
+ }
1355
+ | {
1356
+ type: "collections_link";
1357
+ object?: null;
1358
+ }
1359
+ | {
1360
+ type: "catalog_link";
1361
+ object?: null;
1362
+ }
1363
+ );
1364
+
1365
+ export type _Linklist_liquid = {
1366
+ handle: string;
1367
+ levels: number;
1368
+ links: _Link_liquid[];
1369
+ title: string;
1370
+ };
1371
+
1372
+ export type _Color_liquid = {
1373
+ alpha: number;
1374
+ blue: number;
1375
+ green: number;
1376
+ hex: string;
1377
+ hue: number;
1378
+ lightness: number;
1379
+ red: number;
1380
+ rgb: string;
1381
+ saturation: number;
1382
+ };
1383
+
1384
+ export type _Font_liquid = {
1385
+ baseline_ratio: number;
1386
+ fallback_families: string;
1387
+ family: string;
1388
+ style: string;
1389
+ variants: Omit<_Font_liquid, "variants">[];
1390
+ weight: string;
1391
+ system?: any;
1392
+ };
1393
+
1394
+ export type _LinkLists_liquid = _Linklist_liquid[];
1395
+
1396
+ export type _Image_liquid = {
1397
+ alt: string;
1398
+ aspect_ratio: number;
1399
+ height: number;
1400
+ id: string;
1401
+ src: string;
1402
+ width: number;
1403
+ focal_point?: string;
1404
+ media_type?: any;
1405
+ position?: number;
1406
+ preview_image?: any;
1407
+ variants?: any;
1408
+ };
1409
+
1410
+ export type _Video_liquid = {
1411
+ alt: string;
1412
+ aspect_ratio: number;
1413
+ duration: number;
1414
+ height: number;
1415
+ id: string;
1416
+ media_type: "video";
1417
+ position: number;
1418
+ preview_image: _Image_liquid;
1419
+ sources: {
1420
+ format: "mp4" | "mov" | "m3u8";
1421
+ height: number;
1422
+ mime_type: string;
1423
+ url: string;
1424
+ width: number;
1425
+ }[];
1426
+ };
1427
+
1428
+ export type _Shop_liquid_json = {
1429
+ address: {
1430
+ address1: string;
1431
+ address2: string;
1432
+ city: string;
1433
+ company: string;
1434
+ country: string;
1435
+ country_code: string;
1436
+ name: string;
1437
+ phone: string;
1438
+ province: string;
1439
+ province_code: string;
1440
+ zip: string;
1441
+ first_name?: any;
1442
+ last_name?: any;
1443
+ latitude?: any;
1444
+ longitude?: any;
1445
+ };
1446
+ address_city: string;
1447
+ address_company: string;
1448
+ address_country: string;
1449
+ address_country_upper: string;
1450
+ address_province: string;
1451
+ address_province_code: string;
1452
+ address_street: string;
1453
+ address_summary: string;
1454
+ address_zip: string;
1455
+ "checkout.guest_login": boolean;
1456
+ collections_count: number;
1457
+ currency: string;
1458
+ customer_accounts_enabled: boolean;
1459
+ customer_accounts_optional: boolean;
1460
+ description: string;
1461
+ domain: string;
1462
+ email: string;
1463
+ enabled_payment_types: string[];
1464
+ id: number;
1465
+ metafields: _Shop_metafields;
1466
+ money_format: string;
1467
+ money_with_currency_format: string;
1468
+ name: string;
1469
+ password_message: string;
1470
+ permanent_domain: string;
1471
+ phone: string;
1472
+ policies: any[];
1473
+ products_count: number;
1474
+ published_locales: {
1475
+ shop_locale: {
1476
+ enabled: boolean;
1477
+ locale: string;
1478
+ primary: boolean;
1479
+ published: boolean;
1480
+ };
1481
+ }[];
1482
+ secure_url: string;
1483
+ types: string[];
1484
+ url: string;
1485
+ vendors: string[];
1486
+ privacy_policy?: any;
1487
+ refund_policy?: any;
1488
+ shipping_policy?: any;
1489
+ subscription_policy?: any;
1490
+ terms_of_service?: any;
1491
+ };
1492
+
1493
+ export type _Request_liquid = {
1494
+ design_mode: boolean;
1495
+ host: string;
1496
+ locale: {
1497
+ shop_locale: {
1498
+ enabled: boolean;
1499
+ locale: string;
1500
+ primary: boolean;
1501
+ published: boolean;
1502
+ };
1503
+ };
1504
+ origin: string;
1505
+ page_type: string;
1506
+ path: string;
1507
+ };
1508
+
1509
+ export type _Routes_liquid = {
1510
+ account_addresses_url: string;
1511
+ account_login_url: string;
1512
+ account_logout_url: string;
1513
+ account_recover_url: string;
1514
+ account_register_url: string;
1515
+ account_url: string;
1516
+ all_products_collection_url: string;
1517
+ cart_add_url: string;
1518
+ cart_change_url: string;
1519
+ cart_clear_url: string;
1520
+ cart_update_url: string;
1521
+ cart_url: string;
1522
+ collections_url: string;
1523
+ predictive_search_url: string;
1524
+ product_recommendations_url: string;
1525
+ root_url: string;
1526
+ search_url: string;
1527
+ host?: string;
1528
+ };
1529
+
1530
+ export type _Recommendations_liquid = {
1531
+ performed: boolean;
1532
+ products: _Product_liquid[];
1533
+ products_count: number;
1534
+ };
1535
+
1536
+ export type RichtextSchema =
1537
+ | {
1538
+ type: "root";
1539
+ children: RichtextSchema[];
1540
+ }
1541
+ | RichtextSchema_Paragraph
1542
+ | RichtextSchema_Heading
1543
+ | RichtextSchema_List
1544
+ | RichtextSchema_ListItem
1545
+ | RichtextSchema_Link
1546
+ | RichtextSchema_Text;
1547
+
1548
+ export type RichtextSchema_Paragraph = {
1549
+ type: "paragraph";
1550
+ children: RichtextSchema[];
1551
+ };
1552
+ export type RichtextSchema_Heading = {
1553
+ type: "heading";
1554
+ level: "1" | "2" | "3" | "4" | "5" | "6";
1555
+ children: RichtextSchema[];
1556
+ };
1557
+
1558
+ export type RichtextSchema_List = {
1559
+ type: "list";
1560
+ listType: "ordered" | "unordered";
1561
+ children: RichtextSchema[];
1562
+ };
1563
+
1564
+ export type RichtextSchema_ListItem = {
1565
+ type: "list-item";
1566
+ children: RichtextSchema[];
1567
+ };
1568
+
1569
+ export type RichtextSchema_Link = {
1570
+ type: "link";
1571
+ children: RichtextSchema[];
1572
+ url: string;
1573
+ title: string;
1574
+ target: string;
1575
+ };
1576
+ export type RichtextSchema_Text = {
1577
+ type: "text";
1578
+ value: string;
1579
+ bold?: boolean;
1580
+ italic?: boolean;
1581
+ };
1582
+
1583
+ export type GlobalSettings = {
1584
+ title: string;
1585
+ request: _Request_liquid | null;
1586
+ article: _Article_liquid | null;
1587
+ blog: _Blog_liquid | null;
1588
+ collection: _Collection_liquid | null;
1589
+ description: string;
1590
+ handle: string | null;
1591
+ page: _Page_liquid_json | null;
1592
+ product: _Product_liquid | null;
1593
+ file_url: string;
1594
+ asset_url: string;
1595
+ pathname: string;
1596
+ template: string;
1597
+ money_format: string;
1598
+ theme_id: string;
1599
+ theme_role: string;
1600
+ settings: SettingsSchema | null;
1601
+ shop: _Shop_liquid_json | null;
1602
+ };
1603
+
1604
+ export type _Font_options =
1605
+ | "mono"
1606
+ | "sans-serif"
1607
+ | "serif"
1608
+ | "abel_n4"
1609
+ | "abril_fatface_n4"
1610
+ | "agmena_n4"
1611
+ | "akko_n4"
1612
+ | "alegreya_n4"
1613
+ | "alegreya_sans_n4"
1614
+ | "alfie_n4"
1615
+ | "americana_n4"
1616
+ | "amiri_n4"
1617
+ | "anonymous_pro_n4"
1618
+ | "antique_olive_n4"
1619
+ | "arapey_n4"
1620
+ | "archivo_n4"
1621
+ | "archivo_narrow_n4"
1622
+ | "arimo_n4"
1623
+ | "armata_n4"
1624
+ | "arvo_n4"
1625
+ | "asap_n4"
1626
+ | "assistant_n4"
1627
+ | "asul_n4"
1628
+ | "avenir_next_n4"
1629
+ | "avenir_next_rounded_n4"
1630
+ | "azbuka_n4"
1631
+ | "basic_commercial_n4"
1632
+ | "basic_commercial_soft_rounded_n4"
1633
+ | "baskerville_no_2_n4"
1634
+ | "bauer_bodoni_n4"
1635
+ | "beefcakes_n4"
1636
+ | "bembo_book_n4"
1637
+ | "bernhard_modern_n4"
1638
+ | "bio_rhyme_n4"
1639
+ | "bitter_n4"
1640
+ | "bodoni_poster_n9"
1641
+ | "burlingame_n4"
1642
+ | "cabin_n4"
1643
+ | "cachet_n4"
1644
+ | "cardamon_n4"
1645
+ | "cardo_n4"
1646
+ | "carter_sans_n4"
1647
+ | "caslon_bold_n4"
1648
+ | "caslon_old_face_n4"
1649
+ | "catamaran_n4"
1650
+ | "centaur_n4"
1651
+ | "century_gothic_n4"
1652
+ | "chivo_n4"
1653
+ | "chong_modern_n4"
1654
+ | "claire_news_n3"
1655
+ | "cooper_bt_n5"
1656
+ | "courier_new_n4"
1657
+ | "crimson_text_n4"
1658
+ | "din_neuzeit_grotesk_n3"
1659
+ | "din_next_n4"
1660
+ | "din_next_slab_n4"
1661
+ | "daytona_n4"
1662
+ | "domine_n4"
1663
+ | "dosis_n4"
1664
+ | "electra_n4"
1665
+ | "eurostile_next_n4"
1666
+ | "ff_meta_n4"
1667
+ | "ff_meta_serif_n4"
1668
+ | "ff_tisa_n4"
1669
+ | "ff_tisa_sans_n4"
1670
+ | "ff_unit_n4"
1671
+ | "ff_unit_rounded_n4"
1672
+ | "ff_unit_slab_n4"
1673
+ | "fette_gotisch_n4"
1674
+ | "fira_sans_n4"
1675
+ | "fjalla_one_n4"
1676
+ | "friz_quadrata_n4"
1677
+ | "frutiger_serif_n4"
1678
+ | "futura_n4"
1679
+ | "futura_black_n4"
1680
+ | "garamond_n4"
1681
+ | "geometric_415_n4"
1682
+ | "georgia_pro_n4"
1683
+ | "gill_sans_nova_n4"
1684
+ | "glegoo_n4"
1685
+ | "goudy_old_style_n4"
1686
+ | "harmonia_sans_n4"
1687
+ | "helvetica_n4"
1688
+ | "humanist_521_n4"
1689
+ | "ibm_plex_sans_n4"
1690
+ | "itc_avant_garde_gothic_n4"
1691
+ | "itc_benguiat_n4"
1692
+ | "itc_berkeley_old_style_n4"
1693
+ | "itc_bodoni_seventytwo_n4"
1694
+ | "itc_bodoni_twelve_n4"
1695
+ | "itc_caslon_no_224_n4"
1696
+ | "itc_charter_n4"
1697
+ | "itc_cheltenham_n4"
1698
+ | "itc_clearface_n4"
1699
+ | "itc_conduit_n4"
1700
+ | "itc_esprit_n4"
1701
+ | "itc_founders_caslon_n4"
1702
+ | "itc_franklin_gothic_n4"
1703
+ | "itc_galliard_n4"
1704
+ | "itc_gamma_n4"
1705
+ | "itc_goudy_sans_n4"
1706
+ | "itc_johnston_n5"
1707
+ | "itc_mendoza_roman_n4"
1708
+ | "itc_modern_no_216_n5"
1709
+ | "itc_new_baskerville_n4"
1710
+ | "itc_new_esprit_n4"
1711
+ | "itc_new_veljovic_n4"
1712
+ | "itc_novarese_n4"
1713
+ | "itc_officina_sans_n4"
1714
+ | "itc_officina_serif_n4"
1715
+ | "itc_stepp_n4"
1716
+ | "itc_stone_humanist_n5"
1717
+ | "itc_stone_informal_n4"
1718
+ | "itc_stone_sans_ii_n4"
1719
+ | "itc_stone_serif_n4"
1720
+ | "itc_tapioca_n5"
1721
+ | "inconsolata_n4"
1722
+ | "joanna_nova_n4"
1723
+ | "joanna_sans_nova_n4"
1724
+ | "josefin_sans_n4"
1725
+ | "josefin_slab_n4"
1726
+ | "kairos_n4"
1727
+ | "kalam_n4"
1728
+ | "karla_n4"
1729
+ | "kreon_n4"
1730
+ | "lato_n4"
1731
+ | "laurentian_n4"
1732
+ | "libelle_n4"
1733
+ | "libre_baskerville_n4"
1734
+ | "libre_franklin_n4"
1735
+ | "linotype_didot_n4"
1736
+ | "linotype_gianotten_n4"
1737
+ | "linotype_really_n5"
1738
+ | "linotype_syntax_serif_n4"
1739
+ | "lobster_n4"
1740
+ | "lobster_two_n4"
1741
+ | "lora_n4"
1742
+ | "lucia_n4"
1743
+ | "lucida_grande_n4"
1744
+ | "luthersche_fraktur_n4"
1745
+ | "madera_n4"
1746
+ | "malabar_n4"
1747
+ | "mariposa_sans_n4"
1748
+ | "maven_pro_n4"
1749
+ | "megrim_n4"
1750
+ | "melior_n4"
1751
+ | "memphis_n5"
1752
+ | "memphis_soft_rounded_n5"
1753
+ | "mentor_sans_n4"
1754
+ | "merriweather_sans_n4"
1755
+ | "metro_nova_n4"
1756
+ | "modern_no_20_n4"
1757
+ | "monaco_n4"
1758
+ | "monotype_baskerville_n4"
1759
+ | "monotype_bodoni_n4"
1760
+ | "monotype_century_old_style_n5"
1761
+ | "monotype_goudy_n4"
1762
+ | "monotype_goudy_modern_n4"
1763
+ | "monotype_italian_old_style_n4"
1764
+ | "monotype_new_clarendon_n5"
1765
+ | "monotype_news_gothic_n4"
1766
+ | "monotype_sabon_n4"
1767
+ | "montserrat_n4"
1768
+ | "mouse_memoirs_n4"
1769
+ | "muli_n4"
1770
+ | "mundo_sans_n4"
1771
+ | "neo_sans_n4"
1772
+ | "neue_aachen_n4"
1773
+ | "neue_frutiger_1450_n4"
1774
+ | "neue_haas_unica_n4"
1775
+ | "neue_plak_n4"
1776
+ | "neue_swift_n4"
1777
+ | "neuton_n4"
1778
+ | "neuzeit_office_n4"
1779
+ | "neuzeit_office_soft_rounded_n4"
1780
+ | "neuzeit_s_n4"
1781
+ | "new_century_schoolbook_n4"
1782
+ | "news_702_n4"
1783
+ | "news_705_n4"
1784
+ | "news_cycle_n4"
1785
+ | "news_gothic_no_2_n4"
1786
+ | "news_plantin_n4"
1787
+ | "nobile_n4"
1788
+ | "noticia_text_n4"
1789
+ | "noto_serif_n4"
1790
+ | "nunito_n4"
1791
+ | "nunito_sans_n4"
1792
+ | "old_standard_tt_n4"
1793
+ | "open_sans_n4"
1794
+ | "open_sans_condensed_n3"
1795
+ | "optima_nova_n4"
1796
+ | "oswald_n4"
1797
+ | "ovo_n4"
1798
+ | "oxygen_n4"
1799
+ | "pmn_caecilia_n4"
1800
+ | "pt_mono_n4"
1801
+ | "pt_sans_n4"
1802
+ | "pt_sans_narrow_n4"
1803
+ | "pt_serif_n4"
1804
+ | "pacifico_n4"
1805
+ | "palatino_n4"
1806
+ | "parma_n4"
1807
+ | "perpetua_n4"
1808
+ | "plantin_n4"
1809
+ | "playball_n4"
1810
+ | "playfair_display_n4"
1811
+ | "poppins_n4"
1812
+ | "prata_n4"
1813
+ | "prompt_n4"
1814
+ | "quantico_n4"
1815
+ | "quattrocento_n4"
1816
+ | "quattrocento_sans_n4"
1817
+ | "questrial_n4"
1818
+ | "quicksand_n4"
1819
+ | "quire_sans_n4"
1820
+ | "rajdhani_n4"
1821
+ | "raleway_n4"
1822
+ | "really_no_2_n4"
1823
+ | "righteous_n4"
1824
+ | "roboto_n4"
1825
+ | "roboto_condensed_n4"
1826
+ | "roboto_mono_n4"
1827
+ | "roboto_slab_n4"
1828
+ | "rockwell_n4"
1829
+ | "rubik_n4"
1830
+ | "sabon_next_n4"
1831
+ | "sackers_square_gothic_n4"
1832
+ | "sagrantino_n4"
1833
+ | "scene_n4"
1834
+ | "scherzo_n4"
1835
+ | "shadows_into_light_n4"
1836
+ | "slabo_13px_n4"
1837
+ | "slate_n4"
1838
+ | "soho_n4"
1839
+ | "soho_gothic_n4"
1840
+ | "source_code_pro_n4"
1841
+ | "source_sans_pro_n4"
1842
+ | "stempel_schneidler_n4"
1843
+ | "swiss_721_n4"
1844
+ | "swiss_721_rounded_n7"
1845
+ | "tenor_sans_n4"
1846
+ | "tiemann_n4"
1847
+ | "times_new_roman_n4"
1848
+ | "tinos_n4"
1849
+ | "titillium_web_n4"
1850
+ | "trade_gothic_n4"
1851
+ | "trade_gothic_next_n4"
1852
+ | "trebuchet_ms_n4"
1853
+ | "twentieth_century_n4"
1854
+ | "ubuntu_n4"
1855
+ | "unica_one_n4"
1856
+ | "univers_next_n4"
1857
+ | "univers_next_typewriter_n4"
1858
+ | "unna_n4"
1859
+ | "vala_n4"
1860
+ | "varela_n4"
1861
+ | "varela_round_n4"
1862
+ | "verdana_pro_n4"
1863
+ | "vidaloka_n4"
1864
+ | "volkhov_n4"
1865
+ | "vollkorn_n4"
1866
+ | "waza_n4"
1867
+ | "wola_n4"
1868
+ | "work_sans_n4"
1869
+ | "ysobel_n4"
1870
+ | "zurich_n4"
1871
+ | "zurich_extended_n4";