{"componentChunkName":"component---src-templates-doc-page-js","path":"/docs/nextjs/","result":{"data":{"page":{"fields":{"path":"docs/nextjs.md"},"frontmatter":{"title":"NextJS","group":"guides"},"html":"<p>This guide will help you get started using Netlify CMS with NextJS.</p>\n<h2 id=\"creating-a-new-project\" style=\"position:relative;\"><a href=\"#creating-a-new-project\" aria-label=\"creating a new project 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>Creating a new project</h2>\n<p>Let's repeat some of the basics of setting up a simple NextJS project (check out <a href=\"http://nextjs.org/learn\" target=\"_blank\" rel=\"noopener noreferrer\">nextjs.org/learn</a> for a more detailed version).</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># Create new directory and navigate into it</span>\n<span class=\"token function\">mkdir</span> awesome-kitties\n<span class=\"token builtin class-name\">cd</span> awesome-kitties\n\n<span class=\"token comment\"># Initialize a new project</span>\n<span class=\"token function\">npm</span> init -y\n\n<span class=\"token comment\"># Install required dependencies</span>\n<span class=\"token function\">npm</span> <span class=\"token function\">install</span> --save react react-dom next\n\n<span class=\"token comment\"># Install webpack loader for Markdown (Use version 3+)</span>\n<span class=\"token function\">npm</span> <span class=\"token function\">install</span> --save-dev frontmatter-markdown-loader\n\n<span class=\"token comment\"># Create folder for pages (default for NextJS), and add a index file</span>\n<span class=\"token function\">mkdir</span> pages\n<span class=\"token function\">touch</span> pages/index.js\n\n<span class=\"token comment\"># Create a folder for content, and a markdown file:</span>\n<span class=\"token function\">mkdir</span> content\n<span class=\"token function\">touch</span> content/home.md\n\n<span class=\"token comment\"># Create a folder for static assets</span>\n<span class=\"token function\">mkdir</span> public</code></pre></div>\n<p>Next, we need to add some modifications to our <code>package.json</code> file to make it easier to run and deploy our new site:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"scripts\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"dev\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"next\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"build\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"next build\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"start\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"next start\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"export\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"npm run build &amp;&amp; next export\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>There is a lot of different ways to create and display Markdown content, but to make this as easy as possible we'll be using a webpack-loader that enables us to load markdown files directly in our React components (<a href=\"https://www.npmjs.com/package/frontmatter-markdown-loader\" target=\"_blank\" rel=\"noopener noreferrer\">frontmatter-markdown-loader</a>).</p>\n<p>Add the following content to your <code>content/home.md</code> file:</p>\n<div class=\"gatsby-highlight\" data-language=\"md\"><pre class=\"language-md\"><code class=\"language-md\"><span class=\"token hr punctuation\">---</span>\ntitle: Awesome kitties\ndate: 2019-03-17T19:31:20.591Z\ncats:\n  <span class=\"token list punctuation\">-</span> description: 'Maru is a Scottish Fold from Japan, and he loves boxes.'\n    name: Maru (まる)\n  <span class=\"token list punctuation\">-</span> description: Lil Bub is an American celebrity cat known for her unique appearance.\n    name: Lil Bub\n  <span class=\"token list punctuation\">-</span> description: 'Grumpy cat is an American celebrity cat known for her grumpy appearance.'\n    <span class=\"token title important\">name: Grumpy cat (Tardar Sauce)\n<span class=\"token punctuation\">---</span></span>\nWelcome to my awesome page about cats of the internet.\n\nThis page is built with NextJS, and content is managed in Netlify CMS</code></pre></div>\n<p>Next, we need to tell webpack how to load Markdown files. Create a new <code>next.config.js</code> file at the root of your project with the following content:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">module<span class=\"token punctuation\">.</span>exports <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function-variable function\">webpack</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">cfg</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n        cfg<span class=\"token punctuation\">.</span>module<span class=\"token punctuation\">.</span>rules<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>\n            <span class=\"token punctuation\">{</span>\n                test<span class=\"token operator\">:</span> <span class=\"token regex\">/\\.md$/</span><span class=\"token punctuation\">,</span>\n                loader<span class=\"token operator\">:</span> <span class=\"token string\">'frontmatter-markdown-loader'</span><span class=\"token punctuation\">,</span>\n                options<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span> mode<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'react-component'</span><span class=\"token punctuation\">]</span> <span class=\"token punctuation\">}</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> cfg<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Almost there! The last thing we need to do is to add some content our <code>pages/index.js</code> file. With a little help of our webpack loader, we can now easilly import Markdown files:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">import</span> Head <span class=\"token keyword\">from</span> <span class=\"token string\">\"next/head\"</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Component <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> attributes<span class=\"token punctuation\">,</span> react <span class=\"token keyword\">as</span> HomeContent <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'../content/home.md'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Home</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">Component</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> <span class=\"token punctuation\">{</span> title<span class=\"token punctuation\">,</span> cats <span class=\"token punctuation\">}</span> <span class=\"token operator\">=</span> attributes<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n      <span class=\"token operator\">&lt;</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>Head<span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>script src<span class=\"token operator\">=</span><span class=\"token string\">\"https://identity.netlify.com/v1/netlify-identity-widget.js\"</span><span class=\"token operator\">></span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>script<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Head<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>article<span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>h1<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>title<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>h1<span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>HomeContent <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n          <span class=\"token operator\">&lt;</span>ul<span class=\"token operator\">></span>\n            <span class=\"token punctuation\">{</span>cats<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">cat<span class=\"token punctuation\">,</span> k</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span>\n              <span class=\"token operator\">&lt;</span>li key<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>k<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>\n                <span class=\"token operator\">&lt;</span>h2<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>cat<span class=\"token punctuation\">.</span>name<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>h2<span class=\"token operator\">></span>\n                <span class=\"token operator\">&lt;</span>p<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>cat<span class=\"token punctuation\">.</span>description<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>p<span class=\"token operator\">></span>\n              <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>li<span class=\"token operator\">></span>\n            <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span>\n          <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>ul<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>article<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span><span class=\"token operator\">></span>\n    <span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Great! We now have a page that displays content from our Markdown file. Go ahead and start your development server to test if everything is working:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token function\">npm</span> run dev</code></pre></div>\n<h2 id=\"adding-netlify-cms\" style=\"position:relative;\"><a href=\"#adding-netlify-cms\" aria-label=\"adding netlify 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>Adding Netlify CMS</h2>\n<p>There are many different ways to add Netlify CMS to your project. The easiest is probably just to embed it from a CDN, and that's exactly what we're gonna do. To avoid making this guide too complicated, we're just going to add Netlify into a subfolder inside the <code>/public</code> directory (which is just served as static files by Next):</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># Create and navigate into static/admin folder</span>\n<span class=\"token function\">mkdir</span> public/admin\n<span class=\"token builtin class-name\">cd</span> public/admin\n\n<span class=\"token comment\"># Create index.html and config.yml file</span>\n<span class=\"token function\">touch</span> index.html\n<span class=\"token function\">touch</span> config.yml</code></pre></div>\n<p>Paste HTML for Netlify CMS into your <code>public/admin/index.html</code> file (check out the <a href=\"https://www.netlifycms.org/docs/add-to-your-site/\" target=\"_blank\" rel=\"noopener noreferrer\">Add Netlify To Your Site</a> section for more information)</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>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>\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.9.7/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>Notice that we also added the identity widget. This allows sign up when the project is hosted at Netlify.</p>\n<p>Paste the following configuration into your <code>public/admin/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\">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\n<span class=\"token key atrule\">media_folder</span><span class=\"token punctuation\">:</span> public/img\n<span class=\"token key atrule\">public_folder</span><span class=\"token punctuation\">:</span> img\n<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\">\"pages\"</span>\n    <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"Pages\"</span>\n    <span class=\"token key atrule\">files</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\">\"Home\"</span>\n      <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"home\"</span>\n      <span class=\"token key atrule\">file</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"content/home.md\"</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\">\"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\">\"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>\n        <span class=\"token punctuation\">-</span> <span class=\"token key atrule\">label</span><span class=\"token punctuation\">:</span> <span class=\"token string\">'Cats'</span>\n          <span class=\"token key atrule\">name</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"cats\"</span>\n          <span class=\"token key atrule\">widget</span><span class=\"token punctuation\">:</span> list\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\">\"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 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<p>Awesome! Netlify CMS should now be available at <code>localhost:3000/admin/index.html</code>.\nUnfortunately we can't edit our content just yet. First we need to move our code into a git repository, and create a new Netlify site.</p>\n<p><strong>Tip:</strong> If you want to test changes made to your config.yml file locally, swap out \"git-gateway\" with \"test-repo\" and navigate to <code>localhost:3000/admin/index.html</code> to view Netlify CMS locally (you can't make changes or read actual content from Git this way, but it's great to verify how things will look).</p>\n<h2 id=\"publishing-to-github-and-netlify\" style=\"position:relative;\"><a href=\"#publishing-to-github-and-netlify\" aria-label=\"publishing to github and 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>Publishing to GitHub and Netlify</h2>\n<p>Create a new repository at GitHub (or one of the other supported git services) and follow the instructions on how to push existing files into your new respository.</p>\n<p>Now is probably also a good time to add a <code>.gitignore</code> file:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">.next/\nnode_modules/\n/npm-debug.log\n.DS_Store\nout/</code></pre></div>\n<p>When your project is under version control, go to Netlify and select \"New Site from Git\".\nSelect GitHub (or whatever service you used in the previous step), and the repository you just pushed to.</p>\n<p>Under the final step (Build options, and deploy!), make sure you enter the following:</p>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Value</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Build command</td>\n<td><strong>npm run export</strong></td>\n</tr>\n<tr>\n<td>Publish directory</td>\n<td><strong>out</strong></td>\n</tr>\n</tbody>\n</table>\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=\"celebrate\" style=\"position:relative;\"><a href=\"#celebrate\" aria-label=\"celebrate 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>Celebrate!</h3>\n<p>Great job - you did it!\nOpen your new page via the new Netlify URL, and navigate to <code>/admin</code>. If you did everything correct in the previous step, you should now be able to sign up for an account, and log in. </p>\n<p><strong>Tip:</strong> Signing up with an external provider is the easiest. If you want to sign up by email, you'll have to set up a redirect in your index.js page (which we won't be covering in this guide). For more information, have a look at the <a href=\"https://www.netlifycms.org/docs/add-to-your-site\" target=\"_blank\" rel=\"noopener noreferrer\">Add To Your Site</a> section.</p>\n<p>Congratulations - you can finally manage your new list of cats!</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/nextjs/"}}}