{"componentChunkName":"component---src-templates-doc-page-js","path":"/docs/add-to-your-site/","result":{"data":{"page":{"fields":{"path":"docs/add-to-your-site.md"},"frontmatter":{"title":"Add to Your Site","group":"start"},"html":"<p>You can adapt Netlify CMS to a wide variety of projects. It works with any content written in markdown, JSON, YAML, or TOML files, stored in a repo on <a href=\"https://github.com/\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub</a>, <a href=\"https://about.gitlab.com/\" target=\"_blank\" rel=\"noopener noreferrer\">GitLab</a>, or <a href=\"https://bitbucket.org\" target=\"_blank\" rel=\"noopener noreferrer\">Bitbucket</a>. You can also create your own custom backend.</p>\n<p>This tutorial guides you through the steps for adding Netlify CMS to a site that's built with a common <a href=\"https://www.staticgen.com/\" target=\"_blank\" rel=\"noopener noreferrer\">static site generator</a>, like Jekyll, Hugo, Hexo, or Gatsby. Alternatively, you can <a href=\"../start-with-a-template\">start from a template</a> or dive right into <a href=\"../configuration-options\">configuration options</a>.</p>\n<h2 id=\"app-file-structure\" style=\"position:relative;\"><a href=\"#app-file-structure\" aria-label=\"app file structure permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>App File Structure</h2>\n<p>A static <code>admin</code> folder contains all Netlify CMS files, stored at the root of your published site. Where you store this folder in the source files depends on your static site generator. Here's the static file location for a few of the most popular static site generators:</p>\n<table>\n<thead>\n<tr>\n<th>These generators ...</th>\n<th>store static files in</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Jekyll, GitBook</td>\n<td><code>/</code> (project root)</td>\n</tr>\n<tr>\n<td>Hugo, Gatsby, Nuxt, Gridsome, Zola, Sapper</td>\n<td><code>/static</code></td>\n</tr>\n<tr>\n<td>Next</td>\n<td><code>/public</code></td>\n</tr>\n<tr>\n<td>Hexo, Middleman, Jigsaw</td>\n<td><code>/source</code></td>\n</tr>\n<tr>\n<td>Spike</td>\n<td><code>/views</code></td>\n</tr>\n<tr>\n<td>Wyam</td>\n<td><code>/input</code></td>\n</tr>\n<tr>\n<td>Pelican</td>\n<td><code>/content</code></td>\n</tr>\n<tr>\n<td>VuePress</td>\n<td><code>/.vuepress/public</code></td>\n</tr>\n<tr>\n<td>Elmstatic</td>\n<td><code>/_site</code></td>\n</tr>\n<tr>\n<td>11ty</td>\n<td><code>/_site</code></td>\n</tr>\n<tr>\n<td>preact-cli</td>\n<td><code>/src/static</code></td>\n</tr>\n</tbody>\n</table>\n<p>If your generator isn't listed here, you can check its documentation, or as a shortcut, look in your project for a <code>css</code> or <code>images</code> folder. The contents of folders like that are usually processed as static files, so it's likely you can store your <code>admin</code> folder next to those. (When you've found the location, feel free to add it to these docs by <a href=\"https://github.com/netlify/netlify-cms/blob/master/CONTRIBUTING.md#pull-requests\" target=\"_blank\" rel=\"noopener noreferrer\">filing a pull request</a>!)</p>\n<p>Inside the <code>admin</code> folder, you'll create two files:</p>\n<div class=\"gatsby-highlight\" data-language=\"x\"><pre class=\"language-x\"><code class=\"language-x\">admin\n ├ index.html\n └ config.yml</code></pre></div>\n<p>The first file, <code>admin/index.html</code>, is the entry point for the Netlify CMS admin interface. This means that users navigate to <code>yoursite.com/admin/</code> to access it. On the code side, it's a basic HTML starter page that loads the Netlify CMS JavaScript file. In this example, we pull the file from a public CDN:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token doctype\">&lt;!doctype html></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>html</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>head</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>meta</span> <span class=\"token attr-name\">charset</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>utf-8<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>meta</span> <span class=\"token attr-name\">name</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>viewport<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">content</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>width=device-width, initial-scale=1.0<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>title</span><span class=\"token punctuation\">></span></span>Content Manager<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>title</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>head</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token comment\">&lt;!-- Include the script that builds the page and powers Netlify CMS --></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>html</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>In the code above the <code>script</code> is loaded from the <code>unpkg</code> CDN. Should there be any issue, <code>jsDelivr</code> can be used as an alternative source. Simply set the <code>src</code> to <code>https://cdn.jsdelivr.net/npm/netlify-cms@^2.0.0/dist/netlify-cms.js</code></p>\n<p>The second file, <code>admin/config.yml</code>, is the heart of your Netlify CMS installation, and a bit more complex. The <a href=\"#configuration\">Configuration</a> section covers the details.</p>\n<h3 id=\"installing-with-npm\" style=\"position:relative;\"><a href=\"#installing-with-npm\" aria-label=\"installing with npm permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Installing with npm</h3>\n<p>You can also use Netlify CMS as an npm module. Wherever you import Netlify CMS, it automatically runs, taking over the current page. Make sure the script that imports it only runs on your CMS page. First install the package and save it to your project:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> netlify-cms --save</code></pre></div>\n<p>Then import it (assuming your project has tooling for imports):</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">import</span> <span class=\"token constant\">CMS</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'netlify-cms'</span>\n<span class=\"token comment\">// Now the registry is available via the CMS object.</span>\n<span class=\"token constant\">CMS</span><span class=\"token punctuation\">.</span><span class=\"token function\">registerPreviewTemplate</span><span class=\"token punctuation\">(</span><span class=\"token string\">'my-template'</span><span class=\"token punctuation\">,</span> MyTemplate<span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"configuration\" style=\"position:relative;\"><a href=\"#configuration\" aria-label=\"configuration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configuration</h2>\n<p>Configuration is different for every site, so we'll break it down into parts.  Add all the code snippets in this section to your <code>admin/config.yml</code> file.</p>\n<h3 id=\"backend\" style=\"position:relative;\"><a href=\"#backend\" aria-label=\"backend permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Backend</h3>\n<p>We're using <a href=\"https://www.netlify.com\" target=\"_blank\" rel=\"noopener noreferrer\">Netlify</a> for our hosting and authentication in this tutorial, so backend configuration is fairly straightforward.</p>\n<p>For GitHub and GitLab repositories, you can start your Netlify CMS <code>config.yml</code> file with these lines:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">backend</span><span class=\"token punctuation\">:</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> git<span class=\"token punctuation\">-</span>gateway\n  <span class=\"token key atrule\">branch</span><span class=\"token punctuation\">:</span> master <span class=\"token comment\"># Branch to update (optional; defaults to master)</span></code></pre></div>\n<p><em>(For Bitbucket repositories, use the <a href=\"/docs/bitbucket-backend\">Bitbucket backend</a> instructions instead.)</em></p>\n<p>The configuration above specifies your backend protocol and your publication branch. Git Gateway is an open source API that acts as a proxy between authenticated users of your site and your site repo. (We'll get to the details of that in the <a href=\"#authentication\">Authentication section</a> below.) If you leave out the <code>branch</code> declaration, it defaults to <code>master</code>.</p>\n<h3 id=\"editorial-workflow\" style=\"position:relative;\"><a href=\"#editorial-workflow\" aria-label=\"editorial workflow permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Editorial Workflow</h3>\n<p><strong>Note:</strong> Editorial workflow works with GitHub repositories, and support for GitLab and Bitbucket is <a href=\"/docs/beta-features/#gitlab-and-bitbucket-editorial-workflow-support\">in beta</a>.</p>\n<p>By default, saving a post in the CMS interface pushes a commit directly to the publication branch specified in <code>backend</code>. However, you also have the option to enable the <a href=\"../configuration-options/#publish-mode\">Editorial Workflow</a>, which adds an interface for drafting, reviewing, and approving posts. To do this, add the following line to your Netlify CMS <code>config.yml</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># This line should *not* be indented</span>\n<span class=\"token key atrule\">publish_mode</span><span class=\"token punctuation\">:</span> editorial_workflow</code></pre></div>\n<h3 id=\"media-and-public-folders\" style=\"position:relative;\"><a href=\"#media-and-public-folders\" aria-label=\"media and public folders permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Media and Public Folders</h3>\n<p>Netlify CMS allows users to upload images directly within the editor. For this to work, the CMS needs to know where to save them. If you already have an <code>images</code> folder in your project, you could use its path, possibly creating an <code>uploads</code> sub-folder, for example:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># This line should *not* be indented</span>\n<span class=\"token key atrule\">media_folder</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"images/uploads\"</span> <span class=\"token comment\"># Media files will be stored in the repo under images/uploads</span></code></pre></div>\n<p>If you're creating a new folder for uploaded media, you'll need to know where your static site generator expects static files. You can refer to the paths outlined above in <a href=\"#app-file-structure\">App File Structure</a>, and put your media folder in the same location where you put the <code>admin</code> folder.</p>\n<p>Note that the<code>media_folder</code> file path is relative to the project root, so the example above would work for Jekyll, GitBook, or any other generator that stores static files at the project root. However, it would not work for Hugo, Hexo, Middleman or others that store static files in a subfolder. Here's an example that could work for a Hugo site:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token comment\"># These lines should *not* be indented</span>\n<span class=\"token key atrule\">media_folder</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"static/images/uploads\"</span> <span class=\"token comment\"># Media files will be stored in the repo under static/images/uploads</span>\n<span class=\"token key atrule\">public_folder</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/images/uploads\"</span> <span class=\"token comment\"># The src attribute for uploaded media will begin with /images/uploads</span></code></pre></div>\n<p>The configuration above adds a new setting, <code>public_folder</code>. While <code>media_folder</code> specifies where uploaded files are saved in the repo, <code>public_folder</code> indicates where they are found in the published site. Image <code>src</code> attributes use this path, which is relative to the file where it's called. For this reason, we usually start the path at the site root, using the opening <code>/</code>.</p>\n<p><em>If <code>public_folder</code> is not set, Netlify CMS defaults to the same value as <code>media_folder</code>, adding an opening <code>/</code> if one is not included.</em></p>\n<h3 id=\"collections\" style=\"position:relative;\"><a href=\"#collections\" aria-label=\"collections permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Collections</h3>\n<p>Collections define the structure for the different content types on your static site. Since every site is different, the <code>collections</code> settings differ greatly from one site to the next.</p>\n<p>Let's say your site has a blog, with the posts stored in <code>_posts/blog</code>, and files saved in a date-title format, like <code>1999-12-31-lets-party.md</code>. Each post begins with settings in yaml-formatted front matter, like so:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">---</span>\n<span class=\"token key atrule\">layout</span><span class=\"token punctuation\">:</span> blog\n<span class=\"token key atrule\">title</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Let's Party\"</span>\n<span class=\"token key atrule\">date</span><span class=\"token punctuation\">:</span> 1999<span class=\"token punctuation\">-</span>12<span class=\"token punctuation\">-</span>31 11<span class=\"token punctuation\">:</span>59<span class=\"token punctuation\">:</span>59 <span class=\"token punctuation\">-</span><span class=\"token number\">0800</span>\n<span class=\"token key atrule\">thumbnail</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/images/prince.jpg\"</span>\n<span class=\"token key atrule\">rating</span><span class=\"token punctuation\">:</span> <span class=\"token number\">5</span>\n<span class=\"token punctuation\">---</span>\n\nThis is the post body<span class=\"token punctuation\">,</span> where I write about our last chance to party before the Y2K bug destroys us all.</code></pre></div>\n<p>Given this example, our <code>collections</code> settings would look like this in your NetlifyCMS <code>config.yml</code> file:</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">collections</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"blog\"</span> <span class=\"token comment\"># Used in routes, e.g., /admin/collections/blog</span>\n    <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Blog\"</span> <span class=\"token comment\"># Used in the UI</span>\n    <span class=\"token key atrule\">folder</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"_posts/blog\"</span> <span class=\"token comment\"># The path to the folder where the documents are stored</span>\n    <span class=\"token key atrule\">create</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span> <span class=\"token comment\"># Allow users to create new documents in this collection</span>\n    <span class=\"token key atrule\">slug</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"{{year}}-{{month}}-{{day}}-{{slug}}\"</span> <span class=\"token comment\"># Filename template, e.g., YYYY-MM-DD-title.md</span>\n    <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span> <span class=\"token comment\"># The fields for each document, usually in front matter</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Layout\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"layout\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"hidden\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"blog\"</span><span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Title\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"title\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Publish Date\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"date\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"datetime\"</span><span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Featured Image\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"thumbnail\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"image\"</span><span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Rating (scale of 1-5)\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"rating\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"number\"</span><span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Body\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"body\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"markdown\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n<p>Let's break that down:</p>\n<table>\n  <tr>\n    <td><code>name</code></td>\n    <td>Post type identifier, used in routes. Must be unique.</td>\n  </tr>\n  <tr>\n    <td><code>label</code></td>\n    <td>What the admin UI calls the post type.</td>\n  </tr>\n  <tr>\n    <td><code>folder</code></td>\n    <td>Where files of this type are stored, relative to the repo root.</td>\n  </tr>\n  <tr>\n    <td><code>create</code></td>\n    <td>Set to <code>true</code> to allow users to create new files in this collection.\n</td>\n  </tr>\n  <tr>\n    <td><code>slug</code></td>\n    <td>Template for filenames. <code>{{year}}</code>, <code>{{month}}</code>, and <code>{{day}}</code> pulls from the post's <code>date</code> field or save date. <code>{{slug}}</code> is a url-safe version of the post's <code>title</code>. Default is simply <code>{{slug}}</code>.\n</td>\n  </tr>\n  <tr>\n    <td><code>fields</code></td>\n    <td>Fields listed here are shown as fields in the content editor, then saved as front matter at the beginning of the document (except for <code>body</code>, which follows the front matter). Each field contains the following properties:\n      <ul>\n        <li><code>label</code>: Field label in the editor UI.</li>\n        <li><code>name</code>: Field name in the document front matter.</li>\n        <li><code>widget</code>: Determines UI style and value data type (details below).</li>\n        <li><code>default</code> (optional): Sets a default value for the field.</li>\n      </ul>\n    </td>\n  </tr>\n</table>\n<p>As described above, the <code>widget</code> property specifies a built-in or custom UI widget for a given field. When a content editor enters a value into a widget, that value is saved in the document front matter as the value for the <code>name</code> specified for that field. A full listing of available widgets can be found in the <a href=\"../widgets\">Widgets doc</a>.</p>\n<p>Based on this example, you can go through the post types in your site and add the appropriate settings to your Netlify CMS <code>config.yml</code> file. Each post type should be listed as a separate node under the <code>collections</code> field. See the <a href=\"../configuration-options/#collections\">Collections reference doc</a> for more configuration options.</p>\n<h3 id=\"filter\" style=\"position:relative;\"><a href=\"#filter\" aria-label=\"filter permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Filter</h3>\n<p>The entries for any collection can be filtered based on the value of a single field. The example collection below only shows post entries with the value <code>en</code> in the <code>language</code> field.</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token key atrule\">collections</span><span class=\"token punctuation\">:</span>\n  <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"posts\"</span>\n    <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Post\"</span>\n    <span class=\"token key atrule\">folder</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"_posts\"</span>\n    <span class=\"token key atrule\">filter</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">field</span><span class=\"token punctuation\">:</span> language\n      <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> en\n    <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n      <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Language\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"language\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"authentication\" style=\"position:relative;\"><a href=\"#authentication\" aria-label=\"authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Authentication</h2>\n<p>Now that you have your Netlify CMS files in place and configured, all that's left is to enable authentication. We're using the <a href=\"https://www.netlify.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Netlify</a> platform here because it's one of the quickest ways to get started, but you can learn about other authentication options in the <a href=\"/docs/backends-overview\">Backends</a> doc.</p>\n<h3 id=\"setup-on-netlify\" style=\"position:relative;\"><a href=\"#setup-on-netlify\" aria-label=\"setup on netlify permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Setup on Netlify</h3>\n<p>Netlify offers a built-in authentication service called Identity. In order to use it, connect your site repo with Netlify. Netlify has published a general <a href=\"https://www.netlify.com/blog/2016/10/27/a-step-by-step-guide-deploying-a-static-site-or-single-page-app/\" target=\"_blank\" rel=\"noopener noreferrer\">Step-by-Step Guide</a> for this, along with detailed guides for many popular static site generators, including <a href=\"https://www.netlify.com/blog/2015/10/28/a-step-by-step-guide-jekyll-3.0-on-netlify/\" target=\"_blank\" rel=\"noopener noreferrer\">Jekyll</a>, <a href=\"https://www.netlify.com/blog/2016/09/21/a-step-by-step-guide-victor-hugo-on-netlify/\" target=\"_blank\" rel=\"noopener noreferrer\">Hugo</a>, <a href=\"https://www.netlify.com/blog/2015/10/26/a-step-by-step-guide-hexo-on-netlify/\" target=\"_blank\" rel=\"noopener noreferrer\">Hexo</a>, <a href=\"https://www.netlify.com/blog/2015/10/01/a-step-by-step-guide-middleman-on-netlify/\" target=\"_blank\" rel=\"noopener noreferrer\">Middleman</a>, <a href=\"https://www.netlify.com/blog/2016/02/24/a-step-by-step-guide-gatsby-on-netlify/\" target=\"_blank\" rel=\"noopener noreferrer\">Gatsby</a>, and more.</p>\n<h3 id=\"enable-identity-and-git-gateway\" style=\"position:relative;\"><a href=\"#enable-identity-and-git-gateway\" aria-label=\"enable identity and git gateway permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Enable Identity and Git Gateway</h3>\n<p>Netlify's Identity and Git Gateway services allow you to manage CMS admin users for your site without requiring them to have an account with your Git host or commit access on your repo. From your site dashboard on Netlify:</p>\n<ol>\n<li>Go to <strong>Settings > Identity</strong>, and select <strong>Enable Identity service</strong>.</li>\n<li>Under <strong>Registration preferences</strong>, select <strong>Open</strong> or <strong>Invite only</strong>. In most cases, you want only invited users to access your CMS, but if you're just experimenting, you can leave it open for convenience.</li>\n<li>If you'd like to allow one-click login with services like Google and GitHub, check the boxes next to the services you'd like to use, under <strong>External providers</strong>.</li>\n<li>Scroll down to <strong>Services > Git Gateway</strong>, and click <strong>Enable Git Gateway</strong>. This authenticates with your Git host and generates an API access token. In this case, we're leaving the <strong>Roles</strong> field blank, which means any logged in user may access the CMS. For information on changing this, check the <a href=\"https://www.netlify.com/docs/identity/\" target=\"_blank\" rel=\"noopener noreferrer\">Netlify Identity documentation</a>.</li>\n</ol>\n<h3 id=\"add-the-netlify-identity-widget\" style=\"position:relative;\"><a href=\"#add-the-netlify-identity-widget\" aria-label=\"add the netlify identity widget permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Add the Netlify Identity Widget</h3>\n<p>With the backend set to handle authentication, now you need a frontend interface to connect to it. The open source Netlify Identity Widget is a drop-in widget made for just this purpose. To include the widget in your site, add the following script tag in two places:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>https://identity.netlify.com/v1/netlify-identity-widget.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Add this to the <code>&#x3C;head></code> of your CMS index page at <code>/admin/index.html</code>, as well as the <code>&#x3C;head></code> of your site's main index page. Depending on how your site generator is set up, this may mean you need to add it to the default template, or to a \"partial\" or \"include\" template. If you can find where the site stylesheet is linked, that's probably the right place. Alternatively, you can include the script in your site using Netlify's <a href=\"https://www.netlify.com/docs/inject-analytics-snippets/\" target=\"_blank\" rel=\"noopener noreferrer\">Script Injection</a> feature.</p>\n<p>When a user logs in with the Netlify Identity widget, an access token directs to the site homepage. In order to complete the login and get back to the CMS, redirect the user back to the <code>/admin/</code> path. To do this, add the following script before the closing <code>body</code> tag of your site's main index page:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\">\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>window<span class=\"token punctuation\">.</span>netlifyIdentity<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    window<span class=\"token punctuation\">.</span>netlifyIdentity<span class=\"token punctuation\">.</span><span class=\"token function\">on</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"init\"</span><span class=\"token punctuation\">,</span> <span class=\"token parameter\">user</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">!</span>user<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        window<span class=\"token punctuation\">.</span>netlifyIdentity<span class=\"token punctuation\">.</span><span class=\"token function\">on</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"login\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n          document<span class=\"token punctuation\">.</span>location<span class=\"token punctuation\">.</span>href <span class=\"token operator\">=</span> <span class=\"token string\">\"/admin/\"</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n</span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Note: This example script requires modern JavaScript and does not work on IE11. For legacy browser support, use function expressions (<code>function () {}</code>) in place of the arrow functions (<code>() => {}</code>), or use a transpiler such as <a href=\"https://babeljs.io/\" target=\"_blank\" rel=\"noopener noreferrer\">Babel</a>.</p>\n<h2 id=\"accessing-the-cms\" style=\"position:relative;\"><a href=\"#accessing-the-cms\" aria-label=\"accessing the cms permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Accessing the CMS</h2>\n<p>Your site CMS is now fully configured and ready for login!</p>\n<p>If you set your registration preference to \"Invite only,\" invite yourself (and anyone else you choose) as a site user. To do this, select the <strong>Identity</strong> tab from your site dashboard, and then select the <strong>Invite users</strong> button. Invited users receive an email invitation with a confirmation link. Clicking the link will take you to your site with a login prompt.</p>\n<p>If you left your site registration open, or for return visits after confirming an email invitation, access your site's CMS at <code>yoursite.com/admin/</code>.</p>\n<p><strong>Note:</strong> No matter where you access Netlify CMS — whether running locally, in a staging environment, or in your published site — it always fetches and commits files in your hosted repository (for example, on GitHub), on the branch you configured in your Netlify CMS config.yml file. This means that content fetched in the admin UI matches the content in the repository, which may be different from your locally running site. It also means that content saved using the admin UI saves directly to the hosted repository, even if you're running the UI locally or in staging.</p>\n<p>Happy posting!</p>"},"nav":{"group":[{"fieldValue":"backends","edges":[{"node":{"fields":{"slug":"/docs/backends-overview/"},"frontmatter":{"title":"Overview","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/backends-overview/#backend-configuration\">Backend Configuration</a></li>\n<li><a href=\"/docs/backends-overview/#creating-a-new-backend\">Creating a New Backend</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/git-gateway-backend/"},"frontmatter":{"title":"Git Gateway","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/git-gateway-backend/#git-gateway-with-netlify\">Git Gateway with Netlify</a></li>\n<li><a href=\"/docs/git-gateway-backend/#reconnect-after-changing-repository-permissions\">Reconnect after Changing Repository Permissions</a></li>\n<li><a href=\"/docs/git-gateway-backend/#git-gateway-without-netlify\">Git Gateway without Netlify</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/bitbucket-backend/"},"frontmatter":{"title":"Bitbucket","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/bitbucket-backend/#client-side-implicit-grant-bitbucket\">Client-Side Implicit Grant (Bitbucket)</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/github-backend/"},"frontmatter":{"title":"GitHub","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/github-backend/#specifying-a-status-for-deploy-previews\">Specifying a status for deploy previews</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/gitlab-backend/"},"frontmatter":{"title":"GitLab","group":"backends"},"tableOfContents":"<ul>\n<li><a href=\"/docs/gitlab-backend/#web-application-flow-with-netlify\">Web Application Flow with Netlify</a></li>\n<li><a href=\"/docs/gitlab-backend/#client-side-implicit-grant-gitlab\">Client-Side Implicit Grant (GitLab)</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/test-backend/"},"frontmatter":{"title":"Test","group":"backends"},"tableOfContents":""}},{"node":{"fields":{"slug":"/docs/external-oauth-clients/"},"frontmatter":{"title":"External OAuth Clients","group":"backends"},"tableOfContents":""}}]},{"fieldValue":"contributing","edges":[{"node":{"fields":{"slug":"/docs/contributor-guide/"},"frontmatter":{"title":"Contributor Guide","group":"contributing"},"tableOfContents":"<ul>\n<li><a href=\"/docs/contributor-guide/#getting-started-with-contributing\">Getting started with contributing</a></li>\n<li><a href=\"/docs/contributor-guide/#the-basics-of-the-netlify-cms-docs\">The basics of the Netlify CMS docs</a></li>\n<li><a href=\"/docs/contributor-guide/#style-guidelines\">Style guidelines</a></li>\n<li><a href=\"/docs/contributor-guide/#filing-issues\">Filing issues</a></li>\n<li><a href=\"/docs/contributor-guide/#improve-existing-content\">Improve existing content</a></li>\n<li><a href=\"/docs/contributor-guide/#other-places-to-get-involved\">Other places to get involved</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/writing-style-guide/"},"frontmatter":{"title":"Writing Style Guide","group":"contributing"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/writing-style-guide/#netlify-cms-style-guide\">Netlify CMS Style Guide</a></p>\n<ul>\n<li>\n<p><a href=\"/docs/writing-style-guide/#documentation-formatting-standards\">Documentation Formatting Standards</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#use-angle-brackets-for-placeholders\">Use angle brackets for placeholders</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-bold-for-user-interface-elements\">Use bold for user interface elements</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-italics-to-define-or-introduce-new-terms\">Use italics to define or introduce new terms</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-code-style-for-filenames-directories-and-paths\">Use code style for filenames, directories, and paths</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-the-international-standard-for-punctuation-inside-quotes\">Use the international standard for punctuation inside quotes</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#inline-code-formatting\">Inline code formatting</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#use-code-style-for-inline-code-and-commands\">Use code style for inline code and commands</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-code-style-for-object-field-names\">Use code style for object field names</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-normal-style-for-string-and-integer-field-values\">Use normal style for string and integer field values</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#code-snippet-formatting\">Code snippet formatting</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#dont-include-the-command-prompt\">Don’t include the command prompt</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#content-best-practices\">Content best practices</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#use-present-tense\">Use present tense</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-active-voice\">Use active voice</a></li>\n<li><a href=\"/docs/writing-style-guide/#use-simple-and-direct-language\">Use simple and direct language</a></li>\n<li><a href=\"/docs/writing-style-guide/#address-the-reader-as-you\">Address the reader as “you”</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-latin-phrases\">Avoid Latin phrases</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/writing-style-guide/#patterns-to-avoid\">Patterns to avoid</a></p>\n<ul>\n<li><a href=\"/docs/writing-style-guide/#avoid-using-we\">Avoid using “we”</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-jargon-and-idioms\">Avoid jargon and idioms</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-statements-about-the-future\">Avoid statements about the future</a></li>\n<li><a href=\"/docs/writing-style-guide/#avoid-statements-that-will-soon-be-out-of-date\">Avoid statements that will soon be out of date</a></li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/architecture/"},"frontmatter":{"title":"Architecture","group":"contributing"},"tableOfContents":"<ul>\n<li><a href=\"/docs/architecture/#state-shape--reducers\">State shape / reducers</a></li>\n<li><a href=\"/docs/architecture/#selectors\">Selectors</a></li>\n<li><a href=\"/docs/architecture/#value-objects\">Value Objects</a></li>\n<li>\n<p><a href=\"/docs/architecture/#components-structure-and-workflows\">Components structure and Workflows</a></p>\n<ul>\n<li>\n<p><a href=\"/docs/architecture/#entry-editing\">Entry Editing</a></p>\n<ul>\n<li><a href=\"/docs/architecture/#widget-components-implementation\">Widget components implementation</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/architecture/#editorial-workflow-implementation\">Editorial Workflow implementation</a></p>\n<ul>\n<li><a href=\"/docs/architecture/#about-metadata\">About metadata</a></li>\n</ul>\n</li>\n</ul>"}}]},{"fieldValue":"customization","edges":[{"node":{"fields":{"slug":"/docs/custom-widgets/"},"frontmatter":{"title":"Creating Custom Widgets","group":"customization"},"tableOfContents":"<ul>\n<li>\n<ul>\n<li><a href=\"/docs/custom-widgets/#writing-react-components-inline\">Writing React Components inline</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/custom-widgets/#registerwidget\"><code>registerWidget</code></a></li>\n<li><a href=\"/docs/custom-widgets/#registereditorcomponent\"><code>registerEditorComponent</code></a></li>\n<li><a href=\"/docs/custom-widgets/#advanced-field-validation\">Advanced field validation</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/customization/"},"frontmatter":{"title":"Creating Custom Previews","group":"customization"},"tableOfContents":"<ul>\n<li>\n<ul>\n<li><a href=\"/docs/customization/#react-components-inline-interaction\">React Components inline interaction</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/customization/#registerpreviewstyle\"><code>registerPreviewStyle</code></a></li>\n<li><a href=\"/docs/customization/#registerpreviewtemplate\"><code>registerPreviewTemplate</code></a></li>\n</ul>"}}]},{"fieldValue":"features","edges":[{"node":{"fields":{"slug":"/docs/deploy-preview-links/"},"frontmatter":{"title":"Deploy Preview Links","group":"features"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/deploy-preview-links/#using-deploy-preview-links\">Using deploy preview links</a></p>\n<ul>\n<li><a href=\"/docs/deploy-preview-links/#waiting-for-builds\">Waiting for builds</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/deploy-preview-links/#configuring-preview-paths\">Configuring preview paths</a></p>\n<ul>\n<li><a href=\"/docs/deploy-preview-links/#dates-in-preview-paths\">Dates in preview paths</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/deploy-preview-links/#preview-links-for-published-content\">Preview links for published content</a></li>\n<li><a href=\"/docs/deploy-preview-links/#disabling-deploy-preview-links\">Disabling deploy preview links</a></li>\n<li><a href=\"/docs/deploy-preview-links/#how-it-works\">How it works</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/open-authoring/"},"frontmatter":{"title":"Open Authoring","group":"features"},"tableOfContents":"<ul>\n<li><a href=\"/docs/open-authoring/#requirements\">Requirements</a></li>\n<li><a href=\"/docs/open-authoring/#enabling-open-authoring\">Enabling Open Authoring</a></li>\n<li><a href=\"/docs/open-authoring/#usage\">Usage</a></li>\n<li><a href=\"/docs/open-authoring/#alternative-for-external-contributors-with-git-gateway\">Alternative for external contributors with Git Gateway</a></li>\n<li><a href=\"/docs/open-authoring/#linking-to-specific-entries-in-the-cms\">Linking to specific entries in the CMS</a></li>\n</ul>"}}]},{"fieldValue":"guides","edges":[{"node":{"fields":{"slug":"/docs/gatsby/"},"frontmatter":{"title":"Gatsby","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/gatsby/#create-a-new-gatsby-site\">Create a new Gatsby site</a></li>\n<li><a href=\"/docs/gatsby/#get-to-know-gatsby\">Get to know Gatsby</a></li>\n<li>\n<p><a href=\"/docs/gatsby/#add-netlify-cms-to-your-site\">Add Netlify CMS to your site</a></p>\n<ul>\n<li><a href=\"/docs/gatsby/#configuration\">Configuration</a></li>\n<li><a href=\"/docs/gatsby/#push-to-github\">Push to GitHub</a></li>\n<li><a href=\"/docs/gatsby/#add-your-repo-to-netlify\">Add your repo to Netlify</a></li>\n<li><a href=\"/docs/gatsby/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/gatsby/#start-publishing\">Start publishing</a></p>\n<ul>\n<li><a href=\"/docs/gatsby/#cleanup\">Cleanup</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/hugo/"},"frontmatter":{"title":"Hugo","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/hugo/#introduction\">Introduction</a></li>\n<li>\n<p><a href=\"/docs/hugo/#getting-started-with-hugo\">Getting started with Hugo</a></p>\n<ul>\n<li><a href=\"/docs/hugo/#installation\">Installation</a></li>\n<li><a href=\"/docs/hugo/#creating-a-new-site\">Creating a new site</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/hugo/#getting-started-with-netlify-cms\">Getting Started With Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/hugo/#add-the-netlify-cms-files-to-hugo\">Add the Netlify CMS files to Hugo</a></li>\n<li><a href=\"/docs/hugo/#pushing-to-github\">Pushing to GitHub</a></li>\n<li><a href=\"/docs/hugo/#deploying-with-netlify\">Deploying With Netlify</a></li>\n<li><a href=\"/docs/hugo/#authenticating-with-netlify-identity\">Authenticating with Netlify Identity</a></li>\n<li><a href=\"/docs/hugo/#enable-identity--git-gateway-in-netlify\">Enable Identity &#x26; Git Gateway in Netlify</a></li>\n<li><a href=\"/docs/hugo/#accessing-the-cms\">Accessing the CMS</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/hugo/#using-netlify-cms-content-in-hugo\">Using Netlify CMS content in Hugo</a></p>\n<ul>\n<li><a href=\"/docs/hugo/#creating-a-list-of-posts\">Creating a list of posts</a></li>\n<li><a href=\"/docs/hugo/#creating-a-single-page-post-layout\">Creating a single page post layout</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/nextjs/"},"frontmatter":{"title":"NextJS","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/nextjs/#creating-a-new-project\">Creating a new project</a></li>\n<li><a href=\"/docs/nextjs/#adding-netlify-cms\">Adding Netlify CMS</a></li>\n<li>\n<p><a href=\"/docs/nextjs/#publishing-to-github-and-netlify\">Publishing to GitHub and Netlify</a></p>\n<ul>\n<li><a href=\"/docs/nextjs/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n<li><a href=\"/docs/nextjs/#celebrate\">Celebrate!</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/nuxt/"},"frontmatter":{"title":"Nuxt","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/nuxt/#starting-with-create-nuxt-app\">Starting With <code>create-nuxt-app</code></a></li>\n<li>\n<p><a href=\"/docs/nuxt/#setting-up-netlify-cms\">Setting Up Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/nuxt/#add-the-netlify-cms-files-to-nuxt\">Add the Netlify CMS files to Nuxt</a></li>\n<li><a href=\"/docs/nuxt/#add-the-content-directory-to-nuxt\">Add the <code>content/</code> directory to Nuxt</a></li>\n<li><a href=\"/docs/nuxt/#pushing-to-github\">Pushing to GitHub</a></li>\n<li><a href=\"/docs/nuxt/#deploying-with-netlify\">Deploying With Netlify</a></li>\n<li><a href=\"/docs/nuxt/#authenticating-with-netlify-identity\">Authenticating with Netlify Identity</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/nuxt/#integrating-content-in-nuxt-with-vuex\">Integrating content in Nuxt with Vuex</a></p>\n<ul>\n<li><a href=\"/docs/nuxt/#rendering-markdown-with-nuxtjsmarkdownit\">Rendering Markdown with <code>@nuxtjs/markdownit</code></a></li>\n<li><a href=\"/docs/nuxt/#generating-pages-with-the-generate-property\">Generating pages with the <code>generate</code> property</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/jekyll/"},"frontmatter":{"title":"Jekyll","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/jekyll/#introduction\">Introduction</a></li>\n<li><a href=\"/docs/jekyll/#setup\">Setup</a></li>\n<li>\n<p><a href=\"/docs/jekyll/#add-netlify-cms\">Add Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/jekyll/#add-adminindexhtml\">Add admin/index.html</a></li>\n<li><a href=\"/docs/jekyll/#add-adminconfigyml\">Add admin/config.yml</a></li>\n<li><a href=\"/docs/jekyll/#setup-backend\">Setup Backend</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/jekyll/#cms-configuration\">CMS Configuration</a></p>\n<ul>\n<li><a href=\"/docs/jekyll/#blog-collection\">Blog Collection</a></li>\n<li><a href=\"/docs/jekyll/#author-collection\">Author Collection</a></li>\n<li><a href=\"/docs/jekyll/#about-page\">About Page</a></li>\n<li><a href=\"/docs/jekyll/#navigation\">Navigation</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/middleman/"},"frontmatter":{"title":"Middleman","group":"guides"},"tableOfContents":"<ul>\n<li><a href=\"/docs/middleman/#installation\">Installation</a></li>\n<li>\n<p><a href=\"/docs/middleman/#create-a-new-middleman-site\">Create a new Middleman site</a></p>\n<ul>\n<li><a href=\"/docs/middleman/#add-the-middleman-blog-extension\">Add the Middleman blog extension</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/middleman/#get-started-with-middleman\">Get started with Middleman</a></p>\n<ul>\n<li><a href=\"/docs/middleman/#activate-the-blog-extension\">Activate the blog extension</a></li>\n<li><a href=\"/docs/middleman/#load-the-articles\">Load the articles</a></li>\n<li><a href=\"/docs/middleman/#add-an-article-layout\">Add an article layout</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/middleman/#add-netlify-cms-to-your-site\">Add Netlify CMS to your site</a></p>\n<ul>\n<li><a href=\"/docs/middleman/#configuration\">Configuration</a></li>\n<li><a href=\"/docs/middleman/#push-to-github\">Push to GitHub</a></li>\n<li><a href=\"/docs/middleman/#add-your-repo-to-netlify\">Add your repo to Netlify</a></li>\n<li><a href=\"/docs/middleman/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/middleman/#start-publishing\">Start publishing</a></li>\n</ul>"}}]},{"fieldValue":"media","edges":[{"node":{"fields":{"slug":"/docs/cloudinary/"},"frontmatter":{"title":"Cloudinary","group":"media"},"tableOfContents":"<ul>\n<li><a href=\"/docs/cloudinary/#creating-a-cloudinary-account\">Creating a Cloudinary Account</a></li>\n<li>\n<p><a href=\"/docs/cloudinary/#connecting-cloudinary-to-netlify-cms\">Connecting Cloudinary to Netlify CMS</a></p>\n<ul>\n<li><a href=\"/docs/cloudinary/#security-considerations\">Security Considerations</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/cloudinary/#netlify-cms-configuration-options\">Netlify CMS configuration options</a></li>\n<li>\n<p><a href=\"/docs/cloudinary/#cloudinary-configuration-options\">Cloudinary configuration options</a></p>\n<ul>\n<li><a href=\"/docs/cloudinary/#authentication\">Authentication</a></li>\n<li><a href=\"/docs/cloudinary/#media-library-behavior\">Media library behavior</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/cloudinary/#image-transformations\">Image transformations</a></p>\n<ul>\n<li>\n<p><a href=\"/docs/cloudinary/#transforming-images-via-media-library\">Transforming images via Media Library</a></p>\n<ul>\n<li><a href=\"/docs/cloudinary/#global-configuration\">Global configuration</a></li>\n<li><a href=\"/docs/cloudinary/#field-configuration\">Field configuration</a></li>\n</ul>\n</li>\n</ul>\n</li>\n<li><a href=\"/docs/cloudinary/#inserting-cloudinary-url-in-page-templates\">Inserting Cloudinary URL in page templates</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/netlify-large-media/"},"frontmatter":{"title":"Netlify Large Media","group":"media"},"tableOfContents":"<ul>\n<li><a href=\"/docs/netlify-large-media/#requirements\">Requirements</a></li>\n<li>\n<p><a href=\"/docs/netlify-large-media/#image-transformations\">Image transformations</a></p>\n<ul>\n<li><a href=\"/docs/netlify-large-media/#transformation-control-for-media-gallery-thumbnails\">Transformation control for media gallery thumbnails</a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/uploadcare/"},"frontmatter":{"title":"Uploadcare","group":"media"},"tableOfContents":"<ul>\n<li><a href=\"/docs/uploadcare/#creating-an-uploadcare-account\">Creating an Uploadcare Account</a></li>\n<li><a href=\"/docs/uploadcare/#updating-netlify-cms-configuration\">Updating Netlify CMS Configuration</a></li>\n<li>\n<p><a href=\"/docs/uploadcare/#configuring-the-uploadcare-widget\">Configuring the Uploadcare Widget</a></p>\n<ul>\n<li><a href=\"/docs/uploadcare/#global-configuration\">Global configuration</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/uploadcare/#field-configuration\">Field configuration</a></li>\n<li><a href=\"/docs/uploadcare/#integration-settings\">Integration settings</a></li>\n</ul>"}}]},{"fieldValue":"reference","edges":[{"node":{"fields":{"slug":"/docs/configuration-options/"},"frontmatter":{"title":"Configuration Options","group":"reference"},"tableOfContents":"<ul>\n<li><a href=\"/docs/configuration-options/#backend\">Backend</a></li>\n<li><a href=\"/docs/configuration-options/#publish-mode\">Publish Mode</a></li>\n<li>\n<p><a href=\"/docs/configuration-options/#media-and-public-folders\">Media and Public Folders</a></p>\n<ul>\n<li><a href=\"/docs/configuration-options/#media-folder\">Media Folder</a></li>\n<li><a href=\"/docs/configuration-options/#public-folder\">Public Folder</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/configuration-options/#media-library\">Media Library</a></li>\n<li><a href=\"/docs/configuration-options/#site-url\">Site URL</a></li>\n<li><a href=\"/docs/configuration-options/#display-url\">Display URL</a></li>\n<li><a href=\"/docs/configuration-options/#custom-logo\">Custom Logo</a></li>\n<li><a href=\"/docs/configuration-options/#locale\">Locale</a></li>\n<li><a href=\"/docs/configuration-options/#show-preview-links\">Show Preview Links</a></li>\n<li><a href=\"/docs/configuration-options/#slug-type\">Slug Type</a></li>\n<li>\n<p><a href=\"/docs/configuration-options/#collections\">Collections</a></p>\n<ul>\n<li><a href=\"/docs/configuration-options/#identifier_field\"><code>identifier_field</code></a></li>\n<li><a href=\"/docs/configuration-options/#extension-and-format\"><code>extension</code> and <code>format</code></a></li>\n<li><a href=\"/docs/configuration-options/#frontmatter_delimiter\"><code>frontmatter_delimiter</code></a></li>\n<li><a href=\"/docs/configuration-options/#slug\"><code>slug</code></a></li>\n<li><a href=\"/docs/configuration-options/#preview_path\"><code>preview_path</code></a></li>\n<li><a href=\"/docs/configuration-options/#preview_path_date_field\"><code>preview_path_date_field</code></a></li>\n<li><a href=\"/docs/configuration-options/#fields\"><code>fields</code></a></li>\n<li><a href=\"/docs/configuration-options/#editor\"><code>editor</code></a></li>\n<li><a href=\"/docs/configuration-options/#summary\"><code>summary</code></a></li>\n<li><a href=\"/docs/configuration-options/#sortablefields\"><code>sortableFields</code></a></li>\n</ul>\n</li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/widgets/"},"frontmatter":{"title":"Widgets","group":"reference"},"tableOfContents":"<ul>\n<li><a href=\"/docs/widgets/#common-widget-options\">Common widget options</a></li>\n<li><a href=\"/docs/widgets/#default-widgets\">Default widgets</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/beta-features/"},"frontmatter":{"title":"Beta Features!","group":"reference"},"tableOfContents":"<ul>\n<li><a href=\"/docs/beta-features/#working-with-a-local-git-repository\">Working with a Local Git Repository</a></li>\n<li><a href=\"/docs/beta-features/#gitlab-and-bitbucket-editorial-workflow-support\">GitLab and BitBucket Editorial Workflow Support</a></li>\n<li><a href=\"/docs/beta-features/#github-graphql-api\">GitHub GraphQL API</a></li>\n<li><a href=\"/docs/beta-features/#open-authoring\">Open Authoring</a></li>\n<li><a href=\"/docs/beta-features/#folder-collections-path\">Folder Collections Path</a></li>\n<li><a href=\"/docs/beta-features/#folder-collections-media-and-public-folder\">Folder Collections Media and Public Folder</a></li>\n<li>\n<p><a href=\"/docs/beta-features/#list-widget-variable-types\">List Widget: Variable Types</a></p>\n<ul>\n<li><a href=\"/docs/beta-features/#additional-list-widget-options\">Additional list widget options</a></li>\n<li><a href=\"/docs/beta-features/#example-configuration\">Example Configuration</a></li>\n<li><a href=\"/docs/beta-features/#example-output\">Example Output</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/beta-features/#custom-mount-element\">Custom Mount Element</a></li>\n<li><a href=\"/docs/beta-features/#manual-initialization\">Manual Initialization</a></li>\n<li><a href=\"/docs/beta-features/#raw-css-in-registerpreviewstyle\">Raw CSS in <code>registerPreviewStyle</code></a></li>\n<li><a href=\"/docs/beta-features/#squash-merge-github-pull-requests\">Squash merge GitHub pull requests</a></li>\n<li><a href=\"/docs/beta-features/#commit-message-templates\">Commit Message Templates</a></li>\n<li><a href=\"/docs/beta-features/#image-widget-file-size-limit\">Image widget file size limit</a></li>\n<li><a href=\"/docs/beta-features/#registering-to-cms-events\">Registering to CMS Events</a></li>\n<li><a href=\"/docs/beta-features/#dynamic-default-values\">Dynamic Default Values</a></li>\n</ul>"}}]},{"fieldValue":"start","edges":[{"node":{"fields":{"slug":"/docs/intro/"},"frontmatter":{"title":"Introduction","group":"start"},"tableOfContents":"<ul>\n<li><a href=\"/docs/intro/#netlify-cms-vs-netlify\">Netlify CMS vs. Netlify</a></li>\n<li><a href=\"/docs/intro/#find-out-more\">Find out more</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/start-with-a-template/"},"frontmatter":{"title":"Start with a Template","group":"start"},"tableOfContents":"<ul>\n<li><a href=\"/docs/start-with-a-template/#access-netlify-cms-on-your-new-site\">Access Netlify CMS on your new site</a></li>\n<li><a href=\"/docs/start-with-a-template/#more-paths-to-explore\">More paths to explore</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/add-to-your-site/"},"frontmatter":{"title":"Add to Your Site","group":"start"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/add-to-your-site/#app-file-structure\">App File Structure</a></p>\n<ul>\n<li><a href=\"/docs/add-to-your-site/#installing-with-npm\">Installing with npm</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/add-to-your-site/#configuration\">Configuration</a></p>\n<ul>\n<li><a href=\"/docs/add-to-your-site/#backend\">Backend</a></li>\n<li><a href=\"/docs/add-to-your-site/#editorial-workflow\">Editorial Workflow</a></li>\n<li><a href=\"/docs/add-to-your-site/#media-and-public-folders\">Media and Public Folders</a></li>\n<li><a href=\"/docs/add-to-your-site/#collections\">Collections</a></li>\n<li><a href=\"/docs/add-to-your-site/#filter\">Filter</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/add-to-your-site/#authentication\">Authentication</a></p>\n<ul>\n<li><a href=\"/docs/add-to-your-site/#setup-on-netlify\">Setup on Netlify</a></li>\n<li><a href=\"/docs/add-to-your-site/#enable-identity-and-git-gateway\">Enable Identity and Git Gateway</a></li>\n<li><a href=\"/docs/add-to-your-site/#add-the-netlify-identity-widget\">Add the Netlify Identity Widget</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/add-to-your-site/#accessing-the-cms\">Accessing the CMS</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/collection-types/"},"frontmatter":{"title":"Collection Types","group":"start"},"tableOfContents":"<ul>\n<li>\n<p><a href=\"/docs/collection-types/#folder-collections\">Folder collections</a></p>\n<ul>\n<li><a href=\"/docs/collection-types/#filtered-folder-collections\">Filtered folder collections</a></li>\n</ul>\n</li>\n<li><a href=\"/docs/collection-types/#file-collections\">File collections</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/update-the-cms-version/"},"frontmatter":{"title":"Update the CMS Version","group":"start"},"tableOfContents":"<ul>\n<li><a href=\"/docs/update-the-cms-version/#package-manager\">Package Manager</a></li>\n<li><a href=\"/docs/update-the-cms-version/#cdn\">CDN</a></li>\n</ul>"}},{"node":{"fields":{"slug":"/docs/examples/"},"frontmatter":{"title":"Examples","group":"start"},"tableOfContents":""}}]}]},"menu":{"siteMetadata":{"menu":{"docs":[{"name":"start","title":"Quick Start"},{"name":"backends","title":"Backends"},{"name":"features","title":"Features"},{"name":"reference","title":"Reference"},{"name":"media","title":"Media"},{"name":"guides","title":"Guides"},{"name":"customization","title":"Customization"},{"name":"contributing","title":"Contributing"}]}}},"widgets":{"edges":[{"node":{"frontmatter":{"title":"boolean","label":"Boolean"},"html":"<p>The boolean widget translates a toggle switch input to a true/false value.</p>\n<ul>\n<li><strong>Name:</strong> <code>boolean</code></li>\n<li><strong>UI:</strong> toggle switch</li>\n<li><strong>Data type:</strong> boolean</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts <code>true</code> or <code>false</code>; defaults to <code>false</code> when <code>required</code> is set to <code>false</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Draft\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"draft\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"boolean\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"code","label":"Code"},"html":"<p>The code widget provides a code editor (powered by <a href=\"https://codemirror.net\" target=\"_blank\" rel=\"noopener noreferrer\">Codemirror</a>) with optional syntax awareness. Can output the raw code value or an object with the selected language and the raw code value.</p>\n<ul>\n<li><strong>Name:</strong> <code>code</code></li>\n<li><strong>UI:</strong> code editor</li>\n<li><strong>Data type:</strong> string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default_language</code>: optional; default language to use</li>\n<li><code>allow_language_selection</code>: optional; defaults to <code>false</code>: allows syntax to be changed</li>\n<li><code>keys</code>: optional; sets key names for code and lang if outputting an object; defaults to <code>{ code: 'code', lang: 'lang' }</code></li>\n<li><code>output_code_only</code>: set to <code>true</code> to output the string value only, defaults to <code>false</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Code'</span>\n<span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'code'</span>\n<span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'code'</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"date","label":"Date"},"html":"<p><em><strong>Deprecation notice</strong>: the date widget has been deprecated and will be removed in the next major release. Please use the datetime widget instead.</em></p>\n<p>The date widget translates a date picker input to a date string. For saving date and time together, use the datetime widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>date</code></li>\n<li><strong>UI:</strong> date picker</li>\n<li><strong>Data type:</strong> Moment.js-formatted date string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a date string, or an empty string to accept blank input; otherwise defaults to current date</li>\n<li><code>format</code>: optional; accepts Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>; defaults to raw Date object (if supported by output format)</li>\n<li><code>dateFormat</code>: optional; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format.</li>\n<li><code>timeFormat</code>: optional; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format, <code>false</code> hides time-picker. Defaults to false.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Birthdate'</span>\n<span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'birthdate'</span>\n<span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'date'</span>\n<span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">''</span>\n<span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'MMM Do YY'</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"datetime","label":"DateTime"},"html":"<p>The datetime widget translates a datetime picker to a datetime string. For saving the date only, use the date widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>datetime</code></li>\n<li><strong>UI:</strong> datetime picker</li>\n<li><strong>Data type:</strong> Moment.js-formatted datetime string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a datetime string, or an empty string to accept blank input; otherwise defaults to current datetime</li>\n<li><code>format</code>: sets storage format; accepts Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>; defaults to raw Date object (if supported by output format)</li>\n<li><code>dateFormat</code>: sets date display format in UI; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format.</li>\n<li><code>timeFormat</code>: sets time display format in UI; boolean or Moment.js <a href=\"https://momentjs.com/docs/#/parsing/string-format/\" target=\"_blank\" rel=\"noopener noreferrer\">tokens</a>. If <code>true</code> use default locale format, <code>false</code> hides time-picker.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Start time\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"start\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"datetime\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n  <span class=\"token key atrule\">dateFormat</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"DD.MM.YYYY\"</span> <span class=\"token comment\"># e.g. 24.12.2021</span>\n  <span class=\"token key atrule\">timeFormat</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"HH:mm\"</span> <span class=\"token comment\"># e.g. 21:07</span>\n  <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"LLL\"</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"file","label":"File"},"html":"<p>The file widget allows editors to upload a file or select an existing one from the media library. The path to the file will be saved to the field as a string.</p>\n<ul>\n<li><strong>Name:</strong> <code>file</code></li>\n<li><strong>UI:</strong> file picker button opens media gallery</li>\n<li><strong>Data type:</strong> file path string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a file path string; defaults to null</li>\n<li><code>media_library</code>: media library settings to apply when a media library is opened by the\ncurrent widget</li>\n<li><code>allow_multiple</code>: <em>(default: <code>true</code>)</em> when set to <code>false</code>, prevents multiple selection for any media library extension, but must be supported by the extension in use</li>\n<li><code>config</code>: a configuration object that will be passed directly to the media library being\nused - available options are determined by the library</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Manual PDF\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"manual_pdf\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"file\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/uploads/general-manual.pdf\"</span>\n  <span class=\"token key atrule\">media_library</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">config</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"hidden","label":"Hidden"},"html":"<p>Hidden widgets do not display in the UI. In folder collections that allow users to create new items, you will often want to set a default for hidden fields, so they will be set without requiring an input.</p>\n<ul>\n<li><strong>Name:</strong> <code>hidden</code></li>\n<li><strong>UI:</strong> none</li>\n<li><strong>Data type:</strong> any valid data type</li>\n<li>\n<p><strong>Options:</strong> </p>\n<ul>\n<li><code>default</code>: accepts any valid data type; recommended for collections that allow adding new items</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Layout\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"layout\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"hidden\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"blog\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"image","label":"Image"},"html":"<p>The image widget allows editors to upload an image or select an existing one from the media library. The path to the image file will be saved to the field as a string.</p>\n<ul>\n<li><strong>Name:</strong> <code>image</code></li>\n<li><strong>UI:</strong> file picker button opens media gallery allowing image files (jpg, jpeg, webp, gif, png, bmp, tiff, svg) only; displays selected image thumbnail</li>\n<li><strong>Data type:</strong> file path string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a file path string; defaults to null</li>\n<li><code>media_library</code>: media library settings to apply when a media library is opened by the\ncurrent widget</li>\n<li><code>allow_multiple</code>: <em>(default: <code>true</code>)</em> when set to <code>false</code>, prevents multiple selection for any media library extension, but must be supported by the extension in use</li>\n<li><code>config</code>: a configuration object that will be passed directly to the media library being\nused - available options are determined by the library</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Featured Image\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"thumbnail\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"image\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/uploads/chocolate-dogecoin.jpg\"</span>\n  <span class=\"token key atrule\">media_library</span><span class=\"token punctuation\">:</span>\n    <span class=\"token key atrule\">config</span><span class=\"token punctuation\">:</span>\n      <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"list","label":"List"},"html":"<p>The list widget allows you to create a repeatable item in the UI which saves as a list of widget values. map a user-provided string with a comma delimiter into a list. You can choose any widget as a child of a list widget—even other lists.</p>\n<ul>\n<li><strong>Name:</strong> <code>list</code></li>\n<li><strong>UI:</strong> if <code>fields</code> is specified, field containing a repeatable child widget, with controls for adding, deleting, and re-ordering the repeated widgets; if unspecified, a text input for entering comma-separated values</li>\n<li><strong>Data type:</strong> list of widget values</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: if <code>fields</code> is specified, declare defaults on the child widgets; if not, you may specify a list of strings to populate the text field</li>\n<li><code>allow_add</code>: if added and labeled <code>false</code>, button to add additional widgets disappears</li>\n<li><code>collapsed</code>: if added and labeled <code>false</code>, the list widget's content does not collapse by default</li>\n<li><code>field</code>: a single widget field to be repeated</li>\n<li><code>fields</code>: a nested list of multiple widget fields to be included in each repeatable iteration</li>\n</ul>\n</li>\n<li>\n<p><strong>Example</strong> (<code>field</code>/<code>fields</code> not specified):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"news\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (<code>allow_add</code> marked <code>false</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">allow_add</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"news\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (with <code>field</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Gallery\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"galleryImages\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">field</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> image<span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (with <code>fields</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Testimonials\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"testimonials\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Everything is awesome!\"</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Author\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> author\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> object\n      <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Name<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> name<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Emmet\"</span><span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Avatar<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> avatar<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> image<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"/img/emmet.jpg\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (<code>collapsed</code> marked <code>false</code>):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Testimonials\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"testimonials\"</span>\n  <span class=\"token key atrule\">collapsed</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">false</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"list\"</span>\n  <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> quote<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Everything is awesome!\"</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> Author<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> author<span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> string <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"map","label":"Map"},"html":"<p>The map widget allows you to edit spatial data using an interactive map. Spatial data is saved as a GeoJSON string in WGS84 projection and is limited to a single geometry.</p>\n<ul>\n<li><strong>Name:</strong> <code>map</code></li>\n<li><strong>UI:</strong> interactive map</li>\n<li><strong>Data type:</strong> GeoJSON string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>decimals</code>: accepts a number to specify precision of saved coordinates; defaults to 7 decimals</li>\n<li><code>default</code>: accepts a GeoJSON string containing a single geometry; defaults to an empty string</li>\n<li><code>type</code>: accepts one string value of <code>Point</code>, <code>LineString</code> or <code>Polygon</code>; defaults to <code>Point</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Location\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"location\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"map\"</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"markdown","label":"Markdown"},"html":"<p>The markdown widget provides a full fledged text editor - which is based on <a href=\"https://github.com/ianstormtaylor/slate\" target=\"_blank\" rel=\"noopener noreferrer\">slate</a> - that allows users to format text with features such as headings and blockquotes. Users are also allowed to write in markdown by simply flipping a switch.</p>\n<p><em>Please note:</em> If you want to use your markdown editor to fill a markdown file contents after its frontmatter, you'll have to name the field <code>body</code> so the CMS recognizes it and saves the file accordingly.</p>\n<ul>\n<li><strong>Name:</strong> <code>markdown</code></li>\n<li><strong>UI:</strong> full text editor</li>\n<li><strong>Data type:</strong> markdown</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts markdown content</li>\n<li><code>minimal</code>: accepts a boolean value, <code>false</code> by default. Sets the widget height to minimum possible.</li>\n<li><code>buttons</code>: an array of strings representing the formatting buttons to display (all shown by default). Buttons include: <code>bold</code>, <code>italic</code>, <code>code</code>, <code>link</code>, <code>heading-one</code>, <code>heading-two</code>, <code>heading-three</code>, <code>heading-four</code>, <code>heading-five</code>, <code>heading-six</code>, <code>quote</code>, <code>bulleted-list</code>, and <code>numbered-list</code>.</li>\n<li><code>editorComponents</code>: an array of strings representing the names of editor components to display (all shown by default). The <code>image</code> and <code>code-block</code> editor components are included with Netlify CMS by default, but others may be <a href=\"/docs/custom-widgets/#registereditorcomponent\">created and registered</a>.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Blog post content'</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'body'</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'markdown'</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>\n<p>This would render as:</p>\n<p><img src=\"/img/widgets-markdown.png\" alt=\"Markdown widget example\"></p>\n<p><em>Please note:</em> The markdown widget outputs a raw markdown string. Your static site generator may or may not render the markdown to HTML automatically. Consult with your static site generator's documentation for more information about rendering markdown.</p>"}},{"node":{"frontmatter":{"title":"number","label":"Number"},"html":"<p>The number widget uses an HTML number input, saving the value as a string, integer, or floating point number.</p>\n<ul>\n<li><strong>Name:</strong> <code>number</code></li>\n<li><strong>UI:</strong> HTML <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number\" target=\"_blank\" rel=\"noopener noreferrer\">number input</a></li>\n<li><strong>Data type:</strong> string by default; configured by <code>valueType</code> option</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts string or number value; defaults to empty string</li>\n<li><code>valueType</code>: accepts <code>int</code> or <code>float</code>; any other value results in saving as a string</li>\n<li><code>min</code>: accepts a number for minimum value accepted; unset by default</li>\n<li><code>max</code>: accepts a number for maximum value accepted; unset by default</li>\n<li><code>step</code>: accepts a number for stepping up/down values in the input; 1 by default</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Puppy Count\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"puppies\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"number\"</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token number\">2</span>\n  <span class=\"token key atrule\">valueType</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"int\"</span>\n  <span class=\"token key atrule\">min</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n  <span class=\"token key atrule\">max</span><span class=\"token punctuation\">:</span> <span class=\"token number\">101</span>\n  <span class=\"token key atrule\">step</span><span class=\"token punctuation\">:</span> <span class=\"token number\">2</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"object","label":"Object"},"html":"<p>The object widget allows you to group multiple widgets together, nested under a single field. You can choose any widget as a child of an object widget—even other objects.</p>\n<ul>\n<li><strong>Name:</strong> <code>object</code></li>\n<li><strong>UI:</strong> a field containing one or more child widgets</li>\n<li><strong>Data type:</strong> list of child widget values</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: you can set defaults within each sub-field's configuration</li>\n<li><code>fields</code>: (<strong>required</strong>) a nested list of widget fields to include in your widget</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Profile\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"profile\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"object\"</span>\n  <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Public\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"public\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"boolean\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Name\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"name\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Birthdate\"</span>\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"birthdate\"</span>\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"date\"</span>\n      <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"\"</span>\n      <span class=\"token key atrule\">format</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"MM/DD/YYYY\"</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Address\"</span>\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"address\"</span>\n      <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"object\"</span>\n      <span class=\"token key atrule\">fields</span><span class=\"token punctuation\">:</span> \n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Street Address\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"street\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"City\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"city\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Postal Code\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"post-code\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"relation","label":"Relation"},"html":"<p>The relation widget allows you to reference items from another collection. It provides a search input with a list of entries from the collection you're referencing, and the list automatically updates with matched entries based on what you've typed.</p>\n<ul>\n<li><strong>Name:</strong> <code>relation</code></li>\n<li><strong>UI:</strong> text input with search result dropdown</li>\n<li><strong>Data type:</strong> data type of the value pulled from the related collection item</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts any widget data type; defaults to an empty string</li>\n<li><code>collection</code>: (<strong>required</strong>) name of the collection being referenced (string)</li>\n<li><code>displayFields</code>: list of one or more names of fields in the referenced collection that will render in the autocomplete menu of the control. Defaults to <code>valueField</code>. For nested fields, separate each subfield with a <code>.</code> (E.g. <code>name.first</code>).</li>\n<li><code>searchFields</code>: (<strong>required</strong>) list of one or more names of fields in the referenced collection to search for the typed value. Syntax to reference nested fields is similar to that of <em>displayFields</em>.</li>\n<li><code>valueField</code>: (<strong>required</strong>) name of the field from the referenced collection whose value will be stored for the relation. Syntax to reference nested fields is similar to that of <em>displayFields</em> and <em>searchFields</em>. As <code>valueField</code> only allows for a single field, this parameter only accepts a string.</li>\n<li><code>multiple</code> : accepts a boolean, defaults to <code>false</code></li>\n<li><code>optionsLength</code>: accepts integer to override number of options presented to user. Defaults to <code>20</code>.</li>\n</ul>\n</li>\n<li>\n<p><strong>Example</strong> (assuming a separate \"authors\" collection with \"name\" and \"twitterHandle\" fields with subfields \"first\" and \"last\" for the \"name\" field):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Post Author\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"author\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"relation\"</span>\n  <span class=\"token key atrule\">collection</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"authors\"</span>\n  <span class=\"token key atrule\">searchFields</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"name.first\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"twitterHandle\"</span><span class=\"token punctuation\">]</span>\n  <span class=\"token key atrule\">valueField</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"name.first\"</span>\n  <span class=\"token key atrule\">displayFields</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"twitterHandle\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"followerCount\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n<p>The generated UI input will search the authors collection by name and twitterHandle, and display each author's handle and follower count. On selection, the author name will be saved for the field.</p>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"select","label":"Select"},"html":"<p>The select widget allows you to pick a string value from a dropdown menu.</p>\n<ul>\n<li><strong>Name:</strong> <code>select</code></li>\n<li><strong>UI:</strong> select input</li>\n<li><strong>Data type:</strong> string or array</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li>\n<p><code>default</code>: default values must be contained in <code>options</code> and are ignored otherwise</p>\n<ul>\n<li>string values: accepts a string; defaults to an empty string. Accepts an array of strings and defaults to an empty array  with <code>multiple: true</code> enabled.</li>\n<li>object with <code>label</code> and <code>value</code> fields: accepts an object with <code>label</code> and <code>value</code> field or an array of such objects when <code>multiple: true</code> is enable. Defaults to no value</li>\n</ul>\n</li>\n<li>\n<p><code>options</code>: (<strong>required</strong>) a list of options for the dropdown menu; can be listed in two ways:</p>\n<ul>\n<li>string values: the label displayed in the dropdown is the value saved in the file</li>\n<li>object with <code>label</code> and <code>value</code> fields: the label displays in the dropdown; the value is saved in the file</li>\n</ul>\n</li>\n<li><code>multiple</code>: accepts a boolean; defaults to <code>false</code></li>\n<li><code>min</code>: minimum number of items; ignored if <strong>multiple</strong> is not <code>true</code></li>\n<li><code>max</code>: maximum number of items; ignored if <strong>multiple</strong> is not <code>true</code></li>\n</ul>\n</li>\n<li>\n<p><strong>Example</strong> (options as strings):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Align Content\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"align\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"left\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"center\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"right\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (options as objects):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"City\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"airport-code\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Chicago\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"ORD\"</span> <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Paris\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"CDG\"</span> <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tokyo\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">value</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"HND\"</span> <span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (multiple):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"UX\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Dev\"</span><span class=\"token punctuation\">]</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n<li>\n<p><strong>Example</strong> (min/max):</p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Tags\"</span>\n  <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"tags\"</span>\n  <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"select\"</span>\n  <span class=\"token key atrule\">multiple</span><span class=\"token punctuation\">:</span> <span class=\"token boolean important\">true</span>\n  <span class=\"token key atrule\">min</span><span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\n  <span class=\"token key atrule\">max</span><span class=\"token punctuation\">:</span> <span class=\"token number\">3</span>\n  <span class=\"token key atrule\">options</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"UX\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Dev\"</span><span class=\"token punctuation\">]</span>\n  <span class=\"token key atrule\">default</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Design\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"string","label":"String"},"html":"<p>The string widget translates a basic text input to a string value. For larger textarea inputs, use the text widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>string</code></li>\n<li><strong>UI:</strong> text input</li>\n<li><strong>Data type:</strong> string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a string; defaults to an empty string</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Title\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"title\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"string\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"text","label":"Text"},"html":"<p>The text widget takes a multiline text field and saves it as a string. For shorter text inputs, use the string widget.</p>\n<ul>\n<li><strong>Name:</strong> <code>text</code></li>\n<li><strong>UI:</strong> HTML textarea</li>\n<li><strong>Data type:</strong> string</li>\n<li>\n<p><strong>Options:</strong></p>\n<ul>\n<li><code>default</code>: accepts a string; defaults to an empty string</li>\n</ul>\n</li>\n<li>\n<p><strong>Example:</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"yaml\"><pre class=\"language-yaml\"><code class=\"language-yaml\"><span class=\"token punctuation\">-</span> <span class=\"token punctuation\">{</span><span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Description\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"description\"</span><span class=\"token punctuation\">,</span> <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"text\"</span><span class=\"token punctuation\">}</span></code></pre></div>\n</li>\n</ul>"}}]}},"pageContext":{"slug":"/docs/add-to-your-site/"}}}