[{"data":1,"prerenderedAt":551},["ShallowReactive",2],{"navigation":3,"-api-utils-loaders-and-actions":325,"-api-utils-loaders-and-actions-surround":548},[4,79,198,295],{"title":5,"path":6,"stem":7,"children":8,"icon":77,"header":78},"Getting Started","\u002Fgetting-started","1.getting-started\u002F01.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","lucide:info",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F02.installation","lucide:play",{"title":18,"path":19,"stem":20,"icon":21},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F03.configuration","lucide:cog",{"title":23,"path":24,"stem":25,"icon":26},"Views","\u002Fgetting-started\u002Fviews","1.getting-started\u002F04.views","lucide:panels-top-left",{"title":28,"path":29,"stem":30,"icon":31},"Assets","\u002Fgetting-started\u002Fassets","1.getting-started\u002F05.assets","lucide:image",{"title":33,"path":34,"stem":35,"icon":36},"Styling","\u002Fgetting-started\u002Fstyling","1.getting-started\u002F06.styling","lucide:palette",{"title":38,"path":39,"stem":40,"icon":41},"Routing","\u002Fgetting-started\u002Frouting","1.getting-started\u002F07.routing","lucide:milestone",{"title":43,"path":44,"stem":45,"icon":46},"Data Loading","\u002Fgetting-started\u002Fdata-loading","1.getting-started\u002F08.data-loading","lucide:cable",{"title":48,"path":49,"stem":50,"icon":51},"Actions","\u002Fgetting-started\u002Factions","1.getting-started\u002F09.actions","lucide:mouse",{"title":53,"path":54,"stem":55,"icon":56},"Pending UI","\u002Fgetting-started\u002Fpending-ui","1.getting-started\u002F10.pending-ui","lucide:loader",{"title":58,"path":59,"stem":60,"icon":61},"SEO and Meta","\u002Fgetting-started\u002Fseo-meta","1.getting-started\u002F11.seo-meta","lucide:file-search-corner",{"title":63,"path":64,"stem":65,"icon":66},"State Management","\u002Fgetting-started\u002Fstate-management","1.getting-started\u002F12.state-management","lucide:database",{"title":68,"path":69,"stem":70,"icon":71},"Transitions","\u002Fgetting-started\u002Ftransitions","1.getting-started\u002F13.transitions","lucide:toggle-right",{"title":73,"path":74,"stem":75,"icon":76},"Error Handling","\u002Fgetting-started\u002Ferror-handling","1.getting-started\u002F14.error-handling","lucide:bug-off","lucide:rocket",true,{"title":80,"icon":81,"path":82,"stem":83,"children":84,"page":149},"Structure","lucide:folder-open","\u002Fdirectory-structure\u002Fhorn","2.directory-structure",[85,89,94,150,155,160,174,179,184,188,193],{"title":86,"path":82,"stem":87,"icon":88},".vuloom","2.directory-structure\u002F01.horn","vscode-icons:folder-type-temp",{"title":90,"path":91,"stem":92,"icon":93},".output","\u002Fdirectory-structure\u002Foutput","2.directory-structure\u002F02.output","vscode-icons:folder-type-package",{"title":95,"icon":96,"path":97,"stem":98,"children":99,"page":149},"app","vscode-icons:folder-type-app","\u002Fdirectory-structure\u002Fapp","2.directory-structure\u002F03.app",[100,105,110,115,120,125,130,135,140,144],{"title":101,"path":102,"stem":103,"icon":104},"assets","\u002Fdirectory-structure\u002Fapp\u002Fassets","2.directory-structure\u002F03.app\u002F01.assets","vscode-icons:folder-type-asset",{"title":106,"path":107,"stem":108,"icon":109},"components","\u002Fdirectory-structure\u002Fapp\u002Fcomponents","2.directory-structure\u002F03.app\u002F02.components","vscode-icons:folder-type-component",{"title":111,"path":112,"stem":113,"icon":114},"composables","\u002Fdirectory-structure\u002Fapp\u002Fcomposables","2.directory-structure\u002F03.app\u002F03.composables","vscode-icons:folder-type-src",{"title":116,"path":117,"stem":118,"icon":119},"middleware","\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","2.directory-structure\u002F03.app\u002F04.middleware","vscode-icons:folder-type-middleware",{"title":121,"path":122,"stem":123,"icon":124},"pages","\u002Fdirectory-structure\u002Fapp\u002Fpages","2.directory-structure\u002F03.app\u002F05.pages","vscode-icons:folder-type-view",{"title":126,"path":127,"stem":128,"icon":129},"utils","\u002Fdirectory-structure\u002Fapp\u002Futils","2.directory-structure\u002F03.app\u002F06.utils","vscode-icons:folder-type-tools",{"title":131,"path":132,"stem":133,"icon":134},"app.vue","\u002Fdirectory-structure\u002Fapp\u002Fapp","2.directory-structure\u002F03.app\u002F07.app","vscode-icons:file-type-vue",{"title":136,"path":137,"stem":138,"icon":139},"app.config.ts","\u002Fdirectory-structure\u002Fapp\u002Fapp-config","2.directory-structure\u002F03.app\u002F08.app-config","vscode-icons:file-type-light-config",{"title":141,"path":142,"stem":143,"icon":134},"error.vue","\u002Fdirectory-structure\u002Fapp\u002Ferror","2.directory-structure\u002F03.app\u002F09.error",{"title":145,"path":146,"stem":147,"icon":148},"loader.ts","\u002Fdirectory-structure\u002Fapp\u002Floader","2.directory-structure\u002F03.app\u002F10.loader","vscode-icons:file-type-typescript",false,{"title":151,"path":152,"stem":153,"icon":154},"node_modules","\u002Fdirectory-structure\u002Fnode_modules","2.directory-structure\u002F04.node_modules","vscode-icons:folder-type-node",{"title":156,"path":157,"stem":158,"icon":159},"public","\u002Fdirectory-structure\u002Fpublic","2.directory-structure\u002F05.public","vscode-icons:folder-type-public",{"title":161,"icon":162,"path":163,"stem":164,"children":165,"page":149},"server","vscode-icons:folder-type-server","\u002Fdirectory-structure\u002Fserver","2.directory-structure\u002F06.server",[166,169],{"title":116,"path":167,"stem":168,"icon":119},"\u002Fdirectory-structure\u002Fserver\u002Fmiddleware","2.directory-structure\u002F06.server\u002F01.middleware",{"title":170,"path":171,"stem":172,"icon":173},"routes","\u002Fdirectory-structure\u002Fserver\u002Froutes","2.directory-structure\u002F06.server\u002F02.routes","vscode-icons:folder-type-route",{"title":175,"path":176,"stem":177,"icon":178},".env","\u002Fdirectory-structure\u002Fenv","2.directory-structure\u002F07.env","vscode-icons:file-type-dotenv",{"title":180,"path":181,"stem":182,"icon":183},".gitignore","\u002Fdirectory-structure\u002Fgitignore","2.directory-structure\u002F08.gitignore","vscode-icons:file-type-git",{"title":185,"path":186,"stem":187,"icon":139},"vuloom.config.ts","\u002Fdirectory-structure\u002Fhorn-config","2.directory-structure\u002F09.horn-config",{"title":189,"path":190,"stem":191,"icon":192},"package.json","\u002Fdirectory-structure\u002Fpackage","2.directory-structure\u002F10.package","vscode-icons:file-type-npm",{"title":194,"path":195,"stem":196,"icon":197},"tsconfig.json","\u002Fdirectory-structure\u002Ftsconfig","2.directory-structure\u002F11.tsconfig","vscode-icons:file-type-tsconfig",{"title":199,"icon":200,"header":78,"path":201,"stem":202,"children":203,"page":149},"API","lucide:code-xml","\u002Fapi\u002Fcomponents\u002Fclient-only","3.api",[204,224,269,290],{"title":205,"icon":206,"path":207,"stem":208,"children":209,"page":149},"Components","lucide:box","\u002Fapi\u002Fcomponents","3.api\u002F01.components",[210,214,219],{"title":211,"path":201,"stem":212,"icon":213},"ClientOnly","3.api\u002F01.components\u002F01.client-only","lucide:monitor",{"title":215,"path":216,"stem":217,"icon":218},"DevOnly","\u002Fapi\u002Fcomponents\u002Fdev-only","3.api\u002F01.components\u002F02.dev-only","lucide:wrench",{"title":220,"path":221,"stem":222,"icon":223},"RouterLink","\u002Fapi\u002Fcomponents\u002Flink","3.api\u002F01.components\u002F03.link","lucide:link",{"title":225,"icon":226,"path":227,"stem":228,"children":229,"page":149},"Composables","lucide:arrow-left-right","\u002Fapi\u002Fcomposables","3.api\u002F02.composables",[230,235,240,245,250,255,260,265],{"title":231,"path":232,"stem":233,"icon":234},"useAppData","\u002Fapi\u002Fcomposables\u002Fuse-app-data","3.api\u002F02.composables\u002F01.use-app-data","lucide:app-window",{"title":236,"path":237,"stem":238,"icon":239},"useLoaderData","\u002Fapi\u002Fcomposables\u002Fuse-loader-data","3.api\u002F02.composables\u002F02.use-loader-data","lucide:database-zap",{"title":241,"path":242,"stem":243,"icon":244},"useActionData","\u002Fapi\u002Fcomposables\u002Fuse-action-data","3.api\u002F02.composables\u002F03.use-action-data","lucide:send",{"title":246,"path":247,"stem":248,"icon":249},"useRoute","\u002Fapi\u002Fcomposables\u002Fuse-route","3.api\u002F02.composables\u002F04.use-route","lucide:route",{"title":251,"path":252,"stem":253,"icon":254},"useRouter","\u002Fapi\u002Fcomposables\u002Fuse-router","3.api\u002F02.composables\u002F05.use-router","lucide:navigation",{"title":256,"path":257,"stem":258,"icon":259},"useNavigation","\u002Fapi\u002Fcomposables\u002Fuse-navigation","3.api\u002F02.composables\u002F06.use-navigation","lucide:loader-circle",{"title":261,"path":262,"stem":263,"icon":264},"useHead","\u002Fapi\u002Fcomposables\u002Fuse-head","3.api\u002F02.composables\u002F07.use-head","lucide:file-search",{"title":266,"path":267,"stem":268,"icon":66},"useState","\u002Fapi\u002Fcomposables\u002Fuse-state","3.api\u002F02.composables\u002F08.use-state",{"title":270,"icon":271,"path":272,"stem":273,"children":274,"page":149},"Utils","lucide:square-function","\u002Fapi\u002Futils","3.api\u002F03.utils",[275,280,285],{"title":276,"path":277,"stem":278,"icon":279},"Response Helpers","\u002Fapi\u002Futils\u002Fresponses","3.api\u002F03.utils\u002F01.responses","lucide:reply",{"title":281,"path":282,"stem":283,"icon":284},"Loaders and Actions","\u002Fapi\u002Futils\u002Floaders-and-actions","3.api\u002F03.utils\u002F02.loaders-and-actions","lucide:workflow",{"title":286,"path":287,"stem":288,"icon":289},"Route Definitions","\u002Fapi\u002Futils\u002Froute-definition","3.api\u002F03.utils\u002F03.route-definition","lucide:file-code",{"title":291,"path":292,"stem":293,"icon":294},"Commands","\u002Fapi\u002Fcommands","3.api\u002F04.commands","lucide:square-terminal",{"title":296,"icon":297,"header":78,"path":298,"stem":299,"children":300,"page":149},"Community","lucide:messages-square","\u002Fcommunity\u002Fgetting-help","4.community",[301,305,310,315,320],{"title":302,"path":298,"stem":303,"icon":304},"Getting Help","4.community\u002F01.getting-help","lucide:life-buoy",{"title":306,"path":307,"stem":308,"icon":309},"Reporting Bugs","\u002Fcommunity\u002Freporting-bugs","4.community\u002F02.reporting-bugs","lucide:bug",{"title":311,"path":312,"stem":313,"icon":314},"Contribution","\u002Fcommunity\u002Fcontribution","4.community\u002F03.contribution","lucide:git-pull-request",{"title":316,"path":317,"stem":318,"icon":319},"Framework Contribution","\u002Fcommunity\u002Fframework-contribution","4.community\u002F04.framework-contribution","lucide:github",{"title":321,"path":322,"stem":323,"icon":324},"Releases","\u002Fcommunity\u002Freleases","4.community\u002F05.releases","lucide:bell-dot",{"id":326,"title":281,"body":327,"description":348,"extension":543,"meta":544,"navigation":545,"path":282,"seo":546,"stem":283,"__hash__":547},"content\u002F3.api\u002F03.utils\u002F02.loaders-and-actions.md",{"type":328,"value":329,"toc":539,"icon":284},"minimark",[330,334,339,342,437,512,516,535],[331,332,333],"p",{},"Vuloom uses plain module exports for route loaders and actions.",[335,336,338],"h2",{"id":337},"route-module-shape","Route module shape",[331,340,341],{},"Use named exports in your route files:",[343,344,349],"pre",{"className":345,"code":346,"language":347,"meta":348,"style":348},"language-ts shiki shiki-themes github-light github-dark github-dark","export async function loader({ params }: { params: Record\u003Cstring, string> }) {\n  return {\n    slug: params.slug,\n  };\n}\n","ts","",[350,351,352,410,419,425,431],"code",{"__ignoreMap":348},[353,354,357,361,364,367,371,375,379,382,385,388,390,392,395,398,402,405,407],"span",{"class":355,"line":356},"line",1,[353,358,360],{"class":359},"so5gQ","export",[353,362,363],{"class":359}," async",[353,365,366],{"class":359}," function",[353,368,370],{"class":369},"shcOC"," loader",[353,372,374],{"class":373},"slsVL","({ ",[353,376,378],{"class":377},"sQHwn","params",[353,380,381],{"class":373}," }",[353,383,384],{"class":359},":",[353,386,387],{"class":373}," { ",[353,389,378],{"class":377},[353,391,384],{"class":359},[353,393,394],{"class":369}," Record",[353,396,397],{"class":373},"\u003C",[353,399,401],{"class":400},"suiK_","string",[353,403,404],{"class":373},", ",[353,406,401],{"class":400},[353,408,409],{"class":373},"> }) {\n",[353,411,413,416],{"class":355,"line":412},2,[353,414,415],{"class":359},"  return",[353,417,418],{"class":373}," {\n",[353,420,422],{"class":355,"line":421},3,[353,423,424],{"class":373},"    slug: params.slug,\n",[353,426,428],{"class":355,"line":427},4,[353,429,430],{"class":373},"  };\n",[353,432,434],{"class":355,"line":433},5,[353,435,436],{"class":373},"}\n",[343,438,440],{"className":345,"code":439,"language":347,"meta":348,"style":348},"export async function action({ formData }: { formData: FormData }) {\n  return {\n    ok: Boolean(formData.get(\"name\")),\n  };\n}\n",[350,441,442,474,480,504,508],{"__ignoreMap":348},[353,443,444,446,448,450,453,455,458,460,462,464,466,468,471],{"class":355,"line":356},[353,445,360],{"class":359},[353,447,363],{"class":359},[353,449,366],{"class":359},[353,451,452],{"class":369}," action",[353,454,374],{"class":373},[353,456,457],{"class":377},"formData",[353,459,381],{"class":373},[353,461,384],{"class":359},[353,463,387],{"class":373},[353,465,457],{"class":377},[353,467,384],{"class":359},[353,469,470],{"class":369}," FormData",[353,472,473],{"class":373}," }) {\n",[353,475,476,478],{"class":355,"line":412},[353,477,415],{"class":359},[353,479,418],{"class":373},[353,481,482,485,488,491,494,497,501],{"class":355,"line":421},[353,483,484],{"class":373},"    ok: ",[353,486,487],{"class":369},"Boolean",[353,489,490],{"class":373},"(formData.",[353,492,493],{"class":369},"get",[353,495,496],{"class":373},"(",[353,498,500],{"class":499},"sfrk1","\"name\"",[353,502,503],{"class":373},")),\n",[353,505,506],{"class":355,"line":427},[353,507,430],{"class":373},[353,509,510],{"class":355,"line":433},[353,511,436],{"class":373},[335,513,515],{"id":514},"how-they-are-used","How they are used",[517,518,519,526,532],"ul",{},[520,521,522,525],"li",{},[350,523,524],{},"loader()"," runs on the server to provide route data",[520,527,528,531],{},[350,529,530],{},"action()"," handles mutating requests for the route",[520,533,534],{},"the generated route runtime wires these exports into navigation, form submission, and SSR automatically",[536,537,538],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}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);}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}",{"title":348,"searchDepth":412,"depth":412,"links":540},[541,542],{"id":337,"depth":412,"text":338},{"id":514,"depth":412,"text":515},"md",{"icon":284},{"title":281,"icon":284},{"title":281,"description":348},"G9r9Cxq4Dmix2FGq4Aym7K4r33zdkjOsvgAKTXf1Tm8",[549,550],{"title":276,"path":277,"stem":278,"description":348,"icon":279,"children":-1},{"title":286,"path":287,"stem":288,"description":348,"icon":289,"children":-1},1777022956511]