From 98624954d4add7883af4df611bc352e2ed7aadfd Mon Sep 17 00:00:00 2001 From: Nikolas Savvidis Date: Wed, 26 Jul 2023 05:07:24 +0200 Subject: [PATCH] fixes #161 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Miguel Ángel --- schema/shopify-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/schema/shopify-schema.json b/schema/shopify-schema.json index d9a90fe1..34781114 100644 --- a/schema/shopify-schema.json +++ b/schema/shopify-schema.json @@ -1 +1 @@ -{"title":"JSON Schema for Shopify Settings Schema","$schema":"http://json-schema.org/draft-07/schema#","definitions":{"theme":{"type":"object","required":["name","theme_name","theme_author","theme_version","theme_documentation_url","theme_support_email"],"defaultSnippets":[{"label":"Theme settings","description":"Required theme settings","body":{"name":"$1","theme_name":"$2","theme_author":"$3","theme_version":"$4","theme_documentation_url":"$5","theme_support_email":"$6"}}],"properties":{"name":{"type":"string"},"theme_name":{"type":"string","description":"Name of this Theme"},"theme_author":{"type":"string","description":"The author of this theme"},"theme_version":{"type":"string","description":"Theme version number, eg: 1.0.0"},"theme_documentation_url":{"type":"string","description":"Documentation URL associated with this theme (if applicable)"},"theme_support_email":{"type":"string","description":"The contact theme support email address"}}},"content":{"required":["content"],"type":"object","properties":{"content":{"type":["string"],"title":"Content","description":"Textual content for the header title."},"info":{"title":"Info","description":"Addition Information"}}},"placeholder":{"type":"object","properties":{"placeholder":{"title":"Placeholder","description":"A placeholder value","default":"","oneOf":[{"type":"string"}]}}},"limit":{"type":"object","properties":{"limit":{"type":"number","title":"Limit","description":"The maximum number of items that the merchant can select. The default limit, and the maximum limit you can set, is 50.","maximum":50}}},"select":{"required":["options"],"properties":{"options":{"type":"array","title":"Select Options","description":"Takes an array of value/label definitions for each option in the drop-down","items":{"type":"object","required":["value","label"],"additionalProperties":false,"defaultSnippets":[{"label":"Options","description":"Takes an array of value/label definitions for each option in the drop-down.","body":{"value":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2"}},{"label":"Options with group","description":"Takes an array of value/label definitions for each option in the drop-down with an optional attribute you can add to each option to create option groups in the drop-down","body":{"value":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","group":"$3"}}],"properties":{"value":{"type":"string","description":"The value of the select options. This will be used as the output"},"label":{"title":"Label","description":"A label to render to the theme editor","oneOf":[{"type":"string"}]},"group":{"title":"Group","description":"An optional attribute you can add to each option to create option groups in the drop-down.","oneOf":[{"type":"string"}]}}}}}},"range":{"required":["min","max","step"],"type":"object","properties":{"step":{"type":"number","title":"Step","minimum":0.1,"default":1,"description":"The step refers to the step count for the slider values. For example, if you set the step to 5, then the range slider will count by fives. By default, the step is set to 1."},"min":{"type":"number","title":"Min","description":"The minimum number of steps"},"max":{"type":"number","title":"Max","description":"The maximum number of steps"},"unit":{"title":"Unit","description":"The unit of measure label. For example, you could use sec for seconds, or px for pixels.","default":"","oneOf":[{"type":"string"}]}}},"radio":{"required":["options"],"type":"object","properties":{"options":{"type":"array","title":"Radio Options","description":"Takes an array of value/label definitions","items":{"type":"object","required":["value","label"],"additionalProperties":false,"defaultSnippets":[{"label":"Radio Options","description":"Value and label definitions","body":{"value":"$1","label":"${2/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$3"}}],"properties":{"value":{"type":"string"},"label":{"title":"Label","description":"Radio Label","oneOf":[{"type":"string"}]}}}}}},"color_scheme_group":{"required":["min","max","step"],"type":"object","properties":{"definition":{"type":"array","items":{"type":"object","defaultSnippets":[{"label":"Header","description":"A setting of type `header` outputs a header element to help you better organize your input settings.\n","body":{"type":"header","content":"$1","info":"$2"}},{"label":"Color","description":"A setting of type `color` outputs a color picker field. You can use these fields to capture a color selection for various theme elements, such as the body text color.\n\nWhen accessing the value of a color type setting, data is returned as one of the following:\n\n- A [color object](https://shopify.dev/api/liquid/objects/color).\n- `blank`, if no selection has been made.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color)\n","body":{"id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"Color Background","description":"A setting of type `color_background` outputs a text field for entering [CSS background](https://developer.mozilla.org/en-US/docs/Web/CSS/background) properties. You can use these fields to capture background settings for various theme elements, such as the store background.\n\n> **CAUTION**\n>\n> A Settings of type `color_background` do not support image related background properties.\n\nWhen accessing the value of a `color_background` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color_background)\n","body":{"id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}}],"properties":{"type":{"type":"string","title":"Type","description":"Name of the type of setting.","oneOf":[{"enum":["header"],"markdownDescription":"A setting of type `header` outputs a header element to help you better organize your input settings.\n"},{"enum":["color"],"title":"Multi-line text areas","markdownDescription":"A setting of type `color` outputs a color picker field. You can use these fields to capture a color selection for various theme elements, such as the body text color.\n\nWhen accessing the value of a color type setting, data is returned as one of the following:\n\n- A [color object](https://shopify.dev/api/liquid/objects/color).\n- `blank`, if no selection has been made.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color)\n"},{"enum":["color_background"],"title":"Image Picker","markdownDescription":"A setting of type `color_background` outputs a text field for entering [CSS background](https://developer.mozilla.org/en-US/docs/Web/CSS/background) properties. You can use these fields to capture background settings for various theme elements, such as the store background.\n\n> **CAUTION**\n>\n> A Settings of type `color_background` do not support image related background properties.\n\nWhen accessing the value of a `color_background` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color_background)\n"}]}},"if":{"required":["type"],"type":"object","properties":{"type":{"enum":["color","color_background"]}}},"then":{"required":["id","label"],"properties":{"id":{"type":"string","default":"","markdownDescription":"The setting ID, which is used to access the setting value. The id is exposed to the liquid templates via the settings object. It must only contain alphanumeric characters, underscores, and dashes.\n\n> **REQUIRED**\n>\n> The `id` attribute is required for all settings.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n"},"label":{"markdownDescription":"The setting label, which will show in the theme editor.\n\n> **REQUIRED**\n>\n> The `label` attribute is required for all settings.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n","default":"","oneOf":[{"type":"string"}]},"default":{"type":["string","number","boolean"],"default":"","markdownDescription":"The default value for the setting.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n"},"info":{"markdownDescription":"An option for informational text about the setting. Use sparingly, as it's better to use only informative labels whenever you can.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n","default":"","oneOf":[{"type":"string"}]}}},"else":{"if":{"required":["type"],"type":"object","properties":{"type":{"enum":["header"]}}},"then":{"allOf":[{"$ref":"#/definitions/content"}]}}}},"role":{"type":"object","additionalProperties":true,"markdownDescription":"The `role` field outputs a color scheme preview. The color scheme previews are visible to merchants anywhere in the editor where they might pick a color scheme. You can assign roles to your color scheme definitions to map the color scheme to the previews. For example you can assign `role.background` to the `Background` definition. Role uses the following standardized mapping of the `color_scheme_group` definition to the color scheme preview.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"}}},"settings":{"type":"array","markdownDescription":"You can create section specific [settings](https://shopify.dev/themes/architecture/settings/input-settings) to allow merchants to customize the section with the `settings` object:\n\n**Example**\n\n```liquid\n\n{% schema %}\n{\n \"name\": \"Slideshow\",\n \"tag\": \"section\",\n \"class\": \"slideshow\",\n \"settings\": [\n {\n \"type\": \"text\",\n \"id\": \"header\",\n \"label\": \"Header\"\n }\n ]\n}\n{% endschema %}\n\n```\n\n**[Input Settings](https://shopify.dev/themes/architecture/settings/input-settings)**\n\nInput settings are generally composed of [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes), and there are two categories:\n\n- [Basic input settings](https://shopify.dev/themes/architecture/settings/input-settings#basic-input-settings)\n- [Specialized input settings](https://shopify.dev/themes/architecture/settings/input-settings#specialized-input-settings)\n\nTo learn how to access the values of these settings for use in your theme, refer to the [settings overview](https://shopify.dev/themes/architecture/settings#access-settings).\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings)\n","items":{"type":"object","required":["type"],"defaultSnippets":[{"label":"Text","markdownDescription":"A setting of type `text` outputs a single-line text field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `text` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics#types).\n- An [empty object](https://shopify.dev/api/liquid/basics#empty), if nothing has been entered.\n\n#\n\n---\n\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#text)\n\n\n","body":{"type":"text","id":"$2","label":"${2/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$3","${4|default,placeholder,info|}":"$5"}},{"label":"Textarea","markdownDescription":"A setting of type `textarea` outputs a multi-line text field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `textarea` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics#types).\n- An [empty object](https://shopify.dev/api/liquid/basics#empty), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#textarea)\n\n\n","body":{"type":"text","id":"$2","label":"${2/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$3","${4|default,placeholder,info|}":"$5"}},{"label":"Number","markdownDescription":"A setting of type `number` outputs a single number field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `number` type setting, data is returned as one of the following:\n\n- A [number](https://shopify.dev/api/liquid/basics/types#number).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#number)\n\n\n","body":{"type":"number","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"^$3","${4|placeholder,info|}":"$5"}},{"label":"Checkbox","markdownDescription":"A setting of type `checkbox` outputs a checkbox field. These fields can be used for toggling features on and off, such as whether to show an announcement bar.\n\nWhen accessing the value of a `checkbox` type setting, data is returned as a [boolean](https://shopify.dev/api/liquid/basics/types#boolean).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the value is false by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#checkbox)\n\n","body":{"type":"checkbox","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"^${3|true,false|}","info":"$4"}},{"label":"Select","markdownDescription":"A setting of type `select` outputs a drop-down selector field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `select` type setting, data is returned as a [string](https://shopify.dev/api/liquid/basics/types#string).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the first option is selected by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#select)\n\n\n","body":{"type":"select","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"$4","info":"$5","options":["^$3"]}},{"label":"Radio","markdownDescription":"A setting of type `radio` outputs a radio option field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting, `radio` type settings have a required options attribute that accepts an array of value and label definitions.\n\nYou can use these fields to capture a multi-option selection, such as the alignment of a header logo.\n\nWhen accessing the value of a radio type setting, data is returned as a [string](https://shopify.dev/api/liquid/basics/types#string).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the first option is selected by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#radio)\n\n","body":{"type":"radio","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"$4","info":"$5","options":["^$3"]}},{"label":"Range","markdownDescription":"A setting of type `range` outputs a range slider field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `range` type setting, data is returned as a [number](https://shopify.dev/api/liquid/basics/types#number).\n\n> **CAUTION**\n>\n> The `default` attribute is required. The `min`, `max`, `step`, and `default` attributes can't be string values. Failing to adhere results in an error.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#range)\n\n\n","body":{"type":"range","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","min":"^$3","max":"^$4","step":"^$5","unit":"$6","default":"^$7"}},{"label":"Color Scheme Group","markdownDescription":"A setting of type `color_scheme_group` outputs a color scheme which is composed of the following input setting types:\n\n- header\n- color\n- color_background\n\nColor schemes can be added only in `settings_schema.json`.\n","body":{"type":"color_scheme_group","id":"$1","definition":[],"role":{}}}],"properties":{"type":{"type":"string","title":"Type","description":"Name of the type of setting.","oneOf":[{"enum":["text"],"title":"Single-line text fields","markdownDescription":"A setting of type `text` outputs a single-line text field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `text` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics#types).\n- An [empty object](https://shopify.dev/api/liquid/basics#empty), if nothing has been entered.\n\n#\n\n---\n\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#text)\n\n\n"},{"enum":["textarea"],"title":"Multi-line text areas","markdownDescription":"A setting of type `textarea` outputs a multi-line text field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `textarea` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics#types).\n- An [empty object](https://shopify.dev/api/liquid/basics#empty), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#textarea)\n\n\n"},{"enum":["image_picker"],"title":"Image Picker","markdownDescription":"A setting of type `image_picker` outputs an image picker field that's automatically populated with the available images from the [Files](https://help.shopify.com/en/manual/shopify-admin/productivity-tools/file-uploads) section of Shopify admin, and has the option to upload new images. Merchants also have an opportunity to enter alt text and select a [focal point](https://shopify.dev/themes/architecture/settings/input-settings#image-focal-points) for their image.\n\nYou can use these fields to capture an image selection, such as logos, favicons, and slideshow images.\n\nWhen accessing the value of an `image_picker` type setting, data is returned as one of the following:\n\n- An [image object](https://shopify.dev/api/liquid/objects/image).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if either no selection has been made or the selection no longer exists.\n\n> **NOTE**\n>\n> Settings of type `image_picker` are not updated when switching presets. `image_picker` settings also don't support the `default` attribute.\n\n**[Image focal points](https://shopify.dev/themes/architecture/settings/input-settings#image-focal-points)**\n\nImages selected using an `image_picker` setting support focal points. A focal point is a position in an image that the merchant wants to remain in view as the image is cropped and adjusted by the theme. Focal points can be set in the theme editor `image_picker` setting, or from the Files page.\n\nTo make sure that your theme respects the focal point of the image, do the following:\n\n- Render your images using the [image_tag](https://shopify.dev/api/liquid/filters/image_tag) filter.\n- Consider positioning images within containers using `object-fit: cover`.\n\nUsing `image_tag`, if a focal point was provided, then an `object-position` style is added to the image tag, with the value set to the focal point.\n\n**Input**\n\n```liquid\n\n{{ section.settings.image_with_text_image | image_url: width: 1500 | image_tag }}\n\n```\n\n**Output**\n\n```html\n\n\"My\n\n\n```\n\nIf you need override the `object-position` style for a specific use case, then pass a style: `object-position: inherit;` property to the `image_tag` filter.\n\n> **TIP**\n>\n> You can also access the focal point data using [image.presentation.focal_point](https://shopify.dev/api/liquid/objects/image_presentation#image_presentation-focal_point).\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#image_picker)\n"},{"enum":["radio"],"title":"Radio Button","markdownDescription":"A setting of type `radio` outputs a radio option field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting, `radio` type settings have a required options attribute that accepts an array of value and label definitions.\n\nYou can use these fields to capture a multi-option selection, such as the alignment of a header logo.\n\nWhen accessing the value of a radio type setting, data is returned as a [string](https://shopify.dev/api/liquid/basics/types#string).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the first option is selected by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#radio)\n\n"},{"enum":["select"],"title":"Selection drop-down","markdownDescription":"A setting of type `select` outputs a drop-down selector field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `select` type setting, data is returned as a [string](https://shopify.dev/api/liquid/basics/types#string).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the first option is selected by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#select)\n\n\n"},{"enum":["checkbox"],"title":"Checkbox","markdownDescription":"A setting of type `checkbox` outputs a checkbox field. These fields can be used for toggling features on and off, such as whether to show an announcement bar.\n\nWhen accessing the value of a `checkbox` type setting, data is returned as a [boolean](https://shopify.dev/api/liquid/basics/types#boolean).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the value is false by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#checkbox)\n\n"},{"enum":["number"],"title":"Number","markdownDescription":"A setting of type `number` outputs a single number field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `number` type setting, data is returned as one of the following:\n\n- A [number](https://shopify.dev/api/liquid/basics/types#number).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#number)\n\n\n"},{"enum":["range"],"title":"Range","markdownDescription":"A setting of type `range` outputs a range slider field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `range` type setting, data is returned as a [number](https://shopify.dev/api/liquid/basics/types#number).\n\n> **CAUTION**\n>\n> The `default` attribute is required. The `min`, `max`, `step`, and `default` attributes can't be string values. Failing to adhere results in an error.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#range)\n\n\n"},{"enum":["color_scheme_group"],"title":"Color Picker","markdownDescription":"A setting of type `color_scheme_group` outputs a color scheme which is composed of the following input setting types:\n\n- header\n- color\n- color_background\n\nColor schemes can be added only in `settings_schema.json`.\n"}]}},"if":{"required":["type"],"type":"object","properties":{"type":{"enum":["text","textarea","radio","select","checkbox","number","range","color_scheme_group"]}}},"then":{"required":["id","label"],"properties":{"id":{"type":"string","default":"","markdownDescription":"The setting ID, which is used to access the setting value. The id is exposed to the liquid templates via the settings object. It must only contain alphanumeric characters, underscores, and dashes.\n\n> **REQUIRED**\n>\n> The `id` attribute is required for all settings.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n"},"label":{"markdownDescription":"The setting label, which will show in the theme editor.\n\n> **REQUIRED**\n>\n> The `label` attribute is required for all settings.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n","default":"","oneOf":[{"type":"string"}]},"default":{"type":["string","number","boolean"],"default":"","markdownDescription":"The default value for the setting.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n"},"info":{"markdownDescription":"An option for informational text about the setting. Use sparingly, as it's better to use only informative labels whenever you can.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n","default":"","oneOf":[{"type":"string"}]}},"allOf":[{"if":{"required":["type"],"type":"object","properties":{"type":{"const":"range"}}},"then":{"$ref":"#/definitions/range"}},{"if":{"required":["type"],"type":"object","properties":{"type":{"const":"color_scheme_group"}}},"then":{"$ref":"#/definitions/color_scheme_group"}},{"if":{"required":["type"],"type":"object","properties":{"type":{"const":"select"}}},"then":{"$ref":"#/definitions/select"}},{"if":{"required":["type"],"type":"object","properties":{"type":{"const":"radio"}}},"then":{"$ref":"#/definitions/radio"}},{"if":{"required":["type"],"type":"object","properties":{"type":{"enum":["text","textarea"]}}},"then":{"$ref":"#/definitions/placeholder"}}]},"else":{"if":{"required":["type"],"type":"object","properties":{"type":{"enum":["header","paragraph"]}}},"then":{"allOf":[{"$ref":"#/definitions/content"}]}}}}},"type":"array","items":[{"$ref":"#/definitions/theme"},{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"settings":{"$ref":"#/definitions/settings"}}}]} \ No newline at end of file +{"title":"JSON Schema for Shopify Settings Schema","$schema":"http://json-schema.org/draft-07/schema#","definitions":{"theme":{"type":"object","required":["name","theme_name","theme_author","theme_version","theme_documentation_url"],"properties":{"name":{"type":"string","description":"The value of this attribute must be theme_info."},"theme_name":{"type":"string","description":"The name of the theme."},"theme_author":{"type":"string","description":"The author of the theme."},"theme_version":{"type":"string","description":"The version number of the theme, eg: 1.0.0."},"theme_documentation_url":{"type":"string","description":"A URL where merchants can find documentation for the theme."},"theme_support_url":{"type":"string","description":"A URL where merchants can find support for the theme."},"theme_support_email":{"type":"string","description":"An email address that merchants can contact for support for the theme."}},"anyOf":[{"required":["theme_support_url"]},{"required":["theme_support_email"]}],"defaultSnippets":[{"label":"Theme settings","description":"Required theme settings","body":{"name":"$1","theme_name":"$2","theme_author":"$3","theme_version":"$4","theme_documentation_url":"$5","theme_support_url":"$6"}}]},"settings_group":{"type":"object","required":["name","settings"],"properties":{"name":{"type":"string"},"settings":{"$ref":"#/definitions/settings"}},"additionalProperties":false},"content":{"type":"object","required":["content"],"properties":{"content":{"type":["string"],"title":"Content","description":"Textual content for the header title."},"info":{"title":"Info","description":"Addition Information"}}},"placeholder":{"type":"object","properties":{"placeholder":{"title":"Placeholder","description":"A placeholder value","default":"","oneOf":[{"type":"string"}]}}},"limit":{"type":"object","properties":{"limit":{"type":"number","title":"Limit","description":"The maximum number of items that the merchant can select. The default limit, and the maximum limit you can set, is 50.","maximum":50}}},"select":{"type":"object","required":["options"],"properties":{"options":{"type":"array","title":"Select Options","description":"Takes an array of value/label definitions for each option in the drop-down","items":{"type":"object","required":["value","label"],"additionalProperties":false,"defaultSnippets":[{"label":"Options","description":"Takes an array of value/label definitions for each option in the drop-down.","body":{"value":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2"}},{"label":"Options with group","description":"Takes an array of value/label definitions for each option in the drop-down with an optional attribute you can add to each option to create option groups in the drop-down","body":{"value":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","group":"$3"}}],"properties":{"value":{"type":"string","description":"The value of the select options. This will be used as the output"},"label":{"title":"Label","description":"A label to render to the theme editor","oneOf":[{"type":"string"}]},"group":{"title":"Group","description":"An optional attribute you can add to each option to create option groups in the drop-down.","oneOf":[{"type":"string"}]}}}}}},"range":{"type":"object","required":["min","max","step"],"properties":{"step":{"type":"number","title":"Step","minimum":0.1,"default":1,"description":"The step refers to the step count for the slider values. For example, if you set the step to 5, then the range slider will count by fives. By default, the step is set to 1."},"min":{"type":"number","title":"Min","description":"The minimum number of steps"},"max":{"type":"number","title":"Max","description":"The maximum number of steps"},"unit":{"title":"Unit","description":"The unit of measure label. For example, you could use sec for seconds, or px for pixels.","default":"","oneOf":[{"type":"string"}]}}},"radio":{"type":"object","required":["options"],"properties":{"options":{"type":"array","title":"Radio Options","description":"Takes an array of value/label definitions","items":{"type":"object","required":["value","label"],"additionalProperties":false,"defaultSnippets":[{"label":"Radio Options","description":"Value and label definitions","body":{"value":"$1","label":"${2/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$3"}}],"properties":{"value":{"type":"string"},"label":{"title":"Label","description":"Radio Label","oneOf":[{"type":"string"}]}}}}}},"color_scheme_group":{"type":"object","definitions":{"role_object_or_string":{"type":["string","object"],"if":{"type":"object"},"then":{"minProperties":1,"required":["solid"],"properties":{"solid":{"type":"string"},"gradient":{"type":"string"}}}}},"required":["definition","role"],"properties":{"definition":{"type":"array","minItems":1,"items":{"type":"object","defaultSnippets":[{"label":"header","description":"A setting of type `header` outputs a header element to help you better organize your input settings.\n","body":{"type":"header","content":"$1"}},{"label":"color","description":"A setting of type `color` outputs a color picker field. You can use these fields to capture a color selection for various theme elements, such as the body text color.\n\nWhen accessing the value of a color type setting, data is returned as one of the following:\n\n- A [color object](https://shopify.dev/api/liquid/objects/color).\n- `blank`, if no selection has been made.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color)\n","body":{"type":"color","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"color_background","description":"A setting of type `color_background` outputs a text field for entering [CSS background](https://developer.mozilla.org/en-US/docs/Web/CSS/background) properties. You can use these fields to capture background settings for various theme elements, such as the store background.\n\n> **CAUTION**\n>\n> A Settings of type `color_background` do not support image related background properties.\n\nWhen accessing the value of a `color_background` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color_background)\n","body":{"type":"color_background","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}}],"properties":{"type":{"type":"string","title":"Type","description":"Name of the type of setting.","oneOf":[{"enum":["header"],"markdownDescription":"A setting of type `header` outputs a header element to help you better organize your input settings.\n"},{"enum":["color"],"title":"Multi-line text areas","markdownDescription":"A setting of type `color` outputs a color picker field. You can use these fields to capture a color selection for various theme elements, such as the body text color.\n\nWhen accessing the value of a color type setting, data is returned as one of the following:\n\n- A [color object](https://shopify.dev/api/liquid/objects/color).\n- `blank`, if no selection has been made.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color)\n"},{"enum":["color_background"],"title":"Image Picker","markdownDescription":"A setting of type `color_background` outputs a text field for entering [CSS background](https://developer.mozilla.org/en-US/docs/Web/CSS/background) properties. You can use these fields to capture background settings for various theme elements, such as the store background.\n\n> **CAUTION**\n>\n> A Settings of type `color_background` do not support image related background properties.\n\nWhen accessing the value of a `color_background` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color_background)\n"}]}},"if":{"required":["type"],"type":"object","properties":{"type":{"enum":["color","color_background"]}}},"then":{"required":["id","label"],"properties":{"id":{"type":"string","default":"","markdownDescription":"The setting ID, which is used to access the setting value. The id is exposed to the liquid templates via the settings object. It must only contain alphanumeric characters, underscores, and dashes.\n\n> **REQUIRED**\n>\n> The `id` attribute is required for all settings.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n"},"label":{"markdownDescription":"The setting label, which will show in the theme editor.\n\n> **REQUIRED**\n>\n> The `label` attribute is required for all settings.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n","default":"","oneOf":[{"type":"string"}]},"default":{"type":["string","number","boolean"],"default":"","markdownDescription":"The default value for the setting.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n"},"info":{"markdownDescription":"An option for informational text about the setting. Use sparingly, as it's better to use only informative labels whenever you can.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#standard-attributes)\n","default":"","oneOf":[{"type":"string"}]}}},"else":{"if":{"required":["type"],"type":"object","properties":{"type":{"enum":["header"]}}},"then":{"allOf":[{"$ref":"#/definitions/content"}]}}}},"role":{"type":"object","required":["background","text","primary_button","secondary_button","primary_button_border","secondary_button_border","on_primary_button","on_secondary_button","links","icons"],"properties":{"background":{"markdownDescription":"`role.background` Renders the background color of the preview.\n\n`Type` It can be a `string` or an `object`. While `object`, its two only properties are `solid` (required) and `gradient` (non-required). If `gradient` is set. It will be shown in the preview instead of `solid`.\n\n`Required?` Yes\n\n`Gradient?` Optional\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n","$ref":"#/definitions/color_scheme_group/definitions/role_object_or_string"},"text":{"type":"string","markdownDescription":"`role.background` Renders the background color of the preview.\n\n`Type` It can be a `string` or an `object`. While `object`, its two only properties are `solid` (required) and `gradient` (non-required). If `gradient` is set. It will be shown in the preview instead of `solid`.\n\n`Required?` Yes\n\n`Gradient?` Optional\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"},"primary_button":{"markdownDescription":"`role.primary_button` Render the 1st pill in the preview.\n\n`Type` It can be a `string` or an `object`. While `object`, its two only properties are `solid` (required) and `gradient` (non-required). If `gradient` is set. It will be shown in the preview instead of `solid`.\n\n`Required?` Yes\n\n`Gradient?` Optional\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n","$ref":"#/definitions/color_scheme_group/definitions/role_object_or_string"},"secondary_button":{"markdownDescription":"`role.secondary_button` Render the 2nd pill in the preview.\n\n`Type` It can be a `string` or an `object`. While `object`, its two only properties are `solid` (required) and `gradient` (non-required). If `gradient` is set. It will be shown in the preview instead of `solid`.\n\n`Required?` Yes\n\n`Gradient?` Optional\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n","$ref":"#/definitions/color_scheme_group/definitions/role_object_or_string"},"primary_button_border":{"type":"string","markdownDescription":"`role.primary_button_border` Render the 1st pill's border in the preview.\n\n`Type` Set to `string`.\n\n`Required?` Yes\n\n`Gradient?` No\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"},"secondary_button_border":{"type":"string","markdownDescription":"`role.secondary_button_border` Render the 2nd pill's border in the preview.\n\n`Type` Set to `string`.\n\n`Required?` Yes\n\n`Gradient?` No\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"},"on_primary_button":{"type":"string","markdownDescription":"`role.on_primary_button` Is not used in the preview.\n\n`Type` Set to `string`.\n\n`Required?` Yes\n\n`Gradient?` No\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"},"on_secondary_button":{"type":"string","markdownDescription":"`role.on_secondary_button` Is not used in the preview.\n\n`Type` Set to `string`.\n\n`Required?` Yes\n\n`Gradient?` No\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"},"links":{"type":"string","markdownDescription":"`role.links` Is not used in the preview.\n\n`Type` Set to `string`.\n\n`Required?` Yes\n\n`Gradient?` No\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"},"icons":{"type":"string","markdownDescription":"`role.icons` Is not used in the preview.\n\n`Type` Set to `string`.\n\n`Required?` Yes\n\n`Gradient?` No\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"}},"additionalProperties":false,"markdownDescription":"The `role` field outputs a color scheme preview. The color scheme previews are visible to merchants anywhere in the editor where they might pick a color scheme. You can assign roles to your color scheme definitions to map the color scheme to the previews. For example you can assign `role.background` to the `Background` definition. Role uses the following standardized mapping of the `color_scheme_group` definition to the color scheme preview.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#role)\n"}}},"settings":{"type":"array","markdownDescription":"You can create section specific [settings](https://shopify.dev/themes/architecture/settings/input-settings) to allow merchants to customize the section with the `settings` object:\n\n**Example**\n\n```liquid\n\n{% schema %}\n{\n \"name\": \"Slideshow\",\n \"tag\": \"section\",\n \"class\": \"slideshow\",\n \"settings\": [\n {\n \"type\": \"text\",\n \"id\": \"header\",\n \"label\": \"Header\"\n }\n ]\n}\n{% endschema %}\n\n```\n\n**[Input Settings](https://shopify.dev/themes/architecture/settings/input-settings)**\n\nInput settings are generally composed of [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes), and there are two categories:\n\n- [Basic input settings](https://shopify.dev/themes/architecture/settings/input-settings#basic-input-settings)\n- [Specialized input settings](https://shopify.dev/themes/architecture/settings/input-settings#specialized-input-settings)\n\nTo learn how to access the values of these settings for use in your theme, refer to the [settings overview](https://shopify.dev/themes/architecture/settings#access-settings).\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings)\n","items":{"type":"object","required":["type"],"defaultSnippets":[{"label":"article","markdownDescription":"A setting of type `article` outputs an article picker field that's automatically populated with the available articles for the store. You can use these fields to capture an article selection, such as the article to feature on the homepage.\n\nWhen accessing the value of a `article` type setting, data is returned as one of the following:\n\n- An [article object](https://shopify.dev/api/liquid/objects/article).\n To ensure backwards compatibility with [legacy resource-based settings](https://shopify.dev/themes/architecture/settings#legacy-resource-based-settings), outputting the setting directly will return the object's handle.\n- `blank` if no selection has been made, the selection isn't visible, or the selection no longer exists.\n\n> **NOTE**\n>\n> Settings of type `article` are not updated when switching presets. `article` settings also don't support the `default` attribute.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#article)\n","body":{"type":"article","id":"$2","label":"${2/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$3","info":"$4"}},{"label":"blog","markdownDescription":"A setting of type `blog` outputs a blog picker field that's automatically populated with the available blogs for the store. You can use these fields to capture a blog selection, such as the blog to feature in the sidebar.\n\nWhen accessing the value of a `blog` type setting, data is returned as one of the following\n\n- A [blog object](https://shopify.dev/api/liquid/objects/blog).\n To ensure backwards compatibility with [legacy resource-based settings](https://shopify.dev/themes/architecture/settings#legacy-resource-based-settings), outputting the setting directly will return the object's handle.\n- `blank` if no selection has been made, the selection isn't visible, or the selection no longer exists.\n\n> **NOTE**\n>\n> Settings of type `blog` are not updated when switching presets. `blog` settings also don't support the `default` attribute.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#blog)\n","body":{"type":"blog","id":"$2","label":"${2/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$3","info":"$4"}},{"label":"checkbox","markdownDescription":"A setting of type `checkbox` outputs a checkbox field. These fields can be used for toggling features on and off, such as whether to show an announcement bar.\n\nWhen accessing the value of a `checkbox` type setting, data is returned as a [boolean](https://shopify.dev/api/liquid/basics/types#boolean).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the value is false by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#checkbox)\n\n","body":{"type":"checkbox","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"^${3|true,false|}","info":"$4"}},{"label":"collection_list","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\nWhen accessing the value of a `collection_list` type setting, data is returned as one of the following:\n\n- An array of [collection objects](https://shopify.dev/api/liquid/objects/collection).\n This array supports pagination using the [paginate](https://shopify.dev/api/liquid/tags/paginate#paginate-paginating-setting-arrays) tag. You can also append `.count` to the [setting key](https://shopify.dev/themes/architecture/settings#access-settings) to return the number of collections in the array.\n- `blank` if no selection has been made, the selection isn't visible, or the selection no longer exists.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#collection_list)\n","body":{"type":"collection_list","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","limit":"^$3","info":"$4"}},{"label":"collection","markdownDescription":"A setting of type `collection` outputs a collection picker field that's automatically populated with the available collections for the store. You can use these fields to capture a collection selection, such as a collection for featuring products on the homepage.\n\nWhen accessing the value of a `collection` type setting, data is returned as one of the following\n\n- A [collection object](https://shopify.dev/api/liquid/objects/collection).\n To ensure backwards compatibility with [legacy resource-based settings](https://shopify.dev/themes/architecture/settings#legacy-resource-based-settings), outputting the setting directly will return the object's handle.\n- `blank` if no selection has been made, the selection isn't visible, or the selection no longer exists.\n\n> **NOTE**\n>\n> Settings of type `collection` are not updated when switching presets. `collection` settings also don't support the `default` attribute.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#collection)\n","body":{"type":"collection","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"color_background","markdownDescription":"A setting of type `color_background` outputs a text field for entering [CSS background](https://developer.mozilla.org/en-US/docs/Web/CSS/background) properties. You can use these fields to capture background settings for various theme elements, such as the store background.\n\n> **CAUTION**\n>\n> A Settings of type `color_background` do not support image related background properties.\n\nWhen accessing the value of a `color_background` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#color_background)\n","body":{"type":"color_background","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"$3","info":"$4"}},{"label":"color_scheme_group","markdownDescription":"A setting of type `color_scheme_group` outputs a color scheme which is composed of the following input setting types:\n\n- header\n- color\n- color_background\n\nColor schemes can be added only in `settings_schema.json`.\n","body":{"type":"color_scheme_group","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","definition":[],"role":{},"info":"$3"}},{"label":"color_scheme","markdownDescription":"A setting of type `color_scheme` outputs a picker with all of the available theme color schemes, and a preview of the selected color scheme. Theme color schemes in the picker are defined using the [color_scheme_group](https://shopify.dev/docs/themes/architecture/settings/input-settings#color_scheme_group) setting. You can apply a color scheme to sections, blocks and general theme settings. Color scheme settings aren't supported in app blocks.\n\nFor example, the following setting generates the following output:\n\n```json\n{\n \"type\": \"color_scheme\",\n \"id\": \"color_scheme\",\n \"default\": \"scheme_1\",\n \"label\": \"Color Scheme\"\n}\n```\n\nWhen accessing the value of a `color_scheme` type setting, Shopify returns the selected `color_scheme` object from `color_scheme_group`.\n\nIf no value was entered, or the value was invalid, then the default value from `color_scheme` is returned. If the default value is also invalid, then the first `color_scheme` from `color_scheme_group` is returned.\n\nIf the theme doesn't have `color_scheme_group` data in `settings_data.json`, then [nil](https://shopify.dev/docs/api/liquid/basics/types#nil) is returned.\n\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/docs/themes/architecture/settings/input-settings#color_scheme)\n","body":{"type":"color_scheme","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"$3","info":"$4"}},{"label":"font_picker","markdownDescription":"A setting of type `font_picker` outputs a font picker field that's automatically populated with fonts from the [Shopify font library](https://shopify.dev/themes/architecture/settings/fonts#shopify-font-library). This library includes web-safe fonts, a selection of Google Fonts, and fonts licensed by Monotype.\n\nYou can use these fields to capture a font selection for various theme elements, such as the base heading font.\n\nWhen accessing the value of a `font_picker` type setting, data is returned as a [font object](https://shopify.dev/api/liquid/objects/font).\n\n> **CAUTION**\n>\n> The `default` attribute is required. Failing to include it will result in an error. You can find the possible values through the [available fonts](https://shopify.dev/themes/architecture/settings/fonts#available-fonts) in the Shopify font library.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#font_picker)\n","body":{"type":"font_picker","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"header","markdownDescription":"A setting of type `header` outputs a header element to help you better organize your input settings.\n","body":{"type":"header","content":"$1"}},{"label":"html","markdownDescription":"A setting of type `html` outputs a multi-line text field that accepts HTML markup. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nYou can use these fields to capture custom blocks of HTML content, such as a video embed.\n\nThe following HTML tags will be automatically removed:\n\n```html\n\n\n\n```\n\nWhen accessing the value of an `html` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string) that contains the entered content.\n- An [empty object](https://shopify.dev/api/liquid/basics/types#emptydrop), if nothing has been entered.\n\n> **NOTE**\n>\n> Unclosed HTML tags are automatically closed when the setting is saved. This may not line up with your intended formatting, so be sure to verify your input.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#html)\n","body":{"type":"html","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","${3|placeholder,info|}":"$4"}},{"label":"image_picker","markdownDescription":"A setting of type `image_picker` outputs an image picker field that's automatically populated with the available images from the [Files](https://help.shopify.com/en/manual/shopify-admin/productivity-tools/file-uploads) section of Shopify admin, and has the option to upload new images. Merchants also have an opportunity to enter alt text and select a [focal point](https://shopify.dev/themes/architecture/settings/input-settings#image-focal-points) for their image.\n\nYou can use these fields to capture an image selection, such as logos, favicons, and slideshow images.\n\nWhen accessing the value of an `image_picker` type setting, data is returned as one of the following:\n\n- An [image object](https://shopify.dev/api/liquid/objects/image).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if either no selection has been made or the selection no longer exists.\n\n> **NOTE**\n>\n> Settings of type `image_picker` are not updated when switching presets. `image_picker` settings also don't support the `default` attribute.\n\n**[Image focal points](https://shopify.dev/themes/architecture/settings/input-settings#image-focal-points)**\n\nImages selected using an `image_picker` setting support focal points. A focal point is a position in an image that the merchant wants to remain in view as the image is cropped and adjusted by the theme. Focal points can be set in the theme editor `image_picker` setting, or from the Files page.\n\nTo make sure that your theme respects the focal point of the image, do the following:\n\n- Render your images using the [image_tag](https://shopify.dev/api/liquid/filters/image_tag) filter.\n- Consider positioning images within containers using `object-fit: cover`.\n\nUsing `image_tag`, if a focal point was provided, then an `object-position` style is added to the image tag, with the value set to the focal point.\n\n**Input**\n\n```liquid\n\n{{ section.settings.image_with_text_image | image_url: width: 1500 | image_tag }}\n\n```\n\n**Output**\n\n```html\n\n\"My\n\n\n```\n\nIf you need override the `object-position` style for a specific use case, then pass a style: `object-position: inherit;` property to the `image_tag` filter.\n\n> **TIP**\n>\n> You can also access the focal point data using [image.presentation.focal_point](https://shopify.dev/api/liquid/objects/image_presentation#image_presentation-focal_point).\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#image_picker)\n","body":{"type":"image_picker","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"inline_richtext","markdownDescription":"A setting of type `inline_richtext` outputs HTML markup that isn't wrapped in paragraph tags (`

`). The setting includes the following basic formatting options:\n\n- Bold\n- Italic\n- Link\n\n> **NOTE**\n>\n> The `inline_richtext` setting doesn't support the following features:\n>\n> - Line breaks (`
`)\n> - An underline option in the rich text editor. Merchants can underline text using the `CMD`+`U` or `CTRL`+`U` keyboard shortcut.\n\nYou can use these fields to capture formatted text content, such as introductory brand content on the homepage.\n\nWhen accessing the value of a `inline_richtext` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string) that contains the entered content.\n- An [empty object](https://shopify.dev/api/liquid/basics/types#emptydrop), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#inline_richtext)\n","body":{"type":"inline_richtext","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"$3","${4|placeholder,info|}":"$5"}},{"label":"link_list","markdownDescription":"A setting of type `link_list` outputs a menu picker field that's automatically populated with the available menus for the store. You can use these fields to capture a menu selection, such as the menu to use for footer links.\n\nWhen accessing the value of a link_list type setting, data is returned as one of the following:\n\n- A [linklist object](https://shopify.dev/api/liquid/objects/linklist).\n- `blank`, if either no selection has been made or the selection no longer exists.\n\n> **NOTE**\n>\n> Accepted values for the `default` attribute are `main-menu` and `footer`.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#link_list)\n","body":{"type":"link_list","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"liquid","markdownDescription":"A setting of type `liquid` outputs a multi-line text field that accepts HTML and **[limited](https://shopify.dev/themes/architecture/settings/input-settings#limitations)** Liquid markup. You can use these fields to capture custom blocks of HTML and Liquid content, such as a product-specific message. Merchants can also use a liquid setting to add the code needed to integrate certain types of [apps](https://shopify.dev/apps/online-store) into your theme.\n\nWhen accessing the value of a `liquid` type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string) that contains the entered content.\n- An [empty object](https://shopify.dev/api/liquid/basics/types#emptydrop), if nothing has been entered.\n\n> **NOTE**\n>\n> The `default` attribute is optional. However, if you use it, then its value can't be an empty string. Additionally, unclosed HTML tags are automatically closed when the setting is saved. This might not line up with your intended formatting, so be sure to verify your input.\n\n**[Limitations](https://shopify.dev/themes/architecture/settings/input-settings#limitations)**\n\nSettings of type `liquid` don't have access to the following liquid objects/tags:\n\n- [layout](https://shopify.dev/api/liquid/tags/layout)\n- [content_for_header](https://shopify.dev/api/liquid/objects/content_for_header)\n- [content_for_layout](https://shopify.dev/api/liquid/objects/content_for_layout)\n- [content_for_index](https://shopify.dev/api/liquid/objects/content_for_index)\n- [section](https://shopify.dev/api/liquid/tags/section)\n- [javascript](https://shopify.dev/themes/architecture/sections/section-assets#javascript)\n- [stylesheet](https://shopify.dev/themes/architecture/sections/section-assets#stylesheet)\n- [schema](https://shopify.dev/themes/architecture/sections/section-schema)\n- [settings](https://shopify.dev/api/liquid/objects/settings)\n\nHowever, liquid settings can access the following:\n\n- [Global Liquid objects](https://shopify.dev/api/liquid/objects)\n- Template specific objects like `collection`, `product`, etc. (within their respective templates)\n- Standard Liquid [tags](https://shopify.dev/api/liquid/tags) and [filters](https://shopify.dev/api/liquid/filters)\n\nIf your content includes non-existent, or empty, Liquid tags, then they will be rendered as empty strings. For example, the following setting generates the following output:\n\n**Setting**\n\n```json\n{\n \"type\": \"liquid\",\n \"id\": \"message\",\n \"label\": \"Message\",\n \"default\": \"Hello {{ not_a_real_tag }}, welcome to our shop.\"\n}\n```\n\n**Output**\n\n```\nHello , welcome to our shop.\n```\n\n> **CAUTION**\n>\n> Content entered in these settings can't exceed 50kb. Saving content that either exceeds this limit or includes invalid Liquid will result in an error.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#liquid)\n","body":{"type":"liquid","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"$3","${4|placeholder,info|}":"$5"}},{"label":"number","markdownDescription":"A setting of type `number` outputs a single number field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `number` type setting, data is returned as one of the following:\n\n- A [number](https://shopify.dev/api/liquid/basics/types#number).\n- [nil](https://shopify.dev/api/liquid/basics/types#nil), if nothing has been entered.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#number)\n\n\n","body":{"type":"number","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"^$3","${4|placeholder,info|}":"$5"}},{"label":"page","markdownDescription":"A setting of type `page` outputs a page picker field that's automatically populated with the available pages for the store. You can use these fields to capture a page selection, such as the page to feature content for in a size-chart display.\n\nWhen accessing the value of a `page` type setting, data is returned as one of the following:\n\n- A [page object](https://shopify.dev/api/liquid/objects/page).\n To ensure backwards compatibility with [legacy resource-based settings](https://shopify.dev/themes/architecture/settings#legacy-resource-based-settings), outputting the setting directly will return the object's handle.\n- `blank`, if no selection has been made, the selection isn't visible, or the selection no longer exists.\n\n> **NOTE**\n>\n> Settings of type page are not updated when switching presets. `page` settings also don't support the `default` attribute.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#page)\n\n","body":{"type":"page","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"paragraph","markdownDescription":"A setting of type `paragraph` outputs a text element to help you better describe your input settings.\n","body":{"type":"paragraph","content":"$1"}},{"label":"product_list","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\nWhen accessing the value of a `product_list` type setting, data is returned as one of the following:\n\n- An array of [product objects](https://shopify.dev/api/liquid/objects/product).\n This array supports pagination using the [paginate](https://shopify.dev/api/liquid/tags/paginate#paginate-paginating-setting-arrays) tag. You can also append `.count` to the [setting key](https://shopify.dev/themes/architecture/settings#access-settings) to return the number of products in the array.\n- `blank` if no selection has been made, the selection isn't visible, or the selection no longer exists.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#product_list)\n\n","body":{"type":"product_list","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","limit":"^$3","info":"$4"}},{"label":"product","markdownDescription":"A setting of type `product` outputs a product picker field that's automatically populated with the available products for the store. You can use these fields to capture a product selection, such as the product to feature on the homepage.\n\n- A [product object](https://shopify.dev/api/liquid/objects/product).\n To ensure backwards compatibility with [legacy resource-based settings](https://shopify.dev/themes/architecture/settings#legacy-resource-based-settings), outputting the setting directly will return the object's handle.\n- `blank`, if no selection has been made, the selection isn't visible, or the selection no longer exists.\n\n> **NOTE**\n>\n> Settings of type product are not updated when switching presets. `product` settings also don't support the `default` attribute.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#product)\n","body":{"type":"product","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","info":"$3"}},{"label":"radio","markdownDescription":"A setting of type `radio` outputs a radio option field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting, `radio` type settings have a required options attribute that accepts an array of value and label definitions.\n\nYou can use these fields to capture a multi-option selection, such as the alignment of a header logo.\n\nWhen accessing the value of a radio type setting, data is returned as a [string](https://shopify.dev/api/liquid/basics/types#string).\n\n> **NOTE**\n>\n> If `default` is unspecified, then the first option is selected by default.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#radio)\n\n","body":{"type":"radio","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","default":"$4","info":"$5","options":["^$3"]}},{"label":"range","markdownDescription":"A setting of type `range` outputs a range slider field. In addition to the [standard attributes](https://shopify.dev/themes/architecture/settings/input-settings#standard-attributes) of an input setting.\n\nWhen accessing the value of a `range` type setting, data is returned as a [number](https://shopify.dev/api/liquid/basics/types#number).\n\n> **CAUTION**\n>\n> The `default` attribute is required. The `min`, `max`, `step`, and `default` attributes can't be string values. Failing to adhere results in an error.\n\n#\n\n---\n\n[Shopify Documentation](https://shopify.dev/themes/architecture/settings/input-settings#range)\n\n\n","body":{"type":"range","id":"$1","label":"${1/([^_]+)(_*)/${1:/capitalize}${2:+ }/g}$2","min":"^$3","max":"^$4","step":"^$5","unit":"$6","default":"^$7"}},{"label":"richtext","markdownDescription":"A setting of type `richtext` outputs a multi-line text field with the following basic formatting options:\n\n- Bold\n- Italic\n- Underline\n- Link\n- Paragraph\n- Unordered list\n\n> **NOTE**\n>\n> No underline option appears in the rich text component. Merchants can underline text using the `CMD`+`U` or `CTRL`+`U` keyboard shortcut.\n\nYou can use these fields to capture formatted text content, such as introductory brand content on the homepage.\n\nWhen accessing the value of a richtext type setting, data is returned as one of the following:\n\n- A [string](https://shopify.dev/api/liquid/basics/types#string) that contains the entered content.\n- An [empty object](https://shopify.dev/api/liquid/basics/types#emptydrop), if nothing has been entered.\n\n**[default](https://shopify.dev/themes/architecture/settings/input-settings#default)**\n\nThe `default` attribute isn't required. However, if it's used, then only `

` or `