[{"data":1,"prerenderedAt":425},["ShallowReactive",2],{"sanity-LevEgKvCUg3Ul3GKyhTsfZIfaGswLQ-qsmdjo9-lWe4":3,"sanity-ypo5yydEGumBxACJoE2jSD6aYoYKucQBcTpRZlEPkME":84,"shiki-block-v-0-0-0-0-0-1-0-0":422,"shiki-block-v-0-0-0-0-0-1-0-1":423,"shiki-block-v-0-0-0-0-0-1-0-2":424},{"data":4},{"_createdAt":5,"_id":6,"_rev":7,"_system":8,"_type":6,"_updatedAt":11,"acceptAllLink":12,"acceptNecessaryLink":40,"bannerColorSource":50,"bannerDescription":51,"bannerTitle":52,"categories":53,"declineAllLink":54,"managePreferencesLink":63,"modalColorSource":50,"modalTitle":72,"preferencesIconColorSource":50,"provider":73,"savePreferencesLink":74,"thirdPartyEmbedCode":53,"title":83},"2026-07-28T12:06:44Z","cookieSettings","ci4zAxlS92c5lxcUZgKERY",{"base":9},{"id":6,"rev":10},"4areb77bueJ0iGsV9TVGmy","2026-09-03T17:08:03Z",{"_type":13,"newTab":14,"style":15,"title":38,"type":39},"link",false,{"_type":16,"design":17,"icon":30,"iconPosition":34,"stylePreset":35},"link.style",{"_type":18,"colorSource":19,"gradient":20,"hover":25,"shape":29,"style":29},"link.style.design","manual",{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},"gradient","to-r","linear","at-center",{"_type":26,"colorSource":27,"gradient":28},"link.style.hover","none",{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},"default",{"_type":31,"name":32,"type":33},"icon.config","pi-compass","noicon","start",{"_ref":36,"_type":37},"0a45d6ae-0177-47f2-ab3e-2dd19191fca6","reference","Accept all","button",{"_type":13,"newTab":14,"style":41,"title":49,"type":39},{"_type":16,"design":42,"icon":46,"iconPosition":34,"stylePreset":47},{"_type":18,"colorSource":19,"gradient":43,"hover":44,"shape":29,"style":29},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":26,"colorSource":27,"gradient":45},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":31,"name":32,"type":33},{"_ref":48,"_type":37},"1b28bc78-22fc-4f39-ab55-441e2a601f6e","Accept necessary","inherit","We use cookies to enhance your browsing experience and analyse our traffic. Please choose your cookie preferences below.","We use cookies",null,{"_type":13,"newTab":14,"style":55,"title":62,"type":39},{"_type":16,"design":56,"icon":60,"iconPosition":34,"stylePreset":61},{"_type":18,"colorSource":19,"gradient":57,"hover":58,"shape":29,"style":29},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":26,"colorSource":27,"gradient":59},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":31,"name":32,"type":33},{"_ref":48,"_type":37},"Decline all",{"_type":13,"newTab":14,"style":64,"title":71,"type":39},{"_type":16,"design":65,"icon":69,"iconPosition":34,"stylePreset":70},{"_type":18,"colorSource":19,"gradient":66,"hover":67,"shape":29,"style":29},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":26,"colorSource":27,"gradient":68},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":31,"name":32,"type":33},{"_ref":48,"_type":37},"Manage preferences","Cookie Preferences","custom",{"_type":13,"newTab":14,"style":75,"title":82,"type":39},{"_type":16,"design":76,"icon":80,"iconPosition":34,"stylePreset":81},{"_type":18,"colorSource":19,"gradient":77,"hover":78,"shape":29,"style":29},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":26,"colorSource":27,"gradient":79},{"_type":21,"colorSource":19,"direction":22,"gradientType":23,"radialPosition":24},{"_type":31,"name":32,"type":33},{"_ref":36,"_type":37},"Save preferences","Cookie Settings",{"data":85,"sourceMap":-1},{"_createdAt":86,"_id":87,"_rev":88,"_system":89,"_type":92,"_updatedAt":93,"components":94,"fontOptions":346,"footer":53,"intro":349,"isPublished":278,"layout":350,"navigation":53,"path":351,"routeOptions":352,"seo":357,"showFooter":278,"showNav":278,"sidebar":363,"slug":356,"title":376},"2026-08-13T15:30:48Z","9e45c218-c8d2-405d-be9a-4d07deb63510","ovbB68c5XFTlrvwLEPBd0h",{"base":90},{"id":87,"rev":91},"yP8kuGLgTlEjnh0hQ0EGv0","page","2026-08-14T21:18:02Z",[95,236,271,308],{"_key":96,"_type":97,"accentSource":50,"heading":98,"options":99,"steps":105},"293f4f0bb566","docs.steps","Getting running",{"_type":100,"colorSource":50,"container":101,"hideSection":14,"mediaOpacity":102,"slideEffect":103,"sticky":14,"tocLabel":104},"section.options","contained",0,"fade","Setup",[106,161,193,217],{"_key":107,"_type":108,"content":109,"title":160},"76529cdc40bd","docs.step",[110,121,128],{"_key":111,"_type":112,"children":113,"markDefs":119,"style":120},"ca9fea94cad0","block",[114],{"_key":115,"_type":116,"marks":117,"text":118},"00d166e14933","span",[],"One command handles the frontend, the Studio, both `.env` files, and the demo content. It is deliberately dependency-free, so it runs on a fresh clone before anything is installed.",[],"normal",{"_key":122,"_type":123,"colorSource":50,"snippet":124},"3ab5b17ee612","code.block",{"_type":125,"code":126,"language":127},"code","npm run setup:project","bash",{"_key":129,"_type":112,"children":130,"markDefs":159,"style":120},"a4baf4bd62c0",[131,135,139,143,147,151,155],{"_key":132,"_type":116,"marks":133,"text":134},"2f2ac05792dd",[],"You will be asked for your Sanity project ID, dataset, and API token. Pass ",{"_key":136,"_type":116,"marks":137,"text":138},"c23d5db350c1",[125],"--yes",{"_key":140,"_type":116,"marks":141,"text":142},"ed4315c489aa",[]," with ",{"_key":144,"_type":116,"marks":145,"text":146},"38fddb4aebea",[125],"--project-id=",{"_key":148,"_type":116,"marks":149,"text":150},"0a6ce350afbe",[]," and ",{"_key":152,"_type":116,"marks":153,"text":154},"fc63b71d37b5",[125],"--dataset=",{"_key":156,"_type":116,"marks":157,"text":158},"c8b1b427464d",[]," to run it unattended.",[],"Install and configure",{"_key":162,"_type":108,"content":163,"title":192},"f6eacbafa3ec",[164,168],{"_key":165,"_type":123,"colorSource":50,"snippet":166},"e68ca6e91ab5",{"_type":125,"code":167,"language":127},"npm run dev:all",{"_key":169,"_type":112,"children":170,"markDefs":191,"style":120},"83bf02d8934c",[171,175,179,183,187],{"_key":172,"_type":116,"marks":173,"text":174},"e6856e1372db",[],"Nuxt on ",{"_key":176,"_type":116,"marks":177,"text":178},"739e4df948f5",[125],":3000",{"_key":180,"_type":116,"marks":181,"text":182},"b0cfb60af655",[]," Studio on ",{"_key":184,"_type":116,"marks":185,"text":186},"4cb0fb77988c",[125],":3333",{"_key":188,"_type":116,"marks":189,"text":190},"eac1e3834d68",[],"  - One terminal, colour-coded output.",[],"Start both apps",{"_key":194,"_type":108,"content":195,"title":216},"ad15d4302754",[196,204,208],{"_key":197,"_type":112,"children":198,"markDefs":203,"style":120},"fd0d7533c44b",[199],{"_key":200,"_type":116,"marks":201,"text":202},"58cf9079fb70",[],"Optional, and the fastest way to see what the blocks do. The setup script offers this; to run it later:",[],{"_key":205,"_type":123,"colorSource":50,"snippet":206},"bd5590b487de",{"_type":125,"code":207,"language":127},"cd studio && DATASET=development npm run demo:import",{"_key":209,"_type":112,"children":210,"markDefs":215,"style":120},"c98dc2039406",[211],{"_key":212,"_type":116,"marks":213,"text":214},"46aae75d2647",[],"You get a home page, a typography reference page, three blog posts, colourthemes, navigation and footer.",[],"Import the demo content",{"_key":218,"_type":108,"content":219,"title":235},"fbd465bce1b5",[220],{"_key":221,"_type":112,"children":222,"markDefs":234,"style":120},"52232934642e",[223,227,230],{"_key":224,"_type":116,"marks":225,"text":226},"3eff203c868e",[],"Go to Website → Pages → Home, drag a block, and watch it move on ",{"_key":228,"_type":116,"marks":229,"text":178},"ea6be31b003c",[125],{"_key":231,"_type":116,"marks":232,"text":233},"4465537bafca",[],". That is the whole loop.",[],"Open the Studio and edit something",{"_key":237,"_type":238,"content":239,"options":268,"title":269,"tone":270},"2f8f5792ebd3","docs.callout",[240],{"_key":241,"_type":112,"children":242,"markDefs":267,"style":120},"21f09b1b6b97",[243,247,251,255,259,263],{"_key":244,"_type":116,"marks":245,"text":246},"fdc9c7dc5ebf",[125],"npm run dev",{"_key":248,"_type":116,"marks":249,"text":250},"2eb4f85a76b5",[]," still starts. The theme CSS falls back to sensible defaults, and a warning tells you exactly which variables are missing. Run ",{"_key":252,"_type":116,"marks":253,"text":254},"8a3ec91a4a62",[125],"npm run env:check",{"_key":256,"_type":116,"marks":257,"text":258},"ab4af79d36a5",[]," at any point to see what is unset. It warns and exits zero so dev is never blocked, and ",{"_key":260,"_type":116,"marks":261,"text":262},"72167982f290",[125],"--strict",{"_key":264,"_type":116,"marks":265,"text":266},"6ad94f574eb3",[]," exits non-zero for builds.",[],{"_type":100,"colorSource":50,"container":101,"hideSection":14,"mediaOpacity":102,"slideEffect":103,"sticky":14},"No Sanity credentials yet?","tip",{"_key":272,"_type":273,"caption":274,"columns":275,"monoFirstColumn":278,"options":279,"rows":281},"0528e631c41d","docs.table","Required in both the root and studio\u002F .env files",[276,277],"Variable","What it's for",true,{"_type":100,"colorSource":50,"container":101,"hideSection":14,"mediaOpacity":102,"slideEffect":103,"sticky":14,"tocLabel":280},"Environment variables",[282,288,293,298,303],{"_key":283,"_type":284,"cells":285},"e6bb761c0381","docs.table.row",[286,287],"SANITY_STUDIO_PROJECT_ID","Your Sanity project",{"_key":289,"_type":284,"cells":290},"abcaf3dadcef",[291,292],"SANITY_STUDIO_DATASET","Usually `production` or `development`",{"_key":294,"_type":284,"cells":295},"ee9684f11eae",[296,297],"SANITY_STUDIO_API_TOKEN","Read token for queries; write token for form submissions",{"_key":299,"_type":284,"cells":300},"0faccf14dd5c",[301,302],"SANITY_STUDIO_APP_ID","Studio app identifier",{"_key":304,"_type":284,"cells":305},"3a297ca9be8e",[306,307],"DOMAIN","Canonical URLs and sitemap",{"_key":309,"_type":273,"caption":310,"columns":311,"monoFirstColumn":278,"options":314,"rows":316},"86687dddf907","The ones you'll actually type",[312,313],"Command","What it does",{"_type":100,"colorSource":50,"container":101,"hideSection":14,"mediaOpacity":102,"slideEffect":103,"sticky":14,"tocLabel":315},"Everyday commands",[317,321,326,331,336,341],{"_key":318,"_type":284,"cells":319},"f2384829653e",[167,320],"Nuxt and Studio together",{"_key":322,"_type":284,"cells":323},"5b4a047aabe7",[324,325],"npm run scaffold:component -- custom.my-block","Generates a block and registers it",{"_key":327,"_type":284,"cells":328},"0ebcb986a7cd",[329,330],"npm run staticnuxt","Static build - With htaccess created for Apache hosting (Most commonly shared hosting))",{"_key":332,"_type":284,"cells":333},"9ee97439f020",[334,335],"npm run test:run","Unit and Nuxt tests",{"_key":337,"_type":284,"cells":338},"a38495e6e935",[339,340],"npm run typecheck","Full type check, including the component registry",{"_key":342,"_type":284,"cells":343},"cecfe5f8393b",[344,345],"npm run cssvars:generate","Rebuilds theme CSS variables from Sanity",{"_type":347,"bodyFont":348,"primaryFont":348},"font.options","","From a fresh clone to a running Nuxt app and Studio, in about ten minutes.","documentation","\u002Fdocs\u002Fquick-start",{"_type":353,"includeInSitemap":278,"slug":354},"page.routing.options",{"_type":355,"current":356},"slug","docs\u002Fquick-start",{"_type":358,"favicon":359,"image":53,"schema":360,"socialImages":362},"seo",{"mimeType":53,"url":53},{"organizationType":361},"Organization",{"facebook":53,"linkedin":53,"twitter":53},{"_id":364,"_type":365,"groups":366,"title":421},"59fde457-2b98-4571-9d63-57f3f505f4c4","docs.navigation",[367,383,407],{"_key":368,"items":369,"title":382},"b1d02b598607",[370,375,377],{"_id":371,"_type":92,"slug":372,"title":373,"url":374},"c6fe71b8-698e-4891-bc01-13bff89ed46c","docs","Introduction","\u002Fdocs",{"_id":87,"_type":92,"slug":356,"title":376,"url":351},"Quick start",{"_id":378,"_type":92,"slug":379,"title":380,"url":381},"be1523b9-037b-438f-8753-f8149456ed44","docs\u002Fproject-structure","Project structure","\u002Fdocs\u002Fproject-structure","Get started",{"_key":384,"items":385,"title":406},"1fb624003506",[386,391,396,401],{"_id":387,"_type":92,"slug":388,"title":389,"url":390},"afcfec8e-fad2-4ed3-88dc-6506a8c82df6","docs\u002Fpage-builder","The page builder","\u002Fdocs\u002Fpage-builder",{"_id":392,"_type":92,"slug":393,"title":394,"url":395},"d09e9c43-5d71-4fb4-bf42-2682568d5b0a","docs\u002Fblock-library","Block library","\u002Fdocs\u002Fblock-library",{"_id":397,"_type":92,"slug":398,"title":399,"url":400},"c518286f-0bc6-465e-b498-53e65bdc0548","theming-and-fonts","Theming & fonts","\u002Ftheming-and-fonts",{"_id":402,"_type":92,"slug":403,"title":404,"url":405},"8a285811-c9d0-4f3a-94a8-be92f25d0311","docs\u002Fforms","Forms","\u002Fdocs\u002Fforms","Building pages",{"_key":408,"items":409,"title":420},"c7a7dc892511",[410,415],{"_id":411,"_type":92,"slug":412,"title":413,"url":414},"eb75dbb1-d328-44cf-a075-52a8d0d884ba","docs\u002Fdeployment","Deployment","\u002Fdocs\u002Fdeployment",{"_id":416,"_type":92,"slug":417,"title":418,"url":419},"d1bc093a-f8b7-4dc8-aac8-5f92fffcf2c3","docs\u002Fseo-and-redirects","SEO & Redirects","\u002Fdocs\u002Fseo-and-redirects","Deploying","Documentation sidebar","\u003Cpre class=\"shiki shiki-themes github-light github-dark nuxion-code__pre\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">npm\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> run\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> setup:project\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark nuxion-code__pre\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\">npm\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> run\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> dev:all\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark nuxion-code__pre\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#005CC5;--shiki-dark:#79B8FF\">cd\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> studio\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#24292E;--shiki-dark:#E1E4E8\"> &#x26;&#x26; DATASET\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\">development\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#B392F0\"> npm\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> run\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#032F62;--shiki-dark:#9ECBFF\"> demo:import\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1789667177571]