@shopify/cli 3.66.0 → 3.67.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 (109) hide show
  1. package/dist/assets/cli-ruby/lib/shopify_cli/theme/dev_server/proxy.rb +3 -7
  2. package/dist/assets/hydrogen/starter/CHANGELOG.md +105 -0
  3. package/dist/assets/hydrogen/starter/app/components/CartSummary.tsx +79 -0
  4. package/dist/assets/hydrogen/starter/app/components/Header.tsx +3 -9
  5. package/dist/assets/hydrogen/starter/app/lib/fragments.ts +6 -0
  6. package/dist/assets/hydrogen/starter/app/lib/search.ts +2 -2
  7. package/dist/assets/hydrogen/starter/app/root.tsx +5 -3
  8. package/dist/assets/hydrogen/starter/app/routes/cart.tsx +14 -0
  9. package/dist/assets/hydrogen/starter/package.json +5 -5
  10. package/dist/assets/hydrogen/starter/storefrontapi.generated.d.ts +5 -0
  11. package/dist/{chunk-UUUKSZ6D.js → chunk-2A4NZDBL.js} +25 -8
  12. package/dist/{lib-CPSRXLFM.js → chunk-2HGYYNE5.js} +5 -2
  13. package/dist/{chunk-D2RO6JR3.js → chunk-33B37WAX.js} +148 -39
  14. package/dist/{chunk-XC2GDHJG.js → chunk-56GJOU7U.js} +29 -5
  15. package/dist/{chunk-WX53MNQL.js → chunk-66CAOMYB.js} +3 -3
  16. package/dist/{chunk-UVGRJGX3.js → chunk-6JA2FWML.js} +3 -3
  17. package/dist/{chunk-PBJ5OTM2.js → chunk-6RGB2VE4.js} +2 -2
  18. package/dist/{chunk-JDW4FALN.js → chunk-7QTS6ZWN.js} +29 -89
  19. package/dist/{chunk-33TKMDCD.js → chunk-7TTWOW5T.js} +2 -2
  20. package/dist/{chunk-WPNX6KPH.js → chunk-7VVKCVPD.js} +4 -4
  21. package/dist/{chunk-BVIU4OLB.js → chunk-A3ZREYWQ.js} +4 -4
  22. package/dist/{chunk-2VOIYZPC.js → chunk-ALNQ5ENK.js} +4 -4
  23. package/dist/{chunk-6DU4BL5F.js → chunk-BFQFJ7IZ.js} +28 -17
  24. package/dist/{chunk-NKAOPMA3.js → chunk-BLVJTR72.js} +2 -2
  25. package/dist/{chunk-IZJK3NZC.js → chunk-BPTBCC7K.js} +9 -4
  26. package/dist/{chunk-AUKMJHJ7.js → chunk-CLB5CEKJ.js} +3 -3
  27. package/dist/{chunk-TGZ5RXOR.js → chunk-DFWU3T6T.js} +3 -3
  28. package/dist/{chunk-RUEXD2UR.js → chunk-DQX6APZ7.js} +3 -3
  29. package/dist/{chunk-7V5O7LKT.js → chunk-DZU2Z54P.js} +75 -75
  30. package/dist/{chunk-JFQDBJAJ.js → chunk-ETEUMLXG.js} +4 -4
  31. package/dist/{chunk-43EGEYB7.js → chunk-FCZFZS5D.js} +5 -5
  32. package/dist/{chunk-W6UL6CVM.js → chunk-HDUCYBDJ.js} +5 -5
  33. package/dist/{chunk-YGXFX272.js → chunk-HH6CL4YY.js} +4 -4
  34. package/dist/{chunk-AAMOUWCA.js → chunk-NTY5IMTJ.js} +3 -3
  35. package/dist/{chunk-F6BSBHJJ.js → chunk-NZDBLGNM.js} +4 -3
  36. package/dist/{chunk-HL64VUCA.js → chunk-RG3ZCNYG.js} +2 -2
  37. package/dist/{chunk-2BSR7GRJ.js → chunk-ROVTA24T.js} +3 -3
  38. package/dist/{chunk-J234SME4.js → chunk-RZAH6V72.js} +3 -3
  39. package/dist/{chunk-3VYZWAW4.js → chunk-SMD4PKJ4.js} +2 -2
  40. package/dist/{chunk-DCRMMYAV.js → chunk-T5OZRID5.js} +7 -7
  41. package/dist/{chunk-B5ORJYIJ.js → chunk-TLEQTJSL.js} +3 -3
  42. package/dist/{chunk-63P6ZWRY.js → chunk-UNEY6YDL.js} +2 -2
  43. package/dist/{chunk-BBI25NNF.js → chunk-UYB6BQ5X.js} +4 -4
  44. package/dist/{chunk-LLQ4TNJH.js → chunk-V4VZ6RSC.js} +2 -2
  45. package/dist/{chunk-3XL2MNVX.js → chunk-V7FFSXYT.js} +24 -11
  46. package/dist/{chunk-BZEWEVNQ.js → chunk-W44P3FXC.js} +2 -2
  47. package/dist/{chunk-YCRQGCGC.js → chunk-X5O6SBDL.js} +3 -3
  48. package/dist/{chunk-ZJQEUNZ4.js → chunk-ZEKYC6RR.js} +5 -5
  49. package/dist/cli/commands/auth/logout.js +13 -12
  50. package/dist/cli/commands/auth/logout.test.js +14 -13
  51. package/dist/cli/commands/debug/command-flags.js +12 -11
  52. package/dist/cli/commands/demo/catalog.js +13 -12
  53. package/dist/cli/commands/demo/generate-file.js +13 -12
  54. package/dist/cli/commands/demo/index.js +13 -12
  55. package/dist/cli/commands/demo/print-ai-prompt.js +13 -12
  56. package/dist/cli/commands/docs/generate.js +12 -11
  57. package/dist/cli/commands/docs/generate.test.js +12 -11
  58. package/dist/cli/commands/help.js +12 -11
  59. package/dist/cli/commands/kitchen-sink/async.js +13 -12
  60. package/dist/cli/commands/kitchen-sink/async.test.js +13 -12
  61. package/dist/cli/commands/kitchen-sink/index.js +15 -14
  62. package/dist/cli/commands/kitchen-sink/index.test.js +15 -14
  63. package/dist/cli/commands/kitchen-sink/prompts.js +13 -12
  64. package/dist/cli/commands/kitchen-sink/prompts.test.js +13 -12
  65. package/dist/cli/commands/kitchen-sink/static.js +13 -12
  66. package/dist/cli/commands/kitchen-sink/static.test.js +13 -12
  67. package/dist/cli/commands/search.js +13 -12
  68. package/dist/cli/commands/upgrade.js +13 -12
  69. package/dist/cli/commands/version.js +13 -12
  70. package/dist/cli/commands/version.test.js +13 -12
  71. package/dist/cli/services/commands/search.js +5 -4
  72. package/dist/cli/services/commands/search.test.js +5 -4
  73. package/dist/cli/services/commands/version.js +6 -5
  74. package/dist/cli/services/commands/version.test.js +7 -6
  75. package/dist/cli/services/demo.js +5 -4
  76. package/dist/cli/services/demo.test.js +5 -4
  77. package/dist/cli/services/kitchen-sink/async.js +5 -4
  78. package/dist/cli/services/kitchen-sink/prompts.js +5 -4
  79. package/dist/cli/services/kitchen-sink/static.js +5 -4
  80. package/dist/cli/services/upgrade.js +6 -5
  81. package/dist/cli/services/upgrade.test.js +8 -7
  82. package/dist/configs/all.yml +3 -0
  83. package/dist/configs/recommended.yml +3 -0
  84. package/dist/{constants-C6OOAW2P.js → constants-TR6ABVLJ.js} +4 -2
  85. package/dist/{custom-oclif-loader-4KICIK45.js → custom-oclif-loader-GZT2PBX4.js} +5 -4
  86. package/dist/data/default_setting_values.json +56 -0
  87. package/dist/data/filters.json +34 -2
  88. package/dist/data/latest.json +1 -1
  89. package/dist/data/objects.json +1644 -6
  90. package/dist/data/section.json +23 -1
  91. package/dist/data/setting.json +411 -2
  92. package/dist/data/shopify_system_translations.json +17 -4
  93. package/dist/data/tags.json +37 -0
  94. package/dist/{error-handler-UFJVKOUN.js → error-handler-H2JO5MGI.js} +11 -10
  95. package/dist/hooks/postrun.js +9 -8
  96. package/dist/hooks/prerun.js +9 -8
  97. package/dist/index.js +4317 -1907
  98. package/dist/{lib-6LEA5PZ7.js → lib-4WCTNKJK.js} +2 -2
  99. package/dist/lib-PPXZBVZX.js +6 -0
  100. package/dist/{local-EJNZF46J.js → local-PNRP6M3C.js} +5 -4
  101. package/dist/{morph-M726AOW6.js → morph-WDFBUXWF.js} +9 -9
  102. package/dist/{node-NWEY2HB4.js → node-FRKV7HYW.js} +16 -15
  103. package/dist/{node-package-manager-ZNXNWMEY.js → node-package-manager-XKAH57SF.js} +6 -5
  104. package/dist/{system-77XITWYJ.js → system-5YQPPSYJ.js} +7 -6
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/dist/{ui-KJYD6TV3.js → ui-TWN6LBOI.js} +5 -4
  107. package/dist/{workerd-CCFQNJAE.js → workerd-EK4JHLXE.js} +15 -14
  108. package/oclif.manifest.json +86 -88
  109. package/package.json +7 -7
@@ -119,6 +119,13 @@
119
119
  "required": ["type"],
120
120
  "additionalProperties": false,
121
121
  "properties": {
122
+ "static": {
123
+ "type": "boolean",
124
+ "description": "If the block is rendered statically or not"
125
+ },
126
+ "id": {
127
+ "type": "string"
128
+ },
122
129
  "type": {
123
130
  "type": "string",
124
131
  "description": "The block type."
@@ -129,7 +136,22 @@
129
136
  "blocks": {
130
137
  "$ref": "#/properties/presets/items/properties/blocks"
131
138
  }
132
- }
139
+ },
140
+ "allOf": [
141
+ {
142
+ "if": {
143
+ "properties": {
144
+ "static": {
145
+ "const": true
146
+ }
147
+ },
148
+ "required": ["static"]
149
+ },
150
+ "then": {
151
+ "required": ["id"]
152
+ }
153
+ }
154
+ ]
133
155
  }
134
156
  }
135
157
  }
@@ -22,6 +22,8 @@
22
22
  "inline_richtext",
23
23
  "link_list",
24
24
  "liquid",
25
+ "metaobject",
26
+ "metaobject_list",
25
27
  "number",
26
28
  "page",
27
29
  "paragraph",
@@ -31,6 +33,9 @@
31
33
  "range",
32
34
  "richtext",
33
35
  "select",
36
+ "style.layout_panel",
37
+ "style.size_panel",
38
+ "style.spacing_panel",
34
39
  "text",
35
40
  "text_alignment",
36
41
  "textarea",
@@ -111,6 +116,14 @@
111
116
  "if": { "required": ["type"], "properties": { "type": { "const": "liquid" } } },
112
117
  "then": { "$ref": "#/definitions/liquid" }
113
118
  },
119
+ {
120
+ "if": { "required": ["type"], "properties": { "type": { "const": "metaobject" } } },
121
+ "then": { "$ref": "#/definitions/metaobject" }
122
+ },
123
+ {
124
+ "if": { "required": ["type"], "properties": { "type": { "const": "metaobject_list" } } },
125
+ "then": { "$ref": "#/definitions/metaobject_list" }
126
+ },
114
127
  {
115
128
  "if": { "required": ["type"], "properties": { "type": { "const": "number" } } },
116
129
  "then": { "$ref": "#/definitions/number" }
@@ -143,6 +156,18 @@
143
156
  "if": { "required": ["type"], "properties": { "type": { "const": "select" } } },
144
157
  "then": { "$ref": "#/definitions/select" }
145
158
  },
159
+ {
160
+ "if": { "required": ["type"], "properties": { "type": { "const": "style.layout_panel" } } },
161
+ "then": { "$ref": "#/definitions/style.layout_panel" }
162
+ },
163
+ {
164
+ "if": { "required": ["type"], "properties": { "type": { "const": "style.size_panel" } } },
165
+ "then": { "$ref": "#/definitions/style.size_panel" }
166
+ },
167
+ {
168
+ "if": { "required": ["type"], "properties": { "type": { "const": "style.spacing_panel" } } },
169
+ "then": { "$ref": "#/definitions/style.spacing_panel" }
170
+ },
146
171
  {
147
172
  "if": { "required": ["type"], "properties": { "type": { "const": "text" } } },
148
173
  "then": { "$ref": "#/definitions/text" }
@@ -243,7 +268,7 @@
243
268
  "markdownDescription": "A setting of type `collection_list` outputs a collection picker field that's automatically populated with the available collections for the store. You can use these fields to capture multiple collections, such as a group of collections to feature on the homepage.\n\n---\n\n[Shopify reference](https://shopify.dev/docs/themes/architecture/settings/input-settings#collection_list)"
244
269
  },
245
270
  "limit": {
246
- "type": "number",
271
+ "type": "integer",
247
272
  "description": "The maximum number that the merchant can select. The default limit, and the maximum limit you can set, is 50."
248
273
  },
249
274
  "default": true,
@@ -512,6 +537,51 @@
512
537
  "additionalProperties": false
513
538
  },
514
539
 
540
+ "metaobject": {
541
+ "allOf": [{ "$ref": "#/definitions/inputSettingsStandardAttributes" }],
542
+ "properties": {
543
+ "type": {
544
+ "const": "metaobject",
545
+ "description": "A setting of type metaobject outputs a metaobject picker field that's automatically populated with the compatible metaobject entries for the store. You can use these fields to capture a metaobject entry selection for a known metaobject type.",
546
+ "markdownDescription": "A setting of type `metaobject` outputs a metaobject picker field that's automatically populated with the compatible metaobject entries for the store. You can use these fields to capture a metaobject entry selection for a known metaobject type. \n\n---\n\n[Shopify reference](https://shopify.dev/docs/themes/architecture/settings/input-settings#metaobject)"
547
+ },
548
+ "metaobject_type": {
549
+ "type": "string",
550
+ "description": "The metaobject type allowed by the picker."
551
+ },
552
+ "default": true,
553
+ "label": true,
554
+ "info": true,
555
+ "id": true
556
+ },
557
+ "required": ["metaobject_type"],
558
+ "additionalProperties": false
559
+ },
560
+
561
+ "metaobject_list": {
562
+ "allOf": [{ "$ref": "#/definitions/inputSettingsStandardAttributes" }],
563
+ "properties": {
564
+ "type": {
565
+ "const": "metaobject_list",
566
+ "description": "A setting of type metaobject_list outputs a metaobject picker field that's automatically populated with the compatible metaobject entries for the store. You can use these fields to capture multiple metaobject entry selections for a known metaobject type.",
567
+ "markdownDescription": "A setting of type `metaobject_list` outputs a metaobject picker field that's automatically populated with the compatible metaobject entries for the store. You can use these fields to capture multiple metaobject entry selections for a known metaobject type.\n\n---\n\n[Shopify reference](https://shopify.dev/docs/themes/architecture/settings/input-settings#metaobject_list)"
568
+ },
569
+ "metaobject_type": {
570
+ "type": "string",
571
+ "description": "The metaobject type allowed by the picker."
572
+ },
573
+ "limit": {
574
+ "type": "integer",
575
+ "description": "The maximum number that the merchant can select. The default limit, and the maximum limit you can set, is 50."
576
+ },
577
+ "default": true,
578
+ "label": true,
579
+ "info": true,
580
+ "id": true
581
+ },
582
+ "required": ["metaobject_type"],
583
+ "additionalProperties": false
584
+ },
515
585
  "number": {
516
586
  "allOf": [{ "$ref": "#/definitions/inputSettingsStandardAttributes" }],
517
587
  "properties": {
@@ -573,7 +643,7 @@
573
643
  "markdownDescription": "A setting of type `product_list` outputs a product picker field that's automatically populated with the available products for the store. You can use these fields to capture multiple products, such as a group of products to feature on the homepage.\n\n---\n\n[Shopify reference](https://shopify.dev/docs/themes/architecture/settings/input-settings#product_list)"
574
644
  },
575
645
  "limit": {
576
- "type": "number",
646
+ "type": "integer",
577
647
  "description": "The maximum number that the merchant can select. The default limit, and the maximum limit you can set, is 50."
578
648
  },
579
649
  "default": true,
@@ -682,6 +752,129 @@
682
752
  "additionalProperties": false
683
753
  },
684
754
 
755
+ "lengthPattern": {
756
+ "type": "string",
757
+ "pattern": "^[0-9]+(px|%)$"
758
+ },
759
+
760
+ "lengthAutoPattern": {
761
+ "type": "string",
762
+ "pattern": "^([0-9]+(px|%)|auto|fit-content)$"
763
+ },
764
+
765
+ "lengthNonePattern": {
766
+ "type": "string",
767
+ "pattern": "^([0-9]+(px|%)|none|fit-content)$"
768
+ },
769
+
770
+ "negativeLengthPattern": {
771
+ "type": "string",
772
+ "pattern": "^-?[0-9]+(px|%)$"
773
+ },
774
+
775
+ "numberPattern": {
776
+ "type": "string",
777
+ "pattern": "^[0-9]+$"
778
+ },
779
+
780
+ "negativeNumberPattern": {
781
+ "type": "string",
782
+ "pattern": "^-?[0-9]+$"
783
+ },
784
+
785
+ "style.layout_panel": {
786
+ "allOf": [{ "$ref": "#/definitions/inputSettingsStandardAttributes" }],
787
+ "properties": {
788
+ "type": {
789
+ "const": "style.layout_panel",
790
+ "description": "A setting of type style.layout_panel outputs style settings for layout.",
791
+ "markdownDescription": "A setting of type `style.layout_panel` outputs style settings for layout.\n\n---\n\n[Shopify reference](https://shopify.dev/docs/themes/architecture/settings/input-settings#style.layout_panel)"
792
+ },
793
+ "default": {
794
+ "allOf": [
795
+ {
796
+ "$ref": "#/definitions/style.flex_layout_properties"
797
+ }
798
+ ],
799
+ "properties": {
800
+ "@media (--mobile)": {
801
+ "type": "object",
802
+ "description": "Style settings for the mobile breakpoint",
803
+ "$ref": "#/definitions/style.flex_layout_properties",
804
+ "unevaluatedProperties": false
805
+ }
806
+ },
807
+ "unevaluatedProperties": false
808
+ },
809
+ "label": true,
810
+ "info": true,
811
+ "id": true
812
+ },
813
+ "additionalProperties": false
814
+ },
815
+
816
+ "style.size_panel": {
817
+ "allOf": [{ "$ref": "#/definitions/inputSettingsStandardAttributes" }],
818
+ "properties": {
819
+ "type": {
820
+ "const": "style.size_panel",
821
+ "description": "A setting of type style.size_panel outputs style settings for size.",
822
+ "markdownDescription": "A setting of type `style.size_panel` outputs style settings for size.\n\n---\n\n[Shopify reference](https://shopify.dev/docs/themes/architecture/settings/input-settings#style.size_panel)"
823
+ },
824
+ "default": {
825
+ "allOf": [
826
+ {
827
+ "$ref": "#/definitions/style.size_properties"
828
+ }
829
+ ],
830
+ "properties": {
831
+ "@media (--mobile)": {
832
+ "type": "object",
833
+ "description": "Style settings for the mobile breakpoint",
834
+ "$ref": "#/definitions/style.size_properties",
835
+ "unevaluatedProperties": false
836
+ }
837
+ },
838
+ "unevaluatedProperties": false
839
+ },
840
+ "label": true,
841
+ "info": true,
842
+ "id": true
843
+ },
844
+ "additionalProperties": false
845
+ },
846
+
847
+ "style.spacing_panel": {
848
+ "allOf": [{ "$ref": "#/definitions/inputSettingsStandardAttributes" }],
849
+ "properties": {
850
+ "type": {
851
+ "const": "style.spacing_panel",
852
+ "description": "A setting of type style.spacing_panel outputs style settings for spacing.",
853
+ "markdownDescription": "A setting of type `style.spacing_panel` outputs style settings for spacing.\n\n---\n\n[Shopify reference](https://shopify.dev/docs/themes/architecture/settings/input-settings#style.spacing_panel)"
854
+ },
855
+ "default": {
856
+ "allOf": [
857
+ {
858
+ "$ref": "#/definitions/style.spacing_properties"
859
+ }
860
+ ],
861
+ "properties": {
862
+ "@media (--mobile)": {
863
+ "type": "object",
864
+ "description": "Style settings for the mobile breakpoint",
865
+ "$ref": "#/definitions/style.spacing_properties",
866
+ "unevaluatedProperties": false
867
+ }
868
+ },
869
+ "unevaluatedProperties": false
870
+ },
871
+ "label": true,
872
+ "info": true,
873
+ "id": true
874
+ },
875
+ "additionalProperties": false
876
+ },
877
+
685
878
  "text": {
686
879
  "allOf": [{ "$ref": "#/definitions/inputSettingsStandardAttributes" }],
687
880
  "properties": {
@@ -891,6 +1084,222 @@
891
1084
  }
892
1085
  },
893
1086
 
1087
+ "style.flex_layout_properties": {
1088
+ "type": "object",
1089
+ "properties": {
1090
+ "flex-direction": {
1091
+ "type": "string",
1092
+ "description": "Determines how flex items are arranged within the flex container by specifying the main axis and direction. Valid values are row (default), row-reverse, column, and column-reverse.",
1093
+ "enum": ["row", "row-reverse", "column", "column-reverse"]
1094
+ },
1095
+ "flex-wrap": {
1096
+ "type": "string",
1097
+ "description": "Specifies whether flex items are confined to a single line or can flow onto multiple lines. If wrapping is allowed, it defines the stacking direction of the lines. Valid values are nowrap (default), wrap, and wrap-reverse.",
1098
+ "enum": ["nowrap", "wrap", "wrap-reverse"]
1099
+ },
1100
+ "row-gap": {
1101
+ "$ref": "#/definitions/lengthPattern",
1102
+ "description": "Defines the size of the gap between the rows of a wrapped flex container."
1103
+ },
1104
+ "column-gap": {
1105
+ "$ref": "#/definitions/lengthPattern",
1106
+ "description": "Defines the size of the gap between flex items."
1107
+ },
1108
+ "gap": {
1109
+ "type": "string",
1110
+ "description": "Shorthand for row-gap and column-gap. Defines the gaps between flex items.",
1111
+ "pattern": "^([0-9]+(px|%) ?){1,2}$"
1112
+ },
1113
+ "justify-content": {
1114
+ "type": "string",
1115
+ "description": "Defines the alignment of flex items along the main axis of the flex container. Valid values are flex-start (default), flex-end, start, end, left, right, center, space-between, space-around and space-evenly.",
1116
+ "enum": [
1117
+ "flex-start",
1118
+ "flex-end",
1119
+ "start",
1120
+ "end",
1121
+ "left",
1122
+ "right",
1123
+ "center",
1124
+ "space-between",
1125
+ "space-around",
1126
+ "space-evenly"
1127
+ ]
1128
+ },
1129
+ "align-items": {
1130
+ "type": "string",
1131
+ "description": "Defines the alignment of flex items along the cross axis of the flex container. Valid values are stretch (default), flex-start / start / self-start, flex-end / end / self-end, center and baseline.",
1132
+ "enum": [
1133
+ "stretch",
1134
+ "flex-start",
1135
+ "start",
1136
+ "self-start",
1137
+ "flex-end",
1138
+ "end",
1139
+ "self-end",
1140
+ "center",
1141
+ "baseline"
1142
+ ]
1143
+ },
1144
+ "align-content": {
1145
+ "type": "string",
1146
+ "description": "Defines the distribution of space between and around flex items along the cross axis. Valid values are stretch, flex-start / start, flex-end / end, center, space-between, space-around, and space-evenly.",
1147
+ "enum": [
1148
+ "stretch",
1149
+ "flex-start",
1150
+ "start",
1151
+ "flex-end",
1152
+ "end",
1153
+ "center",
1154
+ "space-between",
1155
+ "space-around",
1156
+ "space-evenly"
1157
+ ]
1158
+ }
1159
+ }
1160
+ },
1161
+
1162
+ "style.size_properties": {
1163
+ "type": "object",
1164
+ "properties": {
1165
+ "flex-grow": {
1166
+ "$ref": "#/definitions/numberPattern",
1167
+ "description": "Defines the flex grow factor of a flex item, determining how much of the available space in the flex container the item should occupy."
1168
+ },
1169
+ "flex-shrink": {
1170
+ "$ref": "#/definitions/numberPattern",
1171
+ "description": "Defines the flex shrink factor of a flex item, determining how much the item should reduce in size compared to the other flex items when space is insufficient."
1172
+ },
1173
+ "flex-basis": {
1174
+ "$ref": "#/definitions/lengthAutoPattern",
1175
+ "description": "Defines the initial main size of a flex item, determining the size of the content-box unless otherwise specified by box-sizing."
1176
+ },
1177
+ "width": {
1178
+ "$ref": "#/definitions/lengthAutoPattern",
1179
+ "description": "Defines the width of an item."
1180
+ },
1181
+ "min-width": {
1182
+ "$ref": "#/definitions/lengthAutoPattern",
1183
+ "description": "Defines the minimum width of an item."
1184
+ },
1185
+ "max-width": {
1186
+ "$ref": "#/definitions/lengthNonePattern",
1187
+ "description": "Defines the maximum width of an item."
1188
+ },
1189
+ "height": {
1190
+ "$ref": "#/definitions/lengthAutoPattern",
1191
+ "description": "Defines the height of an item."
1192
+ },
1193
+ "min-height": {
1194
+ "$ref": "#/definitions/lengthAutoPattern",
1195
+ "description": "Defines the minimum height of an item."
1196
+ },
1197
+ "max-height": {
1198
+ "$ref": "#/definitions/lengthNonePattern",
1199
+ "description": "Defines the maximum height of an item."
1200
+ }
1201
+ }
1202
+ },
1203
+
1204
+ "style.spacing_properties": {
1205
+ "type": "object",
1206
+ "properties": {
1207
+ "padding": {
1208
+ "description": "Shorthand that defines the padding on all four sides of an element.",
1209
+ "pattern": "^([0-9]+(px|%) ?){1,4}$"
1210
+ },
1211
+ "padding-top": {
1212
+ "description": "Defines the padding on the top side of an element.",
1213
+ "$ref": "#/definitions/lengthPattern"
1214
+ },
1215
+ "padding-right": {
1216
+ "description": "Defines the padding on the right side of an element.",
1217
+ "$ref": "#/definitions/lengthPattern"
1218
+ },
1219
+ "padding-bottom": {
1220
+ "description": "Defines the padding on the bottom side of an element.",
1221
+ "$ref": "#/definitions/lengthPattern"
1222
+ },
1223
+ "padding-left": {
1224
+ "description": "Defines the padding on the left side of an element.",
1225
+ "$ref": "#/definitions/lengthPattern"
1226
+ },
1227
+ "padding-block-start": {
1228
+ "description": "Defines the logical block start padding of an element, translating to physical padding based on the element's writing mode, text direction, and text orientation.",
1229
+ "$ref": "#/definitions/lengthPattern"
1230
+ },
1231
+ "padding-block-end": {
1232
+ "description": "Defines the logical block end padding of an element, translating to physical padding based on the element's writing mode, text direction, and text orientation.",
1233
+ "$ref": "#/definitions/lengthPattern"
1234
+ },
1235
+ "padding-block": {
1236
+ "type": "string",
1237
+ "description": "Shorthand for padding-block-start and padding-block end. Defines the logical block start and end padding of an element, translating to physical padding based on the element's writing mode, text direction, and text orientation.",
1238
+ "pattern": "^([0-9]+(px|%) ?){1,2}$"
1239
+ },
1240
+ "padding-inline-start": {
1241
+ "description": "Defines the logical inline start padding of an element, translating to physical padding based on the element's writing mode, text direction, and text orientation.",
1242
+ "$ref": "#/definitions/lengthPattern"
1243
+ },
1244
+ "padding-inline-end": {
1245
+ "description": "Defines the logical inline end padding of an element, translating to physical padding based on the element's writing mode, text direction, and text orientation.",
1246
+ "$ref": "#/definitions/lengthPattern"
1247
+ },
1248
+ "padding-inline": {
1249
+ "type": "string",
1250
+ "description": "Shorthand that defines the logical inline start and end padding of an element, translating to physical padding based on the element's writing mode, text direction, and text orientation.",
1251
+ "pattern": "^([0-9]+(px|%) ?){1,2}$"
1252
+ },
1253
+ "margin": {
1254
+ "type": "string",
1255
+ "description": "Shorthand that defines the margin on all four sides of an element.",
1256
+ "pattern": "^(-?[0-9]+(px|%) ?){1,4}$"
1257
+ },
1258
+ "margin-top": {
1259
+ "description": "Defines the margin on the top side of an element.",
1260
+ "$ref": "#/definitions/negativeLengthPattern"
1261
+ },
1262
+ "margin-right": {
1263
+ "description": "Defines the margin on the right side of an element.",
1264
+ "$ref": "#/definitions/negativeLengthPattern"
1265
+ },
1266
+ "margin-bottom": {
1267
+ "description": "Defines the margin on the bottom side of an element.",
1268
+ "$ref": "#/definitions/negativeLengthPattern"
1269
+ },
1270
+ "margin-left": {
1271
+ "description": "Defines the margin on the left side of an element.",
1272
+ "$ref": "#/definitions/negativeLengthPattern"
1273
+ },
1274
+ "margin-block-start": {
1275
+ "description": "Defines the logical block start margin of an element, translating to physical margin based on the element's writing mode, text direction, and text orientation.",
1276
+ "$ref": "#/definitions/negativeLengthPattern"
1277
+ },
1278
+ "margin-block-end": {
1279
+ "description": "Defines the logical block end margin of an element, translating to physical margin based on the element's writing mode, text direction, and text orientation.",
1280
+ "$ref": "#/definitions/negativeLengthPattern"
1281
+ },
1282
+ "margin-block": {
1283
+ "type": "string",
1284
+ "description": "Shorthand that defines the logical block start and end margins of an element, translating to physical margin based on the element's writing mode, text direction, and text orientation.",
1285
+ "pattern": "^(-?[0-9]+(px|%) ?){1,2}$"
1286
+ },
1287
+ "margin-inline-start": {
1288
+ "description": "Defines the logical inline start margin of an element, translating to physical margin based on the element's writing mode, text direction, and text orientation.",
1289
+ "$ref": "#/definitions/negativeLengthPattern"
1290
+ },
1291
+ "margin-inline-end": {
1292
+ "description": "Defines the logical inline end margin of an element, translating to physical margin based on the element's writing mode, text direction, and text orientation.",
1293
+ "$ref": "#/definitions/negativeLengthPattern"
1294
+ },
1295
+ "margin-inline": {
1296
+ "type": "string",
1297
+ "description": "Shorthand that defines both the logical inline start and end margins of an element, translating to physical margin based on the element's writing mode, text direction, and text orientation.",
1298
+ "pattern": "^(-?[0-9]+(px|%) ?){1,2}$"
1299
+ }
1300
+ }
1301
+ },
1302
+
894
1303
  "options": {
895
1304
  "description": "Takes an array of `value`/`label` definitions.",
896
1305
  "type": "array",
@@ -39,6 +39,7 @@
39
39
  "shopify.checkout.general.forwarding_indicator.external_and_new_window": "Opens external website in a new window.",
40
40
  "shopify.checkout.general.checkout_context.step_one": "%{shop_name} - Checkout",
41
41
  "shopify.checkout.general.tooltip_accessibility_label": "More information",
42
+ "shopify.checkout.general.qr_code": "QR code",
42
43
  "shopify.checkout.general.errors.only_empty_terms_accepted": "This policy only accepts empty terms.",
43
44
  "shopify.checkout.general.errors.session_identifier_not_unique_error": "Something went wrong with your order, please try checking out again.",
44
45
  "shopify.checkout.general.errors.line_item_limit_reached": "The maximum number of line items has been reached.",
@@ -193,6 +194,7 @@
193
194
  "shopify.checkout.general.errors.captcha.token_invalid": "The provided captcha token was invalid. Complete a new captcha to continue checkout.",
194
195
  "shopify.checkout.general.errors.captcha.token_not_valid_for_session": "The provided captcha cannot be used with this checkout.",
195
196
  "shopify.checkout.general.errors.fx_reconciliation_override.shop_currency_mismatch": "The amount received must be in the store currency.",
197
+ "shopify.checkout.general.errors.checkout_source.revoked": "This checkout is no longer available.",
196
198
  "shopify.checkout.general.full_price": "Full price:",
197
199
  "shopify.checkout.general.title": "Checkout - {{shopName}}",
198
200
  "shopify.checkout.general.full_title": "{{pageTitle}} - {{shopName}} - Checkout",
@@ -259,6 +261,9 @@
259
261
  "shopify.checkout.general.map.cluster_title.one": "Cluster of {{number}} marker",
260
262
  "shopify.checkout.general.map.cluster_title.other": "Cluster of {{number}} markers",
261
263
  "shopify.checkout.general.sheet.expand": "Expand",
264
+ "shopify.checkout.general.dropzone.add_file": "Add file",
265
+ "shopify.checkout.general.dropzone.invalid_file_type": "File type not supported",
266
+ "shopify.checkout.general.dropzone.dragged_over": "Drop file to upload",
262
267
  "shopify.checkout.contact.title": "Information",
263
268
  "shopify.checkout.contact.address_title": "Address",
264
269
  "shopify.checkout.contact.shipping_used_as_billing_notice": "This will also be used as your billing address for this order.",
@@ -306,12 +311,16 @@
306
311
  "shopify.checkout.contact.phone_placeholder": "Phone",
307
312
  "shopify.checkout.contact.phone_tooltip": "In case we need to contact you about your order",
308
313
  "shopify.checkout.contact.zip_code_label": "ZIP code",
314
+ "shopify.checkout.contact.optional_zip_code_label": "ZIP code (optional)",
309
315
  "shopify.checkout.contact.zip_code_placeholder": "ZIP code",
310
316
  "shopify.checkout.contact.postal_code_label": "Postal code",
317
+ "shopify.checkout.contact.optional_postal_code_label": "Postal code (optional)",
311
318
  "shopify.checkout.contact.postal_code_placeholder": "Postal code",
312
319
  "shopify.checkout.contact.postcode_label": "Postcode",
320
+ "shopify.checkout.contact.optional_postcode_label": "Postcode (optional)",
313
321
  "shopify.checkout.contact.postcode_placeholder": "Postcode",
314
322
  "shopify.checkout.contact.pincode_label": "PIN code",
323
+ "shopify.checkout.contact.optional_pincode_label": "PIN code (optional)",
315
324
  "shopify.checkout.contact.pincode_placeholder": "PIN code",
316
325
  "shopify.checkout.contact.civic_number_warning": "Add a house number if you have one",
317
326
  "shopify.checkout.contact.optional_last_name_label": "Last name (optional)",
@@ -326,7 +335,7 @@
326
335
  "shopify.checkout.delivery_options.ship_to_address": "Ship to address",
327
336
  "shopify.checkout.delivery_options.shipping_address": "Shipping address",
328
337
  "shopify.checkout.delivery_options.pick_up": "Pick up",
329
- "shopify.checkout.delivery_options.pick_up_from_store": "Pick up in store",
338
+ "shopify.checkout.delivery_options.pick_up_from_store": "Pickup in store",
330
339
  "shopify.checkout.delivery_options.pick_up_locations": "Store locations",
331
340
  "shopify.checkout.delivery_options.pick_up_in_one_hour": "Usually ready in 1 hour",
332
341
  "shopify.checkout.delivery_options.pick_up_in_two_hours": "Usually ready in 2 hours",
@@ -451,12 +460,13 @@
451
460
  "shopify.checkout.order_summary.cart_does_not_meet_discount_requirements_notice": "<strong style=\"text-transform:uppercase\">%{code}<\/strong> discount code isn’t valid for the items in your cart",
452
461
  "shopify.checkout.order_summary.discount_requires_customer_notice": "Enter your shipping information to apply the <strong style=\"text-transform:uppercase\">%{code}<\/strong> discount code",
453
462
  "shopify.checkout.order_summary.customer_does_not_meet_discount_requirements_notice": "<strong style=\"text-transform:uppercase\">%{code}<\/strong> discount code isn’t available to you right now",
463
+ "shopify.checkout.order_summary.eligible_customer_missing_notice": "<strong style=\"text-transform:uppercase\">%{code}<\/strong> discount code requires eligible customer",
454
464
  "shopify.checkout.order_summary.shipping_information_does_not_meet_discount_requirements_notice": "<strong style=\"text-transform:uppercase\">%{code}<\/strong> discount code isn’t available for your shipping address",
455
465
  "shopify.checkout.order_summary.customer_already_used_once_per_customer_discount_notice": "The <strong style=\"text-transform:uppercase\">%{code}<\/strong> discount code has already been used",
456
466
  "shopify.checkout.order_summary.subtotal_label": "Subtotal",
457
467
  "shopify.checkout.order_summary.shipping_label": "Shipping",
458
- "shopify.checkout.order_summary.pickup_label": "Pick up in store",
459
- "shopify.checkout.order_summary.no_pickup_location": "Pickup isn't available for this order. Choose another delivery method.",
468
+ "shopify.checkout.order_summary.pickup_label": "Pickup in store",
469
+ "shopify.checkout.order_summary.no_pickup_location": "There are no pickup locations available.",
460
470
  "shopify.checkout.order_summary.tip_label": "Tip",
461
471
  "shopify.checkout.order_summary.calculating_shipping": "Calculating…",
462
472
  "shopify.checkout.order_summary.calculating": "Calculating…",
@@ -1056,6 +1066,7 @@
1056
1066
  "shopify.checkout.redeemable_errors.gift_card.currency_mismatch": "Only gift cards in %{shop_currency} are accepted",
1057
1067
  "shopify.checkout.redeemable_errors.gift_card.generic": "The gift card could not be added to checkout",
1058
1068
  "shopify.checkout.redeemable_errors.gift_card.throttle_limit_exceeded": "You have exceeded the maximum number of attempts. Try again later.",
1069
+ "shopify.checkout.redeemable_errors.gift_card.no_longer_available": "This gift card can no longer be used with this checkout",
1059
1070
  "shopify.checkout.payment_errors.amount_too_small": "The minimum payment amount must be higher than $0.50 USD. Please try again with a higher amount.",
1060
1071
  "shopify.checkout.payment_errors.method_not_available": "The requested payment method is not available.",
1061
1072
  "shopify.checkout.payment_errors.available_methods_updated": "Available payment methods have been updated.",
@@ -1430,7 +1441,7 @@
1430
1441
  "shopify.checkout.review.blocks.change_shipping_address_link_label": "Change shipping address",
1431
1442
  "shopify.checkout.review.blocks.change_shipping_method_link_label": "Change shipping method",
1432
1443
  "shopify.checkout.review.blocks.change_payment_method_link_label": "Change payment method",
1433
- "shopify.checkout.review.blocks.pick_up_in_store_shipping_method_html": "Pick up in store · %{location_name}",
1444
+ "shopify.checkout.review.blocks.pick_up_in_store_shipping_method_html": "Pickup in store · %{location_name}",
1434
1445
  "shopify.checkout.review.blocks.purchase_order_number_title": "PO number",
1435
1446
  "shopify.checkout.review.blocks.change_purchase_order_number_label": "Change PO number",
1436
1447
  "shopify.checkout.review.blocks.change_delivery_method_link_label": "Change delivery method",
@@ -1611,6 +1622,7 @@
1611
1622
  "shopify.checkout.marketplaces.legal_notice.separator": " ",
1612
1623
  "shopify.checkout.marketplaces.legal_notice.link_label": "{{partnerDisplayName}} Terms and Conditions",
1613
1624
  "shopify.checkout.online_store_chat.title": "Questions? Chat with us",
1625
+ "shopify.checkout.local_pickup.location_address_search_label": "Address",
1614
1626
  "shopify.checkout.local_pickup.location_information.one": "There is %{count} store with stock close to %{address}",
1615
1627
  "shopify.checkout.local_pickup.location_information.other": "There are %{count} stores with stock close to %{address}",
1616
1628
  "shopify.checkout.local_pickup.toggle_location": "Change my location",
@@ -1682,6 +1694,7 @@
1682
1694
  "shopify.checkout.wallets.errors.select_different_shipping_address_to_resolve_errors": "Your shipping address is invalid. Select a different address or use a new one.",
1683
1695
  "shopify.checkout.note.length_exceeds_maximum": "Reduce the size of the note to 5000 or fewer characters.",
1684
1696
  "shopify.checkout.one.errors.merchandise.gift_card_price_must_be_greater_than_zero": "Gift card price must be greater than 0.",
1697
+ "shopify.checkout.one.errors.merchandise.gift_card_price_must_not_exceed_limit": "Gift card price must not exceed %{gift_card_limit}.",
1685
1698
  "shopify.checkout.one.errors.merchandise.subtotal_limit_reached": "The maximum value of line items has been reached.",
1686
1699
  "shopify.pagination.previous": "Previous",
1687
1700
  "shopify.pagination.next": "Next",
@@ -1,4 +1,41 @@
1
1
  [
2
+ {
3
+ "category": "theme",
4
+ "deprecated": false,
5
+ "deprecation_reason": "",
6
+ "description": "&lt;aside class=\"note beta\"&gt;\n &lt;h4&gt;Developer preview&lt;/h4&gt;\n &lt;p&gt;This tag is only available as part of the &lt;a href=\"/storefronts/themes/architecture/blocks/theme-blocks/developer-preview\"&gt;Theme blocks developer preview&lt;/a&gt;.&lt;/p&gt;\n&lt;/aside&gt;\n\nThe content_for tag requires a type to indicate whether it will render a single static block or a number of theme blocks defined in the JSON templates or section groups.\n\n- [`blocks`](/docs/api/liquid/tags/content_for#content_for-blocks)\n- [`block`](/docs/api/liquid/tags/content_for#content_for-block)",
7
+ "parameters": [
8
+
9
+ ],
10
+ "summary": "Creates a surface for rendering a block or blocks.",
11
+ "name": "content_for",
12
+ "syntax": "{% content_for 'blocks' %}\n{% content_for 'block', type: \"\", id: \"\" %}",
13
+ "syntax_keywords": [
14
+
15
+ ],
16
+ "examples": [
17
+ {
18
+ "name": "blocks",
19
+ "description": "Renders block elements within sections or other blocks as configured in the JSON template or section groups. See [theme blocks](/themes/architecture/blocks/theme-blocks) to see how to create theme blocks that can be used this way.\n",
20
+ "syntax": "{% content_for \"blocks\" %}\n",
21
+ "path": "/",
22
+ "raw_liquid": "",
23
+ "parameter": false,
24
+ "display_type": "text",
25
+ "show_data_tab": true
26
+ },
27
+ {
28
+ "name": "block",
29
+ "description": "Renders a static theme block within `sections` or `theme blocks`.\n",
30
+ "syntax": "{% content_for \"block\", type: \"button\", id: \"static-block-1\" %}\n",
31
+ "path": "/",
32
+ "raw_liquid": "",
33
+ "parameter": false,
34
+ "display_type": "text",
35
+ "show_data_tab": true
36
+ }
37
+ ]
38
+ },
2
39
  {
3
40
  "category": "html",
4
41
  "deprecated": false,