[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-virtual-file-routes":3,"mdc-pn21pr-key":51,"related-org-tanstack-virtual-file-routes":3185,"related-repo-tanstack-virtual-file-routes":3326},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":46,"sourceUrl":49,"mdContent":50},"virtual-file-routes","build programmatic route trees with TanStack Router","Programmatic route tree building as an alternative to filesystem conventions: rootRoute, index, route, layout, physical, defineVirtualSubtreeConfig. Use with TanStack Router plugin's virtualRouteConfig option.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"tanstack","TanStack","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftanstack.png",[12,16,19,22,23],{"name":13,"slug":14,"type":15},"TanStack Router","tanstack-router","tag",{"name":17,"slug":18,"type":15},"TypeScript","typescript",{"name":20,"slug":21,"type":15},"Routing","routing",{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},"Frontend","frontend",14787,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter","2026-07-30T05:26:51.471246",null,1761,[32,33,34,35,36,37,21,38,39,40,41,42,43,44,18,45],"framework","fullstack","javascript","react","route","router","rpc","search","searchparams","server-functions","ssr","state-management","typesafe","url",{"repoUrl":27,"stars":26,"forks":30,"topics":47,"description":48},[32,33,34,35,36,37,21,38,39,40,41,42,43,44,18,45],"🤖 A client-first, server-capable, fully type-safe router and full-stack framework for the web (React and more).","https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter\u002Ftree\u002FHEAD\u002Fpackages\u002Fvirtual-file-routes\u002Fskills\u002Fvirtual-file-routes","---\nname: virtual-file-routes\ndescription: >-\n  Programmatic route tree building as an alternative to filesystem\n  conventions: rootRoute, index, route, layout, physical,\n  defineVirtualSubtreeConfig. Use with TanStack Router plugin's\n  virtualRouteConfig option.\nmetadata:\n  type: core\n  library: tanstack-router\n  library_version: '1.162.0'\nsources:\n  - TanStack\u002Frouter:packages\u002Fvirtual-file-routes\u002Fsrc\n  - TanStack\u002Frouter:docs\u002Frouter\u002Frouting\u002Fvirtual-file-routes.md\n---\n\n# Virtual File Routes (`@tanstack\u002Fvirtual-file-routes`)\n\nBuild route trees programmatically instead of relying on filesystem conventions. Useful when you want explicit control over route structure, need to mix virtual and physical routes, or want to define route subtrees within file-based routing directories.\n\nUse this skill only when the project config contains `virtualRouteConfig`, a virtual route config file, or `__virtual.ts`. Ordinary file-route changes belong to Router Core and the Router Plugin.\n\n> **CRITICAL**: Types are FULLY INFERRED. Never cast, never annotate inferred values.\n\n## Install\n\n```bash\nnpm install @tanstack\u002Fvirtual-file-routes\n```\n\n## API Reference\n\n### `rootRoute(file, children?)`\n\nCreates the root of a virtual route tree.\n\n```ts\nimport { rootRoute, index, route } from '@tanstack\u002Fvirtual-file-routes'\n\nconst routes = rootRoute('root.tsx', [\n  index('index.tsx'),\n  route('\u002Fabout', 'about.tsx'),\n])\n```\n\n### `index(file)`\n\nCreates an index route — the default rendered when the parent path matches exactly.\n\n```ts\nimport { index } from '@tanstack\u002Fvirtual-file-routes'\n\nindex('home.tsx')\n```\n\n### `route(path, ...)`\n\nCreates a route node. Three call signatures:\n\n```ts\nimport { route, index } from '@tanstack\u002Fvirtual-file-routes'\n\n\u002F\u002F Leaf route: path + file\nroute('\u002Fabout', 'about.tsx')\n\n\u002F\u002F Branch route: path + file + children\nroute('\u002Fdashboard', 'dashboard.tsx', [\n  index('dashboard-index.tsx'),\n  route('\u002Fsettings', 'settings.tsx'),\n])\n\n\u002F\u002F Path prefix only (no file): groups children under a URL segment\nroute('\u002Fapi', [route('\u002Fusers', 'users.tsx'), route('\u002Fposts', 'posts.tsx')])\n```\n\n### `layout(file, children)` or `layout(id, file, children)`\n\nCreates a pathless layout route — wraps children without adding a URL segment.\n\n```ts\nimport { layout, route, index } from '@tanstack\u002Fvirtual-file-routes'\n\n\u002F\u002F ID derived from filename\nlayout('authLayout.tsx', [\n  route('\u002Fdashboard', 'dashboard.tsx'),\n  route('\u002Fsettings', 'settings.tsx'),\n])\n\n\u002F\u002F Explicit ID\nlayout('admin-layout', 'adminLayout.tsx', [route('\u002Fadmin', 'admin.tsx')])\n```\n\n### `physical(pathPrefix, directory)` or `physical(directory)`\n\nMounts a directory of file-based routes at a URL prefix. Uses TanStack Router's standard file-based routing conventions within that directory.\n\n```ts\nimport { physical } from '@tanstack\u002Fvirtual-file-routes'\n\n\u002F\u002F Mount posts\u002F directory under \u002Fposts\nphysical('\u002Fposts', 'posts')\n\n\u002F\u002F Merge features\u002F directory at the current level\nphysical('features')\n```\n\n### `defineVirtualSubtreeConfig(config)`\n\nType helper for `__virtual.ts` files inside file-based routing directories. Identity function that provides type inference.\n\n```ts\n\u002F\u002F src\u002Froutes\u002Fadmin\u002F__virtual.ts\nimport {\n  defineVirtualSubtreeConfig,\n  index,\n  route,\n} from '@tanstack\u002Fvirtual-file-routes'\n\nexport default defineVirtualSubtreeConfig([\n  index('home.tsx'),\n  route('$id', 'details.tsx'),\n])\n```\n\n## Integration with Router Plugin\n\nPass the virtual route config to the TanStack Router plugin:\n\n```ts\n\u002F\u002F vite.config.ts\nimport { defineConfig } from 'vite'\nimport { tanstackRouter } from '@tanstack\u002Frouter-plugin\u002Fvite'\nimport { routes } from '.\u002Froutes'\n\nexport default defineConfig({\n  plugins: [\n    tanstackRouter({\n      target: 'react', \u002F\u002F or 'solid', 'vue'\n      virtualRouteConfig: routes,\n    }),\n    \u002F\u002F Add your framework's Vite plugin here\n  ],\n})\n```\n\nOr reference a file path:\n\n```ts\ntanstackRouter({\n  target: 'react',\n  virtualRouteConfig: '.\u002Froutes.ts',\n})\n```\n\n## Full Example\n\n```ts\n\u002F\u002F routes.ts\nimport {\n  rootRoute,\n  route,\n  index,\n  layout,\n  physical,\n} from '@tanstack\u002Fvirtual-file-routes'\n\nexport const routes = rootRoute('root.tsx', [\n  index('index.tsx'),\n\n  layout('authLayout.tsx', [\n    route('\u002Fdashboard', 'app\u002Fdashboard.tsx', [\n      index('app\u002Fdashboard-index.tsx'),\n      route('\u002Finvoices', 'app\u002Fdashboard-invoices.tsx', [\n        index('app\u002Finvoices-index.tsx'),\n        route('$id', 'app\u002Finvoice-detail.tsx'),\n      ]),\n    ]),\n  ]),\n\n  \u002F\u002F Mount file-based routing from posts\u002F directory\n  physical('\u002Fposts', 'posts'),\n])\n```\n\n## Common Mistakes\n\n### 1. HIGH: Forgetting that file paths are relative to routesDirectory\n\nFile paths in `rootRoute`, `index`, `route`, and `layout` are relative to the `routesDirectory` configured in the router plugin (default: `.\u002Fsrc\u002Froutes`). Do not use absolute paths or paths relative to the project root.\n\n```ts\n\u002F\u002F WRONG — absolute path\nroute('\u002Fabout', '\u002Fsrc\u002Froutes\u002Fabout.tsx')\n\n\u002F\u002F CORRECT — relative to routesDirectory\nroute('\u002Fabout', 'about.tsx')\n```\n\n### 2. MEDIUM: Using physical() without matching directory structure\n\nThe directory passed to `physical()` must exist inside `routesDirectory` and follow TanStack Router's file-based routing conventions.\n\n```ts\n\u002F\u002F WRONG — directory doesn't exist or wrong location\nphysical('\u002Fblog', 'src\u002Fblog')\n\n\u002F\u002F CORRECT — relative to routesDirectory\nphysical('\u002Fblog', 'blog')\n\u002F\u002F Expects: src\u002Froutes\u002Fblog\u002F (with route files inside)\n```\n\n### 3. MEDIUM: Confusing layout() with route()\n\n`layout()` creates a pathless wrapper — it does NOT add a URL segment. Use `route()` for URL segments.\n\n```ts\n\u002F\u002F This does NOT create a \u002Fdashboard URL\nlayout('dashboardLayout.tsx', [route('\u002Fdashboard', 'dashboard.tsx')])\n\n\u002F\u002F The URL is \u002Fdashboard, and dashboardLayout.tsx wraps it\n```\n\n## Refactor Audit\n\nAfter changing a virtual tree:\n\n1. Confirm there is exactly one `rootRoute` and that every referenced file exists relative to `routesDirectory`.\n2. Check each `route`, `layout`, and `physical` node for duplicate effective paths or IDs.\n3. Confirm each `physical()` directory is mounted once at the intended path prefix and does not overlap a virtual child.\n4. Regenerate `routeTree.gen.ts` and inspect parentage, full paths, and imports. Do not edit generated output.\n5. Update links, redirects, params, and `from` narrowing, then run generator tests, type tests, and a production build.\n",{"data":52,"body":59},{"name":4,"description":6,"metadata":53,"sources":56},{"type":54,"library":14,"library_version":55},"core","1.162.0",[57,58],"TanStack\u002Frouter:packages\u002Fvirtual-file-routes\u002Fsrc","TanStack\u002Frouter:docs\u002Frouter\u002Frouting\u002Fvirtual-file-routes.md",{"type":60,"children":61},"root",[62,80,86,107,122,129,163,169,180,185,416,426,431,510,520,525,930,948,953,1267,1284,1289,1435,1445,1457,1659,1665,1670,1962,1967,2058,2064,2625,2631,2637,2686,2803,2809,2829,2955,2961,2980,3082,3088,3093,3179],{"type":63,"tag":64,"props":65,"children":67},"element","h1",{"id":66},"virtual-file-routes-tanstackvirtual-file-routes",[68,71,78],{"type":69,"value":70},"text","Virtual File Routes (",{"type":63,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":69,"value":77},"@tanstack\u002Fvirtual-file-routes",{"type":69,"value":79},")",{"type":63,"tag":81,"props":82,"children":83},"p",{},[84],{"type":69,"value":85},"Build route trees programmatically instead of relying on filesystem conventions. Useful when you want explicit control over route structure, need to mix virtual and physical routes, or want to define route subtrees within file-based routing directories.",{"type":63,"tag":81,"props":87,"children":88},{},[89,91,97,99,105],{"type":69,"value":90},"Use this skill only when the project config contains ",{"type":63,"tag":72,"props":92,"children":94},{"className":93},[],[95],{"type":69,"value":96},"virtualRouteConfig",{"type":69,"value":98},", a virtual route config file, or ",{"type":63,"tag":72,"props":100,"children":102},{"className":101},[],[103],{"type":69,"value":104},"__virtual.ts",{"type":69,"value":106},". Ordinary file-route changes belong to Router Core and the Router Plugin.",{"type":63,"tag":108,"props":109,"children":110},"blockquote",{},[111],{"type":63,"tag":81,"props":112,"children":113},{},[114,120],{"type":63,"tag":115,"props":116,"children":117},"strong",{},[118],{"type":69,"value":119},"CRITICAL",{"type":69,"value":121},": Types are FULLY INFERRED. Never cast, never annotate inferred values.",{"type":63,"tag":123,"props":124,"children":126},"h2",{"id":125},"install",[127],{"type":69,"value":128},"Install",{"type":63,"tag":130,"props":131,"children":136},"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @tanstack\u002Fvirtual-file-routes\n","bash","",[137],{"type":63,"tag":72,"props":138,"children":139},{"__ignoreMap":135},[140],{"type":63,"tag":141,"props":142,"children":145},"span",{"class":143,"line":144},"line",1,[146,152,158],{"type":63,"tag":141,"props":147,"children":149},{"style":148},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[150],{"type":69,"value":151},"npm",{"type":63,"tag":141,"props":153,"children":155},{"style":154},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[156],{"type":69,"value":157}," install",{"type":63,"tag":141,"props":159,"children":160},{"style":154},[161],{"type":69,"value":162}," @tanstack\u002Fvirtual-file-routes\n",{"type":63,"tag":123,"props":164,"children":166},{"id":165},"api-reference",[167],{"type":69,"value":168},"API Reference",{"type":63,"tag":170,"props":171,"children":173},"h3",{"id":172},"rootroutefile-children",[174],{"type":63,"tag":72,"props":175,"children":177},{"className":176},[],[178],{"type":69,"value":179},"rootRoute(file, children?)",{"type":63,"tag":81,"props":181,"children":182},{},[183],{"type":69,"value":184},"Creates the root of a virtual route tree.",{"type":63,"tag":130,"props":186,"children":190},{"className":187,"code":188,"language":189,"meta":135,"style":135},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { rootRoute, index, route } from '@tanstack\u002Fvirtual-file-routes'\n\nconst routes = rootRoute('root.tsx', [\n  index('index.tsx'),\n  route('\u002Fabout', 'about.tsx'),\n])\n","ts",[191],{"type":63,"tag":72,"props":192,"children":193},{"__ignoreMap":135},[194,258,268,321,356,407],{"type":63,"tag":141,"props":195,"children":196},{"class":143,"line":144},[197,203,209,215,220,225,229,234,239,244,249,253],{"type":63,"tag":141,"props":198,"children":200},{"style":199},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[201],{"type":69,"value":202},"import",{"type":63,"tag":141,"props":204,"children":206},{"style":205},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[207],{"type":69,"value":208}," {",{"type":63,"tag":141,"props":210,"children":212},{"style":211},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[213],{"type":69,"value":214}," rootRoute",{"type":63,"tag":141,"props":216,"children":217},{"style":205},[218],{"type":69,"value":219},",",{"type":63,"tag":141,"props":221,"children":222},{"style":211},[223],{"type":69,"value":224}," index",{"type":63,"tag":141,"props":226,"children":227},{"style":205},[228],{"type":69,"value":219},{"type":63,"tag":141,"props":230,"children":231},{"style":211},[232],{"type":69,"value":233}," route",{"type":63,"tag":141,"props":235,"children":236},{"style":205},[237],{"type":69,"value":238}," }",{"type":63,"tag":141,"props":240,"children":241},{"style":199},[242],{"type":69,"value":243}," from",{"type":63,"tag":141,"props":245,"children":246},{"style":205},[247],{"type":69,"value":248}," '",{"type":63,"tag":141,"props":250,"children":251},{"style":154},[252],{"type":69,"value":77},{"type":63,"tag":141,"props":254,"children":255},{"style":205},[256],{"type":69,"value":257},"'\n",{"type":63,"tag":141,"props":259,"children":261},{"class":143,"line":260},2,[262],{"type":63,"tag":141,"props":263,"children":265},{"emptyLinePlaceholder":264},true,[266],{"type":69,"value":267},"\n",{"type":63,"tag":141,"props":269,"children":271},{"class":143,"line":270},3,[272,278,283,288,293,298,303,308,312,316],{"type":63,"tag":141,"props":273,"children":275},{"style":274},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[276],{"type":69,"value":277},"const",{"type":63,"tag":141,"props":279,"children":280},{"style":211},[281],{"type":69,"value":282}," routes ",{"type":63,"tag":141,"props":284,"children":285},{"style":205},[286],{"type":69,"value":287},"=",{"type":63,"tag":141,"props":289,"children":291},{"style":290},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[292],{"type":69,"value":214},{"type":63,"tag":141,"props":294,"children":295},{"style":211},[296],{"type":69,"value":297},"(",{"type":63,"tag":141,"props":299,"children":300},{"style":205},[301],{"type":69,"value":302},"'",{"type":63,"tag":141,"props":304,"children":305},{"style":154},[306],{"type":69,"value":307},"root.tsx",{"type":63,"tag":141,"props":309,"children":310},{"style":205},[311],{"type":69,"value":302},{"type":63,"tag":141,"props":313,"children":314},{"style":205},[315],{"type":69,"value":219},{"type":63,"tag":141,"props":317,"children":318},{"style":211},[319],{"type":69,"value":320}," [\n",{"type":63,"tag":141,"props":322,"children":324},{"class":143,"line":323},4,[325,330,334,338,343,347,351],{"type":63,"tag":141,"props":326,"children":327},{"style":290},[328],{"type":69,"value":329},"  index",{"type":63,"tag":141,"props":331,"children":332},{"style":211},[333],{"type":69,"value":297},{"type":63,"tag":141,"props":335,"children":336},{"style":205},[337],{"type":69,"value":302},{"type":63,"tag":141,"props":339,"children":340},{"style":154},[341],{"type":69,"value":342},"index.tsx",{"type":63,"tag":141,"props":344,"children":345},{"style":205},[346],{"type":69,"value":302},{"type":63,"tag":141,"props":348,"children":349},{"style":211},[350],{"type":69,"value":79},{"type":63,"tag":141,"props":352,"children":353},{"style":205},[354],{"type":69,"value":355},",\n",{"type":63,"tag":141,"props":357,"children":359},{"class":143,"line":358},5,[360,365,369,373,378,382,386,390,395,399,403],{"type":63,"tag":141,"props":361,"children":362},{"style":290},[363],{"type":69,"value":364},"  route",{"type":63,"tag":141,"props":366,"children":367},{"style":211},[368],{"type":69,"value":297},{"type":63,"tag":141,"props":370,"children":371},{"style":205},[372],{"type":69,"value":302},{"type":63,"tag":141,"props":374,"children":375},{"style":154},[376],{"type":69,"value":377},"\u002Fabout",{"type":63,"tag":141,"props":379,"children":380},{"style":205},[381],{"type":69,"value":302},{"type":63,"tag":141,"props":383,"children":384},{"style":205},[385],{"type":69,"value":219},{"type":63,"tag":141,"props":387,"children":388},{"style":205},[389],{"type":69,"value":248},{"type":63,"tag":141,"props":391,"children":392},{"style":154},[393],{"type":69,"value":394},"about.tsx",{"type":63,"tag":141,"props":396,"children":397},{"style":205},[398],{"type":69,"value":302},{"type":63,"tag":141,"props":400,"children":401},{"style":211},[402],{"type":69,"value":79},{"type":63,"tag":141,"props":404,"children":405},{"style":205},[406],{"type":69,"value":355},{"type":63,"tag":141,"props":408,"children":410},{"class":143,"line":409},6,[411],{"type":63,"tag":141,"props":412,"children":413},{"style":211},[414],{"type":69,"value":415},"])\n",{"type":63,"tag":170,"props":417,"children":419},{"id":418},"indexfile",[420],{"type":63,"tag":72,"props":421,"children":423},{"className":422},[],[424],{"type":69,"value":425},"index(file)",{"type":63,"tag":81,"props":427,"children":428},{},[429],{"type":69,"value":430},"Creates an index route — the default rendered when the parent path matches exactly.",{"type":63,"tag":130,"props":432,"children":434},{"className":187,"code":433,"language":189,"meta":135,"style":135},"import { index } from '@tanstack\u002Fvirtual-file-routes'\n\nindex('home.tsx')\n",[435],{"type":63,"tag":72,"props":436,"children":437},{"__ignoreMap":135},[438,473,480],{"type":63,"tag":141,"props":439,"children":440},{"class":143,"line":144},[441,445,449,453,457,461,465,469],{"type":63,"tag":141,"props":442,"children":443},{"style":199},[444],{"type":69,"value":202},{"type":63,"tag":141,"props":446,"children":447},{"style":205},[448],{"type":69,"value":208},{"type":63,"tag":141,"props":450,"children":451},{"style":211},[452],{"type":69,"value":224},{"type":63,"tag":141,"props":454,"children":455},{"style":205},[456],{"type":69,"value":238},{"type":63,"tag":141,"props":458,"children":459},{"style":199},[460],{"type":69,"value":243},{"type":63,"tag":141,"props":462,"children":463},{"style":205},[464],{"type":69,"value":248},{"type":63,"tag":141,"props":466,"children":467},{"style":154},[468],{"type":69,"value":77},{"type":63,"tag":141,"props":470,"children":471},{"style":205},[472],{"type":69,"value":257},{"type":63,"tag":141,"props":474,"children":475},{"class":143,"line":260},[476],{"type":63,"tag":141,"props":477,"children":478},{"emptyLinePlaceholder":264},[479],{"type":69,"value":267},{"type":63,"tag":141,"props":481,"children":482},{"class":143,"line":270},[483,488,492,496,501,505],{"type":63,"tag":141,"props":484,"children":485},{"style":290},[486],{"type":69,"value":487},"index",{"type":63,"tag":141,"props":489,"children":490},{"style":211},[491],{"type":69,"value":297},{"type":63,"tag":141,"props":493,"children":494},{"style":205},[495],{"type":69,"value":302},{"type":63,"tag":141,"props":497,"children":498},{"style":154},[499],{"type":69,"value":500},"home.tsx",{"type":63,"tag":141,"props":502,"children":503},{"style":205},[504],{"type":69,"value":302},{"type":63,"tag":141,"props":506,"children":507},{"style":211},[508],{"type":69,"value":509},")\n",{"type":63,"tag":170,"props":511,"children":513},{"id":512},"routepath",[514],{"type":63,"tag":72,"props":515,"children":517},{"className":516},[],[518],{"type":69,"value":519},"route(path, ...)",{"type":63,"tag":81,"props":521,"children":522},{},[523],{"type":69,"value":524},"Creates a route node. Three call signatures:",{"type":63,"tag":130,"props":526,"children":528},{"className":187,"code":527,"language":189,"meta":135,"style":135},"import { route, index } from '@tanstack\u002Fvirtual-file-routes'\n\n\u002F\u002F Leaf route: path + file\nroute('\u002Fabout', 'about.tsx')\n\n\u002F\u002F Branch route: path + file + children\nroute('\u002Fdashboard', 'dashboard.tsx', [\n  index('dashboard-index.tsx'),\n  route('\u002Fsettings', 'settings.tsx'),\n])\n\n\u002F\u002F Path prefix only (no file): groups children under a URL segment\nroute('\u002Fapi', [route('\u002Fusers', 'users.tsx'), route('\u002Fposts', 'posts.tsx')])\n",[529],{"type":63,"tag":72,"props":530,"children":531},{"__ignoreMap":135},[532,575,582,591,634,641,649,699,732,782,790,798,807],{"type":63,"tag":141,"props":533,"children":534},{"class":143,"line":144},[535,539,543,547,551,555,559,563,567,571],{"type":63,"tag":141,"props":536,"children":537},{"style":199},[538],{"type":69,"value":202},{"type":63,"tag":141,"props":540,"children":541},{"style":205},[542],{"type":69,"value":208},{"type":63,"tag":141,"props":544,"children":545},{"style":211},[546],{"type":69,"value":233},{"type":63,"tag":141,"props":548,"children":549},{"style":205},[550],{"type":69,"value":219},{"type":63,"tag":141,"props":552,"children":553},{"style":211},[554],{"type":69,"value":224},{"type":63,"tag":141,"props":556,"children":557},{"style":205},[558],{"type":69,"value":238},{"type":63,"tag":141,"props":560,"children":561},{"style":199},[562],{"type":69,"value":243},{"type":63,"tag":141,"props":564,"children":565},{"style":205},[566],{"type":69,"value":248},{"type":63,"tag":141,"props":568,"children":569},{"style":154},[570],{"type":69,"value":77},{"type":63,"tag":141,"props":572,"children":573},{"style":205},[574],{"type":69,"value":257},{"type":63,"tag":141,"props":576,"children":577},{"class":143,"line":260},[578],{"type":63,"tag":141,"props":579,"children":580},{"emptyLinePlaceholder":264},[581],{"type":69,"value":267},{"type":63,"tag":141,"props":583,"children":584},{"class":143,"line":270},[585],{"type":63,"tag":141,"props":586,"children":588},{"style":587},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[589],{"type":69,"value":590},"\u002F\u002F Leaf route: path + file\n",{"type":63,"tag":141,"props":592,"children":593},{"class":143,"line":323},[594,598,602,606,610,614,618,622,626,630],{"type":63,"tag":141,"props":595,"children":596},{"style":290},[597],{"type":69,"value":36},{"type":63,"tag":141,"props":599,"children":600},{"style":211},[601],{"type":69,"value":297},{"type":63,"tag":141,"props":603,"children":604},{"style":205},[605],{"type":69,"value":302},{"type":63,"tag":141,"props":607,"children":608},{"style":154},[609],{"type":69,"value":377},{"type":63,"tag":141,"props":611,"children":612},{"style":205},[613],{"type":69,"value":302},{"type":63,"tag":141,"props":615,"children":616},{"style":205},[617],{"type":69,"value":219},{"type":63,"tag":141,"props":619,"children":620},{"style":205},[621],{"type":69,"value":248},{"type":63,"tag":141,"props":623,"children":624},{"style":154},[625],{"type":69,"value":394},{"type":63,"tag":141,"props":627,"children":628},{"style":205},[629],{"type":69,"value":302},{"type":63,"tag":141,"props":631,"children":632},{"style":211},[633],{"type":69,"value":509},{"type":63,"tag":141,"props":635,"children":636},{"class":143,"line":358},[637],{"type":63,"tag":141,"props":638,"children":639},{"emptyLinePlaceholder":264},[640],{"type":69,"value":267},{"type":63,"tag":141,"props":642,"children":643},{"class":143,"line":409},[644],{"type":63,"tag":141,"props":645,"children":646},{"style":587},[647],{"type":69,"value":648},"\u002F\u002F Branch route: path + file + children\n",{"type":63,"tag":141,"props":650,"children":652},{"class":143,"line":651},7,[653,657,661,665,670,674,678,682,687,691,695],{"type":63,"tag":141,"props":654,"children":655},{"style":290},[656],{"type":69,"value":36},{"type":63,"tag":141,"props":658,"children":659},{"style":211},[660],{"type":69,"value":297},{"type":63,"tag":141,"props":662,"children":663},{"style":205},[664],{"type":69,"value":302},{"type":63,"tag":141,"props":666,"children":667},{"style":154},[668],{"type":69,"value":669},"\u002Fdashboard",{"type":63,"tag":141,"props":671,"children":672},{"style":205},[673],{"type":69,"value":302},{"type":63,"tag":141,"props":675,"children":676},{"style":205},[677],{"type":69,"value":219},{"type":63,"tag":141,"props":679,"children":680},{"style":205},[681],{"type":69,"value":248},{"type":63,"tag":141,"props":683,"children":684},{"style":154},[685],{"type":69,"value":686},"dashboard.tsx",{"type":63,"tag":141,"props":688,"children":689},{"style":205},[690],{"type":69,"value":302},{"type":63,"tag":141,"props":692,"children":693},{"style":205},[694],{"type":69,"value":219},{"type":63,"tag":141,"props":696,"children":697},{"style":211},[698],{"type":69,"value":320},{"type":63,"tag":141,"props":700,"children":702},{"class":143,"line":701},8,[703,707,711,715,720,724,728],{"type":63,"tag":141,"props":704,"children":705},{"style":290},[706],{"type":69,"value":329},{"type":63,"tag":141,"props":708,"children":709},{"style":211},[710],{"type":69,"value":297},{"type":63,"tag":141,"props":712,"children":713},{"style":205},[714],{"type":69,"value":302},{"type":63,"tag":141,"props":716,"children":717},{"style":154},[718],{"type":69,"value":719},"dashboard-index.tsx",{"type":63,"tag":141,"props":721,"children":722},{"style":205},[723],{"type":69,"value":302},{"type":63,"tag":141,"props":725,"children":726},{"style":211},[727],{"type":69,"value":79},{"type":63,"tag":141,"props":729,"children":730},{"style":205},[731],{"type":69,"value":355},{"type":63,"tag":141,"props":733,"children":735},{"class":143,"line":734},9,[736,740,744,748,753,757,761,765,770,774,778],{"type":63,"tag":141,"props":737,"children":738},{"style":290},[739],{"type":69,"value":364},{"type":63,"tag":141,"props":741,"children":742},{"style":211},[743],{"type":69,"value":297},{"type":63,"tag":141,"props":745,"children":746},{"style":205},[747],{"type":69,"value":302},{"type":63,"tag":141,"props":749,"children":750},{"style":154},[751],{"type":69,"value":752},"\u002Fsettings",{"type":63,"tag":141,"props":754,"children":755},{"style":205},[756],{"type":69,"value":302},{"type":63,"tag":141,"props":758,"children":759},{"style":205},[760],{"type":69,"value":219},{"type":63,"tag":141,"props":762,"children":763},{"style":205},[764],{"type":69,"value":248},{"type":63,"tag":141,"props":766,"children":767},{"style":154},[768],{"type":69,"value":769},"settings.tsx",{"type":63,"tag":141,"props":771,"children":772},{"style":205},[773],{"type":69,"value":302},{"type":63,"tag":141,"props":775,"children":776},{"style":211},[777],{"type":69,"value":79},{"type":63,"tag":141,"props":779,"children":780},{"style":205},[781],{"type":69,"value":355},{"type":63,"tag":141,"props":783,"children":785},{"class":143,"line":784},10,[786],{"type":63,"tag":141,"props":787,"children":788},{"style":211},[789],{"type":69,"value":415},{"type":63,"tag":141,"props":791,"children":793},{"class":143,"line":792},11,[794],{"type":63,"tag":141,"props":795,"children":796},{"emptyLinePlaceholder":264},[797],{"type":69,"value":267},{"type":63,"tag":141,"props":799,"children":801},{"class":143,"line":800},12,[802],{"type":63,"tag":141,"props":803,"children":804},{"style":587},[805],{"type":69,"value":806},"\u002F\u002F Path prefix only (no file): groups children under a URL segment\n",{"type":63,"tag":141,"props":808,"children":810},{"class":143,"line":809},13,[811,815,819,823,828,832,836,841,845,849,853,858,862,866,870,875,879,883,887,891,895,899,904,908,912,916,921,925],{"type":63,"tag":141,"props":812,"children":813},{"style":290},[814],{"type":69,"value":36},{"type":63,"tag":141,"props":816,"children":817},{"style":211},[818],{"type":69,"value":297},{"type":63,"tag":141,"props":820,"children":821},{"style":205},[822],{"type":69,"value":302},{"type":63,"tag":141,"props":824,"children":825},{"style":154},[826],{"type":69,"value":827},"\u002Fapi",{"type":63,"tag":141,"props":829,"children":830},{"style":205},[831],{"type":69,"value":302},{"type":63,"tag":141,"props":833,"children":834},{"style":205},[835],{"type":69,"value":219},{"type":63,"tag":141,"props":837,"children":838},{"style":211},[839],{"type":69,"value":840}," [",{"type":63,"tag":141,"props":842,"children":843},{"style":290},[844],{"type":69,"value":36},{"type":63,"tag":141,"props":846,"children":847},{"style":211},[848],{"type":69,"value":297},{"type":63,"tag":141,"props":850,"children":851},{"style":205},[852],{"type":69,"value":302},{"type":63,"tag":141,"props":854,"children":855},{"style":154},[856],{"type":69,"value":857},"\u002Fusers",{"type":63,"tag":141,"props":859,"children":860},{"style":205},[861],{"type":69,"value":302},{"type":63,"tag":141,"props":863,"children":864},{"style":205},[865],{"type":69,"value":219},{"type":63,"tag":141,"props":867,"children":868},{"style":205},[869],{"type":69,"value":248},{"type":63,"tag":141,"props":871,"children":872},{"style":154},[873],{"type":69,"value":874},"users.tsx",{"type":63,"tag":141,"props":876,"children":877},{"style":205},[878],{"type":69,"value":302},{"type":63,"tag":141,"props":880,"children":881},{"style":211},[882],{"type":69,"value":79},{"type":63,"tag":141,"props":884,"children":885},{"style":205},[886],{"type":69,"value":219},{"type":63,"tag":141,"props":888,"children":889},{"style":290},[890],{"type":69,"value":233},{"type":63,"tag":141,"props":892,"children":893},{"style":211},[894],{"type":69,"value":297},{"type":63,"tag":141,"props":896,"children":897},{"style":205},[898],{"type":69,"value":302},{"type":63,"tag":141,"props":900,"children":901},{"style":154},[902],{"type":69,"value":903},"\u002Fposts",{"type":63,"tag":141,"props":905,"children":906},{"style":205},[907],{"type":69,"value":302},{"type":63,"tag":141,"props":909,"children":910},{"style":205},[911],{"type":69,"value":219},{"type":63,"tag":141,"props":913,"children":914},{"style":205},[915],{"type":69,"value":248},{"type":63,"tag":141,"props":917,"children":918},{"style":154},[919],{"type":69,"value":920},"posts.tsx",{"type":63,"tag":141,"props":922,"children":923},{"style":205},[924],{"type":69,"value":302},{"type":63,"tag":141,"props":926,"children":927},{"style":211},[928],{"type":69,"value":929},")])\n",{"type":63,"tag":170,"props":931,"children":933},{"id":932},"layoutfile-children-or-layoutid-file-children",[934,940,942],{"type":63,"tag":72,"props":935,"children":937},{"className":936},[],[938],{"type":69,"value":939},"layout(file, children)",{"type":69,"value":941}," or ",{"type":63,"tag":72,"props":943,"children":945},{"className":944},[],[946],{"type":69,"value":947},"layout(id, file, children)",{"type":63,"tag":81,"props":949,"children":950},{},[951],{"type":69,"value":952},"Creates a pathless layout route — wraps children without adding a URL segment.",{"type":63,"tag":130,"props":954,"children":956},{"className":187,"code":955,"language":189,"meta":135,"style":135},"import { layout, route, index } from '@tanstack\u002Fvirtual-file-routes'\n\n\u002F\u002F ID derived from filename\nlayout('authLayout.tsx', [\n  route('\u002Fdashboard', 'dashboard.tsx'),\n  route('\u002Fsettings', 'settings.tsx'),\n])\n\n\u002F\u002F Explicit ID\nlayout('admin-layout', 'adminLayout.tsx', [route('\u002Fadmin', 'admin.tsx')])\n",[957],{"type":63,"tag":72,"props":958,"children":959},{"__ignoreMap":135},[960,1012,1019,1027,1060,1107,1154,1161,1168,1176],{"type":63,"tag":141,"props":961,"children":962},{"class":143,"line":144},[963,967,971,976,980,984,988,992,996,1000,1004,1008],{"type":63,"tag":141,"props":964,"children":965},{"style":199},[966],{"type":69,"value":202},{"type":63,"tag":141,"props":968,"children":969},{"style":205},[970],{"type":69,"value":208},{"type":63,"tag":141,"props":972,"children":973},{"style":211},[974],{"type":69,"value":975}," layout",{"type":63,"tag":141,"props":977,"children":978},{"style":205},[979],{"type":69,"value":219},{"type":63,"tag":141,"props":981,"children":982},{"style":211},[983],{"type":69,"value":233},{"type":63,"tag":141,"props":985,"children":986},{"style":205},[987],{"type":69,"value":219},{"type":63,"tag":141,"props":989,"children":990},{"style":211},[991],{"type":69,"value":224},{"type":63,"tag":141,"props":993,"children":994},{"style":205},[995],{"type":69,"value":238},{"type":63,"tag":141,"props":997,"children":998},{"style":199},[999],{"type":69,"value":243},{"type":63,"tag":141,"props":1001,"children":1002},{"style":205},[1003],{"type":69,"value":248},{"type":63,"tag":141,"props":1005,"children":1006},{"style":154},[1007],{"type":69,"value":77},{"type":63,"tag":141,"props":1009,"children":1010},{"style":205},[1011],{"type":69,"value":257},{"type":63,"tag":141,"props":1013,"children":1014},{"class":143,"line":260},[1015],{"type":63,"tag":141,"props":1016,"children":1017},{"emptyLinePlaceholder":264},[1018],{"type":69,"value":267},{"type":63,"tag":141,"props":1020,"children":1021},{"class":143,"line":270},[1022],{"type":63,"tag":141,"props":1023,"children":1024},{"style":587},[1025],{"type":69,"value":1026},"\u002F\u002F ID derived from filename\n",{"type":63,"tag":141,"props":1028,"children":1029},{"class":143,"line":323},[1030,1035,1039,1043,1048,1052,1056],{"type":63,"tag":141,"props":1031,"children":1032},{"style":290},[1033],{"type":69,"value":1034},"layout",{"type":63,"tag":141,"props":1036,"children":1037},{"style":211},[1038],{"type":69,"value":297},{"type":63,"tag":141,"props":1040,"children":1041},{"style":205},[1042],{"type":69,"value":302},{"type":63,"tag":141,"props":1044,"children":1045},{"style":154},[1046],{"type":69,"value":1047},"authLayout.tsx",{"type":63,"tag":141,"props":1049,"children":1050},{"style":205},[1051],{"type":69,"value":302},{"type":63,"tag":141,"props":1053,"children":1054},{"style":205},[1055],{"type":69,"value":219},{"type":63,"tag":141,"props":1057,"children":1058},{"style":211},[1059],{"type":69,"value":320},{"type":63,"tag":141,"props":1061,"children":1062},{"class":143,"line":358},[1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103],{"type":63,"tag":141,"props":1064,"children":1065},{"style":290},[1066],{"type":69,"value":364},{"type":63,"tag":141,"props":1068,"children":1069},{"style":211},[1070],{"type":69,"value":297},{"type":63,"tag":141,"props":1072,"children":1073},{"style":205},[1074],{"type":69,"value":302},{"type":63,"tag":141,"props":1076,"children":1077},{"style":154},[1078],{"type":69,"value":669},{"type":63,"tag":141,"props":1080,"children":1081},{"style":205},[1082],{"type":69,"value":302},{"type":63,"tag":141,"props":1084,"children":1085},{"style":205},[1086],{"type":69,"value":219},{"type":63,"tag":141,"props":1088,"children":1089},{"style":205},[1090],{"type":69,"value":248},{"type":63,"tag":141,"props":1092,"children":1093},{"style":154},[1094],{"type":69,"value":686},{"type":63,"tag":141,"props":1096,"children":1097},{"style":205},[1098],{"type":69,"value":302},{"type":63,"tag":141,"props":1100,"children":1101},{"style":211},[1102],{"type":69,"value":79},{"type":63,"tag":141,"props":1104,"children":1105},{"style":205},[1106],{"type":69,"value":355},{"type":63,"tag":141,"props":1108,"children":1109},{"class":143,"line":409},[1110,1114,1118,1122,1126,1130,1134,1138,1142,1146,1150],{"type":63,"tag":141,"props":1111,"children":1112},{"style":290},[1113],{"type":69,"value":364},{"type":63,"tag":141,"props":1115,"children":1116},{"style":211},[1117],{"type":69,"value":297},{"type":63,"tag":141,"props":1119,"children":1120},{"style":205},[1121],{"type":69,"value":302},{"type":63,"tag":141,"props":1123,"children":1124},{"style":154},[1125],{"type":69,"value":752},{"type":63,"tag":141,"props":1127,"children":1128},{"style":205},[1129],{"type":69,"value":302},{"type":63,"tag":141,"props":1131,"children":1132},{"style":205},[1133],{"type":69,"value":219},{"type":63,"tag":141,"props":1135,"children":1136},{"style":205},[1137],{"type":69,"value":248},{"type":63,"tag":141,"props":1139,"children":1140},{"style":154},[1141],{"type":69,"value":769},{"type":63,"tag":141,"props":1143,"children":1144},{"style":205},[1145],{"type":69,"value":302},{"type":63,"tag":141,"props":1147,"children":1148},{"style":211},[1149],{"type":69,"value":79},{"type":63,"tag":141,"props":1151,"children":1152},{"style":205},[1153],{"type":69,"value":355},{"type":63,"tag":141,"props":1155,"children":1156},{"class":143,"line":651},[1157],{"type":63,"tag":141,"props":1158,"children":1159},{"style":211},[1160],{"type":69,"value":415},{"type":63,"tag":141,"props":1162,"children":1163},{"class":143,"line":701},[1164],{"type":63,"tag":141,"props":1165,"children":1166},{"emptyLinePlaceholder":264},[1167],{"type":69,"value":267},{"type":63,"tag":141,"props":1169,"children":1170},{"class":143,"line":734},[1171],{"type":63,"tag":141,"props":1172,"children":1173},{"style":587},[1174],{"type":69,"value":1175},"\u002F\u002F Explicit ID\n",{"type":63,"tag":141,"props":1177,"children":1178},{"class":143,"line":784},[1179,1183,1187,1191,1196,1200,1204,1208,1213,1217,1221,1225,1229,1233,1237,1242,1246,1250,1254,1259,1263],{"type":63,"tag":141,"props":1180,"children":1181},{"style":290},[1182],{"type":69,"value":1034},{"type":63,"tag":141,"props":1184,"children":1185},{"style":211},[1186],{"type":69,"value":297},{"type":63,"tag":141,"props":1188,"children":1189},{"style":205},[1190],{"type":69,"value":302},{"type":63,"tag":141,"props":1192,"children":1193},{"style":154},[1194],{"type":69,"value":1195},"admin-layout",{"type":63,"tag":141,"props":1197,"children":1198},{"style":205},[1199],{"type":69,"value":302},{"type":63,"tag":141,"props":1201,"children":1202},{"style":205},[1203],{"type":69,"value":219},{"type":63,"tag":141,"props":1205,"children":1206},{"style":205},[1207],{"type":69,"value":248},{"type":63,"tag":141,"props":1209,"children":1210},{"style":154},[1211],{"type":69,"value":1212},"adminLayout.tsx",{"type":63,"tag":141,"props":1214,"children":1215},{"style":205},[1216],{"type":69,"value":302},{"type":63,"tag":141,"props":1218,"children":1219},{"style":205},[1220],{"type":69,"value":219},{"type":63,"tag":141,"props":1222,"children":1223},{"style":211},[1224],{"type":69,"value":840},{"type":63,"tag":141,"props":1226,"children":1227},{"style":290},[1228],{"type":69,"value":36},{"type":63,"tag":141,"props":1230,"children":1231},{"style":211},[1232],{"type":69,"value":297},{"type":63,"tag":141,"props":1234,"children":1235},{"style":205},[1236],{"type":69,"value":302},{"type":63,"tag":141,"props":1238,"children":1239},{"style":154},[1240],{"type":69,"value":1241},"\u002Fadmin",{"type":63,"tag":141,"props":1243,"children":1244},{"style":205},[1245],{"type":69,"value":302},{"type":63,"tag":141,"props":1247,"children":1248},{"style":205},[1249],{"type":69,"value":219},{"type":63,"tag":141,"props":1251,"children":1252},{"style":205},[1253],{"type":69,"value":248},{"type":63,"tag":141,"props":1255,"children":1256},{"style":154},[1257],{"type":69,"value":1258},"admin.tsx",{"type":63,"tag":141,"props":1260,"children":1261},{"style":205},[1262],{"type":69,"value":302},{"type":63,"tag":141,"props":1264,"children":1265},{"style":211},[1266],{"type":69,"value":929},{"type":63,"tag":170,"props":1268,"children":1270},{"id":1269},"physicalpathprefix-directory-or-physicaldirectory",[1271,1277,1278],{"type":63,"tag":72,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":69,"value":1276},"physical(pathPrefix, directory)",{"type":69,"value":941},{"type":63,"tag":72,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":69,"value":1283},"physical(directory)",{"type":63,"tag":81,"props":1285,"children":1286},{},[1287],{"type":69,"value":1288},"Mounts a directory of file-based routes at a URL prefix. Uses TanStack Router's standard file-based routing conventions within that directory.",{"type":63,"tag":130,"props":1290,"children":1292},{"className":187,"code":1291,"language":189,"meta":135,"style":135},"import { physical } from '@tanstack\u002Fvirtual-file-routes'\n\n\u002F\u002F Mount posts\u002F directory under \u002Fposts\nphysical('\u002Fposts', 'posts')\n\n\u002F\u002F Merge features\u002F directory at the current level\nphysical('features')\n",[1293],{"type":63,"tag":72,"props":1294,"children":1295},{"__ignoreMap":135},[1296,1332,1339,1347,1392,1399,1407],{"type":63,"tag":141,"props":1297,"children":1298},{"class":143,"line":144},[1299,1303,1307,1312,1316,1320,1324,1328],{"type":63,"tag":141,"props":1300,"children":1301},{"style":199},[1302],{"type":69,"value":202},{"type":63,"tag":141,"props":1304,"children":1305},{"style":205},[1306],{"type":69,"value":208},{"type":63,"tag":141,"props":1308,"children":1309},{"style":211},[1310],{"type":69,"value":1311}," physical",{"type":63,"tag":141,"props":1313,"children":1314},{"style":205},[1315],{"type":69,"value":238},{"type":63,"tag":141,"props":1317,"children":1318},{"style":199},[1319],{"type":69,"value":243},{"type":63,"tag":141,"props":1321,"children":1322},{"style":205},[1323],{"type":69,"value":248},{"type":63,"tag":141,"props":1325,"children":1326},{"style":154},[1327],{"type":69,"value":77},{"type":63,"tag":141,"props":1329,"children":1330},{"style":205},[1331],{"type":69,"value":257},{"type":63,"tag":141,"props":1333,"children":1334},{"class":143,"line":260},[1335],{"type":63,"tag":141,"props":1336,"children":1337},{"emptyLinePlaceholder":264},[1338],{"type":69,"value":267},{"type":63,"tag":141,"props":1340,"children":1341},{"class":143,"line":270},[1342],{"type":63,"tag":141,"props":1343,"children":1344},{"style":587},[1345],{"type":69,"value":1346},"\u002F\u002F Mount posts\u002F directory under \u002Fposts\n",{"type":63,"tag":141,"props":1348,"children":1349},{"class":143,"line":323},[1350,1355,1359,1363,1367,1371,1375,1379,1384,1388],{"type":63,"tag":141,"props":1351,"children":1352},{"style":290},[1353],{"type":69,"value":1354},"physical",{"type":63,"tag":141,"props":1356,"children":1357},{"style":211},[1358],{"type":69,"value":297},{"type":63,"tag":141,"props":1360,"children":1361},{"style":205},[1362],{"type":69,"value":302},{"type":63,"tag":141,"props":1364,"children":1365},{"style":154},[1366],{"type":69,"value":903},{"type":63,"tag":141,"props":1368,"children":1369},{"style":205},[1370],{"type":69,"value":302},{"type":63,"tag":141,"props":1372,"children":1373},{"style":205},[1374],{"type":69,"value":219},{"type":63,"tag":141,"props":1376,"children":1377},{"style":205},[1378],{"type":69,"value":248},{"type":63,"tag":141,"props":1380,"children":1381},{"style":154},[1382],{"type":69,"value":1383},"posts",{"type":63,"tag":141,"props":1385,"children":1386},{"style":205},[1387],{"type":69,"value":302},{"type":63,"tag":141,"props":1389,"children":1390},{"style":211},[1391],{"type":69,"value":509},{"type":63,"tag":141,"props":1393,"children":1394},{"class":143,"line":358},[1395],{"type":63,"tag":141,"props":1396,"children":1397},{"emptyLinePlaceholder":264},[1398],{"type":69,"value":267},{"type":63,"tag":141,"props":1400,"children":1401},{"class":143,"line":409},[1402],{"type":63,"tag":141,"props":1403,"children":1404},{"style":587},[1405],{"type":69,"value":1406},"\u002F\u002F Merge features\u002F directory at the current level\n",{"type":63,"tag":141,"props":1408,"children":1409},{"class":143,"line":651},[1410,1414,1418,1422,1427,1431],{"type":63,"tag":141,"props":1411,"children":1412},{"style":290},[1413],{"type":69,"value":1354},{"type":63,"tag":141,"props":1415,"children":1416},{"style":211},[1417],{"type":69,"value":297},{"type":63,"tag":141,"props":1419,"children":1420},{"style":205},[1421],{"type":69,"value":302},{"type":63,"tag":141,"props":1423,"children":1424},{"style":154},[1425],{"type":69,"value":1426},"features",{"type":63,"tag":141,"props":1428,"children":1429},{"style":205},[1430],{"type":69,"value":302},{"type":63,"tag":141,"props":1432,"children":1433},{"style":211},[1434],{"type":69,"value":509},{"type":63,"tag":170,"props":1436,"children":1438},{"id":1437},"definevirtualsubtreeconfigconfig",[1439],{"type":63,"tag":72,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":69,"value":1444},"defineVirtualSubtreeConfig(config)",{"type":63,"tag":81,"props":1446,"children":1447},{},[1448,1450,1455],{"type":69,"value":1449},"Type helper for ",{"type":63,"tag":72,"props":1451,"children":1453},{"className":1452},[],[1454],{"type":69,"value":104},{"type":69,"value":1456}," files inside file-based routing directories. Identity function that provides type inference.",{"type":63,"tag":130,"props":1458,"children":1460},{"className":187,"code":1459,"language":189,"meta":135,"style":135},"\u002F\u002F src\u002Froutes\u002Fadmin\u002F__virtual.ts\nimport {\n  defineVirtualSubtreeConfig,\n  index,\n  route,\n} from '@tanstack\u002Fvirtual-file-routes'\n\nexport default defineVirtualSubtreeConfig([\n  index('home.tsx'),\n  route('$id', 'details.tsx'),\n])\n",[1461],{"type":63,"tag":72,"props":1462,"children":1463},{"__ignoreMap":135},[1464,1472,1484,1496,1507,1518,1542,1549,1572,1603,1652],{"type":63,"tag":141,"props":1465,"children":1466},{"class":143,"line":144},[1467],{"type":63,"tag":141,"props":1468,"children":1469},{"style":587},[1470],{"type":69,"value":1471},"\u002F\u002F src\u002Froutes\u002Fadmin\u002F__virtual.ts\n",{"type":63,"tag":141,"props":1473,"children":1474},{"class":143,"line":260},[1475,1479],{"type":63,"tag":141,"props":1476,"children":1477},{"style":199},[1478],{"type":69,"value":202},{"type":63,"tag":141,"props":1480,"children":1481},{"style":205},[1482],{"type":69,"value":1483}," {\n",{"type":63,"tag":141,"props":1485,"children":1486},{"class":143,"line":270},[1487,1492],{"type":63,"tag":141,"props":1488,"children":1489},{"style":211},[1490],{"type":69,"value":1491},"  defineVirtualSubtreeConfig",{"type":63,"tag":141,"props":1493,"children":1494},{"style":205},[1495],{"type":69,"value":355},{"type":63,"tag":141,"props":1497,"children":1498},{"class":143,"line":323},[1499,1503],{"type":63,"tag":141,"props":1500,"children":1501},{"style":211},[1502],{"type":69,"value":329},{"type":63,"tag":141,"props":1504,"children":1505},{"style":205},[1506],{"type":69,"value":355},{"type":63,"tag":141,"props":1508,"children":1509},{"class":143,"line":358},[1510,1514],{"type":63,"tag":141,"props":1511,"children":1512},{"style":211},[1513],{"type":69,"value":364},{"type":63,"tag":141,"props":1515,"children":1516},{"style":205},[1517],{"type":69,"value":355},{"type":63,"tag":141,"props":1519,"children":1520},{"class":143,"line":409},[1521,1526,1530,1534,1538],{"type":63,"tag":141,"props":1522,"children":1523},{"style":205},[1524],{"type":69,"value":1525},"}",{"type":63,"tag":141,"props":1527,"children":1528},{"style":199},[1529],{"type":69,"value":243},{"type":63,"tag":141,"props":1531,"children":1532},{"style":205},[1533],{"type":69,"value":248},{"type":63,"tag":141,"props":1535,"children":1536},{"style":154},[1537],{"type":69,"value":77},{"type":63,"tag":141,"props":1539,"children":1540},{"style":205},[1541],{"type":69,"value":257},{"type":63,"tag":141,"props":1543,"children":1544},{"class":143,"line":651},[1545],{"type":63,"tag":141,"props":1546,"children":1547},{"emptyLinePlaceholder":264},[1548],{"type":69,"value":267},{"type":63,"tag":141,"props":1550,"children":1551},{"class":143,"line":701},[1552,1557,1562,1567],{"type":63,"tag":141,"props":1553,"children":1554},{"style":199},[1555],{"type":69,"value":1556},"export",{"type":63,"tag":141,"props":1558,"children":1559},{"style":199},[1560],{"type":69,"value":1561}," default",{"type":63,"tag":141,"props":1563,"children":1564},{"style":290},[1565],{"type":69,"value":1566}," defineVirtualSubtreeConfig",{"type":63,"tag":141,"props":1568,"children":1569},{"style":211},[1570],{"type":69,"value":1571},"([\n",{"type":63,"tag":141,"props":1573,"children":1574},{"class":143,"line":734},[1575,1579,1583,1587,1591,1595,1599],{"type":63,"tag":141,"props":1576,"children":1577},{"style":290},[1578],{"type":69,"value":329},{"type":63,"tag":141,"props":1580,"children":1581},{"style":211},[1582],{"type":69,"value":297},{"type":63,"tag":141,"props":1584,"children":1585},{"style":205},[1586],{"type":69,"value":302},{"type":63,"tag":141,"props":1588,"children":1589},{"style":154},[1590],{"type":69,"value":500},{"type":63,"tag":141,"props":1592,"children":1593},{"style":205},[1594],{"type":69,"value":302},{"type":63,"tag":141,"props":1596,"children":1597},{"style":211},[1598],{"type":69,"value":79},{"type":63,"tag":141,"props":1600,"children":1601},{"style":205},[1602],{"type":69,"value":355},{"type":63,"tag":141,"props":1604,"children":1605},{"class":143,"line":784},[1606,1610,1614,1618,1623,1627,1631,1635,1640,1644,1648],{"type":63,"tag":141,"props":1607,"children":1608},{"style":290},[1609],{"type":69,"value":364},{"type":63,"tag":141,"props":1611,"children":1612},{"style":211},[1613],{"type":69,"value":297},{"type":63,"tag":141,"props":1615,"children":1616},{"style":205},[1617],{"type":69,"value":302},{"type":63,"tag":141,"props":1619,"children":1620},{"style":154},[1621],{"type":69,"value":1622},"$id",{"type":63,"tag":141,"props":1624,"children":1625},{"style":205},[1626],{"type":69,"value":302},{"type":63,"tag":141,"props":1628,"children":1629},{"style":205},[1630],{"type":69,"value":219},{"type":63,"tag":141,"props":1632,"children":1633},{"style":205},[1634],{"type":69,"value":248},{"type":63,"tag":141,"props":1636,"children":1637},{"style":154},[1638],{"type":69,"value":1639},"details.tsx",{"type":63,"tag":141,"props":1641,"children":1642},{"style":205},[1643],{"type":69,"value":302},{"type":63,"tag":141,"props":1645,"children":1646},{"style":211},[1647],{"type":69,"value":79},{"type":63,"tag":141,"props":1649,"children":1650},{"style":205},[1651],{"type":69,"value":355},{"type":63,"tag":141,"props":1653,"children":1654},{"class":143,"line":792},[1655],{"type":63,"tag":141,"props":1656,"children":1657},{"style":211},[1658],{"type":69,"value":415},{"type":63,"tag":123,"props":1660,"children":1662},{"id":1661},"integration-with-router-plugin",[1663],{"type":69,"value":1664},"Integration with Router Plugin",{"type":63,"tag":81,"props":1666,"children":1667},{},[1668],{"type":69,"value":1669},"Pass the virtual route config to the TanStack Router plugin:",{"type":63,"tag":130,"props":1671,"children":1673},{"className":187,"code":1672,"language":189,"meta":135,"style":135},"\u002F\u002F vite.config.ts\nimport { defineConfig } from 'vite'\nimport { tanstackRouter } from '@tanstack\u002Frouter-plugin\u002Fvite'\nimport { routes } from '.\u002Froutes'\n\nexport default defineConfig({\n  plugins: [\n    tanstackRouter({\n      target: 'react', \u002F\u002F or 'solid', 'vue'\n      virtualRouteConfig: routes,\n    }),\n    \u002F\u002F Add your framework's Vite plugin here\n  ],\n})\n",[1674],{"type":63,"tag":72,"props":1675,"children":1676},{"__ignoreMap":135},[1677,1685,1722,1759,1796,1803,1827,1845,1861,1894,1914,1930,1938,1950],{"type":63,"tag":141,"props":1678,"children":1679},{"class":143,"line":144},[1680],{"type":63,"tag":141,"props":1681,"children":1682},{"style":587},[1683],{"type":69,"value":1684},"\u002F\u002F vite.config.ts\n",{"type":63,"tag":141,"props":1686,"children":1687},{"class":143,"line":260},[1688,1692,1696,1701,1705,1709,1713,1718],{"type":63,"tag":141,"props":1689,"children":1690},{"style":199},[1691],{"type":69,"value":202},{"type":63,"tag":141,"props":1693,"children":1694},{"style":205},[1695],{"type":69,"value":208},{"type":63,"tag":141,"props":1697,"children":1698},{"style":211},[1699],{"type":69,"value":1700}," defineConfig",{"type":63,"tag":141,"props":1702,"children":1703},{"style":205},[1704],{"type":69,"value":238},{"type":63,"tag":141,"props":1706,"children":1707},{"style":199},[1708],{"type":69,"value":243},{"type":63,"tag":141,"props":1710,"children":1711},{"style":205},[1712],{"type":69,"value":248},{"type":63,"tag":141,"props":1714,"children":1715},{"style":154},[1716],{"type":69,"value":1717},"vite",{"type":63,"tag":141,"props":1719,"children":1720},{"style":205},[1721],{"type":69,"value":257},{"type":63,"tag":141,"props":1723,"children":1724},{"class":143,"line":270},[1725,1729,1733,1738,1742,1746,1750,1755],{"type":63,"tag":141,"props":1726,"children":1727},{"style":199},[1728],{"type":69,"value":202},{"type":63,"tag":141,"props":1730,"children":1731},{"style":205},[1732],{"type":69,"value":208},{"type":63,"tag":141,"props":1734,"children":1735},{"style":211},[1736],{"type":69,"value":1737}," tanstackRouter",{"type":63,"tag":141,"props":1739,"children":1740},{"style":205},[1741],{"type":69,"value":238},{"type":63,"tag":141,"props":1743,"children":1744},{"style":199},[1745],{"type":69,"value":243},{"type":63,"tag":141,"props":1747,"children":1748},{"style":205},[1749],{"type":69,"value":248},{"type":63,"tag":141,"props":1751,"children":1752},{"style":154},[1753],{"type":69,"value":1754},"@tanstack\u002Frouter-plugin\u002Fvite",{"type":63,"tag":141,"props":1756,"children":1757},{"style":205},[1758],{"type":69,"value":257},{"type":63,"tag":141,"props":1760,"children":1761},{"class":143,"line":323},[1762,1766,1770,1775,1779,1783,1787,1792],{"type":63,"tag":141,"props":1763,"children":1764},{"style":199},[1765],{"type":69,"value":202},{"type":63,"tag":141,"props":1767,"children":1768},{"style":205},[1769],{"type":69,"value":208},{"type":63,"tag":141,"props":1771,"children":1772},{"style":211},[1773],{"type":69,"value":1774}," routes",{"type":63,"tag":141,"props":1776,"children":1777},{"style":205},[1778],{"type":69,"value":238},{"type":63,"tag":141,"props":1780,"children":1781},{"style":199},[1782],{"type":69,"value":243},{"type":63,"tag":141,"props":1784,"children":1785},{"style":205},[1786],{"type":69,"value":248},{"type":63,"tag":141,"props":1788,"children":1789},{"style":154},[1790],{"type":69,"value":1791},".\u002Froutes",{"type":63,"tag":141,"props":1793,"children":1794},{"style":205},[1795],{"type":69,"value":257},{"type":63,"tag":141,"props":1797,"children":1798},{"class":143,"line":358},[1799],{"type":63,"tag":141,"props":1800,"children":1801},{"emptyLinePlaceholder":264},[1802],{"type":69,"value":267},{"type":63,"tag":141,"props":1804,"children":1805},{"class":143,"line":409},[1806,1810,1814,1818,1822],{"type":63,"tag":141,"props":1807,"children":1808},{"style":199},[1809],{"type":69,"value":1556},{"type":63,"tag":141,"props":1811,"children":1812},{"style":199},[1813],{"type":69,"value":1561},{"type":63,"tag":141,"props":1815,"children":1816},{"style":290},[1817],{"type":69,"value":1700},{"type":63,"tag":141,"props":1819,"children":1820},{"style":211},[1821],{"type":69,"value":297},{"type":63,"tag":141,"props":1823,"children":1824},{"style":205},[1825],{"type":69,"value":1826},"{\n",{"type":63,"tag":141,"props":1828,"children":1829},{"class":143,"line":651},[1830,1836,1841],{"type":63,"tag":141,"props":1831,"children":1833},{"style":1832},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1834],{"type":69,"value":1835},"  plugins",{"type":63,"tag":141,"props":1837,"children":1838},{"style":205},[1839],{"type":69,"value":1840},":",{"type":63,"tag":141,"props":1842,"children":1843},{"style":211},[1844],{"type":69,"value":320},{"type":63,"tag":141,"props":1846,"children":1847},{"class":143,"line":701},[1848,1853,1857],{"type":63,"tag":141,"props":1849,"children":1850},{"style":290},[1851],{"type":69,"value":1852},"    tanstackRouter",{"type":63,"tag":141,"props":1854,"children":1855},{"style":211},[1856],{"type":69,"value":297},{"type":63,"tag":141,"props":1858,"children":1859},{"style":205},[1860],{"type":69,"value":1826},{"type":63,"tag":141,"props":1862,"children":1863},{"class":143,"line":734},[1864,1869,1873,1877,1881,1885,1889],{"type":63,"tag":141,"props":1865,"children":1866},{"style":1832},[1867],{"type":69,"value":1868},"      target",{"type":63,"tag":141,"props":1870,"children":1871},{"style":205},[1872],{"type":69,"value":1840},{"type":63,"tag":141,"props":1874,"children":1875},{"style":205},[1876],{"type":69,"value":248},{"type":63,"tag":141,"props":1878,"children":1879},{"style":154},[1880],{"type":69,"value":35},{"type":63,"tag":141,"props":1882,"children":1883},{"style":205},[1884],{"type":69,"value":302},{"type":63,"tag":141,"props":1886,"children":1887},{"style":205},[1888],{"type":69,"value":219},{"type":63,"tag":141,"props":1890,"children":1891},{"style":587},[1892],{"type":69,"value":1893}," \u002F\u002F or 'solid', 'vue'\n",{"type":63,"tag":141,"props":1895,"children":1896},{"class":143,"line":784},[1897,1902,1906,1910],{"type":63,"tag":141,"props":1898,"children":1899},{"style":1832},[1900],{"type":69,"value":1901},"      virtualRouteConfig",{"type":63,"tag":141,"props":1903,"children":1904},{"style":205},[1905],{"type":69,"value":1840},{"type":63,"tag":141,"props":1907,"children":1908},{"style":211},[1909],{"type":69,"value":1774},{"type":63,"tag":141,"props":1911,"children":1912},{"style":205},[1913],{"type":69,"value":355},{"type":63,"tag":141,"props":1915,"children":1916},{"class":143,"line":792},[1917,1922,1926],{"type":63,"tag":141,"props":1918,"children":1919},{"style":205},[1920],{"type":69,"value":1921},"    }",{"type":63,"tag":141,"props":1923,"children":1924},{"style":211},[1925],{"type":69,"value":79},{"type":63,"tag":141,"props":1927,"children":1928},{"style":205},[1929],{"type":69,"value":355},{"type":63,"tag":141,"props":1931,"children":1932},{"class":143,"line":800},[1933],{"type":63,"tag":141,"props":1934,"children":1935},{"style":587},[1936],{"type":69,"value":1937},"    \u002F\u002F Add your framework's Vite plugin here\n",{"type":63,"tag":141,"props":1939,"children":1940},{"class":143,"line":809},[1941,1946],{"type":63,"tag":141,"props":1942,"children":1943},{"style":211},[1944],{"type":69,"value":1945},"  ]",{"type":63,"tag":141,"props":1947,"children":1948},{"style":205},[1949],{"type":69,"value":355},{"type":63,"tag":141,"props":1951,"children":1953},{"class":143,"line":1952},14,[1954,1958],{"type":63,"tag":141,"props":1955,"children":1956},{"style":205},[1957],{"type":69,"value":1525},{"type":63,"tag":141,"props":1959,"children":1960},{"style":211},[1961],{"type":69,"value":509},{"type":63,"tag":81,"props":1963,"children":1964},{},[1965],{"type":69,"value":1966},"Or reference a file path:",{"type":63,"tag":130,"props":1968,"children":1970},{"className":187,"code":1969,"language":189,"meta":135,"style":135},"tanstackRouter({\n  target: 'react',\n  virtualRouteConfig: '.\u002Froutes.ts',\n})\n",[1971],{"type":63,"tag":72,"props":1972,"children":1973},{"__ignoreMap":135},[1974,1990,2018,2047],{"type":63,"tag":141,"props":1975,"children":1976},{"class":143,"line":144},[1977,1982,1986],{"type":63,"tag":141,"props":1978,"children":1979},{"style":290},[1980],{"type":69,"value":1981},"tanstackRouter",{"type":63,"tag":141,"props":1983,"children":1984},{"style":211},[1985],{"type":69,"value":297},{"type":63,"tag":141,"props":1987,"children":1988},{"style":205},[1989],{"type":69,"value":1826},{"type":63,"tag":141,"props":1991,"children":1992},{"class":143,"line":260},[1993,1998,2002,2006,2010,2014],{"type":63,"tag":141,"props":1994,"children":1995},{"style":1832},[1996],{"type":69,"value":1997},"  target",{"type":63,"tag":141,"props":1999,"children":2000},{"style":205},[2001],{"type":69,"value":1840},{"type":63,"tag":141,"props":2003,"children":2004},{"style":205},[2005],{"type":69,"value":248},{"type":63,"tag":141,"props":2007,"children":2008},{"style":154},[2009],{"type":69,"value":35},{"type":63,"tag":141,"props":2011,"children":2012},{"style":205},[2013],{"type":69,"value":302},{"type":63,"tag":141,"props":2015,"children":2016},{"style":205},[2017],{"type":69,"value":355},{"type":63,"tag":141,"props":2019,"children":2020},{"class":143,"line":270},[2021,2026,2030,2034,2039,2043],{"type":63,"tag":141,"props":2022,"children":2023},{"style":1832},[2024],{"type":69,"value":2025},"  virtualRouteConfig",{"type":63,"tag":141,"props":2027,"children":2028},{"style":205},[2029],{"type":69,"value":1840},{"type":63,"tag":141,"props":2031,"children":2032},{"style":205},[2033],{"type":69,"value":248},{"type":63,"tag":141,"props":2035,"children":2036},{"style":154},[2037],{"type":69,"value":2038},".\u002Froutes.ts",{"type":63,"tag":141,"props":2040,"children":2041},{"style":205},[2042],{"type":69,"value":302},{"type":63,"tag":141,"props":2044,"children":2045},{"style":205},[2046],{"type":69,"value":355},{"type":63,"tag":141,"props":2048,"children":2049},{"class":143,"line":323},[2050,2054],{"type":63,"tag":141,"props":2051,"children":2052},{"style":205},[2053],{"type":69,"value":1525},{"type":63,"tag":141,"props":2055,"children":2056},{"style":211},[2057],{"type":69,"value":509},{"type":63,"tag":123,"props":2059,"children":2061},{"id":2060},"full-example",[2062],{"type":69,"value":2063},"Full Example",{"type":63,"tag":130,"props":2065,"children":2067},{"className":187,"code":2066,"language":189,"meta":135,"style":135},"\u002F\u002F routes.ts\nimport {\n  rootRoute,\n  route,\n  index,\n  layout,\n  physical,\n} from '@tanstack\u002Fvirtual-file-routes'\n\nexport const routes = rootRoute('root.tsx', [\n  index('index.tsx'),\n\n  layout('authLayout.tsx', [\n    route('\u002Fdashboard', 'app\u002Fdashboard.tsx', [\n      index('app\u002Fdashboard-index.tsx'),\n      route('\u002Finvoices', 'app\u002Fdashboard-invoices.tsx', [\n        index('app\u002Finvoices-index.tsx'),\n        route('$id', 'app\u002Finvoice-detail.tsx'),\n      ]),\n    ]),\n  ]),\n\n  \u002F\u002F Mount file-based routing from posts\u002F directory\n  physical('\u002Fposts', 'posts'),\n])\n",[2068],{"type":63,"tag":72,"props":2069,"children":2070},{"__ignoreMap":135},[2071,2079,2090,2102,2113,2124,2136,2148,2171,2178,2226,2257,2264,2295,2344,2378,2429,2463,2513,2526,2539,2552,2560,2569,2617],{"type":63,"tag":141,"props":2072,"children":2073},{"class":143,"line":144},[2074],{"type":63,"tag":141,"props":2075,"children":2076},{"style":587},[2077],{"type":69,"value":2078},"\u002F\u002F routes.ts\n",{"type":63,"tag":141,"props":2080,"children":2081},{"class":143,"line":260},[2082,2086],{"type":63,"tag":141,"props":2083,"children":2084},{"style":199},[2085],{"type":69,"value":202},{"type":63,"tag":141,"props":2087,"children":2088},{"style":205},[2089],{"type":69,"value":1483},{"type":63,"tag":141,"props":2091,"children":2092},{"class":143,"line":270},[2093,2098],{"type":63,"tag":141,"props":2094,"children":2095},{"style":211},[2096],{"type":69,"value":2097},"  rootRoute",{"type":63,"tag":141,"props":2099,"children":2100},{"style":205},[2101],{"type":69,"value":355},{"type":63,"tag":141,"props":2103,"children":2104},{"class":143,"line":323},[2105,2109],{"type":63,"tag":141,"props":2106,"children":2107},{"style":211},[2108],{"type":69,"value":364},{"type":63,"tag":141,"props":2110,"children":2111},{"style":205},[2112],{"type":69,"value":355},{"type":63,"tag":141,"props":2114,"children":2115},{"class":143,"line":358},[2116,2120],{"type":63,"tag":141,"props":2117,"children":2118},{"style":211},[2119],{"type":69,"value":329},{"type":63,"tag":141,"props":2121,"children":2122},{"style":205},[2123],{"type":69,"value":355},{"type":63,"tag":141,"props":2125,"children":2126},{"class":143,"line":409},[2127,2132],{"type":63,"tag":141,"props":2128,"children":2129},{"style":211},[2130],{"type":69,"value":2131},"  layout",{"type":63,"tag":141,"props":2133,"children":2134},{"style":205},[2135],{"type":69,"value":355},{"type":63,"tag":141,"props":2137,"children":2138},{"class":143,"line":651},[2139,2144],{"type":63,"tag":141,"props":2140,"children":2141},{"style":211},[2142],{"type":69,"value":2143},"  physical",{"type":63,"tag":141,"props":2145,"children":2146},{"style":205},[2147],{"type":69,"value":355},{"type":63,"tag":141,"props":2149,"children":2150},{"class":143,"line":701},[2151,2155,2159,2163,2167],{"type":63,"tag":141,"props":2152,"children":2153},{"style":205},[2154],{"type":69,"value":1525},{"type":63,"tag":141,"props":2156,"children":2157},{"style":199},[2158],{"type":69,"value":243},{"type":63,"tag":141,"props":2160,"children":2161},{"style":205},[2162],{"type":69,"value":248},{"type":63,"tag":141,"props":2164,"children":2165},{"style":154},[2166],{"type":69,"value":77},{"type":63,"tag":141,"props":2168,"children":2169},{"style":205},[2170],{"type":69,"value":257},{"type":63,"tag":141,"props":2172,"children":2173},{"class":143,"line":734},[2174],{"type":63,"tag":141,"props":2175,"children":2176},{"emptyLinePlaceholder":264},[2177],{"type":69,"value":267},{"type":63,"tag":141,"props":2179,"children":2180},{"class":143,"line":784},[2181,2185,2190,2194,2198,2202,2206,2210,2214,2218,2222],{"type":63,"tag":141,"props":2182,"children":2183},{"style":199},[2184],{"type":69,"value":1556},{"type":63,"tag":141,"props":2186,"children":2187},{"style":274},[2188],{"type":69,"value":2189}," const",{"type":63,"tag":141,"props":2191,"children":2192},{"style":211},[2193],{"type":69,"value":282},{"type":63,"tag":141,"props":2195,"children":2196},{"style":205},[2197],{"type":69,"value":287},{"type":63,"tag":141,"props":2199,"children":2200},{"style":290},[2201],{"type":69,"value":214},{"type":63,"tag":141,"props":2203,"children":2204},{"style":211},[2205],{"type":69,"value":297},{"type":63,"tag":141,"props":2207,"children":2208},{"style":205},[2209],{"type":69,"value":302},{"type":63,"tag":141,"props":2211,"children":2212},{"style":154},[2213],{"type":69,"value":307},{"type":63,"tag":141,"props":2215,"children":2216},{"style":205},[2217],{"type":69,"value":302},{"type":63,"tag":141,"props":2219,"children":2220},{"style":205},[2221],{"type":69,"value":219},{"type":63,"tag":141,"props":2223,"children":2224},{"style":211},[2225],{"type":69,"value":320},{"type":63,"tag":141,"props":2227,"children":2228},{"class":143,"line":792},[2229,2233,2237,2241,2245,2249,2253],{"type":63,"tag":141,"props":2230,"children":2231},{"style":290},[2232],{"type":69,"value":329},{"type":63,"tag":141,"props":2234,"children":2235},{"style":211},[2236],{"type":69,"value":297},{"type":63,"tag":141,"props":2238,"children":2239},{"style":205},[2240],{"type":69,"value":302},{"type":63,"tag":141,"props":2242,"children":2243},{"style":154},[2244],{"type":69,"value":342},{"type":63,"tag":141,"props":2246,"children":2247},{"style":205},[2248],{"type":69,"value":302},{"type":63,"tag":141,"props":2250,"children":2251},{"style":211},[2252],{"type":69,"value":79},{"type":63,"tag":141,"props":2254,"children":2255},{"style":205},[2256],{"type":69,"value":355},{"type":63,"tag":141,"props":2258,"children":2259},{"class":143,"line":800},[2260],{"type":63,"tag":141,"props":2261,"children":2262},{"emptyLinePlaceholder":264},[2263],{"type":69,"value":267},{"type":63,"tag":141,"props":2265,"children":2266},{"class":143,"line":809},[2267,2271,2275,2279,2283,2287,2291],{"type":63,"tag":141,"props":2268,"children":2269},{"style":290},[2270],{"type":69,"value":2131},{"type":63,"tag":141,"props":2272,"children":2273},{"style":211},[2274],{"type":69,"value":297},{"type":63,"tag":141,"props":2276,"children":2277},{"style":205},[2278],{"type":69,"value":302},{"type":63,"tag":141,"props":2280,"children":2281},{"style":154},[2282],{"type":69,"value":1047},{"type":63,"tag":141,"props":2284,"children":2285},{"style":205},[2286],{"type":69,"value":302},{"type":63,"tag":141,"props":2288,"children":2289},{"style":205},[2290],{"type":69,"value":219},{"type":63,"tag":141,"props":2292,"children":2293},{"style":211},[2294],{"type":69,"value":320},{"type":63,"tag":141,"props":2296,"children":2297},{"class":143,"line":1952},[2298,2303,2307,2311,2315,2319,2323,2327,2332,2336,2340],{"type":63,"tag":141,"props":2299,"children":2300},{"style":290},[2301],{"type":69,"value":2302},"    route",{"type":63,"tag":141,"props":2304,"children":2305},{"style":211},[2306],{"type":69,"value":297},{"type":63,"tag":141,"props":2308,"children":2309},{"style":205},[2310],{"type":69,"value":302},{"type":63,"tag":141,"props":2312,"children":2313},{"style":154},[2314],{"type":69,"value":669},{"type":63,"tag":141,"props":2316,"children":2317},{"style":205},[2318],{"type":69,"value":302},{"type":63,"tag":141,"props":2320,"children":2321},{"style":205},[2322],{"type":69,"value":219},{"type":63,"tag":141,"props":2324,"children":2325},{"style":205},[2326],{"type":69,"value":248},{"type":63,"tag":141,"props":2328,"children":2329},{"style":154},[2330],{"type":69,"value":2331},"app\u002Fdashboard.tsx",{"type":63,"tag":141,"props":2333,"children":2334},{"style":205},[2335],{"type":69,"value":302},{"type":63,"tag":141,"props":2337,"children":2338},{"style":205},[2339],{"type":69,"value":219},{"type":63,"tag":141,"props":2341,"children":2342},{"style":211},[2343],{"type":69,"value":320},{"type":63,"tag":141,"props":2345,"children":2347},{"class":143,"line":2346},15,[2348,2353,2357,2361,2366,2370,2374],{"type":63,"tag":141,"props":2349,"children":2350},{"style":290},[2351],{"type":69,"value":2352},"      index",{"type":63,"tag":141,"props":2354,"children":2355},{"style":211},[2356],{"type":69,"value":297},{"type":63,"tag":141,"props":2358,"children":2359},{"style":205},[2360],{"type":69,"value":302},{"type":63,"tag":141,"props":2362,"children":2363},{"style":154},[2364],{"type":69,"value":2365},"app\u002Fdashboard-index.tsx",{"type":63,"tag":141,"props":2367,"children":2368},{"style":205},[2369],{"type":69,"value":302},{"type":63,"tag":141,"props":2371,"children":2372},{"style":211},[2373],{"type":69,"value":79},{"type":63,"tag":141,"props":2375,"children":2376},{"style":205},[2377],{"type":69,"value":355},{"type":63,"tag":141,"props":2379,"children":2381},{"class":143,"line":2380},16,[2382,2387,2391,2395,2400,2404,2408,2412,2417,2421,2425],{"type":63,"tag":141,"props":2383,"children":2384},{"style":290},[2385],{"type":69,"value":2386},"      route",{"type":63,"tag":141,"props":2388,"children":2389},{"style":211},[2390],{"type":69,"value":297},{"type":63,"tag":141,"props":2392,"children":2393},{"style":205},[2394],{"type":69,"value":302},{"type":63,"tag":141,"props":2396,"children":2397},{"style":154},[2398],{"type":69,"value":2399},"\u002Finvoices",{"type":63,"tag":141,"props":2401,"children":2402},{"style":205},[2403],{"type":69,"value":302},{"type":63,"tag":141,"props":2405,"children":2406},{"style":205},[2407],{"type":69,"value":219},{"type":63,"tag":141,"props":2409,"children":2410},{"style":205},[2411],{"type":69,"value":248},{"type":63,"tag":141,"props":2413,"children":2414},{"style":154},[2415],{"type":69,"value":2416},"app\u002Fdashboard-invoices.tsx",{"type":63,"tag":141,"props":2418,"children":2419},{"style":205},[2420],{"type":69,"value":302},{"type":63,"tag":141,"props":2422,"children":2423},{"style":205},[2424],{"type":69,"value":219},{"type":63,"tag":141,"props":2426,"children":2427},{"style":211},[2428],{"type":69,"value":320},{"type":63,"tag":141,"props":2430,"children":2432},{"class":143,"line":2431},17,[2433,2438,2442,2446,2451,2455,2459],{"type":63,"tag":141,"props":2434,"children":2435},{"style":290},[2436],{"type":69,"value":2437},"        index",{"type":63,"tag":141,"props":2439,"children":2440},{"style":211},[2441],{"type":69,"value":297},{"type":63,"tag":141,"props":2443,"children":2444},{"style":205},[2445],{"type":69,"value":302},{"type":63,"tag":141,"props":2447,"children":2448},{"style":154},[2449],{"type":69,"value":2450},"app\u002Finvoices-index.tsx",{"type":63,"tag":141,"props":2452,"children":2453},{"style":205},[2454],{"type":69,"value":302},{"type":63,"tag":141,"props":2456,"children":2457},{"style":211},[2458],{"type":69,"value":79},{"type":63,"tag":141,"props":2460,"children":2461},{"style":205},[2462],{"type":69,"value":355},{"type":63,"tag":141,"props":2464,"children":2466},{"class":143,"line":2465},18,[2467,2472,2476,2480,2484,2488,2492,2496,2501,2505,2509],{"type":63,"tag":141,"props":2468,"children":2469},{"style":290},[2470],{"type":69,"value":2471},"        route",{"type":63,"tag":141,"props":2473,"children":2474},{"style":211},[2475],{"type":69,"value":297},{"type":63,"tag":141,"props":2477,"children":2478},{"style":205},[2479],{"type":69,"value":302},{"type":63,"tag":141,"props":2481,"children":2482},{"style":154},[2483],{"type":69,"value":1622},{"type":63,"tag":141,"props":2485,"children":2486},{"style":205},[2487],{"type":69,"value":302},{"type":63,"tag":141,"props":2489,"children":2490},{"style":205},[2491],{"type":69,"value":219},{"type":63,"tag":141,"props":2493,"children":2494},{"style":205},[2495],{"type":69,"value":248},{"type":63,"tag":141,"props":2497,"children":2498},{"style":154},[2499],{"type":69,"value":2500},"app\u002Finvoice-detail.tsx",{"type":63,"tag":141,"props":2502,"children":2503},{"style":205},[2504],{"type":69,"value":302},{"type":63,"tag":141,"props":2506,"children":2507},{"style":211},[2508],{"type":69,"value":79},{"type":63,"tag":141,"props":2510,"children":2511},{"style":205},[2512],{"type":69,"value":355},{"type":63,"tag":141,"props":2514,"children":2516},{"class":143,"line":2515},19,[2517,2522],{"type":63,"tag":141,"props":2518,"children":2519},{"style":211},[2520],{"type":69,"value":2521},"      ])",{"type":63,"tag":141,"props":2523,"children":2524},{"style":205},[2525],{"type":69,"value":355},{"type":63,"tag":141,"props":2527,"children":2529},{"class":143,"line":2528},20,[2530,2535],{"type":63,"tag":141,"props":2531,"children":2532},{"style":211},[2533],{"type":69,"value":2534},"    ])",{"type":63,"tag":141,"props":2536,"children":2537},{"style":205},[2538],{"type":69,"value":355},{"type":63,"tag":141,"props":2540,"children":2542},{"class":143,"line":2541},21,[2543,2548],{"type":63,"tag":141,"props":2544,"children":2545},{"style":211},[2546],{"type":69,"value":2547},"  ])",{"type":63,"tag":141,"props":2549,"children":2550},{"style":205},[2551],{"type":69,"value":355},{"type":63,"tag":141,"props":2553,"children":2555},{"class":143,"line":2554},22,[2556],{"type":63,"tag":141,"props":2557,"children":2558},{"emptyLinePlaceholder":264},[2559],{"type":69,"value":267},{"type":63,"tag":141,"props":2561,"children":2563},{"class":143,"line":2562},23,[2564],{"type":63,"tag":141,"props":2565,"children":2566},{"style":587},[2567],{"type":69,"value":2568},"  \u002F\u002F Mount file-based routing from posts\u002F directory\n",{"type":63,"tag":141,"props":2570,"children":2572},{"class":143,"line":2571},24,[2573,2577,2581,2585,2589,2593,2597,2601,2605,2609,2613],{"type":63,"tag":141,"props":2574,"children":2575},{"style":290},[2576],{"type":69,"value":2143},{"type":63,"tag":141,"props":2578,"children":2579},{"style":211},[2580],{"type":69,"value":297},{"type":63,"tag":141,"props":2582,"children":2583},{"style":205},[2584],{"type":69,"value":302},{"type":63,"tag":141,"props":2586,"children":2587},{"style":154},[2588],{"type":69,"value":903},{"type":63,"tag":141,"props":2590,"children":2591},{"style":205},[2592],{"type":69,"value":302},{"type":63,"tag":141,"props":2594,"children":2595},{"style":205},[2596],{"type":69,"value":219},{"type":63,"tag":141,"props":2598,"children":2599},{"style":205},[2600],{"type":69,"value":248},{"type":63,"tag":141,"props":2602,"children":2603},{"style":154},[2604],{"type":69,"value":1383},{"type":63,"tag":141,"props":2606,"children":2607},{"style":205},[2608],{"type":69,"value":302},{"type":63,"tag":141,"props":2610,"children":2611},{"style":211},[2612],{"type":69,"value":79},{"type":63,"tag":141,"props":2614,"children":2615},{"style":205},[2616],{"type":69,"value":355},{"type":63,"tag":141,"props":2618,"children":2620},{"class":143,"line":2619},25,[2621],{"type":63,"tag":141,"props":2622,"children":2623},{"style":211},[2624],{"type":69,"value":415},{"type":63,"tag":123,"props":2626,"children":2628},{"id":2627},"common-mistakes",[2629],{"type":69,"value":2630},"Common Mistakes",{"type":63,"tag":170,"props":2632,"children":2634},{"id":2633},"_1-high-forgetting-that-file-paths-are-relative-to-routesdirectory",[2635],{"type":69,"value":2636},"1. HIGH: Forgetting that file paths are relative to routesDirectory",{"type":63,"tag":81,"props":2638,"children":2639},{},[2640,2642,2648,2650,2655,2656,2661,2663,2668,2670,2676,2678,2684],{"type":69,"value":2641},"File paths in ",{"type":63,"tag":72,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":69,"value":2647},"rootRoute",{"type":69,"value":2649},", ",{"type":63,"tag":72,"props":2651,"children":2653},{"className":2652},[],[2654],{"type":69,"value":487},{"type":69,"value":2649},{"type":63,"tag":72,"props":2657,"children":2659},{"className":2658},[],[2660],{"type":69,"value":36},{"type":69,"value":2662},", and ",{"type":63,"tag":72,"props":2664,"children":2666},{"className":2665},[],[2667],{"type":69,"value":1034},{"type":69,"value":2669}," are relative to the ",{"type":63,"tag":72,"props":2671,"children":2673},{"className":2672},[],[2674],{"type":69,"value":2675},"routesDirectory",{"type":69,"value":2677}," configured in the router plugin (default: ",{"type":63,"tag":72,"props":2679,"children":2681},{"className":2680},[],[2682],{"type":69,"value":2683},".\u002Fsrc\u002Froutes",{"type":69,"value":2685},"). Do not use absolute paths or paths relative to the project root.",{"type":63,"tag":130,"props":2687,"children":2689},{"className":187,"code":2688,"language":189,"meta":135,"style":135},"\u002F\u002F WRONG — absolute path\nroute('\u002Fabout', '\u002Fsrc\u002Froutes\u002Fabout.tsx')\n\n\u002F\u002F CORRECT — relative to routesDirectory\nroute('\u002Fabout', 'about.tsx')\n",[2690],{"type":63,"tag":72,"props":2691,"children":2692},{"__ignoreMap":135},[2693,2701,2745,2752,2760],{"type":63,"tag":141,"props":2694,"children":2695},{"class":143,"line":144},[2696],{"type":63,"tag":141,"props":2697,"children":2698},{"style":587},[2699],{"type":69,"value":2700},"\u002F\u002F WRONG — absolute path\n",{"type":63,"tag":141,"props":2702,"children":2703},{"class":143,"line":260},[2704,2708,2712,2716,2720,2724,2728,2732,2737,2741],{"type":63,"tag":141,"props":2705,"children":2706},{"style":290},[2707],{"type":69,"value":36},{"type":63,"tag":141,"props":2709,"children":2710},{"style":211},[2711],{"type":69,"value":297},{"type":63,"tag":141,"props":2713,"children":2714},{"style":205},[2715],{"type":69,"value":302},{"type":63,"tag":141,"props":2717,"children":2718},{"style":154},[2719],{"type":69,"value":377},{"type":63,"tag":141,"props":2721,"children":2722},{"style":205},[2723],{"type":69,"value":302},{"type":63,"tag":141,"props":2725,"children":2726},{"style":205},[2727],{"type":69,"value":219},{"type":63,"tag":141,"props":2729,"children":2730},{"style":205},[2731],{"type":69,"value":248},{"type":63,"tag":141,"props":2733,"children":2734},{"style":154},[2735],{"type":69,"value":2736},"\u002Fsrc\u002Froutes\u002Fabout.tsx",{"type":63,"tag":141,"props":2738,"children":2739},{"style":205},[2740],{"type":69,"value":302},{"type":63,"tag":141,"props":2742,"children":2743},{"style":211},[2744],{"type":69,"value":509},{"type":63,"tag":141,"props":2746,"children":2747},{"class":143,"line":270},[2748],{"type":63,"tag":141,"props":2749,"children":2750},{"emptyLinePlaceholder":264},[2751],{"type":69,"value":267},{"type":63,"tag":141,"props":2753,"children":2754},{"class":143,"line":323},[2755],{"type":63,"tag":141,"props":2756,"children":2757},{"style":587},[2758],{"type":69,"value":2759},"\u002F\u002F CORRECT — relative to routesDirectory\n",{"type":63,"tag":141,"props":2761,"children":2762},{"class":143,"line":358},[2763,2767,2771,2775,2779,2783,2787,2791,2795,2799],{"type":63,"tag":141,"props":2764,"children":2765},{"style":290},[2766],{"type":69,"value":36},{"type":63,"tag":141,"props":2768,"children":2769},{"style":211},[2770],{"type":69,"value":297},{"type":63,"tag":141,"props":2772,"children":2773},{"style":205},[2774],{"type":69,"value":302},{"type":63,"tag":141,"props":2776,"children":2777},{"style":154},[2778],{"type":69,"value":377},{"type":63,"tag":141,"props":2780,"children":2781},{"style":205},[2782],{"type":69,"value":302},{"type":63,"tag":141,"props":2784,"children":2785},{"style":205},[2786],{"type":69,"value":219},{"type":63,"tag":141,"props":2788,"children":2789},{"style":205},[2790],{"type":69,"value":248},{"type":63,"tag":141,"props":2792,"children":2793},{"style":154},[2794],{"type":69,"value":394},{"type":63,"tag":141,"props":2796,"children":2797},{"style":205},[2798],{"type":69,"value":302},{"type":63,"tag":141,"props":2800,"children":2801},{"style":211},[2802],{"type":69,"value":509},{"type":63,"tag":170,"props":2804,"children":2806},{"id":2805},"_2-medium-using-physical-without-matching-directory-structure",[2807],{"type":69,"value":2808},"2. MEDIUM: Using physical() without matching directory structure",{"type":63,"tag":81,"props":2810,"children":2811},{},[2812,2814,2820,2822,2827],{"type":69,"value":2813},"The directory passed to ",{"type":63,"tag":72,"props":2815,"children":2817},{"className":2816},[],[2818],{"type":69,"value":2819},"physical()",{"type":69,"value":2821}," must exist inside ",{"type":63,"tag":72,"props":2823,"children":2825},{"className":2824},[],[2826],{"type":69,"value":2675},{"type":69,"value":2828}," and follow TanStack Router's file-based routing conventions.",{"type":63,"tag":130,"props":2830,"children":2832},{"className":187,"code":2831,"language":189,"meta":135,"style":135},"\u002F\u002F WRONG — directory doesn't exist or wrong location\nphysical('\u002Fblog', 'src\u002Fblog')\n\n\u002F\u002F CORRECT — relative to routesDirectory\nphysical('\u002Fblog', 'blog')\n\u002F\u002F Expects: src\u002Froutes\u002Fblog\u002F (with route files inside)\n",[2833],{"type":63,"tag":72,"props":2834,"children":2835},{"__ignoreMap":135},[2836,2844,2889,2896,2903,2947],{"type":63,"tag":141,"props":2837,"children":2838},{"class":143,"line":144},[2839],{"type":63,"tag":141,"props":2840,"children":2841},{"style":587},[2842],{"type":69,"value":2843},"\u002F\u002F WRONG — directory doesn't exist or wrong location\n",{"type":63,"tag":141,"props":2845,"children":2846},{"class":143,"line":260},[2847,2851,2855,2859,2864,2868,2872,2876,2881,2885],{"type":63,"tag":141,"props":2848,"children":2849},{"style":290},[2850],{"type":69,"value":1354},{"type":63,"tag":141,"props":2852,"children":2853},{"style":211},[2854],{"type":69,"value":297},{"type":63,"tag":141,"props":2856,"children":2857},{"style":205},[2858],{"type":69,"value":302},{"type":63,"tag":141,"props":2860,"children":2861},{"style":154},[2862],{"type":69,"value":2863},"\u002Fblog",{"type":63,"tag":141,"props":2865,"children":2866},{"style":205},[2867],{"type":69,"value":302},{"type":63,"tag":141,"props":2869,"children":2870},{"style":205},[2871],{"type":69,"value":219},{"type":63,"tag":141,"props":2873,"children":2874},{"style":205},[2875],{"type":69,"value":248},{"type":63,"tag":141,"props":2877,"children":2878},{"style":154},[2879],{"type":69,"value":2880},"src\u002Fblog",{"type":63,"tag":141,"props":2882,"children":2883},{"style":205},[2884],{"type":69,"value":302},{"type":63,"tag":141,"props":2886,"children":2887},{"style":211},[2888],{"type":69,"value":509},{"type":63,"tag":141,"props":2890,"children":2891},{"class":143,"line":270},[2892],{"type":63,"tag":141,"props":2893,"children":2894},{"emptyLinePlaceholder":264},[2895],{"type":69,"value":267},{"type":63,"tag":141,"props":2897,"children":2898},{"class":143,"line":323},[2899],{"type":63,"tag":141,"props":2900,"children":2901},{"style":587},[2902],{"type":69,"value":2759},{"type":63,"tag":141,"props":2904,"children":2905},{"class":143,"line":358},[2906,2910,2914,2918,2922,2926,2930,2934,2939,2943],{"type":63,"tag":141,"props":2907,"children":2908},{"style":290},[2909],{"type":69,"value":1354},{"type":63,"tag":141,"props":2911,"children":2912},{"style":211},[2913],{"type":69,"value":297},{"type":63,"tag":141,"props":2915,"children":2916},{"style":205},[2917],{"type":69,"value":302},{"type":63,"tag":141,"props":2919,"children":2920},{"style":154},[2921],{"type":69,"value":2863},{"type":63,"tag":141,"props":2923,"children":2924},{"style":205},[2925],{"type":69,"value":302},{"type":63,"tag":141,"props":2927,"children":2928},{"style":205},[2929],{"type":69,"value":219},{"type":63,"tag":141,"props":2931,"children":2932},{"style":205},[2933],{"type":69,"value":248},{"type":63,"tag":141,"props":2935,"children":2936},{"style":154},[2937],{"type":69,"value":2938},"blog",{"type":63,"tag":141,"props":2940,"children":2941},{"style":205},[2942],{"type":69,"value":302},{"type":63,"tag":141,"props":2944,"children":2945},{"style":211},[2946],{"type":69,"value":509},{"type":63,"tag":141,"props":2948,"children":2949},{"class":143,"line":409},[2950],{"type":63,"tag":141,"props":2951,"children":2952},{"style":587},[2953],{"type":69,"value":2954},"\u002F\u002F Expects: src\u002Froutes\u002Fblog\u002F (with route files inside)\n",{"type":63,"tag":170,"props":2956,"children":2958},{"id":2957},"_3-medium-confusing-layout-with-route",[2959],{"type":69,"value":2960},"3. MEDIUM: Confusing layout() with route()",{"type":63,"tag":81,"props":2962,"children":2963},{},[2964,2970,2972,2978],{"type":63,"tag":72,"props":2965,"children":2967},{"className":2966},[],[2968],{"type":69,"value":2969},"layout()",{"type":69,"value":2971}," creates a pathless wrapper — it does NOT add a URL segment. Use ",{"type":63,"tag":72,"props":2973,"children":2975},{"className":2974},[],[2976],{"type":69,"value":2977},"route()",{"type":69,"value":2979}," for URL segments.",{"type":63,"tag":130,"props":2981,"children":2983},{"className":187,"code":2982,"language":189,"meta":135,"style":135},"\u002F\u002F This does NOT create a \u002Fdashboard URL\nlayout('dashboardLayout.tsx', [route('\u002Fdashboard', 'dashboard.tsx')])\n\n\u002F\u002F The URL is \u002Fdashboard, and dashboardLayout.tsx wraps it\n",[2984],{"type":63,"tag":72,"props":2985,"children":2986},{"__ignoreMap":135},[2987,2995,3067,3074],{"type":63,"tag":141,"props":2988,"children":2989},{"class":143,"line":144},[2990],{"type":63,"tag":141,"props":2991,"children":2992},{"style":587},[2993],{"type":69,"value":2994},"\u002F\u002F This does NOT create a \u002Fdashboard URL\n",{"type":63,"tag":141,"props":2996,"children":2997},{"class":143,"line":260},[2998,3002,3006,3010,3015,3019,3023,3027,3031,3035,3039,3043,3047,3051,3055,3059,3063],{"type":63,"tag":141,"props":2999,"children":3000},{"style":290},[3001],{"type":69,"value":1034},{"type":63,"tag":141,"props":3003,"children":3004},{"style":211},[3005],{"type":69,"value":297},{"type":63,"tag":141,"props":3007,"children":3008},{"style":205},[3009],{"type":69,"value":302},{"type":63,"tag":141,"props":3011,"children":3012},{"style":154},[3013],{"type":69,"value":3014},"dashboardLayout.tsx",{"type":63,"tag":141,"props":3016,"children":3017},{"style":205},[3018],{"type":69,"value":302},{"type":63,"tag":141,"props":3020,"children":3021},{"style":205},[3022],{"type":69,"value":219},{"type":63,"tag":141,"props":3024,"children":3025},{"style":211},[3026],{"type":69,"value":840},{"type":63,"tag":141,"props":3028,"children":3029},{"style":290},[3030],{"type":69,"value":36},{"type":63,"tag":141,"props":3032,"children":3033},{"style":211},[3034],{"type":69,"value":297},{"type":63,"tag":141,"props":3036,"children":3037},{"style":205},[3038],{"type":69,"value":302},{"type":63,"tag":141,"props":3040,"children":3041},{"style":154},[3042],{"type":69,"value":669},{"type":63,"tag":141,"props":3044,"children":3045},{"style":205},[3046],{"type":69,"value":302},{"type":63,"tag":141,"props":3048,"children":3049},{"style":205},[3050],{"type":69,"value":219},{"type":63,"tag":141,"props":3052,"children":3053},{"style":205},[3054],{"type":69,"value":248},{"type":63,"tag":141,"props":3056,"children":3057},{"style":154},[3058],{"type":69,"value":686},{"type":63,"tag":141,"props":3060,"children":3061},{"style":205},[3062],{"type":69,"value":302},{"type":63,"tag":141,"props":3064,"children":3065},{"style":211},[3066],{"type":69,"value":929},{"type":63,"tag":141,"props":3068,"children":3069},{"class":143,"line":270},[3070],{"type":63,"tag":141,"props":3071,"children":3072},{"emptyLinePlaceholder":264},[3073],{"type":69,"value":267},{"type":63,"tag":141,"props":3075,"children":3076},{"class":143,"line":323},[3077],{"type":63,"tag":141,"props":3078,"children":3079},{"style":587},[3080],{"type":69,"value":3081},"\u002F\u002F The URL is \u002Fdashboard, and dashboardLayout.tsx wraps it\n",{"type":63,"tag":123,"props":3083,"children":3085},{"id":3084},"refactor-audit",[3086],{"type":69,"value":3087},"Refactor Audit",{"type":63,"tag":81,"props":3089,"children":3090},{},[3091],{"type":69,"value":3092},"After changing a virtual tree:",{"type":63,"tag":3094,"props":3095,"children":3096},"ol",{},[3097,3117,3141,3153,3166],{"type":63,"tag":3098,"props":3099,"children":3100},"li",{},[3101,3103,3108,3110,3115],{"type":69,"value":3102},"Confirm there is exactly one ",{"type":63,"tag":72,"props":3104,"children":3106},{"className":3105},[],[3107],{"type":69,"value":2647},{"type":69,"value":3109}," and that every referenced file exists relative to ",{"type":63,"tag":72,"props":3111,"children":3113},{"className":3112},[],[3114],{"type":69,"value":2675},{"type":69,"value":3116},".",{"type":63,"tag":3098,"props":3118,"children":3119},{},[3120,3122,3127,3128,3133,3134,3139],{"type":69,"value":3121},"Check each ",{"type":63,"tag":72,"props":3123,"children":3125},{"className":3124},[],[3126],{"type":69,"value":36},{"type":69,"value":2649},{"type":63,"tag":72,"props":3129,"children":3131},{"className":3130},[],[3132],{"type":69,"value":1034},{"type":69,"value":2662},{"type":63,"tag":72,"props":3135,"children":3137},{"className":3136},[],[3138],{"type":69,"value":1354},{"type":69,"value":3140}," node for duplicate effective paths or IDs.",{"type":63,"tag":3098,"props":3142,"children":3143},{},[3144,3146,3151],{"type":69,"value":3145},"Confirm each ",{"type":63,"tag":72,"props":3147,"children":3149},{"className":3148},[],[3150],{"type":69,"value":2819},{"type":69,"value":3152}," directory is mounted once at the intended path prefix and does not overlap a virtual child.",{"type":63,"tag":3098,"props":3154,"children":3155},{},[3156,3158,3164],{"type":69,"value":3157},"Regenerate ",{"type":63,"tag":72,"props":3159,"children":3161},{"className":3160},[],[3162],{"type":69,"value":3163},"routeTree.gen.ts",{"type":69,"value":3165}," and inspect parentage, full paths, and imports. Do not edit generated output.",{"type":63,"tag":3098,"props":3167,"children":3168},{},[3169,3171,3177],{"type":69,"value":3170},"Update links, redirects, params, and ",{"type":63,"tag":72,"props":3172,"children":3174},{"className":3173},[],[3175],{"type":69,"value":3176},"from",{"type":69,"value":3178}," narrowing, then run generator tests, type tests, and a production build.",{"type":63,"tag":3180,"props":3181,"children":3182},"style",{},[3183],{"type":69,"value":3184},"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);}",{"items":3186,"total":3325},[3187,3201,3213,3225,3240,3252,3262,3272,3285,3295,3306,3316],{"slug":3188,"name":3188,"fn":3189,"description":3190,"org":3191,"tags":3192,"stars":3198,"repoUrl":3199,"updatedAt":3200},"aggregation","perform data aggregation in TanStack Table","Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3193,3196,3197],{"name":3194,"slug":3195,"type":15},"Data Analysis","data-analysis",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-07-30T05:25:59.429787",{"slug":3202,"name":3202,"fn":3203,"description":3204,"org":3205,"tags":3206,"stars":3198,"repoUrl":3199,"updatedAt":3212},"api-not-found","diagnose TanStack Table API errors","Diagnose missing TanStack Table v9 exports, options, state slices, and instance methods. Load before inventing an API when code sees a type error, undefined feature method, absent object key, adapter mismatch, or v8-shaped example.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3207,3210,3211],{"name":3208,"slug":3209,"type":15},"Debugging","debugging",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:26:05.418735",{"slug":3214,"name":3214,"fn":3215,"description":3216,"org":3217,"tags":3218,"stars":3198,"repoUrl":3199,"updatedAt":3224},"cell-selection","select rectangular cell ranges in tables","Select rectangular cell ranges with cellSelectionFeature: two-corner range state keyed by row and column id, mousedown\u002Fmouseenter handlers, selection edges, render-order resolution under pinning, and autoResetCellSelection. Load when ranges widen unexpectedly after sorting or column reordering, when a drag re-renders the whole table, or when building copy-to-clipboard from a selection.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3219,3220,3221],{"name":3194,"slug":3195,"type":15},{"name":9,"slug":8,"type":15},{"name":3222,"slug":3223,"type":15},"UI Components","ui-components","2026-07-30T05:25:38.403427",{"slug":3226,"name":3226,"fn":3227,"description":3228,"org":3229,"tags":3230,"stars":3198,"repoUrl":3199,"updatedAt":3239},"client-vs-server","manage TanStack Table data pipelines","Choose client or server ownership for filtering, grouping, sorting, expanding, and pagination in TanStack Table v9. Load for manual* flags, mixed pipelines, server counts, or deciding which dataset each row-model stage receives.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3231,3234,3235,3238],{"name":3232,"slug":3233,"type":15},"Data Pipeline","data-pipeline",{"name":24,"slug":25,"type":15},{"name":3236,"slug":3237,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},"2026-07-30T05:25:45.400104",{"slug":3241,"name":3241,"fn":3242,"description":3243,"org":3244,"tags":3245,"stars":3198,"repoUrl":3199,"updatedAt":3251},"column-faceting","build faceted filter UIs","Build faceted filter UIs with columnFacetingFeature, facetedRowModel, facetedUniqueValues, and facetedMinMaxValues. Load for facet counts, numeric ranges, own-filter exclusion, or server-page facet completeness.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3246,3249,3250],{"name":3247,"slug":3248,"type":15},"Data Visualization","data-visualization",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:41.397257",{"slug":3253,"name":3253,"fn":3254,"description":3255,"org":3256,"tags":3257,"stars":3198,"repoUrl":3199,"updatedAt":3261},"column-filtering","implement column filtering in TanStack Table","Filter columns with columnFilteringFeature, filteredRowModel, filterFns, filterMeta, nested-row direction, and manualFiltering. Load for accessor compatibility, controlled filter updaters, fuzzy metadata, or client\u002Fserver ownership.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3258,3259,3260],{"name":3194,"slug":3195,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:53.391632",{"slug":3263,"name":3263,"fn":3264,"description":3265,"org":3266,"tags":3267,"stars":3198,"repoUrl":3199,"updatedAt":3271},"column-ordering","manage TanStack Table column ordering","Control TanStack Table v9 leaf columnOrder with stable IDs while accounting for pinning regions, visibility, and groupedColumnMode precedence. Load for drag-and-drop columns or rendered order that differs from state.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3268,3269,3270],{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3222,"slug":3223,"type":15},"2026-07-30T05:26:03.37801",{"slug":3273,"name":3273,"fn":3274,"description":3275,"org":3276,"tags":3277,"stars":3198,"repoUrl":3199,"updatedAt":3284},"column-pinning","configure column pinning in TanStack Table","Pin columns into logical start, center, and end regions with columnPinningFeature and renderer-owned sticky CSS. Load for RTL offsets, z-index, backgrounds, overflow, widths, gaps, or overlaps.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3278,3281,3282,3283],{"name":3279,"slug":3280,"type":15},"CSS","css",{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3222,"slug":3223,"type":15},"2026-07-30T05:25:55.377366",{"slug":3286,"name":3286,"fn":3287,"description":3288,"org":3289,"tags":3290,"stars":3198,"repoUrl":3199,"updatedAt":3294},"column-resizing","implement column resizing in TanStack Table","Wire columnResizingFeature, header.getResizeHandler, resize mode and direction, pointer or touch events, and performant CSS-variable updates. Load when resize state changes but widths do not, or large tables resize slowly.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3291,3292,3293],{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3222,"slug":3223,"type":15},"2026-07-30T05:25:51.400011",{"slug":3296,"name":3296,"fn":3297,"description":3298,"org":3299,"tags":3300,"stars":3198,"repoUrl":3199,"updatedAt":3305},"column-sizing","configure column sizing in TanStack Table","Use columnSizingFeature numeric size, minSize, maxSize, getSize, getStart, getAfter, and total-size APIs in table, grid, or flex CSS. Load for auto or percentage misconceptions and sizing\u002Fpinning layout mismatch.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3301,3302,3303,3304],{"name":3279,"slug":3280,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3222,"slug":3223,"type":15},"2026-07-30T05:25:48.703799",{"slug":3307,"name":3307,"fn":3308,"description":3309,"org":3310,"tags":3311,"stars":3198,"repoUrl":3199,"updatedAt":3315},"column-visibility","manage column visibility in TanStack Table","Hide columns with columnVisibilityFeature while rendering visibility-aware header, column, and cell collections. Load when hidden columns remain in the DOM, false-versus-absent state is confused, or enableHiding is misunderstood.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3312,3313,3314],{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":3222,"slug":3223,"type":15},"2026-07-30T05:25:47.367943",{"slug":54,"name":54,"fn":3317,"description":3318,"org":3319,"tags":3320,"stars":3198,"repoUrl":3199,"updatedAt":3324},"build data grids with TanStack Table","Use TanStack Table v9 as a headless data-grid state and row-processing engine. Load for first-table architecture, stable data and columns, row numbering with getDisplayIndex, semantic rendering, framework adapter choice, or deciding what Table owns versus the renderer.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3321,3322,3323],{"name":3194,"slug":3195,"type":15},{"name":24,"slug":25,"type":15},{"name":3222,"slug":3223,"type":15},"2026-07-30T05:25:52.366295",125,{"items":3327,"total":3428},[3328,3342,3357,3371,3384,3403,3414],{"slug":3329,"name":3329,"fn":3330,"description":3331,"org":3332,"tags":3333,"stars":26,"repoUrl":27,"updatedAt":3341},"auth-and-guards","implement route protection in TanStack Router","Route protection with beforeLoad, redirect()\u002Fthrow redirect(), isRedirect helper, authenticated layout routes (_authenticated), non-redirect auth (inline login), RBAC with roles and permissions, auth provider integration (Auth0, Clerk, Supabase), router context for auth state.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3334,3337,3338,3339,3340],{"name":3335,"slug":3336,"type":15},"Auth","auth",{"name":24,"slug":25,"type":15},{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:07.639032",{"slug":3343,"name":3343,"fn":3344,"description":3345,"org":3346,"tags":3347,"stars":26,"repoUrl":27,"updatedAt":3356},"auth-server-primitives","implement server-side authentication primitives","Server-side authentication primitives for TanStack Start: session cookies (HttpOnly, Secure, SameSite, __Host- prefix), session read\u002Fissue\u002Fdestroy via createServerFn and middleware, OAuth authorization-code flow with state and PKCE, password-reset enumeration defense, CSRF for non-GET RPCs, rate limiting auth endpoints, session rotation on privilege change. Pairs with router-core\u002Fauth-and-guards for the routing side.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3348,3349,3352,3355],{"name":3335,"slug":3336,"type":15},{"name":3350,"slug":3351,"type":15},"OAuth","oauth",{"name":3353,"slug":3354,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:59.504396",{"slug":3358,"name":3358,"fn":3359,"description":3360,"org":3361,"tags":3362,"stars":26,"repoUrl":27,"updatedAt":3370},"code-splitting","configure code splitting in TanStack Router","Automatic code splitting (autoCodeSplitting), .lazy.tsx convention, createLazyFileRoute, createLazyRoute, lazyRouteComponent, getRouteApi for typed hooks in split files, codeSplitGroupings per-route override, splitBehavior programmatic config, critical vs non-critical properties.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3363,3366,3367,3368,3369],{"name":3364,"slug":3365,"type":15},"Engineering","engineering",{"name":24,"slug":25,"type":15},{"name":3236,"slug":3237,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:27:11.494406",{"slug":3372,"name":3372,"fn":3373,"description":3374,"org":3375,"tags":3376,"stars":26,"repoUrl":27,"updatedAt":3383},"data-loading","manage data loading in TanStack Router","Route loader option, loaderDeps for cache keys, staleTime\u002FgcTime\u002F defaultPreloadStaleTime SWR caching, pendingComponent\u002FpendingMs\u002F pendingMinMs, errorComponent\u002FonError\u002FonCatch, beforeLoad, router context and createRootRouteWithContext DI pattern, router.invalidate, Await component, deferred data loading with unawaited promises.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3377,3380,3381,3382],{"name":3378,"slug":3379,"type":15},"Caching","caching",{"name":3236,"slug":3237,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-30T05:26:54.487943",{"slug":3385,"name":3385,"fn":3386,"description":3387,"org":3388,"tags":3389,"stars":26,"repoUrl":27,"updatedAt":3402},"deployment","deploy TanStack Start applications","Deploy to Cloudflare Workers, Netlify, Vercel, Node.js\u002FDocker, Bun, Railway. Selective SSR (ssr option per route), SPA mode, static prerendering, ISR with Cache-Control headers, SEO and head management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3390,3393,3395,3398,3399],{"name":3391,"slug":3392,"type":15},"Cloudflare","cloudflare",{"name":3394,"slug":3385,"type":15},"Deployment",{"name":3396,"slug":3397,"type":15},"Netlify","netlify",{"name":9,"slug":8,"type":15},{"name":3400,"slug":3401,"type":15},"Vercel","vercel","2026-07-30T05:26:50.509927",{"slug":3404,"name":3404,"fn":3405,"description":3406,"org":3407,"tags":3408,"stars":26,"repoUrl":27,"updatedAt":3413},"execution-model","manage isomorphic execution models","Isomorphic-by-default principle, environment boundary functions (createServerFn, createServerOnlyFn, createClientOnlyFn, createIsomorphicFn), ClientOnly component, useHydrated hook, import protection, dead code elimination, environment variable safety (VITE_ prefix, process.env).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3409,3412],{"name":3410,"slug":3411,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-30T05:27:04.558441",{"slug":3415,"name":3415,"fn":3416,"description":3417,"org":3418,"tags":3419,"stars":26,"repoUrl":27,"updatedAt":3427},"middleware","implement TanStack Router middleware","createMiddleware, request middleware (.server only), server function middleware (.client + .server), context passing via next({ context }), sendContext for client-server transfer, global middleware via createStart in src\u002Fstart.ts, middleware factories, method order enforcement, fetch override precedence.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3420,3423,3424,3426],{"name":3421,"slug":3422,"type":15},"Backend","backend",{"name":24,"slug":25,"type":15},{"name":3425,"slug":3415,"type":15},"Middleware",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:58.546019",30]