[{"data":1,"prerenderedAt":1446},["ShallowReactive",2],{"navigation_docs":3,"/blog/v3":205},[4,24,51,73,95,112,158,171],{"title":5,"path":6,"stem":7,"children":8,"icon":23},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,11,15,19],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation",{"title":16,"path":17,"stem":18},"Configuration","/docs/getting-started/configuration","docs/1.getting-started/3.configuration",{"title":20,"path":21,"stem":22},"Migration","/docs/getting-started/migration","docs/1.getting-started/4.migration","i-lucide-square-play",{"title":25,"icon":26,"path":27,"stem":28,"children":29,"page":50},"Collections","i-lucide-database","/docs/collections","docs/2.collections",[30,34,38,42,46],{"title":31,"path":32,"stem":33},"Define","/docs/collections/define","docs/2.collections/1.define",{"title":35,"path":36,"stem":37},"Types","/docs/collections/types","docs/2.collections/2.types",{"title":39,"path":40,"stem":41},"Sources","/docs/collections/sources","docs/2.collections/3.sources",{"title":43,"path":44,"stem":45},"Validators","/docs/collections/validators","docs/2.collections/4.validators",{"title":47,"path":48,"stem":49},"Components","/docs/collections/inherit-schema-from-component","docs/2.collections/5.inherit-schema-from-component",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Files","i-lucide-file","/docs/files","docs/3.files",[57,61,65,69],{"title":58,"path":59,"stem":60},"Markdown","/docs/files/markdown","docs/3.files/1.markdown",{"title":62,"path":63,"stem":64},"YAML","/docs/files/yaml","docs/3.files/2.yaml",{"title":66,"path":67,"stem":68},"JSON","/docs/files/json","docs/3.files/3.json",{"title":70,"path":71,"stem":72},"CSV","/docs/files/csv","docs/3.files/4.csv",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":50},"Query Utils","i-lucide-square-function","/docs/utils","docs/4.utils",[79,83,87,91],{"title":80,"path":81,"stem":82},"queryCollection","/docs/utils/query-collection","docs/4.utils/1.query-collection",{"title":84,"path":85,"stem":86},"queryCollectionNavigation","/docs/utils/query-collection-navigation","docs/4.utils/2.query-collection-navigation",{"title":88,"path":89,"stem":90},"queryCollectionItemSurroundings","/docs/utils/query-collection-item-surroundings","docs/4.utils/3.query-collection-item-surroundings",{"title":92,"path":93,"stem":94},"queryCollectionSearchSections","/docs/utils/query-collection-search-sections","docs/4.utils/4.query-collection-search-sections",{"title":47,"icon":96,"path":97,"stem":98,"children":99,"page":50},"i-lucide-square-code","/docs/components","docs/5.components",[100,104,108],{"title":101,"path":102,"stem":103},"ContentRenderer","/docs/components/content-renderer","docs/5.components/0.content-renderer",{"title":105,"path":106,"stem":107},"Slot","/docs/components/slot","docs/5.components/1.slot",{"title":109,"path":110,"stem":111},"Prose Components","/docs/components/prose","docs/5.components/2.prose",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":50},"Deploy","i-lucide-cloud-upload","/docs/deploy","docs/6.deploy",[118,122,126,130,134,138,142,146,150,154],{"title":119,"path":120,"stem":121},"Server","/docs/deploy/server","docs/6.deploy/1.server",{"title":123,"path":124,"stem":125},"Static","/docs/deploy/static","docs/6.deploy/10.static",{"title":127,"path":128,"stem":129},"Serverless","/docs/deploy/serverless","docs/6.deploy/2.serverless",{"title":131,"path":132,"stem":133},"NuxtHub","/docs/deploy/nuxthub","docs/6.deploy/3.nuxthub",{"title":135,"path":136,"stem":137},"Cloudflare Pages","/docs/deploy/cloudflare-pages","docs/6.deploy/4.cloudflare-pages",{"title":139,"path":140,"stem":141},"Cloudflare Workers","/docs/deploy/cloudflare-workers","docs/6.deploy/5.cloudflare-workers",{"title":143,"path":144,"stem":145},"Vercel","/docs/deploy/vercel","docs/6.deploy/6.vercel",{"title":147,"path":148,"stem":149},"Netlify","/docs/deploy/netlify","docs/6.deploy/7.netlify",{"title":151,"path":152,"stem":153},"AWS Amplify","/docs/deploy/aws-amplify","docs/6.deploy/8.aws-amplify",{"title":155,"path":156,"stem":157},"Docker","/docs/deploy/docker","docs/6.deploy/9.docker",{"title":159,"icon":114,"path":160,"stem":161,"children":162,"page":50},"Integrations","/docs/integrations","docs/7.integrations",[163,167],{"title":164,"path":165,"stem":166},"Nuxt i18n","/docs/integrations/i18n","docs/7.integrations/01.i18n",{"title":168,"path":169,"stem":170},"Nuxt LLMs","/docs/integrations/llms","docs/7.integrations/02.llms",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":50},"Advanced","i-lucide-code-xml","/docs/advanced","docs/8.advanced",[177,181,185,189,193,197,201],{"title":178,"path":179,"stem":180},"Full-Text Search","/docs/advanced/fulltext-search","docs/8.advanced/1.fulltext-search",{"title":182,"path":183,"stem":184},"Raw Content","/docs/advanced/raw-content","docs/8.advanced/2.raw-content",{"title":186,"path":187,"stem":188},"SQL Storage","/docs/advanced/database","docs/8.advanced/3.database",{"title":190,"path":191,"stem":192},"Debugging tools","/docs/advanced/tools","docs/8.advanced/4.tools",{"title":194,"path":195,"stem":196},"Hooks","/docs/advanced/hooks","docs/8.advanced/5.hooks",{"title":198,"path":199,"stem":200},"Custom Source","/docs/advanced/custom-source","docs/8.advanced/6.custom-source",{"title":202,"path":203,"stem":204},"Transformers","/docs/advanced/transformers","docs/8.advanced/8.transformers",{"page":206,"surround":1435},{"id":207,"title":208,"authors":209,"body":228,"categories":1421,"category":1422,"date":1423,"description":1424,"draft":50,"extension":1425,"image":1426,"meta":1429,"navigation":412,"path":1430,"seo":1431,"stem":1433,"__hash__":1434},"posts/blog/v3.md","Nuxt Content v3",[210,216,222],{"name":211,"avatar":212,"to":214,"username":215},"Baptiste Leproux",{"src":213},"https://avatars.githubusercontent.com/u/7290030?v=4","https://x.com/_larbish","larbish",{"name":217,"avatar":218,"to":220,"username":221},"Ahad Birang",{"src":219},"https://avatars.githubusercontent.com/u/2047945?v=4","https://x.com/farnabaz","farnabaz",{"name":223,"avatar":224,"to":226,"username":227},"Sébastien Chopin",{"src":225},"https://avatars.githubusercontent.com/u/904724?v=4","https://x.com/atinux","atinux",{"type":229,"value":230,"toc":1403},"minimark",[231,239,243,248,251,268,280,287,292,309,312,321,325,328,332,335,341,350,356,359,707,711,715,718,742,745,1014,1018,1021,1042,1045,1225,1229,1232,1236,1242,1245,1249,1268,1272,1283,1289,1357,1360,1366,1381,1399],[232,233,235],"h1",{"id":234},"announcing-nuxt-content-30",[236,237,238],"strong",{},"Announcing Nuxt Content 3.0",[240,241,242],"p",{},"We are thrilled to announce the first stable version of Nuxt Content 3.0.0 ✨",[244,245,247],"h2",{"id":246},"performance-improvements","🚀 Performance Improvements",[240,249,250],{},"Nuxt Content v3 moves away from a file-based storage approach to an SQL database system. Using a database instead of the file-based storage reduces many I/O operations when querying large datasets.",[252,253,254,255,259,260,263,264,267],"prose-note",{},"The new database system enhances the way your data files are stored and structured, ensuring better performance and scalability. This update is entirely behind the scenes and does not affect the file types you can use in Content (",[256,257,258],"code",{},"yml",", ",[256,261,262],{},"json",", and ",[256,265,266],{},"markdown"," ).",[240,269,270,271,275,276,279],{},"This switch is transparent to users and Nuxt Content still provides a zero config support for development mode, ",[272,273,274],"a",{"href":120},"server hosting"," and ",[272,277,278],{"href":124},"static generation",".",[240,281,282,283,286],{},"Furthermore, ",[272,284,285],{"href":128},"serverless"," hosting is now supported and client-side navigation performance has been improved.",[288,289,291],"h3",{"id":290},"serverless-compatibility","Serverless Compatibility",[240,293,294,295,259,300,304,305,279],{},"A key challenge with Nuxt Content v2 was the large bundle size required to store all content files. It was an issue when deploying to serverless or edge platforms like ",[272,296,147],{"href":297,"rel":298},"https://netlify.com",[299],"nofollow",[272,301,131],{"href":302,"rel":303},"https://hub.nuxt.com",[299]," or ",[272,306,143],{"href":307,"rel":308},"https://vercel.com",[299],[240,310,311],{},"In serverless environments, each user request triggers a fresh instance of your Nuxt server, it starts from scratch each time. This \"stateless\" nature means you can't store data in server memory or use file-based databases like SQLite. That's why we've implemented database adaptors that persist data independently of your server instances.",[252,313,314,315,320],{},"We're manually switching to the appropriate provider (Vercel / Postgres, NuxtHub / D1...) according to the ",[272,316,319],{"href":317,"rel":318},"https://cfec52f9.content-f0q.pages.dev/docs/getting-started/configuration#database",[299],"database type"," you've set in your config.",[288,322,324],{"id":323},"wasm-sqlite-in-browser","WASM SQLite in Browser",[240,326,327],{},"For client-side navigation, the module uses a similar approach. When the application executes the first content query, it downloads the generated dump from the server and initializes a local SQLite database within the browser. From that point onward, all queries are executed locally without needing to call the server: significantly improving the responsiveness of the application and providing a seamless user experience.",[244,329,331],{"id":330},"️-content-collections","🗄️ Content Collections",[240,333,334],{},"Collections are groups of related content items within your Nuxt Content project. They help organize and manage large datasets more efficiently.",[288,336,338],{"id":337},"define-collections",[236,339,340],{},"Define Collections",[240,342,343,344,349],{},"You can now define collections in the ",[272,345,346],{"href":17},[256,347,348],{},"content.config.ts"," file to configure the database structure, utility types, and methods for finding, parsing, and querying content.",[288,351,353],{"id":352},"collections-schema",[236,354,355],{},"Collections Schema",[240,357,358],{},"Schemas enforce consistency within collections and improve TypeScript typings for better integration with Nuxt Content utilities.",[360,361,366],"pre",{"className":362,"code":363,"filename":348,"language":364,"meta":365,"style":365},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineCollection, z } from '@nuxt/content'\n\n// Export collections\nexport const collections = {\n  // Define collection using `defineCollection` utility\n  posts: defineCollection({\n    // Specify the type of content in this collection\n    type: 'page',\n    // Load every file matching this pattern\n    source: 'blog/**/*.md',\n    // Define custom schema for this collection\n    schema: z.object({\n      date: z.date(),\n      image: z.object({\n        src: z.string(),\n        alt: z.string()\n      }),\n      badge: z.object({\n        label: z.string(),\n        color: z.string()\n      })\n    })\n  }),\n}\n","ts","",[256,367,368,407,414,421,440,446,465,471,490,496,513,519,538,558,576,595,612,623,641,659,675,683,691,701],{"__ignoreMap":365},[369,370,373,377,381,385,388,391,394,397,400,404],"span",{"class":371,"line":372},"line",1,[369,374,376],{"class":375},"s7zQu","import",[369,378,380],{"class":379},"sMK4o"," {",[369,382,384],{"class":383},"sTEyZ"," defineCollection",[369,386,387],{"class":379},",",[369,389,390],{"class":383}," z",[369,392,393],{"class":379}," }",[369,395,396],{"class":375}," from",[369,398,399],{"class":379}," '",[369,401,403],{"class":402},"sfazB","@nuxt/content",[369,405,406],{"class":379},"'\n",[369,408,410],{"class":371,"line":409},2,[369,411,413],{"emptyLinePlaceholder":412},true,"\n",[369,415,417],{"class":371,"line":416},3,[369,418,420],{"class":419},"sHwdD","// Export collections\n",[369,422,424,427,431,434,437],{"class":371,"line":423},4,[369,425,426],{"class":375},"export",[369,428,430],{"class":429},"spNyl"," const",[369,432,433],{"class":383}," collections ",[369,435,436],{"class":379},"=",[369,438,439],{"class":379}," {\n",[369,441,443],{"class":371,"line":442},5,[369,444,445],{"class":419},"  // Define collection using `defineCollection` utility\n",[369,447,449,453,456,459,462],{"class":371,"line":448},6,[369,450,452],{"class":451},"swJcz","  posts",[369,454,455],{"class":379},":",[369,457,384],{"class":458},"s2Zo4",[369,460,461],{"class":383},"(",[369,463,464],{"class":379},"{\n",[369,466,468],{"class":371,"line":467},7,[369,469,470],{"class":419},"    // Specify the type of content in this collection\n",[369,472,474,477,479,481,484,487],{"class":371,"line":473},8,[369,475,476],{"class":451},"    type",[369,478,455],{"class":379},[369,480,399],{"class":379},[369,482,483],{"class":402},"page",[369,485,486],{"class":379},"'",[369,488,489],{"class":379},",\n",[369,491,493],{"class":371,"line":492},9,[369,494,495],{"class":419},"    // Load every file matching this pattern\n",[369,497,499,502,504,506,509,511],{"class":371,"line":498},10,[369,500,501],{"class":451},"    source",[369,503,455],{"class":379},[369,505,399],{"class":379},[369,507,508],{"class":402},"blog/**/*.md",[369,510,486],{"class":379},[369,512,489],{"class":379},[369,514,516],{"class":371,"line":515},11,[369,517,518],{"class":419},"    // Define custom schema for this collection\n",[369,520,522,525,527,529,531,534,536],{"class":371,"line":521},12,[369,523,524],{"class":451},"    schema",[369,526,455],{"class":379},[369,528,390],{"class":383},[369,530,279],{"class":379},[369,532,533],{"class":458},"object",[369,535,461],{"class":383},[369,537,464],{"class":379},[369,539,541,544,546,548,550,553,556],{"class":371,"line":540},13,[369,542,543],{"class":451},"      date",[369,545,455],{"class":379},[369,547,390],{"class":383},[369,549,279],{"class":379},[369,551,552],{"class":458},"date",[369,554,555],{"class":383},"()",[369,557,489],{"class":379},[369,559,561,564,566,568,570,572,574],{"class":371,"line":560},14,[369,562,563],{"class":451},"      image",[369,565,455],{"class":379},[369,567,390],{"class":383},[369,569,279],{"class":379},[369,571,533],{"class":458},[369,573,461],{"class":383},[369,575,464],{"class":379},[369,577,579,582,584,586,588,591,593],{"class":371,"line":578},15,[369,580,581],{"class":451},"        src",[369,583,455],{"class":379},[369,585,390],{"class":383},[369,587,279],{"class":379},[369,589,590],{"class":458},"string",[369,592,555],{"class":383},[369,594,489],{"class":379},[369,596,598,601,603,605,607,609],{"class":371,"line":597},16,[369,599,600],{"class":451},"        alt",[369,602,455],{"class":379},[369,604,390],{"class":383},[369,606,279],{"class":379},[369,608,590],{"class":458},[369,610,611],{"class":383},"()\n",[369,613,615,618,621],{"class":371,"line":614},17,[369,616,617],{"class":379},"      }",[369,619,620],{"class":383},")",[369,622,489],{"class":379},[369,624,626,629,631,633,635,637,639],{"class":371,"line":625},18,[369,627,628],{"class":451},"      badge",[369,630,455],{"class":379},[369,632,390],{"class":383},[369,634,279],{"class":379},[369,636,533],{"class":458},[369,638,461],{"class":383},[369,640,464],{"class":379},[369,642,644,647,649,651,653,655,657],{"class":371,"line":643},19,[369,645,646],{"class":451},"        label",[369,648,455],{"class":379},[369,650,390],{"class":383},[369,652,279],{"class":379},[369,654,590],{"class":458},[369,656,555],{"class":383},[369,658,489],{"class":379},[369,660,662,665,667,669,671,673],{"class":371,"line":661},20,[369,663,664],{"class":451},"        color",[369,666,455],{"class":379},[369,668,390],{"class":383},[369,670,279],{"class":379},[369,672,590],{"class":458},[369,674,611],{"class":383},[369,676,678,680],{"class":371,"line":677},21,[369,679,617],{"class":379},[369,681,682],{"class":383},")\n",[369,684,686,689],{"class":371,"line":685},22,[369,687,688],{"class":379},"    }",[369,690,682],{"class":383},[369,692,694,697,699],{"class":371,"line":693},23,[369,695,696],{"class":379},"  }",[369,698,620],{"class":383},[369,700,489],{"class":379},[369,702,704],{"class":371,"line":703},24,[369,705,706],{"class":379},"}\n",[708,709,710],"prose-tip",{"to":32},"Learn more about collections in the documentation.",[244,712,714],{"id":713},"simplified-vue-utils","🔧 Simplified Vue Utils",[240,716,717],{},"We simplified the utils to now expose:",[719,720,721,727,732,737],"ul",{},[722,723,724,726],"li",{},[272,725,80],{"href":81}," to fetch your collections with our powerful query builder",[722,728,729,731],{},[272,730,84],{"href":85}," to fetch the generated navigation for a specific collection",[722,733,734,736],{},[272,735,88],{"href":89}," to fetch sibling content for a specific path",[722,738,739,741],{},[272,740,92],{"href":93}," to fetch searchable sections from a collection for enhanced content discovery",[240,743,744],{},"These four utils allow your to efficiently fetch and query your content within your Vue pages and components:",[360,746,751],{"className":747,"code":748,"filename":749,"language":750,"meta":365,"style":365},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { data: posts } = await useAsyncData('blog', () => {\n  return queryCollection('blog').all()\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Ch1>Blog\u003C/h1>\n    \u003Cul>\n      \u003Cli v-for=\"post in posts\" :key=\"post.id\">\n        \u003CNuxtLink :to=\"post.path\">{{ post.title }}\u003C/NuxtLink>\n      \u003C/li>\n    \u003C/ul>\n  \u003C/div>\n\u003C/template>\n","pages/blog.vue","vue",[256,752,753,779,825,850,856,865,869,878,888,907,915,948,979,988,997,1006],{"__ignoreMap":365},[369,754,755,758,761,764,767,769,772,774,776],{"class":371,"line":372},[369,756,757],{"class":379},"\u003C",[369,759,760],{"class":451},"script",[369,762,763],{"class":429}," setup",[369,765,766],{"class":429}," lang",[369,768,436],{"class":379},[369,770,771],{"class":379},"\"",[369,773,364],{"class":402},[369,775,771],{"class":379},[369,777,778],{"class":379},">\n",[369,780,781,784,786,789,791,794,797,800,803,806,808,810,813,815,817,820,823],{"class":371,"line":409},[369,782,783],{"class":429},"const",[369,785,380],{"class":379},[369,787,788],{"class":451}," data",[369,790,455],{"class":379},[369,792,793],{"class":383}," posts ",[369,795,796],{"class":379},"}",[369,798,799],{"class":379}," =",[369,801,802],{"class":375}," await",[369,804,805],{"class":458}," useAsyncData",[369,807,461],{"class":383},[369,809,486],{"class":379},[369,811,812],{"class":402},"blog",[369,814,486],{"class":379},[369,816,387],{"class":379},[369,818,819],{"class":379}," ()",[369,821,822],{"class":429}," =>",[369,824,439],{"class":379},[369,826,827,830,833,835,837,839,841,843,845,848],{"class":371,"line":416},[369,828,829],{"class":375},"  return",[369,831,832],{"class":458}," queryCollection",[369,834,461],{"class":451},[369,836,486],{"class":379},[369,838,812],{"class":402},[369,840,486],{"class":379},[369,842,620],{"class":451},[369,844,279],{"class":379},[369,846,847],{"class":458},"all",[369,849,611],{"class":451},[369,851,852,854],{"class":371,"line":423},[369,853,796],{"class":379},[369,855,682],{"class":383},[369,857,858,861,863],{"class":371,"line":442},[369,859,860],{"class":379},"\u003C/",[369,862,760],{"class":451},[369,864,778],{"class":379},[369,866,867],{"class":371,"line":448},[369,868,413],{"emptyLinePlaceholder":412},[369,870,871,873,876],{"class":371,"line":467},[369,872,757],{"class":379},[369,874,875],{"class":451},"template",[369,877,778],{"class":379},[369,879,880,883,886],{"class":371,"line":473},[369,881,882],{"class":379},"  \u003C",[369,884,885],{"class":451},"div",[369,887,778],{"class":379},[369,889,890,893,895,898,901,903,905],{"class":371,"line":492},[369,891,892],{"class":379},"    \u003C",[369,894,232],{"class":451},[369,896,897],{"class":379},">",[369,899,900],{"class":383},"Blog",[369,902,860],{"class":379},[369,904,232],{"class":451},[369,906,778],{"class":379},[369,908,909,911,913],{"class":371,"line":498},[369,910,892],{"class":379},[369,912,719],{"class":451},[369,914,778],{"class":379},[369,916,917,920,922,925,927,929,932,934,937,939,941,944,946],{"class":371,"line":515},[369,918,919],{"class":379},"      \u003C",[369,921,722],{"class":451},[369,923,924],{"class":429}," v-for",[369,926,436],{"class":379},[369,928,771],{"class":379},[369,930,931],{"class":402},"post in posts",[369,933,771],{"class":379},[369,935,936],{"class":429}," :key",[369,938,436],{"class":379},[369,940,771],{"class":379},[369,942,943],{"class":402},"post.id",[369,945,771],{"class":379},[369,947,778],{"class":379},[369,949,950,953,956,959,961,963,966,968,970,973,975,977],{"class":371,"line":521},[369,951,952],{"class":379},"        \u003C",[369,954,955],{"class":451},"NuxtLink",[369,957,958],{"class":429}," :to",[369,960,436],{"class":379},[369,962,771],{"class":379},[369,964,965],{"class":402},"post.path",[369,967,771],{"class":379},[369,969,897],{"class":379},[369,971,972],{"class":383},"{{ post.title }}",[369,974,860],{"class":379},[369,976,955],{"class":451},[369,978,778],{"class":379},[369,980,981,984,986],{"class":371,"line":540},[369,982,983],{"class":379},"      \u003C/",[369,985,722],{"class":451},[369,987,778],{"class":379},[369,989,990,993,995],{"class":371,"line":560},[369,991,992],{"class":379},"    \u003C/",[369,994,719],{"class":451},[369,996,778],{"class":379},[369,998,999,1002,1004],{"class":371,"line":578},[369,1000,1001],{"class":379},"  \u003C/",[369,1003,885],{"class":451},[369,1005,778],{"class":379},[369,1007,1008,1010,1012],{"class":371,"line":597},[369,1009,860],{"class":379},[369,1011,875],{"class":451},[369,1013,778],{"class":379},[244,1015,1017],{"id":1016},"built-in-components","📦 Built-in Components",[240,1019,1020],{},"We've updated the components to include only the essentials:",[719,1022,1023,1028,1037],{},[722,1024,1025,1027],{},[272,1026,101],{"href":102}," to render the parsed Markdown to HTML & Vue components",[722,1029,1030,1032,1033,1036],{},[272,1031,105],{"href":106}," replaced ",[256,1034,1035],{},"ContentSlot"," as we now support unwrapping using a directive, making your Vue components perfectly compatible to be used in both Vue & Markdown",[722,1038,1039,1041],{},[272,1040,109],{"href":110}," are pre-designed components tailored for MDC syntax, with integrated styling for a good appearance",[240,1043,1044],{},"Here's an example of displaying the content of a Markdown file:",[360,1046,1049],{"className":747,"code":1047,"filename":1048,"language":750,"meta":365,"style":365},"\u003Cscript lang=\"ts\" setup>\nconst { data: page } = await useAsyncData(() => {\n  return queryCollection('content').path('/about').first()\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CContentRenderer v-if=\"page\" :value=\"page\" />\n  \u003Cp v-else>About page not written yet.\u003C/p>\n\u003C/template>\n","pages/about.vue",[256,1050,1051,1071,1100,1140,1146,1154,1158,1166,1197,1217],{"__ignoreMap":365},[369,1052,1053,1055,1057,1059,1061,1063,1065,1067,1069],{"class":371,"line":372},[369,1054,757],{"class":379},[369,1056,760],{"class":451},[369,1058,766],{"class":429},[369,1060,436],{"class":379},[369,1062,771],{"class":379},[369,1064,364],{"class":402},[369,1066,771],{"class":379},[369,1068,763],{"class":429},[369,1070,778],{"class":379},[369,1072,1073,1075,1077,1079,1081,1084,1086,1088,1090,1092,1094,1096,1098],{"class":371,"line":409},[369,1074,783],{"class":429},[369,1076,380],{"class":379},[369,1078,788],{"class":451},[369,1080,455],{"class":379},[369,1082,1083],{"class":383}," page ",[369,1085,796],{"class":379},[369,1087,799],{"class":379},[369,1089,802],{"class":375},[369,1091,805],{"class":458},[369,1093,461],{"class":383},[369,1095,555],{"class":379},[369,1097,822],{"class":429},[369,1099,439],{"class":379},[369,1101,1102,1104,1106,1108,1110,1113,1115,1117,1119,1122,1124,1126,1129,1131,1133,1135,1138],{"class":371,"line":416},[369,1103,829],{"class":375},[369,1105,832],{"class":458},[369,1107,461],{"class":451},[369,1109,486],{"class":379},[369,1111,1112],{"class":402},"content",[369,1114,486],{"class":379},[369,1116,620],{"class":451},[369,1118,279],{"class":379},[369,1120,1121],{"class":458},"path",[369,1123,461],{"class":451},[369,1125,486],{"class":379},[369,1127,1128],{"class":402},"/about",[369,1130,486],{"class":379},[369,1132,620],{"class":451},[369,1134,279],{"class":379},[369,1136,1137],{"class":458},"first",[369,1139,611],{"class":451},[369,1141,1142,1144],{"class":371,"line":423},[369,1143,796],{"class":379},[369,1145,682],{"class":383},[369,1147,1148,1150,1152],{"class":371,"line":442},[369,1149,860],{"class":379},[369,1151,760],{"class":451},[369,1153,778],{"class":379},[369,1155,1156],{"class":371,"line":448},[369,1157,413],{"emptyLinePlaceholder":412},[369,1159,1160,1162,1164],{"class":371,"line":467},[369,1161,757],{"class":379},[369,1163,875],{"class":451},[369,1165,778],{"class":379},[369,1167,1168,1170,1172,1175,1177,1179,1181,1183,1186,1188,1190,1192,1194],{"class":371,"line":473},[369,1169,882],{"class":379},[369,1171,101],{"class":451},[369,1173,1174],{"class":429}," v-if",[369,1176,436],{"class":379},[369,1178,771],{"class":379},[369,1180,483],{"class":402},[369,1182,771],{"class":379},[369,1184,1185],{"class":429}," :value",[369,1187,436],{"class":379},[369,1189,771],{"class":379},[369,1191,483],{"class":402},[369,1193,771],{"class":379},[369,1195,1196],{"class":379}," />\n",[369,1198,1199,1201,1203,1206,1208,1211,1213,1215],{"class":371,"line":492},[369,1200,882],{"class":379},[369,1202,240],{"class":451},[369,1204,1205],{"class":429}," v-else",[369,1207,897],{"class":379},[369,1209,1210],{"class":383},"About page not written yet.",[369,1212,860],{"class":379},[369,1214,240],{"class":451},[369,1216,778],{"class":379},[369,1218,1219,1221,1223],{"class":371,"line":498},[369,1220,860],{"class":379},[369,1222,875],{"class":451},[369,1224,778],{"class":379},[244,1226,1228],{"id":1227},"typescript-integration","🔷 TypeScript Integration",[240,1230,1231],{},"The new collections system provides automatic TypeScript types for all your data. Every utility and API is strongly typed based on your collection definitions, ensuring robust type safety throughout development.",[244,1233,1235],{"id":1234},"️-migrating-from-v2","⬆️ Migrating from V2",[240,1237,1238,1239,279],{},"Migration should be as easy as possible, this is why we wrote the ",[272,1240,1241],{"href":21},"migration guide",[252,1243,1244],{},"Note that we've decided to remove the document-driven mode to simplify the module usage.",[244,1246,1248],{"id":1247},"️-studio-integration","🖼️ Studio Integration",[240,1250,1251,1255,1256,1259,1260,259,1262,1264,1265,1267],{},[272,1252,1254],{"href":1253},"/studio","Nuxt Studio"," is a platform to visually edit your ",[236,1257,1258],{},"Nuxt Content"," projects in production. With support for ",[256,1261,58],{},[256,1263,62],{},", or ",[256,1266,66],{}," files, our editor ensures versatility and ease of use.",[288,1269,1271],{"id":1270},"preview-api","Preview API",[240,1273,1274,1275,1280,1281,279],{},"Previously an independent module, the ",[272,1276,1279],{"href":1277,"rel":1278},"https://github.com/nuxtlabs/studio-module",[299],"Studio module"," has been updated to be more generic and is now integrated directly into Nuxt Content as a ",[256,1282,1271],{},[240,1284,1285,1286,1288],{},"Enabling the preview functionality in Studio is easier than ever—simply configure the Studio API as your ",[256,1287,1271],{}," in your Nuxt Content settings:",[360,1290,1293],{"className":362,"code":1291,"filename":1292,"language":364,"meta":365,"style":365},"export default defineNuxtConfig({\n  content: {\n    preview: {\n      api: 'https://api.nuxt.studio'\n    }\n  }\n})\n","nuxt.config.ts",[256,1294,1295,1309,1318,1327,1341,1346,1351],{"__ignoreMap":365},[369,1296,1297,1299,1302,1305,1307],{"class":371,"line":372},[369,1298,426],{"class":375},[369,1300,1301],{"class":375}," default",[369,1303,1304],{"class":458}," defineNuxtConfig",[369,1306,461],{"class":383},[369,1308,464],{"class":379},[369,1310,1311,1314,1316],{"class":371,"line":409},[369,1312,1313],{"class":451},"  content",[369,1315,455],{"class":379},[369,1317,439],{"class":379},[369,1319,1320,1323,1325],{"class":371,"line":416},[369,1321,1322],{"class":451},"    preview",[369,1324,455],{"class":379},[369,1326,439],{"class":379},[369,1328,1329,1332,1334,1336,1339],{"class":371,"line":423},[369,1330,1331],{"class":451},"      api",[369,1333,455],{"class":379},[369,1335,399],{"class":379},[369,1337,1338],{"class":402},"https://api.nuxt.studio",[369,1340,406],{"class":379},[369,1342,1343],{"class":371,"line":442},[369,1344,1345],{"class":379},"    }\n",[369,1347,1348],{"class":371,"line":448},[369,1349,1350],{"class":379},"  }\n",[369,1352,1353,1355],{"class":371,"line":467},[369,1354,796],{"class":379},[369,1356,682],{"class":383},[240,1358,1359],{},"This simplification means no extra module is required for Studio, making setup faster. Furthermore, the Preview API is now generic, enabling other providers to deliver great editing experiences on top of Nuxt Content.",[288,1361,1363],{"id":1362},"unified-documentation",[236,1364,1365],{},"Unified Documentation",[240,1367,1368,1369,275,1372,1375,1376,279],{},"In addition to this integration, we’ve unified the ",[236,1370,1371],{},"Content",[236,1373,1374],{},"Studio"," documentation and websites into a single comprehensive resource. Only the Studio platform (available once the user is logged-in) remains as a ",[272,1377,1380],{"href":1378,"rel":1379},"https://nuxt.studio",[299],"standalone site",[240,1382,1383,1386,1387,275,1390,1393,1394,275,1396,1398],{},[236,1384,1385],{},"We can now take advantage of data structures and collections in Studio",". The Studio platform supports and adapts its behaviour to ",[236,1388,1389],{},"collections",[236,1391,1392],{},"user-defined schemas",". This enhancement will allow schema-generated forms for both ",[256,1395,62],{},[256,1397,66],{}," files as well as front-matter within Markdown files.",[1400,1401,1402],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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":365,"searchDepth":409,"depth":409,"links":1404},[1405,1409,1413,1414,1415,1416,1417],{"id":246,"depth":409,"text":247,"children":1406},[1407,1408],{"id":290,"depth":416,"text":291},{"id":323,"depth":416,"text":324},{"id":330,"depth":409,"text":331,"children":1410},[1411,1412],{"id":337,"depth":416,"text":340},{"id":352,"depth":416,"text":355},{"id":713,"depth":409,"text":714},{"id":1016,"depth":409,"text":1017},{"id":1227,"depth":409,"text":1228},{"id":1234,"depth":409,"text":1235},{"id":1247,"depth":409,"text":1248,"children":1418},[1419,1420],{"id":1270,"depth":416,"text":1271},{"id":1362,"depth":416,"text":1365},null,"Release","2025-01-16","Content version 3 is out - introducing SQL based storage, collections, preview API for a better Studio integration and tons of performance improvements. ","md",{"src":1427,"alt":1428},"/blog/nuxt-content-v3.png","Version 3 of Nuxt Content",{},"/blog/v3",{"title":1432,"description":1424},"Announcing Nuxt Content version 3","blog/v3","eAWpSIRiAO42szep5SKPpbjLil-ILermiuSQYlN5fvE",[1436,1441],{"title":1437,"path":1438,"stem":1439,"description":1440,"children":-1},"Migrate Nuxt UI Pro Documentation Starter","/blog/ui-pro-docs-migration","blog/ui-pro-docs-migration","How to upgrade your Nuxt UI Pro documentation to Content and UI v3",{"title":1442,"path":1443,"stem":1444,"description":1445,"children":-1},"Behind the scenes of Nuxt Studio's visual editor","/blog/visual-editor","blog/visual-editor","Discover the inner workings of Nuxt Studio's visual editor and how it interprets the Markdown syntax and generate it back.",1774543458340]