[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-index-en":3},[4],{"id":5,"title":6,"author":7,"body":11,"createdAt":278,"description":279,"draft":280,"extension":281,"image":282,"meta":285,"navigation":286,"path":287,"readingTime":128,"seo":288,"sitemap":289,"stem":291,"tags":292,"updatedAt":290,"__hash__":294},"blog_en\u002Fblog\u002Fhello-world.md","Hello World",{"name":8,"avatar":9,"to":10},"Nenad Novakovic","https:\u002F\u002Fgithub.com\u002Fdvlden.png","https:\u002F\u002Fgithub.com\u002Fdvlden",{"type":12,"value":13,"toc":273},"minimark",[14,23,28,35,41,209,213,235,241,244,251,255,266,269],[15,16,17,18,22],"p",{},"This post exists so the ",[19,20,21],"code",{},"blog_en"," collection has something real to query. Delete it\nonce your own writing lands — or keep it around as a reference for the\nfrontmatter shape.",[24,25,27],"h2",{"id":26},"frontmatter","Frontmatter",[15,29,30,31,34],{},"Every field above is validated by the schema in ",[19,32,33],{},"content.config.ts",". Adding a\nfield that is not in the schema is fine — it just will not be typed. Removing a\nrequired one fails the build, which is the point.",[15,36,37,40],{},[19,38,39],{},"draft: true"," keeps a post out of production listings. Filter on it when you\nquery:",[42,43,48],"pre",{"className":44,"code":45,"language":46,"meta":47,"style":47},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const { data: posts } = await useAsyncData('blog', () =>\n  queryCollection('blog_en')\n    .where('draft', '=', false)\n    .order('createdAt', 'DESC')\n    .all(),\n)\n","ts","",[19,49,50,109,126,162,190,204],{"__ignoreMap":47},[51,52,55,59,63,67,70,74,77,80,84,88,91,94,98,100,103,106],"span",{"class":53,"line":54},"line",1,[51,56,58],{"class":57},"spNyl","const",[51,60,62],{"class":61},"sMK4o"," {",[51,64,66],{"class":65},"swJcz"," data",[51,68,69],{"class":61},":",[51,71,73],{"class":72},"sTEyZ"," posts ",[51,75,76],{"class":61},"}",[51,78,79],{"class":61}," =",[51,81,83],{"class":82},"s7zQu"," await",[51,85,87],{"class":86},"s2Zo4"," useAsyncData",[51,89,90],{"class":72},"(",[51,92,93],{"class":61},"'",[51,95,97],{"class":96},"sfazB","blog",[51,99,93],{"class":61},[51,101,102],{"class":61},",",[51,104,105],{"class":61}," ()",[51,107,108],{"class":57}," =>\n",[51,110,112,115,117,119,121,123],{"class":53,"line":111},2,[51,113,114],{"class":86},"  queryCollection",[51,116,90],{"class":72},[51,118,93],{"class":61},[51,120,21],{"class":96},[51,122,93],{"class":61},[51,124,125],{"class":72},")\n",[51,127,129,132,135,137,139,142,144,146,149,152,154,156,160],{"class":53,"line":128},3,[51,130,131],{"class":61},"    .",[51,133,134],{"class":86},"where",[51,136,90],{"class":72},[51,138,93],{"class":61},[51,140,141],{"class":96},"draft",[51,143,93],{"class":61},[51,145,102],{"class":61},[51,147,148],{"class":61}," '",[51,150,151],{"class":96},"=",[51,153,93],{"class":61},[51,155,102],{"class":61},[51,157,159],{"class":158},"sfNiH"," false",[51,161,125],{"class":72},[51,163,165,167,170,172,174,177,179,181,183,186,188],{"class":53,"line":164},4,[51,166,131],{"class":61},[51,168,169],{"class":86},"order",[51,171,90],{"class":72},[51,173,93],{"class":61},[51,175,176],{"class":96},"createdAt",[51,178,93],{"class":61},[51,180,102],{"class":61},[51,182,148],{"class":61},[51,184,185],{"class":96},"DESC",[51,187,93],{"class":61},[51,189,125],{"class":72},[51,191,193,195,198,201],{"class":53,"line":192},5,[51,194,131],{"class":61},[51,196,197],{"class":86},"all",[51,199,200],{"class":72},"()",[51,202,203],{"class":61},",\n",[51,205,207],{"class":53,"line":206},6,[51,208,125],{"class":72},[24,210,212],{"id":211},"writing","Writing",[15,214,215,216,220,221,220,225,228,229,234],{},"Markdown works as you would expect — ",[217,218,219],"strong",{},"bold",", ",[222,223,224],"em",{},"italic",[19,226,227],{},"inline code",", and\n",[230,231,233],"a",{"href":232},"\u002Fblog","links",".",[236,237,238],"blockquote",{},[15,239,240],{},"Blockquotes render through the prose components the UI layer ships.",[15,242,243],{},"MDC is supported, so any auto-imported Vue component can be used directly in\nthe body:",[245,246,248],"callout",{"icon":247},"i-lucide-info",[15,249,250],{},"This is a callout, written in Markdown.",[24,252,254],{"id":253},"images","Images",[15,256,257,258,261,262,265],{},"The featured image lives in ",[19,259,260],{},"public\u002Fimages\u002Fblog\u002F",". Reference it from ",[19,263,264],{},"image.src","\nand it is available to the listing, the post header, and the OG image.",[15,267,268],{},"That is the whole loop: write a file, get a typed, queryable document.",[270,271,272],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":47,"searchDepth":111,"depth":111,"links":274},[275,276,277],{"id":26,"depth":111,"text":27},{"id":211,"depth":111,"text":212},{"id":253,"depth":111,"text":254},"2026-07-20","A sample post showing every field the blog collection supports, from frontmatter through to MDC components.",false,"md",{"src":283,"alt":284},"\u002Fimages\u002Fblog\u002Fhello-world.svg","Abstract gradient artwork with the words Hello World",{},true,"\u002Fblog\u002Fhello-world",{"title":6,"description":279},{"loc":287,"lastmod":290},"2026-07-29","blog\u002Fhello-world",[293,211],"announcement","1WyKb6hB1fAx0xPGZJoMEvzrnEM8EcrILWb55KMMV-g"]