[{"data":1,"prerenderedAt":358},["ShallowReactive",2],{"sanity-LevEgKvCUg3Ul3GKyhTsfZIfaGswLQ-qsmdjo9-lWe4":3,"sanity-6M08kTJP1jusgfAsyKMtbQf2gfG0fXwyJ1V0pAqNqIc":84},{"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":282,"footer":53,"intro":285,"isPublished":172,"layout":286,"navigation":53,"path":287,"routeOptions":288,"seo":293,"showFooter":172,"showNav":172,"sidebar":299,"slug":292,"title":317},"2026-08-13T15:30:19Z","be1523b9-037b-438f-8753-f8149456ed44","yP8kuGLgTlEjnh0hQ18ojW",{"base":90},{"id":87,"rev":91},"dbCQ1Un4N62Rg6Tb6LT0WM","page","2026-08-14T21:18:09Z",[95,165,225,251],{"_key":96,"_type":97,"alignment":98,"content":99,"options":158,"width":164},"15fe3732d0a1","text-block","mx-auto",[100,111,136],{"_key":101,"_type":102,"children":103,"markDefs":109,"style":110},"09dfb3698ab6","block",[104],{"_key":105,"_type":106,"marks":107,"text":108},"11b0e0239b67","span",[],"Two applications, one repository",[],"h2",{"_key":112,"_type":102,"children":113,"markDefs":134,"style":135},"9adb1e0a7bde",[114,117,122,126,130],{"_key":105,"_type":106,"marks":115,"text":116},[],"The Nuxt app is at the root; the Sanity Studio is in ",{"_key":118,"_type":106,"marks":119,"text":121},"c560919a7f0d",[120],"code","studio\u002F",{"_key":123,"_type":106,"marks":124,"text":125},"70e357e07587",[],". They have separate ",{"_key":127,"_type":106,"marks":128,"text":129},"b68f24cba9b4",[120],"package.json",{"_key":131,"_type":106,"marks":132,"text":133},"1a43a458c180",[]," files and separate `.env` files, and they are deployed separately — the Studio to Sanity's hosting, the frontend wherever you like.",[],"normal",{"_key":137,"_type":102,"children":138,"markDefs":157,"style":135},"9aa0f201a17b",[139,142,145,149,153],{"_key":105,"_type":106,"marks":140,"text":141},[],"They meet in exactly two places: the schemas in ",{"_key":143,"_type":106,"marks":144,"text":121},"532b7ddc408c",[120],{"_key":146,"_type":106,"marks":147,"text":148},"c41859577f49",[]," define the shape of the content, and the typed GROQ queries in ",{"_key":150,"_type":106,"marks":151,"text":152},"60a67c723771",[120],"app\u002Fservices\u002Fgroq-queries.ts",{"_key":154,"_type":106,"marks":155,"text":156},"bf09020dd41c",[]," fetch it. Everything else is on one side or the other.",[],{"_type":159,"colorSource":50,"container":160,"hideSection":14,"mediaOpacity":161,"slideEffect":162,"sticky":14,"tocLabel":163},"section.options","contained",0,"fade","Two applications","max-w-5xl",{"_key":166,"_type":167,"caption":168,"columns":169,"monoFirstColumn":172,"options":173,"rows":174},"e5e3f28ebf68","docs.table","The directories you'll spend time in",[170,171],"Path","What lives there",true,{"_type":159,"colorSource":50,"container":160,"hideSection":14,"mediaOpacity":161,"slideEffect":162,"sticky":14},[175,181,186,191,196,200,205,210,215,220],{"_key":176,"_type":177,"cells":178},"7db265f26fc8","docs.table.row",[179,180],"app\u002Fcomponents\u002Fui\u002F","The standard block library — blocks, elements, utilities",{"_key":182,"_type":177,"cells":183},"be76b5e91a88",[184,185],"app\u002Fcomponents\u002Fcustom\u002F","Your project-specific blocks",{"_key":187,"_type":177,"cells":188},"5edc6a4b4cac",[189,190],"app\u002Fcomponents\u002Fui\u002Fshadcn\u002F","shadcn-vue \u002F Reka UI primitives, hand-adapted",{"_key":192,"_type":177,"cells":193},"f6d546509904",[194,195],"app\u002Fcomposables\u002F","Composition functions, auto-imported",{"_key":197,"_type":177,"cells":198},"71bc19ed5a25",[152,199],"Every GROQ query and projection",{"_key":201,"_type":177,"cells":202},"7f193e880960",[203,204],"app\u002Fservices\u002Fhelpers\u002F","Pure TypeScript helpers, unit-tested in isolation",{"_key":206,"_type":177,"cells":207},"016e27e99ce8",[208,209],"app\u002Fstores\u002F","Pinia state, including the theme store",{"_key":211,"_type":177,"cells":212},"e5573d4fdff2",[213,214],"studio\u002Fschemas\u002Fweb\u002F","Content schemas — documents, blocks, custom, elements",{"_key":216,"_type":177,"cells":217},"68ce8e285132",[218,219],"studio\u002Fschemas\u002Fweb\u002Fcustom\u002F","Your customisation entry point",{"_key":221,"_type":177,"cells":222},"0079a61fedd7",[223,224],"scripts\u002F","Setup, scaffolding and build-time generators",{"_key":226,"_type":97,"alignment":98,"content":227,"options":250,"width":164},"c7ca568b67ce",[228,236],{"_key":229,"_type":102,"children":230,"markDefs":235,"style":110},"e89f097589bc",[231],{"_key":232,"_type":106,"marks":233,"text":234},"b73e30cd3f7d",[],"Pages and routing",[],{"_key":237,"_type":102,"children":238,"markDefs":249,"style":135},"2759cf14bd84",[239,242,245],{"_key":232,"_type":106,"marks":240,"text":241},[],"There are almost no file-based marketing routes. A catch-all route resolves any slug to a ",{"_key":243,"_type":106,"marks":244,"text":92},"36f2e76c78df",[120],{"_key":246,"_type":106,"marks":247,"text":248},"99721fc3c45f",[]," document, so pricing, features, and contact are content, not files. You add file routes only for genuinely new _types_ of thing — a products section, say — and the docs cover the four-line normalisation that hands theme and fonts to it.",[],{"_type":159,"colorSource":50,"container":160,"hideSection":14,"mediaOpacity":161,"slideEffect":162,"sticky":14},{"_key":252,"_type":253,"content":254,"options":279,"title":280,"tone":281},"a0b1fe2dcde9","docs.callout",[255],{"_key":256,"_type":102,"children":257,"markDefs":278,"style":135},"10a9ed8dd152",[258,262,266,270,274],{"_key":259,"_type":106,"marks":260,"text":261},"5373eb596620",[],"The Studio builds with Vite and no Vue plugin. Anything the Studio imports —directly or transitively — must not reach a ",{"_key":263,"_type":106,"marks":264,"text":265},"b2c94cdd998f",[120],".vue",{"_key":267,"_type":106,"marks":268,"text":269},"30e51153b17f",[]," file, even through a dynamic ",{"_key":271,"_type":106,"marks":272,"text":273},"dc029aec858f",[120],"import()",{"_key":275,"_type":106,"marks":276,"text":277},"5932551d99db",[],". In practice, this means shared config lives in its own plain TypeScript file rather than in the module that also registers components. It is the one rule that will bite you if you move a file without knowing it, and the project ships a check for it.",[],{"_type":159,"colorSource":50,"container":160,"hideSection":14,"mediaOpacity":161,"slideEffect":162,"sticky":14},"The Studio\u002FNuxt boundary","warning",{"_type":283,"bodyFont":284,"primaryFont":284},"font.options","","Where things live, and the one boundary rule worth knowing before you move a file.","documentation","\u002Fdocs\u002Fproject-structure",{"_type":289,"includeInSitemap":172,"slug":290},"page.routing.options",{"_type":291,"current":292},"slug","docs\u002Fproject-structure",{"_type":294,"favicon":295,"image":53,"schema":296,"socialImages":298},"seo",{"mimeType":53,"url":53},{"organizationType":297},"Organization",{"facebook":53,"linkedin":53,"twitter":53},{"_id":300,"_type":301,"groups":302,"title":357},"59fde457-2b98-4571-9d63-57f3f505f4c4","docs.navigation",[303,319,343],{"_key":304,"items":305,"title":318},"b1d02b598607",[306,311,316],{"_id":307,"_type":92,"slug":308,"title":309,"url":310},"c6fe71b8-698e-4891-bc01-13bff89ed46c","docs","Introduction","\u002Fdocs",{"_id":312,"_type":92,"slug":313,"title":314,"url":315},"9e45c218-c8d2-405d-be9a-4d07deb63510","docs\u002Fquick-start","Quick start","\u002Fdocs\u002Fquick-start",{"_id":87,"_type":92,"slug":292,"title":317,"url":287},"Project structure","Get started",{"_key":320,"items":321,"title":342},"1fb624003506",[322,327,332,337],{"_id":323,"_type":92,"slug":324,"title":325,"url":326},"afcfec8e-fad2-4ed3-88dc-6506a8c82df6","docs\u002Fpage-builder","The page builder","\u002Fdocs\u002Fpage-builder",{"_id":328,"_type":92,"slug":329,"title":330,"url":331},"d09e9c43-5d71-4fb4-bf42-2682568d5b0a","docs\u002Fblock-library","Block library","\u002Fdocs\u002Fblock-library",{"_id":333,"_type":92,"slug":334,"title":335,"url":336},"c518286f-0bc6-465e-b498-53e65bdc0548","theming-and-fonts","Theming & fonts","\u002Ftheming-and-fonts",{"_id":338,"_type":92,"slug":339,"title":340,"url":341},"8a285811-c9d0-4f3a-94a8-be92f25d0311","docs\u002Fforms","Forms","\u002Fdocs\u002Fforms","Building pages",{"_key":344,"items":345,"title":356},"c7a7dc892511",[346,351],{"_id":347,"_type":92,"slug":348,"title":349,"url":350},"eb75dbb1-d328-44cf-a075-52a8d0d884ba","docs\u002Fdeployment","Deployment","\u002Fdocs\u002Fdeployment",{"_id":352,"_type":92,"slug":353,"title":354,"url":355},"d1bc093a-f8b7-4dc8-aac8-5f92fffcf2c3","docs\u002Fseo-and-redirects","SEO & Redirects","\u002Fdocs\u002Fseo-and-redirects","Deploying","Documentation sidebar",1789667184181]