@cloudcannon/configuration-types 0.0.50 → 0.0.52

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.
@@ -46,12 +46,12 @@
46
46
  "markdownDescription": "This key toggles whether CloudCannon will generate an output URL for a given Collection.\n\nSetting this key to `true` will prevent CloudCannon from generating an output URL for a Collection.\n\n## Examples\n\nIn this example, `data` is an non-output Collection and we don't want output URLs generated.\n\n```yaml\ncollections_config:\n data:\n disable_url: true\n```"
47
47
  },
48
48
  "include_developer_files": {
49
- "description": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/articles/collections-reference/#glob).\n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```",
49
+ "description": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/developer-reference/configuration-file/collections_config/*/glob/). \n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```",
50
50
  "default": false,
51
51
  "type": "boolean",
52
52
  "documented": true,
53
53
  "title": "include_developer_files",
54
- "markdownDescription": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/articles/collections-reference/#glob).\n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```"
54
+ "markdownDescription": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/developer-reference/configuration-file/collections_config/*/glob/). \n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```"
55
55
  },
56
56
  "name": {
57
57
  "description": "This key defines the display name for a Collection.\n\nThe name appears in the *Site Navigation* and at the top of the *Collection browser*.\n\nChanging the display name does not affect the Collection key name.\n\nBy default, CloudCannon uses the Collection key name in title case (i.e., `blog_files` becomes \"Blog Files\").\n\n## Examples\n\nIn this example, CloudCannon will call the `blog` Collection \"Travel Blog\" in the *Site Navigation* and the *Collection browser*.\n\n```yaml\ncollections_config:\n blog:\n name: Travel Blog\n```",
@@ -166,7 +166,7 @@
166
166
  "markdownDescription": "This key defines the singular noun for your Collection name.\n\nCloudCannon uses the singular noun in the *\\+ Add* button in the top right of the *Collection browser* when you select the option to add a new file.\n\nThis is useful if your Collection name is an irregular plural (e.g., \"syllabi\" or \"syllabuses\" to \"syllabus\").\n\n## Examples\n\nIn this example, the *\\+ Add* button option to add a Collection file will read \"Add Team Member\" rather that \"Add Team\".\n\n```yaml\ncollections_config:\n team:\n singular_name: Team Member\n```"
167
167
  },
168
168
  "add_options": {
169
- "description": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\nFor more information on these options, please read our reference documentation on [disable\\_add](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add), [disable\\_add\\_folder](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add_folder), and [schemas](https://cloudcannon.com/documentation/articles/schemas-reference/#schemas).\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```",
169
+ "description": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```",
170
170
  "type": "array",
171
171
  "items": {
172
172
  "anyOf": [
@@ -205,11 +205,11 @@
205
205
  "markdownDescription": "This key defines which editing interface CloudCannon will use when you select an option from the *\\+ Add* button dropdown.\n\nValues can be one of the following: `visual`, `content`, or `data`.\n\nBy default, CloudCannon will open the new file in an appropriate editing interface for that file type.\n\nIf CloudCannon cannot determine an appropriate editing interface, it will show a warning.\n\n## Examples\n\nIn this example, we have configured a standard add option for the `people` Collection that opens new files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n```"
206
206
  },
207
207
  "base_path": {
208
- "description": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\nThe value for this key is relative to your Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```",
208
+ "description": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```",
209
209
  "type": "string",
210
210
  "documented": true,
211
211
  "title": "base_path",
212
- "markdownDescription": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\nThe value for this key is relative to your Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```"
212
+ "markdownDescription": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```"
213
213
  },
214
214
  "collection": {
215
215
  "description": "This key defines the Collection for files created using an option in the *\\+ Add* button dropdown.\n\nThis Collections overrides the current Collection open in the *Collection browser*.\n\nThe value for this key should be the key name of a Collection.\n\nBy default, this key is the current Collection open in the *Collection browser*.\n\n## Examples\n\nIn this example, we want team members in the articles Collection to create new files in the `new_articles` Collection rather than the current Collection browser they have open. By configuring the `collection` value to `new_articles`, new files will be created in a different Collection (i.e., `new_articles`) when a team member selects this option from the + Add button dropdown.\n\n```yaml\ncollections_config:\n articles:\n add_options:\n - name: Add articles\n collection: new_articles\n schema: articles\n```",
@@ -284,7 +284,7 @@
284
284
  },
285
285
  "documented": true,
286
286
  "title": "add_options",
287
- "markdownDescription": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\nFor more information on these options, please read our reference documentation on [disable\\_add](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add), [disable\\_add\\_folder](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add_folder), and [schemas](https://cloudcannon.com/documentation/articles/schemas-reference/#schemas).\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```"
287
+ "markdownDescription": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```"
288
288
  },
289
289
  "create": {
290
290
  "allOf": [
@@ -592,14 +592,14 @@
592
592
  "markdownDescription": "This key defines your Collections, which are the sets of content files for your site grouped by folder."
593
593
  },
594
594
  "path": {
595
- "description": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/articles/configuration-file-reference/#source).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```",
595
+ "description": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/developer-reference/configuration-file/source/).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```",
596
596
  "type": "string",
597
597
  "documented": true,
598
598
  "title": "path",
599
- "markdownDescription": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/articles/configuration-file-reference/#source).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```"
599
+ "markdownDescription": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/developer-reference/configuration-file/source/).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```"
600
600
  },
601
601
  "glob": {
602
- "description": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nValues in this array are relative to the Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\n> For more information about developer files, please read our documentation on the [include\\_developer\\_files](https://cloudcannon.com/documentation/articles/collections-reference/#include_developer_files) key.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```",
602
+ "description": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```",
603
603
  "anyOf": [
604
604
  {
605
605
  "title": "Glob Array",
@@ -625,7 +625,7 @@
625
625
  ],
626
626
  "documented": true,
627
627
  "title": "glob",
628
- "markdownDescription": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nValues in this array are relative to the Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\n> For more information about developer files, please read our documentation on the [include\\_developer\\_files](https://cloudcannon.com/documentation/articles/collections-reference/#include_developer_files) key.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```"
628
+ "markdownDescription": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```"
629
629
  },
630
630
  "icon": {
631
631
  "title": "Icon",
@@ -9628,8 +9628,8 @@
9628
9628
  },
9629
9629
  "documented": true,
9630
9630
  "title": "values_from_glob",
9631
- "description": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#_structures_from_glob) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```",
9632
- "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#_structures_from_glob) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```"
9631
+ "description": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```",
9632
+ "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```"
9633
9633
  },
9634
9634
  "id_key": {
9635
9635
  "description": "This key defines which key within `values[*].value` CloudCannon should use to identify the Structure option.\n\nIf CloudCannon cannot find this key in a Structure value, it will compare all other key names in the Structure value to find the correct one.\n\nBy default, this key is `_type`.\n\n## Examples\n\nIn this example, we have change the `id_key` from the default `_type` to `component` to match our existing configuration in the `content_blocks` Array input.\n\n```yaml\n_inputs:\n content_blocks___1___:\n type: array\n options:\n structures: _structures.page_components\n_structures:\n page_components:\n id_key___2___: component\n values:\n - label: Hero Component\n value:\n component___3___: hero\n title:\n description:\n image_path:\n link:\n text:\n url:\n - label: Feature Component\n value:\n component: feature\n image_path:\n title:\n description:\n button:\n link:\n text:\n reversed_layout: false\n - label: Video Component\n value:\n component: video\n image_path:\n videoUrl:\n```",
@@ -10027,8 +10027,8 @@
10027
10027
  },
10028
10028
  "documented": true,
10029
10029
  "title": "_structures_from_glob",
10030
- "description": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#values_from_glob) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```",
10031
- "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#values_from_glob) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```"
10030
+ "description": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/structure/values_from_glob/) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```",
10031
+ "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/structure/values_from_glob/) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```"
10032
10032
  },
10033
10033
  "entries_comment": {
10034
10034
  "description": "This key defines the subtitle text above the key input when adding or renaming entries within a mutable *Object Input*.\n\nThe value is a string that supports a limited selection of Markdown formatting: links, bold, italic, subscript, superscript, and inline code elements are allowed.\n\nAvailable for Mutable Objects only.\n\n## Examples\n\nIn this example, we have configured a comment with Markdown formatting to provide help text above the key input.\n\n```yaml\n_inputs:\n metadata:\n type: object\n options:\n allow_create: true\n entries:\n comment: Key names should be **lowercase** and use underscores (e.g., `article_title`)\n```",
@@ -10573,12 +10573,99 @@
10573
10573
  "type._snippets_definitions": {
10574
10574
  "id": "type._snippets_definitions",
10575
10575
  "title": "Snippets Definitions",
10576
- "description": "Extended option used when creating more complex custom snippets.",
10576
+ "description": "A record of reusable values that can be referenced in snippet templates. Values are substituted using { ref: \"key\" } for direct replacement or { spread_ref: \"key\" } for spreading arrays/objects.",
10577
10577
  "type": "object",
10578
10578
  "propertyNames": {
10579
10579
  "type": "string"
10580
10580
  },
10581
- "additionalProperties": {}
10581
+ "additionalProperties": {
10582
+ "$ref": "#/$defs/type.snippet-definition-value"
10583
+ }
10584
+ },
10585
+ "type.snippet-definition-value": {
10586
+ "id": "type.snippet-definition-value",
10587
+ "title": "Snippet Definition Value",
10588
+ "description": "A reusable value that can be referenced in snippet templates via { ref: \"key\" } or { spread_ref: \"key\" }.",
10589
+ "anyOf": [
10590
+ {
10591
+ "$ref": "#/$defs/type.snippet-format"
10592
+ },
10593
+ {
10594
+ "$ref": "#/$defs/type.snippet-model"
10595
+ },
10596
+ {
10597
+ "title": "Parser Model Array",
10598
+ "description": "An array of model configurations, typically used for positional_args or named_args.",
10599
+ "type": "array",
10600
+ "items": {
10601
+ "$ref": "#/$defs/type.snippet-model"
10602
+ }
10603
+ },
10604
+ {
10605
+ "title": "Select Values Array",
10606
+ "description": "An array of select options, typically used for language lists.",
10607
+ "type": "array",
10608
+ "items": {
10609
+ "$ref": "#/$defs/type.snippet-definition-select-value"
10610
+ }
10611
+ },
10612
+ {
10613
+ "title": "String Value",
10614
+ "description": "A string value, commonly used for shortcode_name, tag_name, content_key, and similar definitions.",
10615
+ "type": "string"
10616
+ },
10617
+ {
10618
+ "title": "Number Value",
10619
+ "description": "A numeric value.",
10620
+ "type": "number"
10621
+ },
10622
+ {
10623
+ "title": "Boolean Value",
10624
+ "description": "A boolean value.",
10625
+ "type": "boolean"
10626
+ },
10627
+ {
10628
+ "title": "String Array",
10629
+ "description": "An array of strings.",
10630
+ "type": "array",
10631
+ "items": {
10632
+ "type": "string"
10633
+ }
10634
+ }
10635
+ ]
10636
+ },
10637
+ "type.snippet-definition-select-value": {
10638
+ "id": "type.snippet-definition-select-value",
10639
+ "title": "Snippet Definition Select Value",
10640
+ "description": "A value option for select inputs, typically used in language lists.",
10641
+ "type": "object",
10642
+ "properties": {
10643
+ "name": {
10644
+ "description": "The display name for this option.",
10645
+ "type": "string"
10646
+ },
10647
+ "value": {
10648
+ "description": "The value for this option.",
10649
+ "anyOf": [
10650
+ {
10651
+ "title": "String",
10652
+ "type": "string"
10653
+ },
10654
+ {
10655
+ "title": "Number",
10656
+ "type": "number"
10657
+ },
10658
+ {
10659
+ "title": "Boolean",
10660
+ "type": "boolean"
10661
+ }
10662
+ ]
10663
+ }
10664
+ },
10665
+ "required": [
10666
+ "value"
10667
+ ],
10668
+ "additionalProperties": false
10582
10669
  }
10583
10670
  }
10584
10671
  }
@@ -392,12 +392,12 @@
392
392
  "markdownDescription": "This key toggles whether CloudCannon will generate an output URL for a given Collection.\n\nSetting this key to `true` will prevent CloudCannon from generating an output URL for a Collection.\n\n## Examples\n\nIn this example, `data` is an non-output Collection and we don't want output URLs generated.\n\n```yaml\ncollections_config:\n data:\n disable_url: true\n```"
393
393
  },
394
394
  "include_developer_files": {
395
- "description": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/articles/collections-reference/#glob).\n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```",
395
+ "description": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/developer-reference/configuration-file/collections_config/*/glob/). \n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```",
396
396
  "default": false,
397
397
  "type": "boolean",
398
398
  "documented": true,
399
399
  "title": "include_developer_files",
400
- "markdownDescription": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/articles/collections-reference/#glob).\n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```"
400
+ "markdownDescription": "This key toggles whether CloudCannon removes developer files from your *Collection browser*. CloudCannon excludes files that probably shouldn't be edited in a CMS from your *Collection browser*, for example files like `README.md` or\n`package.json`. CloudCannon excludes these files even if you have configured globs to allow them.\n\nSetting this key to `true` will allow CloudCannon to show developer files,\nassuming they are not filtered out by any configured\n[globs](https://cloudcannon.com/documentation/developer-reference/configuration-file/collections_config/*/glob/). \n\n## Examples\n\nIn this example, we want to see developer files in the *Collection browser* for the `data` Collection.\n\n```yaml\ncollections_config:\n data:\n include_developer_files: true\n```"
401
401
  },
402
402
  "name": {
403
403
  "description": "This key defines the display name for a Collection.\n\nThe name appears in the *Site Navigation* and at the top of the *Collection browser*.\n\nChanging the display name does not affect the Collection key name.\n\nBy default, CloudCannon uses the Collection key name in title case (i.e., `blog_files` becomes \"Blog Files\").\n\n## Examples\n\nIn this example, CloudCannon will call the `blog` Collection \"Travel Blog\" in the *Site Navigation* and the *Collection browser*.\n\n```yaml\ncollections_config:\n blog:\n name: Travel Blog\n```",
@@ -512,7 +512,7 @@
512
512
  "markdownDescription": "This key defines the singular noun for your Collection name.\n\nCloudCannon uses the singular noun in the *\\+ Add* button in the top right of the *Collection browser* when you select the option to add a new file.\n\nThis is useful if your Collection name is an irregular plural (e.g., \"syllabi\" or \"syllabuses\" to \"syllabus\").\n\n## Examples\n\nIn this example, the *\\+ Add* button option to add a Collection file will read \"Add Team Member\" rather that \"Add Team\".\n\n```yaml\ncollections_config:\n team:\n singular_name: Team Member\n```"
513
513
  },
514
514
  "add_options": {
515
- "description": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\nFor more information on these options, please read our reference documentation on [disable\\_add](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add), [disable\\_add\\_folder](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add_folder), and [schemas](https://cloudcannon.com/documentation/articles/schemas-reference/#schemas).\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```",
515
+ "description": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```",
516
516
  "type": "array",
517
517
  "items": {
518
518
  "anyOf": [
@@ -551,11 +551,11 @@
551
551
  "markdownDescription": "This key defines which editing interface CloudCannon will use when you select an option from the *\\+ Add* button dropdown.\n\nValues can be one of the following: `visual`, `content`, or `data`.\n\nBy default, CloudCannon will open the new file in an appropriate editing interface for that file type.\n\nIf CloudCannon cannot determine an appropriate editing interface, it will show a warning.\n\n## Examples\n\nIn this example, we have configured a standard add option for the `people` Collection that opens new files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n```"
552
552
  },
553
553
  "base_path": {
554
- "description": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\nThe value for this key is relative to your Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```",
554
+ "description": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```",
555
555
  "type": "string",
556
556
  "documented": true,
557
557
  "title": "base_path",
558
- "markdownDescription": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\nThe value for this key is relative to your Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```"
558
+ "markdownDescription": "This key defines a path for files created using an option in the *\\+ Add* button dropdown.\n\nThis path overrides the path for the current Collection and subfolder open in the *Collection browser*.\n\nThis key is useful if you need to specify a specific subfolder within a Collection.\n\n## Examples\n\nIn this example, we want team members in the `_posts` Collection to create new files in the`blog` subfolder of the `_drafts` Collection rather than the current *Collection browser* they have open. By configuring the `base_path` value to `/../_drafts/blog`, new files will be created in a different Collection subfolder (i.e., `_drafts`) when a team member selects this option from the *\\+ Add* button dropdown.\n\n```yaml\ncollections_config:\n _posts:\n add_options:\n - name: Add draft blog\n icon: post_add\n editor: content\n base_path: /../_drafts/blog\n```"
559
559
  },
560
560
  "collection": {
561
561
  "description": "This key defines the Collection for files created using an option in the *\\+ Add* button dropdown.\n\nThis Collections overrides the current Collection open in the *Collection browser*.\n\nThe value for this key should be the key name of a Collection.\n\nBy default, this key is the current Collection open in the *Collection browser*.\n\n## Examples\n\nIn this example, we want team members in the articles Collection to create new files in the `new_articles` Collection rather than the current Collection browser they have open. By configuring the `collection` value to `new_articles`, new files will be created in a different Collection (i.e., `new_articles`) when a team member selects this option from the + Add button dropdown.\n\n```yaml\ncollections_config:\n articles:\n add_options:\n - name: Add articles\n collection: new_articles\n schema: articles\n```",
@@ -630,7 +630,7 @@
630
630
  },
631
631
  "documented": true,
632
632
  "title": "add_options",
633
- "markdownDescription": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\nFor more information on these options, please read our reference documentation on [disable\\_add](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add), [disable\\_add\\_folder](https://cloudcannon.com/documentation/articles/collections-reference/#disable_add_folder), and [schemas](https://cloudcannon.com/documentation/articles/schemas-reference/#schemas).\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```"
633
+ "markdownDescription": "This key defines the options available in the *\\+ Add* button dropdown at the top right of your *Collection browser*.\n\nConfiguring add options for a Collection will remove CloudCannon's default \"Add a file\" option from the *\\+ Add* button dropdown.\n\nAdditionally, any Schemas you have configured for a Collection will also appear in the *\\+ Add* dropdown.\n\n## Examples\n\nIn this example, we have configured two standard add options for the `people` Collection. The first option uses the `employee` Schema, and the second option uses the `contractor` Schema and opens files in the [Data Editor](https://cloudcannon.com/documentation/articles/what-is-the-data-editor/).\n\n```yaml\ncollections_config:\n people:\n add_options:\n - name: Add Staff Member\n schema: employee\n icon: face\n editor: data\n - name: Add Contractor\n icon: support_agent\n schema: contractor\n editor: data\n schemas:\n employee:\n path: /.cloudcannon/schemas/employee.yml\n contractor:\n path: /.cloudcannon/schemas/contractor.yml\n```\n\nIn this example, the *\\+ Add* button dropdown in the `team` *Collection browser* has a link to the Office Locations page on our live website.\n\n```yaml\ncollections_config:\n team:\n add_options:\n - name: Office Locations\n icon: map\n href: /our-offices\n```"
634
634
  },
635
635
  "create": {
636
636
  "allOf": [
@@ -938,14 +938,14 @@
938
938
  "markdownDescription": "This key defines your Collections, which are the sets of content files for your site grouped by folder."
939
939
  },
940
940
  "path": {
941
- "description": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/articles/configuration-file-reference/#source).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```",
941
+ "description": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/developer-reference/configuration-file/source/).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```",
942
942
  "type": "string",
943
943
  "documented": true,
944
944
  "title": "path",
945
- "markdownDescription": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/articles/configuration-file-reference/#source).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```"
945
+ "markdownDescription": "This key defines the folder path for the collection key in which it is nested.\n\nThe value for this key is relative to your [Site source](https://cloudcannon.com/documentation/developer-reference/configuration-file/source/).\n\nEach Collection must have a unique path.\n\n## Examples\n\nIn this example, the files for the `blog` Collection are located in the `content/blog` folder.\n\n```yaml\ncollections_config:\n blog:\n path: content/blog\n```"
946
946
  },
947
947
  "glob": {
948
- "description": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nValues in this array are relative to the Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\n> For more information about developer files, please read our documentation on the [include\\_developer\\_files](https://cloudcannon.com/documentation/articles/collections-reference/#include_developer_files) key.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```",
948
+ "description": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```",
949
949
  "anyOf": [
950
950
  {
951
951
  "title": "Glob Array",
@@ -971,7 +971,7 @@
971
971
  ],
972
972
  "documented": true,
973
973
  "title": "glob",
974
- "markdownDescription": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nValues in this array are relative to the Collection [path](https://cloudcannon.com/documentation/articles/collections-reference/#path).\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\n> For more information about developer files, please read our documentation on the [include\\_developer\\_files](https://cloudcannon.com/documentation/articles/collections-reference/#include_developer_files) key.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```"
974
+ "markdownDescription": "This key defines globs which filter the files visible in the *Collection browser* for a given Collection.\n\nGlobs can be positive (e.g. `*.yml`), or negative (e.g. `!**/*.json`).\n\nFiles are included in a Collection if they match any positive globs and do not match any negative globs.\n\nIf you do not define any positive globs, CloudCannon will include all non-developer files in a Collection unless they match a negative\nglob.\n\nDefining a negative glob for a Collection does not remove a file from the associated Collection folder in your Git repository.\n\nSimilarly, defining a positive glob for a file in a folder outside your Collection path does not move the file.\n\n## Examples\n\nIn this example, the *Collection browser* will show all files in the `data` folder except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '!secret.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder or any nested folders.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob: '**/*.yml'\n```\n\nIn this example, the *Collection browser* will show only `.yml` files in the `data` folder, except for the `secret.yml` file.\n\n```yaml\ncollections_config:\n data:\n path: data\n glob:\n - '**/*.yml'\n - '!secret.yml'\n```"
975
975
  },
976
976
  "icon": {
977
977
  "title": "Icon",
@@ -9892,8 +9892,8 @@
9892
9892
  },
9893
9893
  "documented": true,
9894
9894
  "title": "values_from_glob",
9895
- "description": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#_structures_from_glob) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```",
9896
- "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#_structures_from_glob) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```"
9895
+ "description": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```",
9896
+ "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* value configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structure-value.yml` (note the singular form of \"value\").\n\nYou can use this key anywhere you would use the `_structures.*.values` key.\n\nPlease see our documentation on [structures_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/_structures_from_glob/) for defining a\n*Structure* in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, the `staff` Array Input uses inline *Structure* values from the main *Configuration File* and also references another value from the `boardMember.cloudcannon.structure_value.yml` in the `/.cloudcannon/structures/` folder.\n\n```yaml\n_inputs:\n staff:\n type: array\n options:\n structures:\n values_from_glob: /.cloudcannon/structures/boardMember.cloudcannon.structure-value.yml\n values:\n - label: Employee\n value:\n name:\n title:\n profile_picture:\n - label: Manager\n value:\n name:\n title:\n profile_picture:\n url:\n```\n\n```yaml\nlabel: Board\nvalue:\n name:\n title:\n profile_picture:\n url:\n description:\n```"
9897
9897
  },
9898
9898
  "id_key": {
9899
9899
  "description": "This key defines which key within `values[*].value` CloudCannon should use to identify the Structure option.\n\nIf CloudCannon cannot find this key in a Structure value, it will compare all other key names in the Structure value to find the correct one.\n\nBy default, this key is `_type`.\n\n## Examples\n\nIn this example, we have change the `id_key` from the default `_type` to `component` to match our existing configuration in the `content_blocks` Array input.\n\n```yaml\n_inputs:\n content_blocks___1___:\n type: array\n options:\n structures: _structures.page_components\n_structures:\n page_components:\n id_key___2___: component\n values:\n - label: Hero Component\n value:\n component___3___: hero\n title:\n description:\n image_path:\n link:\n text:\n url:\n - label: Feature Component\n value:\n component: feature\n image_path:\n title:\n description:\n button:\n link:\n text:\n reversed_layout: false\n - label: Video Component\n value:\n component: video\n image_path:\n videoUrl:\n```",
@@ -10291,8 +10291,8 @@
10291
10291
  },
10292
10292
  "documented": true,
10293
10293
  "title": "_structures_from_glob",
10294
- "description": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#values_from_glob) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```",
10295
- "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/articles/configuration-file-reference/#values_from_glob) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```"
10294
+ "description": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/structure/values_from_glob/) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```",
10295
+ "markdownDescription": "This key defines globs that filter which files CloudCannon should use for *Structure* configuration.\n\nValues in this array are relative to the root of your repository (i.e., `/`, not the value of `source`) and must end in the file extension\n`.cloudcannon.structures.yml`.\n\nYou can use this key anywhere you would use the `_structures` key in the configuration cascade.\n\nPlease see our documentation on [values_from_glob](https://cloudcannon.com/documentation/developer-reference/configuration-file/types/structure/values_from_glob/) for defining individual\n*Structure* values in a split *Configuration File*.\n\nThis key has no default.\n\n## Examples\n\nIn this example, we have several *Structure Configuration Files* in the `.cloudcannon/structures/` folder. The value of the `_structures_from_glob` key tells CloudCannon to use the `staffMembers.cloudcannon.structures.yml` file in that folder.\n\n```yaml\n_structures_from_glob:\n - '/.cloudcannon/structures/staffMembers.cloudcannon.structures.yml'\n```\n\n```yaml\nstaff:\n style: modal\n values:\n - label: Employee\n value:\n name:\n job_description:\n profile_picture:\n - label: Manager\n value:\n name:\n job_description:\n profile_picture:\n url:\n```"
10296
10296
  },
10297
10297
  "entries_comment": {
10298
10298
  "description": "This key defines the subtitle text above the key input when adding or renaming entries within a mutable *Object Input*.\n\nThe value is a string that supports a limited selection of Markdown formatting: links, bold, italic, subscript, superscript, and inline code elements are allowed.\n\nAvailable for Mutable Objects only.\n\n## Examples\n\nIn this example, we have configured a comment with Markdown formatting to provide help text above the key input.\n\n```yaml\n_inputs:\n metadata:\n type: object\n options:\n allow_create: true\n entries:\n comment: Key names should be **lowercase** and use underscores (e.g., `article_title`)\n```",
@@ -13177,14 +13177,128 @@
13177
13177
  },
13178
13178
  "type._snippets_definitions": {
13179
13179
  "title": "Snippets Definitions",
13180
- "description": "This key defines extended options used when creating more complex custom snippets.",
13180
+ "description": "A record of reusable values that can be referenced in snippet templates. Values are substituted using `{ ref: \"key\" }` for direct replacement or `{ spread_ref: \"key\" }` for spreading arrays/objects. Common definition types include parser formats, argument models, select option lists, and simple string values like shortcode names.\n\n## Examples\n\nDefine reusable values like shortcode names, argument models, and parser formats that can be referenced in snippet templates.\n\n```yaml\n_snippets_definitions:\n # Simple string value for the shortcode name\n shortcode_name: \"highlight\"\n content_key: \"content\"\n\n # Array of argument models for positional arguments\n positional_args:\n - editor_key: \"language\"\n type: \"string\"\n - editor_key: \"linenos\"\n type: \"boolean\"\n optional: true\n default: false\n\n # Parser format configuration\n custom_format:\n root_pair_delimiter:\n - \" \"\n root_value_delimiter: \"=\"\n string_boundary:\n - '\"'\n - \"'\"\n - \"\"\n allow_booleans: true\n allow_numbers: true\n```\n\nReference definitions in snippet templates using `{ ref: \"key\" }` syntax. This allows you to reuse common configurations across multiple snippets.\n\n```yaml\n_snippets_definitions:\n shortcode_name: \"figure\"\n named_args:\n - editor_key: \"src\"\n type: \"string\"\n - editor_key: \"alt\"\n type: \"string\"\n optional: true\n\n_snippets_templates:\n my_shortcode_template:\n snippet: \"{{< [[name]] [[args]] >}}\"\n params:\n name:\n parser: \"literal\"\n options:\n literal:\n ref: \"shortcode_name\"\n args:\n parser: \"key_values\"\n options:\n models:\n ref: \"named_args\"\n\n_snippets:\n figure:\n template: \"my_shortcode_template\"\n definitions:\n shortcode_name: \"figure\"\n named_args:\n - editor_key: \"src\"\n type: \"string\"\n - editor_key: \"alt\"\n type: \"string\"\n```\n\nDefine a list of select options for use in snippet inputs, such as a list of programming languages for a code highlighting snippet.\n\n```yaml\n_snippets_definitions:\n languages:\n - name: \"JavaScript\"\n value: \"js\"\n - name: \"Python\"\n value: \"python\"\n - name: \"Ruby\"\n value: \"ruby\"\n - name: \"HTML\"\n value: \"html\"\n - name: \"CSS\"\n value: \"css\"\n```",
13181
13181
  "type": "object",
13182
13182
  "propertyNames": {
13183
13183
  "type": "string"
13184
13184
  },
13185
- "additionalProperties": {},
13185
+ "additionalProperties": {
13186
+ "$ref": "#/definitions/type.snippet-definition-value"
13187
+ },
13186
13188
  "documented": true,
13187
- "markdownDescription": "This key defines extended options used when creating more complex custom snippets."
13189
+ "markdownDescription": "A record of reusable values that can be referenced in snippet templates. Values are substituted using `{ ref: \"key\" }` for direct replacement or `{ spread_ref: \"key\" }` for spreading arrays/objects. Common definition types include parser formats, argument models, select option lists, and simple string values like shortcode names.\n\n## Examples\n\nDefine reusable values like shortcode names, argument models, and parser formats that can be referenced in snippet templates.\n\n```yaml\n_snippets_definitions:\n # Simple string value for the shortcode name\n shortcode_name: \"highlight\"\n content_key: \"content\"\n\n # Array of argument models for positional arguments\n positional_args:\n - editor_key: \"language\"\n type: \"string\"\n - editor_key: \"linenos\"\n type: \"boolean\"\n optional: true\n default: false\n\n # Parser format configuration\n custom_format:\n root_pair_delimiter:\n - \" \"\n root_value_delimiter: \"=\"\n string_boundary:\n - '\"'\n - \"'\"\n - \"\"\n allow_booleans: true\n allow_numbers: true\n```\n\nReference definitions in snippet templates using `{ ref: \"key\" }` syntax. This allows you to reuse common configurations across multiple snippets.\n\n```yaml\n_snippets_definitions:\n shortcode_name: \"figure\"\n named_args:\n - editor_key: \"src\"\n type: \"string\"\n - editor_key: \"alt\"\n type: \"string\"\n optional: true\n\n_snippets_templates:\n my_shortcode_template:\n snippet: \"{{< [[name]] [[args]] >}}\"\n params:\n name:\n parser: \"literal\"\n options:\n literal:\n ref: \"shortcode_name\"\n args:\n parser: \"key_values\"\n options:\n models:\n ref: \"named_args\"\n\n_snippets:\n figure:\n template: \"my_shortcode_template\"\n definitions:\n shortcode_name: \"figure\"\n named_args:\n - editor_key: \"src\"\n type: \"string\"\n - editor_key: \"alt\"\n type: \"string\"\n```\n\nDefine a list of select options for use in snippet inputs, such as a list of programming languages for a code highlighting snippet.\n\n```yaml\n_snippets_definitions:\n languages:\n - name: \"JavaScript\"\n value: \"js\"\n - name: \"Python\"\n value: \"python\"\n - name: \"Ruby\"\n value: \"ruby\"\n - name: \"HTML\"\n value: \"html\"\n - name: \"CSS\"\n value: \"css\"\n```"
13190
+ },
13191
+ "type.snippet-definition-value": {
13192
+ "title": "Snippet Definition Value",
13193
+ "description": "A reusable value that can be referenced in snippet templates via `{ ref: \"key\" }` or `{ spread_ref: \"key\" }`. Can be a string, number, boolean, parser format, parser model, array of models, or array of select options.",
13194
+ "anyOf": [
13195
+ {
13196
+ "$ref": "#/definitions/type.snippet-format"
13197
+ },
13198
+ {
13199
+ "$ref": "#/definitions/type.snippet-model"
13200
+ },
13201
+ {
13202
+ "title": "Parser Model Array",
13203
+ "description": "An array of parser model configurations. Typically used for `positional_args` or `named_args` definitions that specify the arguments a snippet accepts. Each model defines an argument's editor key, type, default value, and whether it's optional.",
13204
+ "type": "array",
13205
+ "items": {
13206
+ "$ref": "#/definitions/type.snippet-model"
13207
+ },
13208
+ "documented": true,
13209
+ "markdownDescription": "An array of parser model configurations. Typically used for `positional_args` or `named_args` definitions that specify the arguments a snippet accepts. Each model defines an argument's editor key, type, default value, and whether it's optional."
13210
+ },
13211
+ {
13212
+ "title": "Select Values Array",
13213
+ "description": "An array of select option values. Commonly used for language lists in code highlighting snippets, where each option has a display name and a value. For example: `[{ name: \"JavaScript\", value: \"js\" }, { name: \"Python\", value: \"python\" }]`.",
13214
+ "type": "array",
13215
+ "items": {
13216
+ "$ref": "#/definitions/type.snippet-definition-select-value"
13217
+ },
13218
+ "documented": true,
13219
+ "markdownDescription": "An array of select option values. Commonly used for language lists in code highlighting snippets, where each option has a display name and a value. For example: `[{ name: \"JavaScript\", value: \"js\" }, { name: \"Python\", value: \"python\" }]`."
13220
+ },
13221
+ {
13222
+ "title": "String Value",
13223
+ "description": "A string value definition. Commonly used for `shortcode_name`, `tag_name`, `content_key`, `include_name`, and similar definitions that identify snippet components by name.",
13224
+ "type": "string",
13225
+ "documented": true,
13226
+ "markdownDescription": "A string value definition. Commonly used for `shortcode_name`, `tag_name`, `content_key`, `include_name`, and similar definitions that identify snippet components by name."
13227
+ },
13228
+ {
13229
+ "title": "Number Value",
13230
+ "description": "A numeric value definition. Use for counts, sizes, or other numeric values that can be referenced in snippet templates.",
13231
+ "type": "number",
13232
+ "documented": true,
13233
+ "markdownDescription": "A numeric value definition. Use for counts, sizes, or other numeric values that can be referenced in snippet templates."
13234
+ },
13235
+ {
13236
+ "title": "Boolean Value",
13237
+ "description": "A boolean value definition. Use for flags and toggles that can be referenced in snippet templates.",
13238
+ "type": "boolean",
13239
+ "documented": true,
13240
+ "markdownDescription": "A boolean value definition. Use for flags and toggles that can be referenced in snippet templates."
13241
+ },
13242
+ {
13243
+ "title": "String Array",
13244
+ "description": "An array of string values. Useful for defining lists of allowed values, delimiters, or other string collections that can be referenced in snippet templates.",
13245
+ "type": "array",
13246
+ "items": {
13247
+ "type": "string",
13248
+ "documented": true,
13249
+ "title": "snippet-definition-value(string-array)[*]",
13250
+ "description": "A string item in the array.",
13251
+ "markdownDescription": "A string item in the array."
13252
+ },
13253
+ "documented": true,
13254
+ "markdownDescription": "An array of string values. Useful for defining lists of allowed values, delimiters, or other string collections that can be referenced in snippet templates."
13255
+ }
13256
+ ],
13257
+ "documented": true,
13258
+ "markdownDescription": "A reusable value that can be referenced in snippet templates via `{ ref: \"key\" }` or `{ spread_ref: \"key\" }`. Can be a string, number, boolean, parser format, parser model, array of models, or array of select options."
13259
+ },
13260
+ "type.snippet-definition-select-value": {
13261
+ "title": "Snippet Definition Select Value",
13262
+ "description": "A value option for select inputs, typically used in language lists. Contains a display name and the actual value to use.",
13263
+ "type": "object",
13264
+ "properties": {
13265
+ "name": {
13266
+ "description": "The display name shown to users when selecting this option. For example, \"JavaScript\" for a language with value \"js\".",
13267
+ "type": "string",
13268
+ "documented": true,
13269
+ "title": "name",
13270
+ "markdownDescription": "The display name shown to users when selecting this option. For example, \"JavaScript\" for a language with value \"js\"."
13271
+ },
13272
+ "value": {
13273
+ "description": "The actual value used when this option is selected. Can be a string, number, or boolean. For example, \"js\" for JavaScript or 4 for an indentation level.",
13274
+ "anyOf": [
13275
+ {
13276
+ "title": "String Select Value",
13277
+ "type": "string",
13278
+ "documented": true
13279
+ },
13280
+ {
13281
+ "title": "Number Select Value",
13282
+ "type": "number",
13283
+ "documented": true
13284
+ },
13285
+ {
13286
+ "title": "Boolean Select Value",
13287
+ "type": "boolean",
13288
+ "documented": true
13289
+ }
13290
+ ],
13291
+ "documented": true,
13292
+ "title": "value",
13293
+ "markdownDescription": "The actual value used when this option is selected. Can be a string, number, or boolean. For example, \"js\" for JavaScript or 4 for an indentation level."
13294
+ }
13295
+ },
13296
+ "required": [
13297
+ "value"
13298
+ ],
13299
+ "additionalProperties": false,
13300
+ "documented": true,
13301
+ "markdownDescription": "A value option for select inputs, typically used in language lists. Contains a display name and the actual value to use."
13188
13302
  }
13189
13303
  },
13190
13304
  "documented": false,