[{"data":1,"prerenderedAt":4586},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-auto/auto-admin/custom-pages-en":444,"/docs/nuxt-auto/auto-admin/custom-pages-surround-en":4581},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","/docs/landing","0.docs/1.landing/001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","/docs/landing/built-in-features","0.docs/1.landing/002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","/docs/landing/content","0.docs/1.landing/02.content/1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","/docs/landing/content/details","0.docs/1.landing/02.content/2.details",{"title":24,"path":25,"stem":26},"Technical","/docs/landing/content/technical","0.docs/1.landing/02.content/4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","/docs/landing/regional","0.docs/1.landing/03.regional/1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"/docs/landing/regional/details","0.docs/1.landing/03.regional/2.details",{"title":24,"path":38,"stem":39},"/docs/landing/regional/technical","0.docs/1.landing/03.regional/4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","/docs/landing/multilang","0.docs/1.landing/04.multilang/1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"/docs/landing/multilang/details","0.docs/1.landing/04.multilang/2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","/docs/landing/blog","0.docs/1.landing/05.blog/1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"/docs/landing/blog/details","0.docs/1.landing/05.blog/2.details",{"title":24,"path":61,"stem":62},"/docs/landing/blog/technical","0.docs/1.landing/05.blog/4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","/docs/landing/docs","0.docs/1.landing/06.docs/1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"/docs/landing/docs/details","0.docs/1.landing/06.docs/2.details",{"title":24,"path":74,"stem":75},"/docs/landing/docs/technical","0.docs/1.landing/06.docs/4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","/docs/landing/forms","0.docs/1.landing/07.forms/1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"/docs/landing/forms/details","0.docs/1.landing/07.forms/2.details",{"title":87,"path":88,"stem":89},"Admin","/docs/landing/forms/admin","0.docs/1.landing/07.forms/3.admin",{"title":24,"path":91,"stem":92},"/docs/landing/forms/technical","0.docs/1.landing/07.forms/4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","/docs/landing/email","0.docs/1.landing/08.email/1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"/docs/landing/email/details","0.docs/1.landing/08.email/2.details",{"title":87,"path":104,"stem":105},"/docs/landing/email/admin","0.docs/1.landing/08.email/3.admin",{"title":24,"path":107,"stem":108},"/docs/landing/email/technical","0.docs/1.landing/08.email/4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","/docs/landing/feedback","0.docs/1.landing/09.feedback/1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"/docs/landing/feedback/details","0.docs/1.landing/09.feedback/2.details",{"title":87,"path":120,"stem":121},"/docs/landing/feedback/admin","0.docs/1.landing/09.feedback/3.admin",{"title":24,"path":123,"stem":124},"/docs/landing/feedback/technical","0.docs/1.landing/09.feedback/4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","/docs/landing/feedback/compare","0.docs/1.landing/09.feedback/5.compare",{"title":130,"path":131,"stem":132},"FAQ","/docs/landing/feedback/faq","0.docs/1.landing/09.feedback/6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","/docs/landing/storage","0.docs/1.landing/10.storage/1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"/docs/landing/storage/details","0.docs/1.landing/10.storage/2.details",{"title":87,"path":144,"stem":145},"/docs/landing/storage/admin","0.docs/1.landing/10.storage/3.admin",{"title":24,"path":147,"stem":148},"/docs/landing/storage/technical","0.docs/1.landing/10.storage/4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","/docs/landing/offline-first","0.docs/1.landing/11.offline-first/1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","/docs/landing/yjs-sync","0.docs/1.landing/12.yjs-sync/1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"/docs/landing/yjs-sync/details","0.docs/1.landing/12.yjs-sync/2.details",{"title":87,"path":167,"stem":168},"/docs/landing/yjs-sync/admin","0.docs/1.landing/12.yjs-sync/3.admin",{"title":24,"path":170,"stem":171},"/docs/landing/yjs-sync/technical","0.docs/1.landing/12.yjs-sync/4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","/docs/landing/newsletter","0.docs/1.landing/13.newsletter/index",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,298],{"title":5,"path":182,"stem":183},"/docs/nuxt-auto","0.docs/3.nuxt-auto/index",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","/docs/nuxt-auto/getting-started","0.docs/3.nuxt-auto/1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","/docs/nuxt-auto/getting-started/introduction","0.docs/3.nuxt-auto/1.getting-started/1.introduction",{"title":194,"path":195,"stem":196},"Installation","/docs/nuxt-auto/getting-started/installation","0.docs/3.nuxt-auto/1.getting-started/2.installation",{"title":198,"path":199,"stem":200},"Quick Start","/docs/nuxt-auto/getting-started/quick-start","0.docs/3.nuxt-auto/1.getting-started/3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","/docs/nuxt-auto/auto-api","0.docs/3.nuxt-auto/2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294],{"title":185,"path":208,"stem":209},"/docs/nuxt-auto/auto-api/getting-started","0.docs/3.nuxt-auto/2.auto-api/1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","/docs/nuxt-auto/auto-api/aggregations","0.docs/3.nuxt-auto/2.auto-api/10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","/docs/nuxt-auto/auto-api/lifecycle-hooks","0.docs/3.nuxt-auto/2.auto-api/11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","/docs/nuxt-auto/auto-api/m2m-relationships","0.docs/3.nuxt-auto/2.auto-api/12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","/docs/nuxt-auto/auto-api/plugin-system","0.docs/3.nuxt-auto/2.auto-api/13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","/docs/nuxt-auto/auto-api/database-adapters","0.docs/3.nuxt-auto/2.auto-api/14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","/docs/nuxt-auto/auto-api/custom-endpoints","0.docs/3.nuxt-auto/2.auto-api/15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","/docs/nuxt-auto/auto-api/multi-tenancy","0.docs/3.nuxt-auto/2.auto-api/16.multi-tenancy",{"title":239,"path":240,"stem":241},"Validation","/docs/nuxt-auto/auto-api/validation","0.docs/3.nuxt-auto/2.auto-api/2.validation",{"title":243,"path":244,"stem":245},"Rate Limiting","/docs/nuxt-auto/auto-api/rate-limiting","0.docs/3.nuxt-auto/2.auto-api/20.rate-limiting",{"title":247,"path":248,"stem":249},"Request Metadata Plugin","/docs/nuxt-auto/auto-api/request-metadata","0.docs/3.nuxt-auto/2.auto-api/21.request-metadata",{"title":251,"path":252,"stem":253},"Plugin Catalog","/docs/nuxt-auto/auto-api/plugin-catalog","0.docs/3.nuxt-auto/2.auto-api/22.plugin-catalog",{"title":255,"path":256,"stem":257},"Handler Overrides","/docs/nuxt-auto/auto-api/handler-overrides","0.docs/3.nuxt-auto/2.auto-api/3.handler-overrides",{"title":259,"path":260,"stem":261},"Cloudflare D1","/docs/nuxt-auto/auto-api/cloudflare-d1","0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1",{"title":263,"path":264,"stem":265},"SQLite to D1 Migration","/docs/nuxt-auto/auto-api/migration-sqlite-d1","0.docs/3.nuxt-auto/2.auto-api/31.migration-sqlite-d1",{"title":267,"path":268,"stem":269},"Frontend Composables","/docs/nuxt-auto/auto-api/frontend-composables","0.docs/3.nuxt-auto/2.auto-api/32.frontend-composables",{"title":271,"path":272,"stem":273},"Testing","/docs/nuxt-auto/auto-api/testing","0.docs/3.nuxt-auto/2.auto-api/33.testing",{"title":275,"path":276,"stem":277},"Pagination","/docs/nuxt-auto/auto-api/pagination","0.docs/3.nuxt-auto/2.auto-api/4.pagination",{"title":279,"path":280,"stem":281},"Soft Deletes","/docs/nuxt-auto/auto-api/soft-deletes","0.docs/3.nuxt-auto/2.auto-api/5.soft-deletes",{"title":283,"path":284,"stem":285},"Authentication & Authorization","/docs/nuxt-auto/auto-api/authentication-authorization","0.docs/3.nuxt-auto/2.auto-api/6.authentication-authorization",{"title":287,"path":288,"stem":289},"Better-Auth Integration","/docs/nuxt-auto/auto-api/better-auth","0.docs/3.nuxt-auto/2.auto-api/7.better-auth",{"title":291,"path":292,"stem":293},"Nested Relations","/docs/nuxt-auto/auto-api/nested-relationships","0.docs/3.nuxt-auto/2.auto-api/8.nested-relationships",{"title":295,"path":296,"stem":297},"Bulk Operations","/docs/nuxt-auto/auto-api/bulk-operations","0.docs/3.nuxt-auto/2.auto-api/9.bulk-operations",{"title":299,"path":300,"stem":301,"children":302,"page":201},"Auto Admin","/docs/nuxt-auto/auto-admin","0.docs/3.nuxt-auto/3.auto-admin",[303,306,310,314,318,322,326,330,334],{"title":185,"path":304,"stem":305},"/docs/nuxt-auto/auto-admin/getting-started","0.docs/3.nuxt-auto/3.auto-admin/1.getting-started",{"title":307,"path":308,"stem":309},"Configuration & Theming","/docs/nuxt-auto/auto-admin/configuration-theming","0.docs/3.nuxt-auto/3.auto-admin/2.configuration-theming",{"title":311,"path":312,"stem":313},"Resource Configuration","/docs/nuxt-auto/auto-admin/resource-configuration","0.docs/3.nuxt-auto/3.auto-admin/3.resource-configuration",{"title":315,"path":316,"stem":317},"Form Fields & Widgets","/docs/nuxt-auto/auto-admin/form-fields-widgets","0.docs/3.nuxt-auto/3.auto-admin/4.form-fields-widgets",{"title":319,"path":320,"stem":321},"Permissions","/docs/nuxt-auto/auto-admin/permissions","0.docs/3.nuxt-auto/3.auto-admin/5.permissions",{"title":323,"path":324,"stem":325},"Custom Pages","/docs/nuxt-auto/auto-admin/custom-pages","0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages",{"title":327,"path":328,"stem":329},"M2M Relationships","/docs/nuxt-auto/auto-admin/m2m-relationships","0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships",{"title":331,"path":332,"stem":333},"Custom Actions","/docs/nuxt-auto/auto-admin/custom-actions","0.docs/3.nuxt-auto/3.auto-admin/8.custom-actions",{"title":335,"path":336,"stem":337},"Composables","/docs/nuxt-auto/auto-admin/composables","0.docs/3.nuxt-auto/3.auto-admin/9.composables",[339,342,355,382,400,415,425],{"title":5,"path":340,"stem":341},"/docs/nuxt-protokit","0.docs/4.nuxt-protokit/index",{"title":185,"path":343,"stem":344,"children":345,"icon":354},"/docs/nuxt-protokit/getting-started","0.docs/4.nuxt-protokit/1.getting-started/1.index",[346,347,351],{"title":190,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"Core Concepts","/docs/nuxt-protokit/getting-started/concepts","0.docs/4.nuxt-protokit/1.getting-started/2.concepts",{"title":198,"path":352,"stem":353},"/docs/nuxt-protokit/getting-started/quick-start","0.docs/4.nuxt-protokit/1.getting-started/3.quick-start","i-lucide-rocket",{"title":356,"path":357,"stem":358,"children":359,"icon":381},"Schemas","/docs/nuxt-protokit/schemas","0.docs/4.nuxt-protokit/2.schemas/1.index",[360,361,365,369,373,377],{"title":5,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"Field Types","/docs/nuxt-protokit/schemas/fields","0.docs/4.nuxt-protokit/2.schemas/2.fields",{"title":366,"path":367,"stem":368},"Collections","/docs/nuxt-protokit/schemas/collections","0.docs/4.nuxt-protokit/2.schemas/3.collections",{"title":370,"path":371,"stem":372},"Derived & Computed","/docs/nuxt-protokit/schemas/derived-computed","0.docs/4.nuxt-protokit/2.schemas/4.derived-computed",{"title":374,"path":375,"stem":376},"Connections","/docs/nuxt-protokit/schemas/connections","0.docs/4.nuxt-protokit/2.schemas/5.connections",{"title":378,"path":379,"stem":380},"Visualizations & Layouts","/docs/nuxt-protokit/schemas/visualizations","0.docs/4.nuxt-protokit/2.schemas/6.visualizations","i-lucide-file-code",{"title":335,"path":383,"stem":384,"children":385,"icon":399},"/docs/nuxt-protokit/composables","0.docs/4.nuxt-protokit/3.composables/1.index",[386,387,391,395],{"title":5,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"usePrototype","/docs/nuxt-protokit/composables/use-prototype","0.docs/4.nuxt-protokit/3.composables/2.use-prototype",{"title":392,"path":393,"stem":394},"useProtoDoc","/docs/nuxt-protokit/composables/use-proto-doc","0.docs/4.nuxt-protokit/3.composables/3.use-proto-doc",{"title":396,"path":397,"stem":398},"useProtoCollection","/docs/nuxt-protokit/composables/use-proto-collection","0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection","i-lucide-layers",{"title":401,"path":402,"stem":403,"children":404,"icon":414},"Components","/docs/nuxt-protokit/components","0.docs/4.nuxt-protokit/4.components/1.index",[405,406,410],{"title":5,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"ProtoTool","/docs/nuxt-protokit/components/proto-tool","0.docs/4.nuxt-protokit/4.components/2.proto-tool",{"title":411,"path":412,"stem":413},"ProtoCrudModal","/docs/nuxt-protokit/components/proto-crud-modal","0.docs/4.nuxt-protokit/4.components/3.proto-crud-modal","i-lucide-puzzle",{"title":151,"path":416,"stem":417,"children":418,"icon":424},"/docs/nuxt-protokit/offline-first","0.docs/4.nuxt-protokit/5.offline-first/1.index",[419,420],{"title":151,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Corruption Recovery","/docs/nuxt-protokit/offline-first/corruption-recovery","0.docs/4.nuxt-protokit/5.offline-first/2.corruption-recovery","i-lucide-wifi-off",{"title":426,"icon":427,"path":428,"stem":429,"children":430},"Advanced","i-lucide-graduation-cap","/docs/nuxt-protokit/advanced","0.docs/4.nuxt-protokit/6.advanced/1.index",[431,432,436,440],{"title":5,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"Multi-Tool Apps","/docs/nuxt-protokit/advanced/building-a-toolkit","0.docs/4.nuxt-protokit/6.advanced/1.building-a-toolkit",{"title":437,"path":438,"stem":439},"Schema Patterns","/docs/nuxt-protokit/advanced/custom-schema-patterns","0.docs/4.nuxt-protokit/6.advanced/2.custom-schema-patterns",{"title":441,"path":442,"stem":443},"Custom Fields & Viz","/docs/nuxt-protokit/advanced/extensibility","0.docs/4.nuxt-protokit/6.advanced/3.extensibility",{"page":445,"fallbackPage":4577},{"id":446,"title":323,"body":447,"description":457,"extension":4576,"links":4577,"meta":4578,"navigation":4577,"ogImage":4577,"path":324,"seo":4579,"stem":325,"__hash__":4580},"nuxt_auto/0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages.md",{"type":448,"value":449,"toc":4549},"minimark",[450,454,458,462,465,484,488,496,774,778,782,785,820,823,826,855,858,861,892,895,926,929,932,960,969,972,975,1006,1009,1012,1015,1042,1046,1053,1073,2038,2049,2053,2057,2060,2210,2217,2221,2224,2311,2314,2357,2367,2371,2378,2427,2441,2445,2448,2462,2466,2469,2626,2630,2770,3404,3408,3557,4301,4305,4355,4359,4362,4523,4527,4545],[451,452,323],"h1",{"id":453},"custom-pages",[455,456,457],"p",{},"Add custom pages to your admin panel for features beyond standard CRUD operations.",[459,460,5],"h2",{"id":461},"overview",[455,463,464],{},"Custom pages allow you to add specialized admin functionality like:",[466,467,468,472,475,478,481],"ul",{},[469,470,471],"li",{},"Analytics dashboards",[469,473,474],{},"Report generators",[469,476,477],{},"Settings pages",[469,479,480],{},"Custom workflows",[469,482,483],{},"Data import/export interfaces",[459,485,487],{"id":486},"configuration","Configuration",[455,489,490,491,495],{},"Add custom pages in your ",[492,493,494],"code",{},"nuxt.config.ts",":",[497,498,503],"pre",{"className":499,"code":500,"language":501,"meta":502,"style":502},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  autoAdmin: {\n    customPages: [\n      {\n        name: 'analytics',\n        label: 'Analytics',\n        path: 'analytics',\n        icon: 'i-heroicons-chart-bar',\n        group: 'Reports',\n        order: 1,\n      },\n      {\n        name: 'settings',\n        label: 'Settings',\n        path: 'settings',\n        icon: 'i-heroicons-cog-6-tooth',\n        order: 999,\n      },\n    ],\n  },\n})\n","typescript","",[492,504,505,529,541,552,558,579,596,612,629,646,660,666,671,687,703,718,734,746,751,759,765],{"__ignoreMap":502},[506,507,510,514,517,521,525],"span",{"class":508,"line":509},"line",1,[506,511,513],{"class":512},"s7zQu","export",[506,515,516],{"class":512}," default",[506,518,520],{"class":519},"s2Zo4"," defineNuxtConfig",[506,522,524],{"class":523},"sTEyZ","(",[506,526,528],{"class":527},"sMK4o","{\n",[506,530,532,536,538],{"class":508,"line":531},2,[506,533,535],{"class":534},"swJcz","  autoAdmin",[506,537,495],{"class":527},[506,539,540],{"class":527}," {\n",[506,542,544,547,549],{"class":508,"line":543},3,[506,545,546],{"class":534},"    customPages",[506,548,495],{"class":527},[506,550,551],{"class":523}," [\n",[506,553,555],{"class":508,"line":554},4,[506,556,557],{"class":527},"      {\n",[506,559,561,564,566,569,573,576],{"class":508,"line":560},5,[506,562,563],{"class":534},"        name",[506,565,495],{"class":527},[506,567,568],{"class":527}," '",[506,570,572],{"class":571},"sfazB","analytics",[506,574,575],{"class":527},"'",[506,577,578],{"class":527},",\n",[506,580,582,585,587,589,592,594],{"class":508,"line":581},6,[506,583,584],{"class":534},"        label",[506,586,495],{"class":527},[506,588,568],{"class":527},[506,590,591],{"class":571},"Analytics",[506,593,575],{"class":527},[506,595,578],{"class":527},[506,597,599,602,604,606,608,610],{"class":508,"line":598},7,[506,600,601],{"class":534},"        path",[506,603,495],{"class":527},[506,605,568],{"class":527},[506,607,572],{"class":571},[506,609,575],{"class":527},[506,611,578],{"class":527},[506,613,615,618,620,622,625,627],{"class":508,"line":614},8,[506,616,617],{"class":534},"        icon",[506,619,495],{"class":527},[506,621,568],{"class":527},[506,623,624],{"class":571},"i-heroicons-chart-bar",[506,626,575],{"class":527},[506,628,578],{"class":527},[506,630,632,635,637,639,642,644],{"class":508,"line":631},9,[506,633,634],{"class":534},"        group",[506,636,495],{"class":527},[506,638,568],{"class":527},[506,640,641],{"class":571},"Reports",[506,643,575],{"class":527},[506,645,578],{"class":527},[506,647,649,652,654,658],{"class":508,"line":648},10,[506,650,651],{"class":534},"        order",[506,653,495],{"class":527},[506,655,657],{"class":656},"sbssI"," 1",[506,659,578],{"class":527},[506,661,663],{"class":508,"line":662},11,[506,664,665],{"class":527},"      },\n",[506,667,669],{"class":508,"line":668},12,[506,670,557],{"class":527},[506,672,674,676,678,680,683,685],{"class":508,"line":673},13,[506,675,563],{"class":534},[506,677,495],{"class":527},[506,679,568],{"class":527},[506,681,682],{"class":571},"settings",[506,684,575],{"class":527},[506,686,578],{"class":527},[506,688,690,692,694,696,699,701],{"class":508,"line":689},14,[506,691,584],{"class":534},[506,693,495],{"class":527},[506,695,568],{"class":527},[506,697,698],{"class":571},"Settings",[506,700,575],{"class":527},[506,702,578],{"class":527},[506,704,706,708,710,712,714,716],{"class":508,"line":705},15,[506,707,601],{"class":534},[506,709,495],{"class":527},[506,711,568],{"class":527},[506,713,682],{"class":571},[506,715,575],{"class":527},[506,717,578],{"class":527},[506,719,721,723,725,727,730,732],{"class":508,"line":720},16,[506,722,617],{"class":534},[506,724,495],{"class":527},[506,726,568],{"class":527},[506,728,729],{"class":571},"i-heroicons-cog-6-tooth",[506,731,575],{"class":527},[506,733,578],{"class":527},[506,735,737,739,741,744],{"class":508,"line":736},17,[506,738,651],{"class":534},[506,740,495],{"class":527},[506,742,743],{"class":656}," 999",[506,745,578],{"class":527},[506,747,749],{"class":508,"line":748},18,[506,750,665],{"class":527},[506,752,754,757],{"class":508,"line":753},19,[506,755,756],{"class":523},"    ]",[506,758,578],{"class":527},[506,760,762],{"class":508,"line":761},20,[506,763,764],{"class":527},"  },\n",[506,766,768,771],{"class":508,"line":767},21,[506,769,770],{"class":527},"}",[506,772,773],{"class":523},")\n",[459,775,777],{"id":776},"page-options","Page Options",[779,780,781],"h3",{"id":781},"name",[455,783,784],{},"Unique identifier for the page:",[497,786,788],{"className":499,"code":787,"language":501,"meta":502,"style":502},"{\n  name: 'analytics',  // Must be unique\n}\n",[492,789,790,794,815],{"__ignoreMap":502},[506,791,792],{"class":508,"line":509},[506,793,528],{"class":527},[506,795,796,800,802,804,806,808,811],{"class":508,"line":531},[506,797,799],{"class":798},"sBMFI","  name",[506,801,495],{"class":527},[506,803,568],{"class":527},[506,805,572],{"class":571},[506,807,575],{"class":527},[506,809,810],{"class":527},",",[506,812,814],{"class":813},"sHwdD","  // Must be unique\n",[506,816,817],{"class":508,"line":543},[506,818,819],{"class":527},"}\n",[779,821,822],{"id":822},"label",[455,824,825],{},"Display text shown in the sidebar:",[497,827,829],{"className":499,"code":828,"language":501,"meta":502,"style":502},"{\n  label: 'Analytics Dashboard',\n}\n",[492,830,831,835,851],{"__ignoreMap":502},[506,832,833],{"class":508,"line":509},[506,834,528],{"class":527},[506,836,837,840,842,844,847,849],{"class":508,"line":531},[506,838,839],{"class":798},"  label",[506,841,495],{"class":527},[506,843,568],{"class":527},[506,845,846],{"class":571},"Analytics Dashboard",[506,848,575],{"class":527},[506,850,578],{"class":527},[506,852,853],{"class":508,"line":543},[506,854,819],{"class":527},[779,856,857],{"id":857},"path",[455,859,860],{},"URL path relative to admin prefix:",[497,862,864],{"className":499,"code":863,"language":501,"meta":502,"style":502},"{\n  path: 'analytics',  // Accessible at /admin/analytics\n}\n",[492,865,866,870,888],{"__ignoreMap":502},[506,867,868],{"class":508,"line":509},[506,869,528],{"class":527},[506,871,872,875,877,879,881,883,885],{"class":508,"line":531},[506,873,874],{"class":798},"  path",[506,876,495],{"class":527},[506,878,568],{"class":527},[506,880,572],{"class":571},[506,882,575],{"class":527},[506,884,810],{"class":527},[506,886,887],{"class":813},"  // Accessible at /admin/analytics\n",[506,889,890],{"class":508,"line":543},[506,891,819],{"class":527},[455,893,894],{},"For absolute paths, use a leading slash:",[497,896,898],{"className":499,"code":897,"language":501,"meta":502,"style":502},"{\n  path: '/custom-admin/analytics',  // Absolute path\n}\n",[492,899,900,904,922],{"__ignoreMap":502},[506,901,902],{"class":508,"line":509},[506,903,528],{"class":527},[506,905,906,908,910,912,915,917,919],{"class":508,"line":531},[506,907,874],{"class":798},[506,909,495],{"class":527},[506,911,568],{"class":527},[506,913,914],{"class":571},"/custom-admin/analytics",[506,916,575],{"class":527},[506,918,810],{"class":527},[506,920,921],{"class":813},"  // Absolute path\n",[506,923,924],{"class":508,"line":543},[506,925,819],{"class":527},[779,927,928],{"id":928},"icon",[455,930,931],{},"Heroicon name for sidebar:",[497,933,935],{"className":499,"code":934,"language":501,"meta":502,"style":502},"{\n  icon: 'i-heroicons-chart-bar',\n}\n",[492,936,937,941,956],{"__ignoreMap":502},[506,938,939],{"class":508,"line":509},[506,940,528],{"class":527},[506,942,943,946,948,950,952,954],{"class":508,"line":531},[506,944,945],{"class":798},"  icon",[506,947,495],{"class":527},[506,949,568],{"class":527},[506,951,624],{"class":571},[506,953,575],{"class":527},[506,955,578],{"class":527},[506,957,958],{"class":508,"line":543},[506,959,819],{"class":527},[455,961,962,963],{},"Browse icons at: ",[964,965,966],"a",{"href":966,"rel":967},"https://heroicons.com/",[968],"nofollow",[779,970,971],{"id":971},"group",[455,973,974],{},"Organize custom pages into sidebar groups:",[497,976,978],{"className":499,"code":977,"language":501,"meta":502,"style":502},"{\n  group: 'Reports',  // Grouped with other report pages\n}\n",[492,979,980,984,1002],{"__ignoreMap":502},[506,981,982],{"class":508,"line":509},[506,983,528],{"class":527},[506,985,986,989,991,993,995,997,999],{"class":508,"line":531},[506,987,988],{"class":798},"  group",[506,990,495],{"class":527},[506,992,568],{"class":527},[506,994,641],{"class":571},[506,996,575],{"class":527},[506,998,810],{"class":527},[506,1000,1001],{"class":813},"  // Grouped with other report pages\n",[506,1003,1004],{"class":508,"line":543},[506,1005,819],{"class":527},[455,1007,1008],{},"Pages without a group appear in the ungrouped section.",[779,1010,1011],{"id":1011},"order",[455,1013,1014],{},"Control display order within groups:",[497,1016,1018],{"className":499,"code":1017,"language":501,"meta":502,"style":502},"{\n  order: 1,  // Lower numbers appear first\n}\n",[492,1019,1020,1024,1038],{"__ignoreMap":502},[506,1021,1022],{"class":508,"line":509},[506,1023,528],{"class":527},[506,1025,1026,1029,1031,1033,1035],{"class":508,"line":531},[506,1027,1028],{"class":798},"  order",[506,1030,495],{"class":527},[506,1032,657],{"class":656},[506,1034,810],{"class":527},[506,1036,1037],{"class":813},"  // Lower numbers appear first\n",[506,1039,1040],{"class":508,"line":543},[506,1041,819],{"class":527},[459,1043,1045],{"id":1044},"creating-page-components","Creating Page Components",[455,1047,1048,1049,1052],{},"Create a Vue component in your Nuxt ",[492,1050,1051],{},"pages"," directory:",[497,1054,1058],{"className":1055,"code":1056,"language":1057,"meta":502,"style":502},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# For path: 'analytics'\ntouch app/pages/admin/analytics.vue\n","bash",[492,1059,1060,1065],{"__ignoreMap":502},[506,1061,1062],{"class":508,"line":509},[506,1063,1064],{"class":813},"# For path: 'analytics'\n",[506,1066,1067,1070],{"class":508,"line":531},[506,1068,1069],{"class":798},"touch",[506,1071,1072],{"class":571}," app/pages/admin/analytics.vue\n",[497,1074,1078],{"className":1075,"code":1076,"language":1077,"meta":502,"style":502},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!-- app/pages/admin/analytics.vue -->\n\u003Ctemplate>\n  \u003Cdiv class=\"space-y-4\">\n    \u003Cdiv>\n      \u003Ch1 class=\"text-2xl font-semibold text-gray-900 dark:text-white\">\n        Analytics Dashboard\n      \u003C/h1>\n      \u003Cp class=\"text-sm text-gray-500 dark:text-gray-400 mt-1\">\n        View your site statistics\n      \u003C/p>\n    \u003C/div>\n\n    \u003Cdiv class=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n      \u003CUCard>\n        \u003Cdiv class=\"text-center\">\n          \u003Cdiv class=\"text-3xl font-bold\">{{ stats.users }}\u003C/div>\n          \u003Cdiv class=\"text-sm text-gray-500\">Total Users\u003C/div>\n        \u003C/div>\n      \u003C/UCard>\n\n      \u003CUCard>\n        \u003Cdiv class=\"text-center\">\n          \u003Cdiv class=\"text-3xl font-bold\">{{ stats.posts }}\u003C/div>\n          \u003Cdiv class=\"text-sm text-gray-500\">Total Posts\u003C/div>\n        \u003C/div>\n      \u003C/UCard>\n\n      \u003CUCard>\n        \u003Cdiv class=\"text-center\">\n          \u003Cdiv class=\"text-3xl font-bold\">{{ stats.comments }}\u003C/div>\n          \u003Cdiv class=\"text-sm text-gray-500\">Total Comments\u003C/div>\n        \u003C/div>\n      \u003C/UCard>\n    \u003C/div>\n  \u003C/div>\n\u003C/template>\n\n\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  layout: 'admin',  // Use admin layout\n})\n\nconst stats = ref({\n  users: 0,\n  posts: 0,\n  comments: 0,\n})\n\nonMounted(async () => {\n  // Fetch stats from API\n  const [users, posts, comments] = await Promise.all([\n    $fetch('/api/users', { query: { aggregate: 'count' } }),\n    $fetch('/api/posts', { query: { aggregate: 'count' } }),\n    $fetch('/api/comments', { query: { aggregate: 'count' } }),\n  ])\n\n  stats.value = {\n    users: users.meta.aggregates.count,\n    posts: posts.meta.aggregates.count,\n    comments: comments.meta.aggregates.count,\n  }\n})\n\u003C/script>\n","vue",[492,1079,1080,1085,1096,1121,1130,1150,1155,1164,1183,1188,1196,1205,1211,1230,1239,1259,1290,1318,1327,1335,1339,1347,1366,1394,1422,1431,1440,1445,1454,1473,1501,1529,1538,1547,1556,1566,1575,1580,1605,1615,1635,1642,1647,1665,1678,1690,1702,1709,1714,1733,1739,1782,1831,1873,1915,1921,1926,1941,1968,1992,2016,2022,2029],{"__ignoreMap":502},[506,1081,1082],{"class":508,"line":509},[506,1083,1084],{"class":813},"\u003C!-- app/pages/admin/analytics.vue -->\n",[506,1086,1087,1090,1093],{"class":508,"line":531},[506,1088,1089],{"class":527},"\u003C",[506,1091,1092],{"class":534},"template",[506,1094,1095],{"class":527},">\n",[506,1097,1098,1101,1104,1108,1111,1114,1117,1119],{"class":508,"line":543},[506,1099,1100],{"class":527},"  \u003C",[506,1102,1103],{"class":534},"div",[506,1105,1107],{"class":1106},"spNyl"," class",[506,1109,1110],{"class":527},"=",[506,1112,1113],{"class":527},"\"",[506,1115,1116],{"class":571},"space-y-4",[506,1118,1113],{"class":527},[506,1120,1095],{"class":527},[506,1122,1123,1126,1128],{"class":508,"line":554},[506,1124,1125],{"class":527},"    \u003C",[506,1127,1103],{"class":534},[506,1129,1095],{"class":527},[506,1131,1132,1135,1137,1139,1141,1143,1146,1148],{"class":508,"line":560},[506,1133,1134],{"class":527},"      \u003C",[506,1136,451],{"class":534},[506,1138,1107],{"class":1106},[506,1140,1110],{"class":527},[506,1142,1113],{"class":527},[506,1144,1145],{"class":571},"text-2xl font-semibold text-gray-900 dark:text-white",[506,1147,1113],{"class":527},[506,1149,1095],{"class":527},[506,1151,1152],{"class":508,"line":581},[506,1153,1154],{"class":523},"        Analytics Dashboard\n",[506,1156,1157,1160,1162],{"class":508,"line":598},[506,1158,1159],{"class":527},"      \u003C/",[506,1161,451],{"class":534},[506,1163,1095],{"class":527},[506,1165,1166,1168,1170,1172,1174,1176,1179,1181],{"class":508,"line":614},[506,1167,1134],{"class":527},[506,1169,455],{"class":534},[506,1171,1107],{"class":1106},[506,1173,1110],{"class":527},[506,1175,1113],{"class":527},[506,1177,1178],{"class":571},"text-sm text-gray-500 dark:text-gray-400 mt-1",[506,1180,1113],{"class":527},[506,1182,1095],{"class":527},[506,1184,1185],{"class":508,"line":631},[506,1186,1187],{"class":523},"        View your site statistics\n",[506,1189,1190,1192,1194],{"class":508,"line":648},[506,1191,1159],{"class":527},[506,1193,455],{"class":534},[506,1195,1095],{"class":527},[506,1197,1198,1201,1203],{"class":508,"line":662},[506,1199,1200],{"class":527},"    \u003C/",[506,1202,1103],{"class":534},[506,1204,1095],{"class":527},[506,1206,1207],{"class":508,"line":668},[506,1208,1210],{"emptyLinePlaceholder":1209},true,"\n",[506,1212,1213,1215,1217,1219,1221,1223,1226,1228],{"class":508,"line":673},[506,1214,1125],{"class":527},[506,1216,1103],{"class":534},[506,1218,1107],{"class":1106},[506,1220,1110],{"class":527},[506,1222,1113],{"class":527},[506,1224,1225],{"class":571},"grid grid-cols-1 md:grid-cols-3 gap-4",[506,1227,1113],{"class":527},[506,1229,1095],{"class":527},[506,1231,1232,1234,1237],{"class":508,"line":689},[506,1233,1134],{"class":527},[506,1235,1236],{"class":534},"UCard",[506,1238,1095],{"class":527},[506,1240,1241,1244,1246,1248,1250,1252,1255,1257],{"class":508,"line":705},[506,1242,1243],{"class":527},"        \u003C",[506,1245,1103],{"class":534},[506,1247,1107],{"class":1106},[506,1249,1110],{"class":527},[506,1251,1113],{"class":527},[506,1253,1254],{"class":571},"text-center",[506,1256,1113],{"class":527},[506,1258,1095],{"class":527},[506,1260,1261,1264,1266,1268,1270,1272,1275,1277,1280,1283,1286,1288],{"class":508,"line":720},[506,1262,1263],{"class":527},"          \u003C",[506,1265,1103],{"class":534},[506,1267,1107],{"class":1106},[506,1269,1110],{"class":527},[506,1271,1113],{"class":527},[506,1273,1274],{"class":571},"text-3xl font-bold",[506,1276,1113],{"class":527},[506,1278,1279],{"class":527},">",[506,1281,1282],{"class":523},"{{ stats.users }}",[506,1284,1285],{"class":527},"\u003C/",[506,1287,1103],{"class":534},[506,1289,1095],{"class":527},[506,1291,1292,1294,1296,1298,1300,1302,1305,1307,1309,1312,1314,1316],{"class":508,"line":736},[506,1293,1263],{"class":527},[506,1295,1103],{"class":534},[506,1297,1107],{"class":1106},[506,1299,1110],{"class":527},[506,1301,1113],{"class":527},[506,1303,1304],{"class":571},"text-sm text-gray-500",[506,1306,1113],{"class":527},[506,1308,1279],{"class":527},[506,1310,1311],{"class":523},"Total Users",[506,1313,1285],{"class":527},[506,1315,1103],{"class":534},[506,1317,1095],{"class":527},[506,1319,1320,1323,1325],{"class":508,"line":748},[506,1321,1322],{"class":527},"        \u003C/",[506,1324,1103],{"class":534},[506,1326,1095],{"class":527},[506,1328,1329,1331,1333],{"class":508,"line":753},[506,1330,1159],{"class":527},[506,1332,1236],{"class":534},[506,1334,1095],{"class":527},[506,1336,1337],{"class":508,"line":761},[506,1338,1210],{"emptyLinePlaceholder":1209},[506,1340,1341,1343,1345],{"class":508,"line":767},[506,1342,1134],{"class":527},[506,1344,1236],{"class":534},[506,1346,1095],{"class":527},[506,1348,1350,1352,1354,1356,1358,1360,1362,1364],{"class":508,"line":1349},22,[506,1351,1243],{"class":527},[506,1353,1103],{"class":534},[506,1355,1107],{"class":1106},[506,1357,1110],{"class":527},[506,1359,1113],{"class":527},[506,1361,1254],{"class":571},[506,1363,1113],{"class":527},[506,1365,1095],{"class":527},[506,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1388,1390,1392],{"class":508,"line":1368},23,[506,1370,1263],{"class":527},[506,1372,1103],{"class":534},[506,1374,1107],{"class":1106},[506,1376,1110],{"class":527},[506,1378,1113],{"class":527},[506,1380,1274],{"class":571},[506,1382,1113],{"class":527},[506,1384,1279],{"class":527},[506,1386,1387],{"class":523},"{{ stats.posts }}",[506,1389,1285],{"class":527},[506,1391,1103],{"class":534},[506,1393,1095],{"class":527},[506,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1416,1418,1420],{"class":508,"line":1396},24,[506,1398,1263],{"class":527},[506,1400,1103],{"class":534},[506,1402,1107],{"class":1106},[506,1404,1110],{"class":527},[506,1406,1113],{"class":527},[506,1408,1304],{"class":571},[506,1410,1113],{"class":527},[506,1412,1279],{"class":527},[506,1414,1415],{"class":523},"Total Posts",[506,1417,1285],{"class":527},[506,1419,1103],{"class":534},[506,1421,1095],{"class":527},[506,1423,1425,1427,1429],{"class":508,"line":1424},25,[506,1426,1322],{"class":527},[506,1428,1103],{"class":534},[506,1430,1095],{"class":527},[506,1432,1434,1436,1438],{"class":508,"line":1433},26,[506,1435,1159],{"class":527},[506,1437,1236],{"class":534},[506,1439,1095],{"class":527},[506,1441,1443],{"class":508,"line":1442},27,[506,1444,1210],{"emptyLinePlaceholder":1209},[506,1446,1448,1450,1452],{"class":508,"line":1447},28,[506,1449,1134],{"class":527},[506,1451,1236],{"class":534},[506,1453,1095],{"class":527},[506,1455,1457,1459,1461,1463,1465,1467,1469,1471],{"class":508,"line":1456},29,[506,1458,1243],{"class":527},[506,1460,1103],{"class":534},[506,1462,1107],{"class":1106},[506,1464,1110],{"class":527},[506,1466,1113],{"class":527},[506,1468,1254],{"class":571},[506,1470,1113],{"class":527},[506,1472,1095],{"class":527},[506,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1495,1497,1499],{"class":508,"line":1475},30,[506,1477,1263],{"class":527},[506,1479,1103],{"class":534},[506,1481,1107],{"class":1106},[506,1483,1110],{"class":527},[506,1485,1113],{"class":527},[506,1487,1274],{"class":571},[506,1489,1113],{"class":527},[506,1491,1279],{"class":527},[506,1493,1494],{"class":523},"{{ stats.comments }}",[506,1496,1285],{"class":527},[506,1498,1103],{"class":534},[506,1500,1095],{"class":527},[506,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1523,1525,1527],{"class":508,"line":1503},31,[506,1505,1263],{"class":527},[506,1507,1103],{"class":534},[506,1509,1107],{"class":1106},[506,1511,1110],{"class":527},[506,1513,1113],{"class":527},[506,1515,1304],{"class":571},[506,1517,1113],{"class":527},[506,1519,1279],{"class":527},[506,1521,1522],{"class":523},"Total Comments",[506,1524,1285],{"class":527},[506,1526,1103],{"class":534},[506,1528,1095],{"class":527},[506,1530,1532,1534,1536],{"class":508,"line":1531},32,[506,1533,1322],{"class":527},[506,1535,1103],{"class":534},[506,1537,1095],{"class":527},[506,1539,1541,1543,1545],{"class":508,"line":1540},33,[506,1542,1159],{"class":527},[506,1544,1236],{"class":534},[506,1546,1095],{"class":527},[506,1548,1550,1552,1554],{"class":508,"line":1549},34,[506,1551,1200],{"class":527},[506,1553,1103],{"class":534},[506,1555,1095],{"class":527},[506,1557,1559,1562,1564],{"class":508,"line":1558},35,[506,1560,1561],{"class":527},"  \u003C/",[506,1563,1103],{"class":534},[506,1565,1095],{"class":527},[506,1567,1569,1571,1573],{"class":508,"line":1568},36,[506,1570,1285],{"class":527},[506,1572,1092],{"class":534},[506,1574,1095],{"class":527},[506,1576,1578],{"class":508,"line":1577},37,[506,1579,1210],{"emptyLinePlaceholder":1209},[506,1581,1583,1585,1588,1591,1594,1596,1598,1601,1603],{"class":508,"line":1582},38,[506,1584,1089],{"class":527},[506,1586,1587],{"class":534},"script",[506,1589,1590],{"class":1106}," setup",[506,1592,1593],{"class":1106}," lang",[506,1595,1110],{"class":527},[506,1597,1113],{"class":527},[506,1599,1600],{"class":571},"ts",[506,1602,1113],{"class":527},[506,1604,1095],{"class":527},[506,1606,1608,1611,1613],{"class":508,"line":1607},39,[506,1609,1610],{"class":519},"definePageMeta",[506,1612,524],{"class":523},[506,1614,528],{"class":527},[506,1616,1618,1621,1623,1625,1628,1630,1632],{"class":508,"line":1617},40,[506,1619,1620],{"class":534},"  layout",[506,1622,495],{"class":527},[506,1624,568],{"class":527},[506,1626,1627],{"class":571},"admin",[506,1629,575],{"class":527},[506,1631,810],{"class":527},[506,1633,1634],{"class":813},"  // Use admin layout\n",[506,1636,1638,1640],{"class":508,"line":1637},41,[506,1639,770],{"class":527},[506,1641,773],{"class":523},[506,1643,1645],{"class":508,"line":1644},42,[506,1646,1210],{"emptyLinePlaceholder":1209},[506,1648,1650,1653,1656,1658,1661,1663],{"class":508,"line":1649},43,[506,1651,1652],{"class":1106},"const",[506,1654,1655],{"class":523}," stats ",[506,1657,1110],{"class":527},[506,1659,1660],{"class":519}," ref",[506,1662,524],{"class":523},[506,1664,528],{"class":527},[506,1666,1668,1671,1673,1676],{"class":508,"line":1667},44,[506,1669,1670],{"class":534},"  users",[506,1672,495],{"class":527},[506,1674,1675],{"class":656}," 0",[506,1677,578],{"class":527},[506,1679,1681,1684,1686,1688],{"class":508,"line":1680},45,[506,1682,1683],{"class":534},"  posts",[506,1685,495],{"class":527},[506,1687,1675],{"class":656},[506,1689,578],{"class":527},[506,1691,1693,1696,1698,1700],{"class":508,"line":1692},46,[506,1694,1695],{"class":534},"  comments",[506,1697,495],{"class":527},[506,1699,1675],{"class":656},[506,1701,578],{"class":527},[506,1703,1705,1707],{"class":508,"line":1704},47,[506,1706,770],{"class":527},[506,1708,773],{"class":523},[506,1710,1712],{"class":508,"line":1711},48,[506,1713,1210],{"emptyLinePlaceholder":1209},[506,1715,1717,1720,1722,1725,1728,1731],{"class":508,"line":1716},49,[506,1718,1719],{"class":519},"onMounted",[506,1721,524],{"class":523},[506,1723,1724],{"class":1106},"async",[506,1726,1727],{"class":527}," ()",[506,1729,1730],{"class":1106}," =>",[506,1732,540],{"class":527},[506,1734,1736],{"class":508,"line":1735},50,[506,1737,1738],{"class":813},"  // Fetch stats from API\n",[506,1740,1742,1745,1748,1751,1753,1756,1758,1761,1764,1767,1770,1773,1776,1779],{"class":508,"line":1741},51,[506,1743,1744],{"class":1106},"  const",[506,1746,1747],{"class":527}," [",[506,1749,1750],{"class":523},"users",[506,1752,810],{"class":527},[506,1754,1755],{"class":523}," posts",[506,1757,810],{"class":527},[506,1759,1760],{"class":523}," comments",[506,1762,1763],{"class":527},"]",[506,1765,1766],{"class":527}," =",[506,1768,1769],{"class":512}," await",[506,1771,1772],{"class":798}," Promise",[506,1774,1775],{"class":527},".",[506,1777,1778],{"class":519},"all",[506,1780,1781],{"class":534},"([\n",[506,1783,1785,1788,1790,1792,1795,1797,1799,1802,1805,1807,1809,1812,1814,1816,1819,1821,1824,1826,1829],{"class":508,"line":1784},52,[506,1786,1787],{"class":519},"    $fetch",[506,1789,524],{"class":534},[506,1791,575],{"class":527},[506,1793,1794],{"class":571},"/api/users",[506,1796,575],{"class":527},[506,1798,810],{"class":527},[506,1800,1801],{"class":527}," {",[506,1803,1804],{"class":534}," query",[506,1806,495],{"class":527},[506,1808,1801],{"class":527},[506,1810,1811],{"class":534}," aggregate",[506,1813,495],{"class":527},[506,1815,568],{"class":527},[506,1817,1818],{"class":571},"count",[506,1820,575],{"class":527},[506,1822,1823],{"class":527}," }",[506,1825,1823],{"class":527},[506,1827,1828],{"class":534},")",[506,1830,578],{"class":527},[506,1832,1834,1836,1838,1840,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871],{"class":508,"line":1833},53,[506,1835,1787],{"class":519},[506,1837,524],{"class":534},[506,1839,575],{"class":527},[506,1841,1842],{"class":571},"/api/posts",[506,1844,575],{"class":527},[506,1846,810],{"class":527},[506,1848,1801],{"class":527},[506,1850,1804],{"class":534},[506,1852,495],{"class":527},[506,1854,1801],{"class":527},[506,1856,1811],{"class":534},[506,1858,495],{"class":527},[506,1860,568],{"class":527},[506,1862,1818],{"class":571},[506,1864,575],{"class":527},[506,1866,1823],{"class":527},[506,1868,1823],{"class":527},[506,1870,1828],{"class":534},[506,1872,578],{"class":527},[506,1874,1876,1878,1880,1882,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913],{"class":508,"line":1875},54,[506,1877,1787],{"class":519},[506,1879,524],{"class":534},[506,1881,575],{"class":527},[506,1883,1884],{"class":571},"/api/comments",[506,1886,575],{"class":527},[506,1888,810],{"class":527},[506,1890,1801],{"class":527},[506,1892,1804],{"class":534},[506,1894,495],{"class":527},[506,1896,1801],{"class":527},[506,1898,1811],{"class":534},[506,1900,495],{"class":527},[506,1902,568],{"class":527},[506,1904,1818],{"class":571},[506,1906,575],{"class":527},[506,1908,1823],{"class":527},[506,1910,1823],{"class":527},[506,1912,1828],{"class":534},[506,1914,578],{"class":527},[506,1916,1918],{"class":508,"line":1917},55,[506,1919,1920],{"class":534},"  ])\n",[506,1922,1924],{"class":508,"line":1923},56,[506,1925,1210],{"emptyLinePlaceholder":1209},[506,1927,1929,1932,1934,1937,1939],{"class":508,"line":1928},57,[506,1930,1931],{"class":523},"  stats",[506,1933,1775],{"class":527},[506,1935,1936],{"class":523},"value",[506,1938,1766],{"class":527},[506,1940,540],{"class":527},[506,1942,1944,1947,1949,1952,1954,1957,1959,1962,1964,1966],{"class":508,"line":1943},58,[506,1945,1946],{"class":534},"    users",[506,1948,495],{"class":527},[506,1950,1951],{"class":523}," users",[506,1953,1775],{"class":527},[506,1955,1956],{"class":523},"meta",[506,1958,1775],{"class":527},[506,1960,1961],{"class":523},"aggregates",[506,1963,1775],{"class":527},[506,1965,1818],{"class":523},[506,1967,578],{"class":527},[506,1969,1971,1974,1976,1978,1980,1982,1984,1986,1988,1990],{"class":508,"line":1970},59,[506,1972,1973],{"class":534},"    posts",[506,1975,495],{"class":527},[506,1977,1755],{"class":523},[506,1979,1775],{"class":527},[506,1981,1956],{"class":523},[506,1983,1775],{"class":527},[506,1985,1961],{"class":523},[506,1987,1775],{"class":527},[506,1989,1818],{"class":523},[506,1991,578],{"class":527},[506,1993,1995,1998,2000,2002,2004,2006,2008,2010,2012,2014],{"class":508,"line":1994},60,[506,1996,1997],{"class":534},"    comments",[506,1999,495],{"class":527},[506,2001,1760],{"class":523},[506,2003,1775],{"class":527},[506,2005,1956],{"class":523},[506,2007,1775],{"class":527},[506,2009,1961],{"class":523},[506,2011,1775],{"class":527},[506,2013,1818],{"class":523},[506,2015,578],{"class":527},[506,2017,2019],{"class":508,"line":2018},61,[506,2020,2021],{"class":527},"  }\n",[506,2023,2025,2027],{"class":508,"line":2024},62,[506,2026,770],{"class":527},[506,2028,773],{"class":523},[506,2030,2032,2034,2036],{"class":508,"line":2031},63,[506,2033,1285],{"class":527},[506,2035,1587],{"class":534},[506,2037,1095],{"class":527},[455,2039,2040,2044,2045,2048],{},[2041,2042,2043],"strong",{},"Important:"," Always include ",[492,2046,2047],{},"definePageMeta({ layout: 'admin' })"," to use the admin layout.",[459,2050,2052],{"id":2051},"permission-control","Permission Control",[779,2054,2056],{"id":2055},"using-canaccess-function","Using canAccess Function",[455,2058,2059],{},"For complex permission logic:",[497,2061,2063],{"className":499,"code":2062,"language":501,"meta":502,"style":502},"{\n  name: 'analytics',\n  label: 'Analytics',\n  path: 'analytics',\n  icon: 'i-heroicons-chart-bar',\n  canAccess: async (user) => {\n    // Check if user has permission\n    return user?.role === 'admin' || user?.permissions?.includes('analytics.view')\n  },\n}\n",[492,2064,2065,2069,2083,2097,2111,2125,2148,2153,2202,2206],{"__ignoreMap":502},[506,2066,2067],{"class":508,"line":509},[506,2068,528],{"class":527},[506,2070,2071,2073,2075,2077,2079,2081],{"class":508,"line":531},[506,2072,799],{"class":798},[506,2074,495],{"class":527},[506,2076,568],{"class":527},[506,2078,572],{"class":571},[506,2080,575],{"class":527},[506,2082,578],{"class":527},[506,2084,2085,2087,2089,2091,2093,2095],{"class":508,"line":543},[506,2086,839],{"class":798},[506,2088,495],{"class":527},[506,2090,568],{"class":527},[506,2092,591],{"class":571},[506,2094,575],{"class":527},[506,2096,578],{"class":527},[506,2098,2099,2101,2103,2105,2107,2109],{"class":508,"line":554},[506,2100,874],{"class":798},[506,2102,495],{"class":527},[506,2104,568],{"class":527},[506,2106,572],{"class":571},[506,2108,575],{"class":527},[506,2110,578],{"class":527},[506,2112,2113,2115,2117,2119,2121,2123],{"class":508,"line":560},[506,2114,945],{"class":798},[506,2116,495],{"class":527},[506,2118,568],{"class":527},[506,2120,624],{"class":571},[506,2122,575],{"class":527},[506,2124,578],{"class":527},[506,2126,2127,2130,2132,2135,2138,2142,2144,2146],{"class":508,"line":581},[506,2128,2129],{"class":798},"  canAccess",[506,2131,495],{"class":527},[506,2133,2134],{"class":1106}," async",[506,2136,2137],{"class":527}," (",[506,2139,2141],{"class":2140},"sHdIc","user",[506,2143,1828],{"class":527},[506,2145,1730],{"class":1106},[506,2147,540],{"class":527},[506,2149,2150],{"class":508,"line":598},[506,2151,2152],{"class":813},"    // Check if user has permission\n",[506,2154,2155,2158,2161,2164,2167,2170,2172,2174,2176,2179,2181,2183,2186,2188,2191,2193,2195,2198,2200],{"class":508,"line":614},[506,2156,2157],{"class":512},"    return",[506,2159,2160],{"class":523}," user",[506,2162,2163],{"class":527},"?.",[506,2165,2166],{"class":523},"role",[506,2168,2169],{"class":527}," ===",[506,2171,568],{"class":527},[506,2173,1627],{"class":571},[506,2175,575],{"class":527},[506,2177,2178],{"class":527}," ||",[506,2180,2160],{"class":523},[506,2182,2163],{"class":527},[506,2184,2185],{"class":523},"permissions",[506,2187,2163],{"class":527},[506,2189,2190],{"class":519},"includes",[506,2192,524],{"class":534},[506,2194,575],{"class":527},[506,2196,2197],{"class":571},"analytics.view",[506,2199,575],{"class":527},[506,2201,773],{"class":534},[506,2203,2204],{"class":508,"line":631},[506,2205,764],{"class":527},[506,2207,2208],{"class":508,"line":648},[506,2209,819],{"class":527},[455,2211,2212,2213],{},"The function receives the current user and should return a boolean (or Promise",[2214,2215,2216],"boolean",{},").",[779,2218,2220],{"id":2219},"using-permission-strings","Using Permission Strings",[455,2222,2223],{},"For simple permission checks:",[497,2225,2227],{"className":499,"code":2226,"language":501,"meta":502,"style":502},"{\n  name: 'settings',\n  label: 'Settings',\n  path: 'settings',\n  icon: 'i-heroicons-cog-6-tooth',\n  permissions: 'admin',  // Single permission\n}\n",[492,2228,2229,2233,2247,2261,2275,2289,2307],{"__ignoreMap":502},[506,2230,2231],{"class":508,"line":509},[506,2232,528],{"class":527},[506,2234,2235,2237,2239,2241,2243,2245],{"class":508,"line":531},[506,2236,799],{"class":798},[506,2238,495],{"class":527},[506,2240,568],{"class":527},[506,2242,682],{"class":571},[506,2244,575],{"class":527},[506,2246,578],{"class":527},[506,2248,2249,2251,2253,2255,2257,2259],{"class":508,"line":543},[506,2250,839],{"class":798},[506,2252,495],{"class":527},[506,2254,568],{"class":527},[506,2256,698],{"class":571},[506,2258,575],{"class":527},[506,2260,578],{"class":527},[506,2262,2263,2265,2267,2269,2271,2273],{"class":508,"line":554},[506,2264,874],{"class":798},[506,2266,495],{"class":527},[506,2268,568],{"class":527},[506,2270,682],{"class":571},[506,2272,575],{"class":527},[506,2274,578],{"class":527},[506,2276,2277,2279,2281,2283,2285,2287],{"class":508,"line":560},[506,2278,945],{"class":798},[506,2280,495],{"class":527},[506,2282,568],{"class":527},[506,2284,729],{"class":571},[506,2286,575],{"class":527},[506,2288,578],{"class":527},[506,2290,2291,2294,2296,2298,2300,2302,2304],{"class":508,"line":581},[506,2292,2293],{"class":798},"  permissions",[506,2295,495],{"class":527},[506,2297,568],{"class":527},[506,2299,1627],{"class":571},[506,2301,575],{"class":527},[506,2303,810],{"class":527},[506,2305,2306],{"class":813},"  // Single permission\n",[506,2308,2309],{"class":508,"line":598},[506,2310,819],{"class":527},[455,2312,2313],{},"Or require multiple permissions:",[497,2315,2317],{"className":499,"code":2316,"language":501,"meta":502,"style":502},"{\n  permissions: ['admin', 'settings.manage'],  // User needs ALL\n}\n",[492,2318,2319,2323,2353],{"__ignoreMap":502},[506,2320,2321],{"class":508,"line":509},[506,2322,528],{"class":527},[506,2324,2325,2327,2329,2331,2333,2335,2337,2339,2341,2344,2346,2348,2350],{"class":508,"line":531},[506,2326,2293],{"class":798},[506,2328,495],{"class":527},[506,2330,1747],{"class":534},[506,2332,575],{"class":527},[506,2334,1627],{"class":571},[506,2336,575],{"class":527},[506,2338,810],{"class":527},[506,2340,568],{"class":527},[506,2342,2343],{"class":571},"settings.manage",[506,2345,575],{"class":527},[506,2347,1763],{"class":534},[506,2349,810],{"class":527},[506,2351,2352],{"class":813},"  // User needs ALL\n",[506,2354,2355],{"class":508,"line":543},[506,2356,819],{"class":527},[455,2358,2359,2362,2363,2366],{},[2041,2360,2361],{},"Note:"," Permission string validation is a planned feature. Currently, use ",[492,2364,2365],{},"canAccess"," for actual permission checking.",[459,2368,2370],{"id":2369},"sidebar-behavior","Sidebar Behavior",[455,2372,2373,2374,2377],{},"Custom pages respect the ",[492,2375,2376],{},"unauthorizedSidebarItems"," setting:",[497,2379,2381],{"className":499,"code":2380,"language":501,"meta":502,"style":502},"autoAdmin: {\n  permissions: {\n    unauthorizedSidebarItems: 'hide',  // or 'disable'\n  },\n}\n",[492,2382,2383,2392,2400,2419,2423],{"__ignoreMap":502},[506,2384,2385,2388,2390],{"class":508,"line":509},[506,2386,2387],{"class":798},"autoAdmin",[506,2389,495],{"class":527},[506,2391,540],{"class":527},[506,2393,2394,2396,2398],{"class":508,"line":531},[506,2395,2293],{"class":798},[506,2397,495],{"class":527},[506,2399,540],{"class":527},[506,2401,2402,2405,2407,2409,2412,2414,2416],{"class":508,"line":543},[506,2403,2404],{"class":798},"    unauthorizedSidebarItems",[506,2406,495],{"class":527},[506,2408,568],{"class":527},[506,2410,2411],{"class":571},"hide",[506,2413,575],{"class":527},[506,2415,810],{"class":527},[506,2417,2418],{"class":813},"  // or 'disable'\n",[506,2420,2421],{"class":508,"line":554},[506,2422,764],{"class":527},[506,2424,2425],{"class":508,"line":560},[506,2426,819],{"class":527},[466,2428,2429,2435],{},[469,2430,2431,2434],{},[2041,2432,2433],{},"'hide'"," - Pages without access are removed from sidebar",[469,2436,2437,2440],{},[2041,2438,2439],{},"'disable'"," - Pages without access appear grayed out",[459,2442,2444],{"id":2443},"navigation-protection","Navigation Protection",[455,2446,2447],{},"The global middleware automatically protects custom pages:",[466,2449,2450,2456,2459],{},[469,2451,2452,2453,2455],{},"Checks ",[492,2454,2365],{}," function before allowing access",[469,2457,2458],{},"Returns 403 Forbidden if unauthorized",[469,2460,2461],{},"Shows nice error page with navigation options",[459,2463,2465],{"id":2464},"complete-examples","Complete Examples",[779,2467,846],{"id":2468},"analytics-dashboard",[497,2470,2472],{"className":499,"code":2471,"language":501,"meta":502,"style":502},"// nuxt.config.ts\ncustomPages: [\n  {\n    name: 'analytics',\n    label: 'Analytics',\n    path: 'analytics',\n    icon: 'i-heroicons-chart-bar',\n    group: 'Reports',\n    canAccess: async (user) => {\n      return user?.permissions?.includes('analytics.view')\n    },\n  },\n]\n",[492,2473,2474,2479,2488,2493,2508,2523,2538,2553,2568,2587,2612,2617,2621],{"__ignoreMap":502},[506,2475,2476],{"class":508,"line":509},[506,2477,2478],{"class":813},"// nuxt.config.ts\n",[506,2480,2481,2484,2486],{"class":508,"line":531},[506,2482,2483],{"class":798},"customPages",[506,2485,495],{"class":527},[506,2487,551],{"class":523},[506,2489,2490],{"class":508,"line":543},[506,2491,2492],{"class":527},"  {\n",[506,2494,2495,2498,2500,2502,2504,2506],{"class":508,"line":554},[506,2496,2497],{"class":534},"    name",[506,2499,495],{"class":527},[506,2501,568],{"class":527},[506,2503,572],{"class":571},[506,2505,575],{"class":527},[506,2507,578],{"class":527},[506,2509,2510,2513,2515,2517,2519,2521],{"class":508,"line":560},[506,2511,2512],{"class":534},"    label",[506,2514,495],{"class":527},[506,2516,568],{"class":527},[506,2518,591],{"class":571},[506,2520,575],{"class":527},[506,2522,578],{"class":527},[506,2524,2525,2528,2530,2532,2534,2536],{"class":508,"line":581},[506,2526,2527],{"class":534},"    path",[506,2529,495],{"class":527},[506,2531,568],{"class":527},[506,2533,572],{"class":571},[506,2535,575],{"class":527},[506,2537,578],{"class":527},[506,2539,2540,2543,2545,2547,2549,2551],{"class":508,"line":598},[506,2541,2542],{"class":534},"    icon",[506,2544,495],{"class":527},[506,2546,568],{"class":527},[506,2548,624],{"class":571},[506,2550,575],{"class":527},[506,2552,578],{"class":527},[506,2554,2555,2558,2560,2562,2564,2566],{"class":508,"line":614},[506,2556,2557],{"class":534},"    group",[506,2559,495],{"class":527},[506,2561,568],{"class":527},[506,2563,641],{"class":571},[506,2565,575],{"class":527},[506,2567,578],{"class":527},[506,2569,2570,2573,2575,2577,2579,2581,2583,2585],{"class":508,"line":631},[506,2571,2572],{"class":519},"    canAccess",[506,2574,495],{"class":527},[506,2576,2134],{"class":1106},[506,2578,2137],{"class":527},[506,2580,2141],{"class":2140},[506,2582,1828],{"class":527},[506,2584,1730],{"class":1106},[506,2586,540],{"class":527},[506,2588,2589,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610],{"class":508,"line":648},[506,2590,2591],{"class":512},"      return",[506,2593,2160],{"class":523},[506,2595,2163],{"class":527},[506,2597,2185],{"class":523},[506,2599,2163],{"class":527},[506,2601,2190],{"class":519},[506,2603,524],{"class":534},[506,2605,575],{"class":527},[506,2607,2197],{"class":571},[506,2609,575],{"class":527},[506,2611,773],{"class":534},[506,2613,2614],{"class":508,"line":662},[506,2615,2616],{"class":527},"    },\n",[506,2618,2619],{"class":508,"line":668},[506,2620,764],{"class":527},[506,2622,2623],{"class":508,"line":673},[506,2624,2625],{"class":523},"]\n",[779,2627,2629],{"id":2628},"settings-page","Settings Page",[497,2631,2633],{"className":499,"code":2632,"language":501,"meta":502,"style":502},"// nuxt.config.ts\ncustomPages: [\n  {\n    name: 'settings',\n    label: 'Settings',\n    path: 'settings',\n    icon: 'i-heroicons-cog-6-tooth',\n    order: 999,  // Show at bottom\n    canAccess: async (user) => {\n      return user?.role === 'admin'\n    },\n  },\n]\n",[492,2634,2635,2639,2647,2651,2665,2679,2693,2707,2721,2739,2758,2762,2766],{"__ignoreMap":502},[506,2636,2637],{"class":508,"line":509},[506,2638,2478],{"class":813},[506,2640,2641,2643,2645],{"class":508,"line":531},[506,2642,2483],{"class":798},[506,2644,495],{"class":527},[506,2646,551],{"class":523},[506,2648,2649],{"class":508,"line":543},[506,2650,2492],{"class":527},[506,2652,2653,2655,2657,2659,2661,2663],{"class":508,"line":554},[506,2654,2497],{"class":534},[506,2656,495],{"class":527},[506,2658,568],{"class":527},[506,2660,682],{"class":571},[506,2662,575],{"class":527},[506,2664,578],{"class":527},[506,2666,2667,2669,2671,2673,2675,2677],{"class":508,"line":560},[506,2668,2512],{"class":534},[506,2670,495],{"class":527},[506,2672,568],{"class":527},[506,2674,698],{"class":571},[506,2676,575],{"class":527},[506,2678,578],{"class":527},[506,2680,2681,2683,2685,2687,2689,2691],{"class":508,"line":581},[506,2682,2527],{"class":534},[506,2684,495],{"class":527},[506,2686,568],{"class":527},[506,2688,682],{"class":571},[506,2690,575],{"class":527},[506,2692,578],{"class":527},[506,2694,2695,2697,2699,2701,2703,2705],{"class":508,"line":598},[506,2696,2542],{"class":534},[506,2698,495],{"class":527},[506,2700,568],{"class":527},[506,2702,729],{"class":571},[506,2704,575],{"class":527},[506,2706,578],{"class":527},[506,2708,2709,2712,2714,2716,2718],{"class":508,"line":614},[506,2710,2711],{"class":534},"    order",[506,2713,495],{"class":527},[506,2715,743],{"class":656},[506,2717,810],{"class":527},[506,2719,2720],{"class":813},"  // Show at bottom\n",[506,2722,2723,2725,2727,2729,2731,2733,2735,2737],{"class":508,"line":631},[506,2724,2572],{"class":519},[506,2726,495],{"class":527},[506,2728,2134],{"class":1106},[506,2730,2137],{"class":527},[506,2732,2141],{"class":2140},[506,2734,1828],{"class":527},[506,2736,1730],{"class":1106},[506,2738,540],{"class":527},[506,2740,2741,2743,2745,2747,2749,2751,2753,2755],{"class":508,"line":648},[506,2742,2591],{"class":512},[506,2744,2160],{"class":523},[506,2746,2163],{"class":527},[506,2748,2166],{"class":523},[506,2750,2169],{"class":527},[506,2752,568],{"class":527},[506,2754,1627],{"class":571},[506,2756,2757],{"class":527},"'\n",[506,2759,2760],{"class":508,"line":662},[506,2761,2616],{"class":527},[506,2763,2764],{"class":508,"line":668},[506,2765,764],{"class":527},[506,2767,2768],{"class":508,"line":673},[506,2769,2625],{"class":523},[497,2771,2773],{"className":1075,"code":2772,"language":1077,"meta":502,"style":502},"\u003C!-- app/pages/admin/settings.vue -->\n\u003Ctemplate>\n  \u003Cdiv class=\"space-y-4\">\n    \u003Ch1 class=\"text-2xl font-semibold\">Settings\u003C/h1>\n\n    \u003CUCard>\n      \u003CUForm :state=\"settings\" @submit=\"saveSettings\">\n        \u003Cdiv class=\"space-y-4\">\n          \u003CUFormGroup label=\"Site Name\">\n            \u003CUInput v-model=\"settings.siteName\" />\n          \u003C/UFormGroup>\n\n          \u003CUFormGroup label=\"Contact Email\">\n            \u003CUInput v-model=\"settings.contactEmail\" type=\"email\" />\n          \u003C/UFormGroup>\n\n          \u003CUFormGroup label=\"Maintenance Mode\">\n            \u003CUToggle v-model=\"settings.maintenanceMode\" />\n          \u003C/UFormGroup>\n\n          \u003CUButton type=\"submit\">Save Settings\u003C/UButton>\n        \u003C/div>\n      \u003C/UForm>\n    \u003C/UCard>\n  \u003C/div>\n\u003C/template>\n\n\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  layout: 'admin',\n})\n\nconst settings = ref({\n  siteName: '',\n  contactEmail: '',\n  maintenanceMode: false,\n})\n\nonMounted(async () => {\n  const data = await $fetch('/api/settings')\n  settings.value = data\n})\n\nasync function saveSettings() {\n  await $fetch('/api/settings', {\n    method: 'PUT',\n    body: settings.value,\n  })\n  // Show success notification\n}\n\u003C/script>\n",[492,2774,2775,2780,2788,2806,2833,2837,2845,2877,2895,2916,2939,2948,2952,2971,3002,3010,3014,3033,3053,3061,3065,3094,3102,3110,3118,3126,3134,3138,3158,3166,3180,3186,3190,3205,3217,3228,3241,3247,3251,3265,3290,3304,3310,3314,3329,3348,3364,3380,3387,3392,3396],{"__ignoreMap":502},[506,2776,2777],{"class":508,"line":509},[506,2778,2779],{"class":813},"\u003C!-- app/pages/admin/settings.vue -->\n",[506,2781,2782,2784,2786],{"class":508,"line":531},[506,2783,1089],{"class":527},[506,2785,1092],{"class":534},[506,2787,1095],{"class":527},[506,2789,2790,2792,2794,2796,2798,2800,2802,2804],{"class":508,"line":543},[506,2791,1100],{"class":527},[506,2793,1103],{"class":534},[506,2795,1107],{"class":1106},[506,2797,1110],{"class":527},[506,2799,1113],{"class":527},[506,2801,1116],{"class":571},[506,2803,1113],{"class":527},[506,2805,1095],{"class":527},[506,2807,2808,2810,2812,2814,2816,2818,2821,2823,2825,2827,2829,2831],{"class":508,"line":554},[506,2809,1125],{"class":527},[506,2811,451],{"class":534},[506,2813,1107],{"class":1106},[506,2815,1110],{"class":527},[506,2817,1113],{"class":527},[506,2819,2820],{"class":571},"text-2xl font-semibold",[506,2822,1113],{"class":527},[506,2824,1279],{"class":527},[506,2826,698],{"class":523},[506,2828,1285],{"class":527},[506,2830,451],{"class":534},[506,2832,1095],{"class":527},[506,2834,2835],{"class":508,"line":560},[506,2836,1210],{"emptyLinePlaceholder":1209},[506,2838,2839,2841,2843],{"class":508,"line":581},[506,2840,1125],{"class":527},[506,2842,1236],{"class":534},[506,2844,1095],{"class":527},[506,2846,2847,2849,2852,2855,2857,2859,2861,2863,2866,2868,2870,2873,2875],{"class":508,"line":598},[506,2848,1134],{"class":527},[506,2850,2851],{"class":534},"UForm",[506,2853,2854],{"class":1106}," :state",[506,2856,1110],{"class":527},[506,2858,1113],{"class":527},[506,2860,682],{"class":571},[506,2862,1113],{"class":527},[506,2864,2865],{"class":1106}," @submit",[506,2867,1110],{"class":527},[506,2869,1113],{"class":527},[506,2871,2872],{"class":571},"saveSettings",[506,2874,1113],{"class":527},[506,2876,1095],{"class":527},[506,2878,2879,2881,2883,2885,2887,2889,2891,2893],{"class":508,"line":614},[506,2880,1243],{"class":527},[506,2882,1103],{"class":534},[506,2884,1107],{"class":1106},[506,2886,1110],{"class":527},[506,2888,1113],{"class":527},[506,2890,1116],{"class":571},[506,2892,1113],{"class":527},[506,2894,1095],{"class":527},[506,2896,2897,2899,2902,2905,2907,2909,2912,2914],{"class":508,"line":631},[506,2898,1263],{"class":527},[506,2900,2901],{"class":534},"UFormGroup",[506,2903,2904],{"class":1106}," label",[506,2906,1110],{"class":527},[506,2908,1113],{"class":527},[506,2910,2911],{"class":571},"Site Name",[506,2913,1113],{"class":527},[506,2915,1095],{"class":527},[506,2917,2918,2921,2924,2927,2929,2931,2934,2936],{"class":508,"line":648},[506,2919,2920],{"class":527},"            \u003C",[506,2922,2923],{"class":534},"UInput",[506,2925,2926],{"class":1106}," v-model",[506,2928,1110],{"class":527},[506,2930,1113],{"class":527},[506,2932,2933],{"class":571},"settings.siteName",[506,2935,1113],{"class":527},[506,2937,2938],{"class":527}," />\n",[506,2940,2941,2944,2946],{"class":508,"line":662},[506,2942,2943],{"class":527},"          \u003C/",[506,2945,2901],{"class":534},[506,2947,1095],{"class":527},[506,2949,2950],{"class":508,"line":668},[506,2951,1210],{"emptyLinePlaceholder":1209},[506,2953,2954,2956,2958,2960,2962,2964,2967,2969],{"class":508,"line":673},[506,2955,1263],{"class":527},[506,2957,2901],{"class":534},[506,2959,2904],{"class":1106},[506,2961,1110],{"class":527},[506,2963,1113],{"class":527},[506,2965,2966],{"class":571},"Contact Email",[506,2968,1113],{"class":527},[506,2970,1095],{"class":527},[506,2972,2973,2975,2977,2979,2981,2983,2986,2988,2991,2993,2995,2998,3000],{"class":508,"line":689},[506,2974,2920],{"class":527},[506,2976,2923],{"class":534},[506,2978,2926],{"class":1106},[506,2980,1110],{"class":527},[506,2982,1113],{"class":527},[506,2984,2985],{"class":571},"settings.contactEmail",[506,2987,1113],{"class":527},[506,2989,2990],{"class":1106}," type",[506,2992,1110],{"class":527},[506,2994,1113],{"class":527},[506,2996,2997],{"class":571},"email",[506,2999,1113],{"class":527},[506,3001,2938],{"class":527},[506,3003,3004,3006,3008],{"class":508,"line":705},[506,3005,2943],{"class":527},[506,3007,2901],{"class":534},[506,3009,1095],{"class":527},[506,3011,3012],{"class":508,"line":720},[506,3013,1210],{"emptyLinePlaceholder":1209},[506,3015,3016,3018,3020,3022,3024,3026,3029,3031],{"class":508,"line":736},[506,3017,1263],{"class":527},[506,3019,2901],{"class":534},[506,3021,2904],{"class":1106},[506,3023,1110],{"class":527},[506,3025,1113],{"class":527},[506,3027,3028],{"class":571},"Maintenance Mode",[506,3030,1113],{"class":527},[506,3032,1095],{"class":527},[506,3034,3035,3037,3040,3042,3044,3046,3049,3051],{"class":508,"line":748},[506,3036,2920],{"class":527},[506,3038,3039],{"class":534},"UToggle",[506,3041,2926],{"class":1106},[506,3043,1110],{"class":527},[506,3045,1113],{"class":527},[506,3047,3048],{"class":571},"settings.maintenanceMode",[506,3050,1113],{"class":527},[506,3052,2938],{"class":527},[506,3054,3055,3057,3059],{"class":508,"line":753},[506,3056,2943],{"class":527},[506,3058,2901],{"class":534},[506,3060,1095],{"class":527},[506,3062,3063],{"class":508,"line":761},[506,3064,1210],{"emptyLinePlaceholder":1209},[506,3066,3067,3069,3072,3074,3076,3078,3081,3083,3085,3088,3090,3092],{"class":508,"line":767},[506,3068,1263],{"class":527},[506,3070,3071],{"class":534},"UButton",[506,3073,2990],{"class":1106},[506,3075,1110],{"class":527},[506,3077,1113],{"class":527},[506,3079,3080],{"class":571},"submit",[506,3082,1113],{"class":527},[506,3084,1279],{"class":527},[506,3086,3087],{"class":523},"Save Settings",[506,3089,1285],{"class":527},[506,3091,3071],{"class":534},[506,3093,1095],{"class":527},[506,3095,3096,3098,3100],{"class":508,"line":1349},[506,3097,1322],{"class":527},[506,3099,1103],{"class":534},[506,3101,1095],{"class":527},[506,3103,3104,3106,3108],{"class":508,"line":1368},[506,3105,1159],{"class":527},[506,3107,2851],{"class":534},[506,3109,1095],{"class":527},[506,3111,3112,3114,3116],{"class":508,"line":1396},[506,3113,1200],{"class":527},[506,3115,1236],{"class":534},[506,3117,1095],{"class":527},[506,3119,3120,3122,3124],{"class":508,"line":1424},[506,3121,1561],{"class":527},[506,3123,1103],{"class":534},[506,3125,1095],{"class":527},[506,3127,3128,3130,3132],{"class":508,"line":1433},[506,3129,1285],{"class":527},[506,3131,1092],{"class":534},[506,3133,1095],{"class":527},[506,3135,3136],{"class":508,"line":1442},[506,3137,1210],{"emptyLinePlaceholder":1209},[506,3139,3140,3142,3144,3146,3148,3150,3152,3154,3156],{"class":508,"line":1447},[506,3141,1089],{"class":527},[506,3143,1587],{"class":534},[506,3145,1590],{"class":1106},[506,3147,1593],{"class":1106},[506,3149,1110],{"class":527},[506,3151,1113],{"class":527},[506,3153,1600],{"class":571},[506,3155,1113],{"class":527},[506,3157,1095],{"class":527},[506,3159,3160,3162,3164],{"class":508,"line":1456},[506,3161,1610],{"class":519},[506,3163,524],{"class":523},[506,3165,528],{"class":527},[506,3167,3168,3170,3172,3174,3176,3178],{"class":508,"line":1475},[506,3169,1620],{"class":534},[506,3171,495],{"class":527},[506,3173,568],{"class":527},[506,3175,1627],{"class":571},[506,3177,575],{"class":527},[506,3179,578],{"class":527},[506,3181,3182,3184],{"class":508,"line":1503},[506,3183,770],{"class":527},[506,3185,773],{"class":523},[506,3187,3188],{"class":508,"line":1531},[506,3189,1210],{"emptyLinePlaceholder":1209},[506,3191,3192,3194,3197,3199,3201,3203],{"class":508,"line":1540},[506,3193,1652],{"class":1106},[506,3195,3196],{"class":523}," settings ",[506,3198,1110],{"class":527},[506,3200,1660],{"class":519},[506,3202,524],{"class":523},[506,3204,528],{"class":527},[506,3206,3207,3210,3212,3215],{"class":508,"line":1549},[506,3208,3209],{"class":534},"  siteName",[506,3211,495],{"class":527},[506,3213,3214],{"class":527}," ''",[506,3216,578],{"class":527},[506,3218,3219,3222,3224,3226],{"class":508,"line":1558},[506,3220,3221],{"class":534},"  contactEmail",[506,3223,495],{"class":527},[506,3225,3214],{"class":527},[506,3227,578],{"class":527},[506,3229,3230,3233,3235,3239],{"class":508,"line":1568},[506,3231,3232],{"class":534},"  maintenanceMode",[506,3234,495],{"class":527},[506,3236,3238],{"class":3237},"sfNiH"," false",[506,3240,578],{"class":527},[506,3242,3243,3245],{"class":508,"line":1577},[506,3244,770],{"class":527},[506,3246,773],{"class":523},[506,3248,3249],{"class":508,"line":1582},[506,3250,1210],{"emptyLinePlaceholder":1209},[506,3252,3253,3255,3257,3259,3261,3263],{"class":508,"line":1607},[506,3254,1719],{"class":519},[506,3256,524],{"class":523},[506,3258,1724],{"class":1106},[506,3260,1727],{"class":527},[506,3262,1730],{"class":1106},[506,3264,540],{"class":527},[506,3266,3267,3269,3272,3274,3276,3279,3281,3283,3286,3288],{"class":508,"line":1617},[506,3268,1744],{"class":1106},[506,3270,3271],{"class":523}," data",[506,3273,1766],{"class":527},[506,3275,1769],{"class":512},[506,3277,3278],{"class":519}," $fetch",[506,3280,524],{"class":534},[506,3282,575],{"class":527},[506,3284,3285],{"class":571},"/api/settings",[506,3287,575],{"class":527},[506,3289,773],{"class":534},[506,3291,3292,3295,3297,3299,3301],{"class":508,"line":1637},[506,3293,3294],{"class":523},"  settings",[506,3296,1775],{"class":527},[506,3298,1936],{"class":523},[506,3300,1766],{"class":527},[506,3302,3303],{"class":523}," data\n",[506,3305,3306,3308],{"class":508,"line":1644},[506,3307,770],{"class":527},[506,3309,773],{"class":523},[506,3311,3312],{"class":508,"line":1649},[506,3313,1210],{"emptyLinePlaceholder":1209},[506,3315,3316,3318,3321,3324,3327],{"class":508,"line":1667},[506,3317,1724],{"class":1106},[506,3319,3320],{"class":1106}," function",[506,3322,3323],{"class":519}," saveSettings",[506,3325,3326],{"class":527},"()",[506,3328,540],{"class":527},[506,3330,3331,3334,3336,3338,3340,3342,3344,3346],{"class":508,"line":1680},[506,3332,3333],{"class":512},"  await",[506,3335,3278],{"class":519},[506,3337,524],{"class":534},[506,3339,575],{"class":527},[506,3341,3285],{"class":571},[506,3343,575],{"class":527},[506,3345,810],{"class":527},[506,3347,540],{"class":527},[506,3349,3350,3353,3355,3357,3360,3362],{"class":508,"line":1692},[506,3351,3352],{"class":534},"    method",[506,3354,495],{"class":527},[506,3356,568],{"class":527},[506,3358,3359],{"class":571},"PUT",[506,3361,575],{"class":527},[506,3363,578],{"class":527},[506,3365,3366,3369,3371,3374,3376,3378],{"class":508,"line":1704},[506,3367,3368],{"class":534},"    body",[506,3370,495],{"class":527},[506,3372,3373],{"class":523}," settings",[506,3375,1775],{"class":527},[506,3377,1936],{"class":523},[506,3379,578],{"class":527},[506,3381,3382,3385],{"class":508,"line":1711},[506,3383,3384],{"class":527},"  }",[506,3386,773],{"class":534},[506,3388,3389],{"class":508,"line":1716},[506,3390,3391],{"class":813},"  // Show success notification\n",[506,3393,3394],{"class":508,"line":1735},[506,3395,819],{"class":527},[506,3397,3398,3400,3402],{"class":508,"line":1741},[506,3399,1285],{"class":527},[506,3401,1587],{"class":534},[506,3403,1095],{"class":527},[779,3405,3407],{"id":3406},"data-export-page","Data Export Page",[497,3409,3411],{"className":499,"code":3410,"language":501,"meta":502,"style":502},"// nuxt.config.ts\ncustomPages: [\n  {\n    name: 'export',\n    label: 'Export Data',\n    path: 'export',\n    icon: 'i-heroicons-arrow-down-tray',\n    group: 'Tools',\n    canAccess: async (user) => {\n      return user?.permissions?.includes('data.export')\n    },\n  },\n]\n",[492,3412,3413,3417,3425,3429,3443,3458,3472,3487,3502,3520,3545,3549,3553],{"__ignoreMap":502},[506,3414,3415],{"class":508,"line":509},[506,3416,2478],{"class":813},[506,3418,3419,3421,3423],{"class":508,"line":531},[506,3420,2483],{"class":798},[506,3422,495],{"class":527},[506,3424,551],{"class":523},[506,3426,3427],{"class":508,"line":543},[506,3428,2492],{"class":527},[506,3430,3431,3433,3435,3437,3439,3441],{"class":508,"line":554},[506,3432,2497],{"class":534},[506,3434,495],{"class":527},[506,3436,568],{"class":527},[506,3438,513],{"class":571},[506,3440,575],{"class":527},[506,3442,578],{"class":527},[506,3444,3445,3447,3449,3451,3454,3456],{"class":508,"line":560},[506,3446,2512],{"class":534},[506,3448,495],{"class":527},[506,3450,568],{"class":527},[506,3452,3453],{"class":571},"Export Data",[506,3455,575],{"class":527},[506,3457,578],{"class":527},[506,3459,3460,3462,3464,3466,3468,3470],{"class":508,"line":581},[506,3461,2527],{"class":534},[506,3463,495],{"class":527},[506,3465,568],{"class":527},[506,3467,513],{"class":571},[506,3469,575],{"class":527},[506,3471,578],{"class":527},[506,3473,3474,3476,3478,3480,3483,3485],{"class":508,"line":598},[506,3475,2542],{"class":534},[506,3477,495],{"class":527},[506,3479,568],{"class":527},[506,3481,3482],{"class":571},"i-heroicons-arrow-down-tray",[506,3484,575],{"class":527},[506,3486,578],{"class":527},[506,3488,3489,3491,3493,3495,3498,3500],{"class":508,"line":614},[506,3490,2557],{"class":534},[506,3492,495],{"class":527},[506,3494,568],{"class":527},[506,3496,3497],{"class":571},"Tools",[506,3499,575],{"class":527},[506,3501,578],{"class":527},[506,3503,3504,3506,3508,3510,3512,3514,3516,3518],{"class":508,"line":631},[506,3505,2572],{"class":519},[506,3507,495],{"class":527},[506,3509,2134],{"class":1106},[506,3511,2137],{"class":527},[506,3513,2141],{"class":2140},[506,3515,1828],{"class":527},[506,3517,1730],{"class":1106},[506,3519,540],{"class":527},[506,3521,3522,3524,3526,3528,3530,3532,3534,3536,3538,3541,3543],{"class":508,"line":648},[506,3523,2591],{"class":512},[506,3525,2160],{"class":523},[506,3527,2163],{"class":527},[506,3529,2185],{"class":523},[506,3531,2163],{"class":527},[506,3533,2190],{"class":519},[506,3535,524],{"class":534},[506,3537,575],{"class":527},[506,3539,3540],{"class":571},"data.export",[506,3542,575],{"class":527},[506,3544,773],{"class":534},[506,3546,3547],{"class":508,"line":662},[506,3548,2616],{"class":527},[506,3550,3551],{"class":508,"line":668},[506,3552,764],{"class":527},[506,3554,3555],{"class":508,"line":673},[506,3556,2625],{"class":523},[497,3558,3560],{"className":1075,"code":3559,"language":1077,"meta":502,"style":502},"\u003C!-- app/pages/admin/export.vue -->\n\u003Ctemplate>\n  \u003Cdiv class=\"space-y-4\">\n    \u003Ch1 class=\"text-2xl font-semibold\">Export Data\u003C/h1>\n\n    \u003CUCard>\n      \u003Cdiv class=\"space-y-4\">\n        \u003CUFormGroup label=\"Select Resource\">\n          \u003CUSelect\n            v-model=\"selectedResource\"\n            :options=\"resources\"\n          />\n        \u003C/UFormGroup>\n\n        \u003CUFormGroup label=\"Format\">\n          \u003CUSelect\n            v-model=\"format\"\n            :options=\"['CSV', 'JSON', 'Excel']\"\n          />\n        \u003C/UFormGroup>\n\n        \u003CUButton\n          :loading=\"isExporting\"\n          @click=\"exportData\"\n        >\n          Export\n        \u003C/UButton>\n      \u003C/div>\n    \u003C/UCard>\n  \u003C/div>\n\u003C/template>\n\n\u003Cscript setup lang=\"ts\">\ndefinePageMeta({\n  layout: 'admin',\n})\n\nconst selectedResource = ref('users')\nconst format = ref('CSV')\nconst isExporting = ref(false)\n\nconst resources = ['users', 'posts', 'comments']\n\nasync function exportData() {\n  isExporting.value = true\n  try {\n    const blob = await $fetch(`/api/export/${selectedResource.value}`, {\n      query: { format: format.value },\n    })\n    // Download file\n    const url = URL.createObjectURL(blob)\n    const a = document.createElement('a')\n    a.href = url\n    a.download = `${selectedResource.value}.${format.value.toLowerCase()}`\n    a.click()\n  } finally {\n    isExporting.value = false\n  }\n}\n\u003C/script>\n",[492,3561,3562,3567,3575,3593,3619,3623,3631,3649,3668,3675,3690,3704,3709,3717,3721,3740,3746,3759,3772,3776,3784,3788,3795,3809,3823,3828,3833,3841,3849,3857,3865,3873,3877,3897,3905,3919,3925,3929,3950,3972,3990,3994,4031,4035,4048,4062,4069,4107,4130,4137,4142,4166,4193,4208,4250,4262,4271,4285,4289,4293],{"__ignoreMap":502},[506,3563,3564],{"class":508,"line":509},[506,3565,3566],{"class":813},"\u003C!-- app/pages/admin/export.vue -->\n",[506,3568,3569,3571,3573],{"class":508,"line":531},[506,3570,1089],{"class":527},[506,3572,1092],{"class":534},[506,3574,1095],{"class":527},[506,3576,3577,3579,3581,3583,3585,3587,3589,3591],{"class":508,"line":543},[506,3578,1100],{"class":527},[506,3580,1103],{"class":534},[506,3582,1107],{"class":1106},[506,3584,1110],{"class":527},[506,3586,1113],{"class":527},[506,3588,1116],{"class":571},[506,3590,1113],{"class":527},[506,3592,1095],{"class":527},[506,3594,3595,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617],{"class":508,"line":554},[506,3596,1125],{"class":527},[506,3598,451],{"class":534},[506,3600,1107],{"class":1106},[506,3602,1110],{"class":527},[506,3604,1113],{"class":527},[506,3606,2820],{"class":571},[506,3608,1113],{"class":527},[506,3610,1279],{"class":527},[506,3612,3453],{"class":523},[506,3614,1285],{"class":527},[506,3616,451],{"class":534},[506,3618,1095],{"class":527},[506,3620,3621],{"class":508,"line":560},[506,3622,1210],{"emptyLinePlaceholder":1209},[506,3624,3625,3627,3629],{"class":508,"line":581},[506,3626,1125],{"class":527},[506,3628,1236],{"class":534},[506,3630,1095],{"class":527},[506,3632,3633,3635,3637,3639,3641,3643,3645,3647],{"class":508,"line":598},[506,3634,1134],{"class":527},[506,3636,1103],{"class":534},[506,3638,1107],{"class":1106},[506,3640,1110],{"class":527},[506,3642,1113],{"class":527},[506,3644,1116],{"class":571},[506,3646,1113],{"class":527},[506,3648,1095],{"class":527},[506,3650,3651,3653,3655,3657,3659,3661,3664,3666],{"class":508,"line":614},[506,3652,1243],{"class":527},[506,3654,2901],{"class":534},[506,3656,2904],{"class":1106},[506,3658,1110],{"class":527},[506,3660,1113],{"class":527},[506,3662,3663],{"class":571},"Select Resource",[506,3665,1113],{"class":527},[506,3667,1095],{"class":527},[506,3669,3670,3672],{"class":508,"line":631},[506,3671,1263],{"class":527},[506,3673,3674],{"class":534},"USelect\n",[506,3676,3677,3680,3682,3684,3687],{"class":508,"line":648},[506,3678,3679],{"class":1106},"            v-model",[506,3681,1110],{"class":527},[506,3683,1113],{"class":527},[506,3685,3686],{"class":571},"selectedResource",[506,3688,3689],{"class":527},"\"\n",[506,3691,3692,3695,3697,3699,3702],{"class":508,"line":662},[506,3693,3694],{"class":1106},"            :options",[506,3696,1110],{"class":527},[506,3698,1113],{"class":527},[506,3700,3701],{"class":571},"resources",[506,3703,3689],{"class":527},[506,3705,3706],{"class":508,"line":668},[506,3707,3708],{"class":527},"          />\n",[506,3710,3711,3713,3715],{"class":508,"line":673},[506,3712,1322],{"class":527},[506,3714,2901],{"class":534},[506,3716,1095],{"class":527},[506,3718,3719],{"class":508,"line":689},[506,3720,1210],{"emptyLinePlaceholder":1209},[506,3722,3723,3725,3727,3729,3731,3733,3736,3738],{"class":508,"line":705},[506,3724,1243],{"class":527},[506,3726,2901],{"class":534},[506,3728,2904],{"class":1106},[506,3730,1110],{"class":527},[506,3732,1113],{"class":527},[506,3734,3735],{"class":571},"Format",[506,3737,1113],{"class":527},[506,3739,1095],{"class":527},[506,3741,3742,3744],{"class":508,"line":720},[506,3743,1263],{"class":527},[506,3745,3674],{"class":534},[506,3747,3748,3750,3752,3754,3757],{"class":508,"line":736},[506,3749,3679],{"class":1106},[506,3751,1110],{"class":527},[506,3753,1113],{"class":527},[506,3755,3756],{"class":571},"format",[506,3758,3689],{"class":527},[506,3760,3761,3763,3765,3767,3770],{"class":508,"line":748},[506,3762,3694],{"class":1106},[506,3764,1110],{"class":527},[506,3766,1113],{"class":527},[506,3768,3769],{"class":571},"['CSV', 'JSON', 'Excel']",[506,3771,3689],{"class":527},[506,3773,3774],{"class":508,"line":753},[506,3775,3708],{"class":527},[506,3777,3778,3780,3782],{"class":508,"line":761},[506,3779,1322],{"class":527},[506,3781,2901],{"class":534},[506,3783,1095],{"class":527},[506,3785,3786],{"class":508,"line":767},[506,3787,1210],{"emptyLinePlaceholder":1209},[506,3789,3790,3792],{"class":508,"line":1349},[506,3791,1243],{"class":527},[506,3793,3794],{"class":534},"UButton\n",[506,3796,3797,3800,3802,3804,3807],{"class":508,"line":1368},[506,3798,3799],{"class":1106},"          :loading",[506,3801,1110],{"class":527},[506,3803,1113],{"class":527},[506,3805,3806],{"class":571},"isExporting",[506,3808,3689],{"class":527},[506,3810,3811,3814,3816,3818,3821],{"class":508,"line":1396},[506,3812,3813],{"class":1106},"          @click",[506,3815,1110],{"class":527},[506,3817,1113],{"class":527},[506,3819,3820],{"class":571},"exportData",[506,3822,3689],{"class":527},[506,3824,3825],{"class":508,"line":1424},[506,3826,3827],{"class":527},"        >\n",[506,3829,3830],{"class":508,"line":1433},[506,3831,3832],{"class":523},"          Export\n",[506,3834,3835,3837,3839],{"class":508,"line":1442},[506,3836,1322],{"class":527},[506,3838,3071],{"class":534},[506,3840,1095],{"class":527},[506,3842,3843,3845,3847],{"class":508,"line":1447},[506,3844,1159],{"class":527},[506,3846,1103],{"class":534},[506,3848,1095],{"class":527},[506,3850,3851,3853,3855],{"class":508,"line":1456},[506,3852,1200],{"class":527},[506,3854,1236],{"class":534},[506,3856,1095],{"class":527},[506,3858,3859,3861,3863],{"class":508,"line":1475},[506,3860,1561],{"class":527},[506,3862,1103],{"class":534},[506,3864,1095],{"class":527},[506,3866,3867,3869,3871],{"class":508,"line":1503},[506,3868,1285],{"class":527},[506,3870,1092],{"class":534},[506,3872,1095],{"class":527},[506,3874,3875],{"class":508,"line":1531},[506,3876,1210],{"emptyLinePlaceholder":1209},[506,3878,3879,3881,3883,3885,3887,3889,3891,3893,3895],{"class":508,"line":1540},[506,3880,1089],{"class":527},[506,3882,1587],{"class":534},[506,3884,1590],{"class":1106},[506,3886,1593],{"class":1106},[506,3888,1110],{"class":527},[506,3890,1113],{"class":527},[506,3892,1600],{"class":571},[506,3894,1113],{"class":527},[506,3896,1095],{"class":527},[506,3898,3899,3901,3903],{"class":508,"line":1549},[506,3900,1610],{"class":519},[506,3902,524],{"class":523},[506,3904,528],{"class":527},[506,3906,3907,3909,3911,3913,3915,3917],{"class":508,"line":1558},[506,3908,1620],{"class":534},[506,3910,495],{"class":527},[506,3912,568],{"class":527},[506,3914,1627],{"class":571},[506,3916,575],{"class":527},[506,3918,578],{"class":527},[506,3920,3921,3923],{"class":508,"line":1568},[506,3922,770],{"class":527},[506,3924,773],{"class":523},[506,3926,3927],{"class":508,"line":1577},[506,3928,1210],{"emptyLinePlaceholder":1209},[506,3930,3931,3933,3936,3938,3940,3942,3944,3946,3948],{"class":508,"line":1582},[506,3932,1652],{"class":1106},[506,3934,3935],{"class":523}," selectedResource ",[506,3937,1110],{"class":527},[506,3939,1660],{"class":519},[506,3941,524],{"class":523},[506,3943,575],{"class":527},[506,3945,1750],{"class":571},[506,3947,575],{"class":527},[506,3949,773],{"class":523},[506,3951,3952,3954,3957,3959,3961,3963,3965,3968,3970],{"class":508,"line":1607},[506,3953,1652],{"class":1106},[506,3955,3956],{"class":523}," format ",[506,3958,1110],{"class":527},[506,3960,1660],{"class":519},[506,3962,524],{"class":523},[506,3964,575],{"class":527},[506,3966,3967],{"class":571},"CSV",[506,3969,575],{"class":527},[506,3971,773],{"class":523},[506,3973,3974,3976,3979,3981,3983,3985,3988],{"class":508,"line":1617},[506,3975,1652],{"class":1106},[506,3977,3978],{"class":523}," isExporting ",[506,3980,1110],{"class":527},[506,3982,1660],{"class":519},[506,3984,524],{"class":523},[506,3986,3987],{"class":3237},"false",[506,3989,773],{"class":523},[506,3991,3992],{"class":508,"line":1637},[506,3993,1210],{"emptyLinePlaceholder":1209},[506,3995,3996,3998,4001,4003,4005,4007,4009,4011,4013,4015,4018,4020,4022,4024,4027,4029],{"class":508,"line":1644},[506,3997,1652],{"class":1106},[506,3999,4000],{"class":523}," resources ",[506,4002,1110],{"class":527},[506,4004,1747],{"class":523},[506,4006,575],{"class":527},[506,4008,1750],{"class":571},[506,4010,575],{"class":527},[506,4012,810],{"class":527},[506,4014,568],{"class":527},[506,4016,4017],{"class":571},"posts",[506,4019,575],{"class":527},[506,4021,810],{"class":527},[506,4023,568],{"class":527},[506,4025,4026],{"class":571},"comments",[506,4028,575],{"class":527},[506,4030,2625],{"class":523},[506,4032,4033],{"class":508,"line":1649},[506,4034,1210],{"emptyLinePlaceholder":1209},[506,4036,4037,4039,4041,4044,4046],{"class":508,"line":1667},[506,4038,1724],{"class":1106},[506,4040,3320],{"class":1106},[506,4042,4043],{"class":519}," exportData",[506,4045,3326],{"class":527},[506,4047,540],{"class":527},[506,4049,4050,4053,4055,4057,4059],{"class":508,"line":1680},[506,4051,4052],{"class":523},"  isExporting",[506,4054,1775],{"class":527},[506,4056,1936],{"class":523},[506,4058,1766],{"class":527},[506,4060,4061],{"class":3237}," true\n",[506,4063,4064,4067],{"class":508,"line":1692},[506,4065,4066],{"class":512},"  try",[506,4068,540],{"class":527},[506,4070,4071,4074,4077,4079,4081,4083,4085,4088,4091,4094,4096,4098,4100,4103,4105],{"class":508,"line":1704},[506,4072,4073],{"class":1106},"    const",[506,4075,4076],{"class":523}," blob",[506,4078,1766],{"class":527},[506,4080,1769],{"class":512},[506,4082,3278],{"class":519},[506,4084,524],{"class":534},[506,4086,4087],{"class":527},"`",[506,4089,4090],{"class":571},"/api/export/",[506,4092,4093],{"class":527},"${",[506,4095,3686],{"class":523},[506,4097,1775],{"class":527},[506,4099,1936],{"class":523},[506,4101,4102],{"class":527},"}`",[506,4104,810],{"class":527},[506,4106,540],{"class":527},[506,4108,4109,4112,4114,4116,4119,4121,4123,4125,4127],{"class":508,"line":1711},[506,4110,4111],{"class":534},"      query",[506,4113,495],{"class":527},[506,4115,1801],{"class":527},[506,4117,4118],{"class":534}," format",[506,4120,495],{"class":527},[506,4122,4118],{"class":523},[506,4124,1775],{"class":527},[506,4126,1936],{"class":523},[506,4128,4129],{"class":527}," },\n",[506,4131,4132,4135],{"class":508,"line":1716},[506,4133,4134],{"class":527},"    }",[506,4136,773],{"class":534},[506,4138,4139],{"class":508,"line":1735},[506,4140,4141],{"class":813},"    // Download file\n",[506,4143,4144,4146,4149,4151,4154,4156,4159,4161,4164],{"class":508,"line":1741},[506,4145,4073],{"class":1106},[506,4147,4148],{"class":523}," url",[506,4150,1766],{"class":527},[506,4152,4153],{"class":523}," URL",[506,4155,1775],{"class":527},[506,4157,4158],{"class":519},"createObjectURL",[506,4160,524],{"class":534},[506,4162,4163],{"class":523},"blob",[506,4165,773],{"class":534},[506,4167,4168,4170,4173,4175,4178,4180,4183,4185,4187,4189,4191],{"class":508,"line":1784},[506,4169,4073],{"class":1106},[506,4171,4172],{"class":523}," a",[506,4174,1766],{"class":527},[506,4176,4177],{"class":523}," document",[506,4179,1775],{"class":527},[506,4181,4182],{"class":519},"createElement",[506,4184,524],{"class":534},[506,4186,575],{"class":527},[506,4188,964],{"class":571},[506,4190,575],{"class":527},[506,4192,773],{"class":534},[506,4194,4195,4198,4200,4203,4205],{"class":508,"line":1833},[506,4196,4197],{"class":523},"    a",[506,4199,1775],{"class":527},[506,4201,4202],{"class":523},"href",[506,4204,1766],{"class":527},[506,4206,4207],{"class":523}," url\n",[506,4209,4210,4212,4214,4217,4219,4222,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4245,4247],{"class":508,"line":1875},[506,4211,4197],{"class":523},[506,4213,1775],{"class":527},[506,4215,4216],{"class":523},"download",[506,4218,1766],{"class":527},[506,4220,4221],{"class":527}," `${",[506,4223,3686],{"class":523},[506,4225,1775],{"class":527},[506,4227,1936],{"class":523},[506,4229,770],{"class":527},[506,4231,1775],{"class":571},[506,4233,4093],{"class":527},[506,4235,3756],{"class":523},[506,4237,1775],{"class":527},[506,4239,1936],{"class":523},[506,4241,1775],{"class":527},[506,4243,4244],{"class":519},"toLowerCase",[506,4246,3326],{"class":523},[506,4248,4249],{"class":527},"}`\n",[506,4251,4252,4254,4256,4259],{"class":508,"line":1917},[506,4253,4197],{"class":523},[506,4255,1775],{"class":527},[506,4257,4258],{"class":519},"click",[506,4260,4261],{"class":534},"()\n",[506,4263,4264,4266,4269],{"class":508,"line":1923},[506,4265,3384],{"class":527},[506,4267,4268],{"class":512}," finally",[506,4270,540],{"class":527},[506,4272,4273,4276,4278,4280,4282],{"class":508,"line":1928},[506,4274,4275],{"class":523},"    isExporting",[506,4277,1775],{"class":527},[506,4279,1936],{"class":523},[506,4281,1766],{"class":527},[506,4283,4284],{"class":3237}," false\n",[506,4286,4287],{"class":508,"line":1943},[506,4288,2021],{"class":527},[506,4290,4291],{"class":508,"line":1970},[506,4292,819],{"class":527},[506,4294,4295,4297,4299],{"class":508,"line":1994},[506,4296,1285],{"class":527},[506,4298,1587],{"class":534},[506,4300,1095],{"class":527},[459,4302,4304],{"id":4303},"best-practices","Best Practices",[4306,4307,4308,4316,4325,4331,4337,4343,4349],"ol",{},[469,4309,4310,4313,4314],{},[2041,4311,4312],{},"Always use admin layout"," - Include ",[492,4315,2047],{},[469,4317,4318,4321,4322,4324],{},[2041,4319,4320],{},"Implement permission checks"," - Use ",[492,4323,2365],{}," for security",[469,4326,4327,4330],{},[2041,4328,4329],{},"Follow naming conventions"," - Use kebab-case for paths",[469,4332,4333,4336],{},[2041,4334,4335],{},"Group related pages"," - Use groups for better organization",[469,4338,4339,4342],{},[2041,4340,4341],{},"Provide clear labels"," - Make purpose obvious in sidebar",[469,4344,4345,4348],{},[2041,4346,4347],{},"Handle loading states"," - Show loading indicators",[469,4350,4351,4354],{},[2041,4352,4353],{},"Error handling"," - Handle API errors gracefully",[459,4356,4358],{"id":4357},"accessing-admin-data","Accessing Admin Data",[455,4360,4361],{},"Custom pages can access all admin composables:",[497,4363,4365],{"className":1075,"code":4364,"language":1077,"meta":502,"style":502},"\u003Cscript setup>\n// Get current user permissions\nconst { canCreate, canUpdate } = useAdminPermissions('posts')\n\n// Access admin configuration\nconst { branding } = useAdminConfig()\n\n// Get resource schemas\nconst { resource } = useAdminResource('users')\n\n// Use admin actions\nconst { goToList, goToCreate } = useAdminActions('posts')\n\u003C/script>\n",[492,4366,4367,4377,4382,4413,4417,4422,4440,4444,4449,4475,4479,4484,4515],{"__ignoreMap":502},[506,4368,4369,4371,4373,4375],{"class":508,"line":509},[506,4370,1089],{"class":527},[506,4372,1587],{"class":534},[506,4374,1590],{"class":1106},[506,4376,1095],{"class":527},[506,4378,4379],{"class":508,"line":531},[506,4380,4381],{"class":813},"// Get current user permissions\n",[506,4383,4384,4386,4388,4391,4393,4396,4398,4400,4403,4405,4407,4409,4411],{"class":508,"line":543},[506,4385,1652],{"class":1106},[506,4387,1801],{"class":527},[506,4389,4390],{"class":523}," canCreate",[506,4392,810],{"class":527},[506,4394,4395],{"class":523}," canUpdate ",[506,4397,770],{"class":527},[506,4399,1766],{"class":527},[506,4401,4402],{"class":519}," useAdminPermissions",[506,4404,524],{"class":523},[506,4406,575],{"class":527},[506,4408,4017],{"class":571},[506,4410,575],{"class":527},[506,4412,773],{"class":523},[506,4414,4415],{"class":508,"line":554},[506,4416,1210],{"emptyLinePlaceholder":1209},[506,4418,4419],{"class":508,"line":560},[506,4420,4421],{"class":813},"// Access admin configuration\n",[506,4423,4424,4426,4428,4431,4433,4435,4438],{"class":508,"line":581},[506,4425,1652],{"class":1106},[506,4427,1801],{"class":527},[506,4429,4430],{"class":523}," branding ",[506,4432,770],{"class":527},[506,4434,1766],{"class":527},[506,4436,4437],{"class":519}," useAdminConfig",[506,4439,4261],{"class":523},[506,4441,4442],{"class":508,"line":598},[506,4443,1210],{"emptyLinePlaceholder":1209},[506,4445,4446],{"class":508,"line":614},[506,4447,4448],{"class":813},"// Get resource schemas\n",[506,4450,4451,4453,4455,4458,4460,4462,4465,4467,4469,4471,4473],{"class":508,"line":631},[506,4452,1652],{"class":1106},[506,4454,1801],{"class":527},[506,4456,4457],{"class":523}," resource ",[506,4459,770],{"class":527},[506,4461,1766],{"class":527},[506,4463,4464],{"class":519}," useAdminResource",[506,4466,524],{"class":523},[506,4468,575],{"class":527},[506,4470,1750],{"class":571},[506,4472,575],{"class":527},[506,4474,773],{"class":523},[506,4476,4477],{"class":508,"line":648},[506,4478,1210],{"emptyLinePlaceholder":1209},[506,4480,4481],{"class":508,"line":662},[506,4482,4483],{"class":813},"// Use admin actions\n",[506,4485,4486,4488,4490,4493,4495,4498,4500,4502,4505,4507,4509,4511,4513],{"class":508,"line":668},[506,4487,1652],{"class":1106},[506,4489,1801],{"class":527},[506,4491,4492],{"class":523}," goToList",[506,4494,810],{"class":527},[506,4496,4497],{"class":523}," goToCreate ",[506,4499,770],{"class":527},[506,4501,1766],{"class":527},[506,4503,4504],{"class":519}," useAdminActions",[506,4506,524],{"class":523},[506,4508,575],{"class":527},[506,4510,4017],{"class":571},[506,4512,575],{"class":527},[506,4514,773],{"class":523},[506,4516,4517,4519,4521],{"class":508,"line":673},[506,4518,1285],{"class":527},[506,4520,1587],{"class":534},[506,4522,1095],{"class":527},[459,4524,4526],{"id":4525},"next-steps","Next Steps",[466,4528,4529,4535,4540],{},[469,4530,4531,4534],{},[964,4532,327],{"href":4533},"./m2m-relationships"," - Manage complex relations",[469,4536,4537,4539],{},[964,4538,331],{"href":332}," - Add custom resource actions",[469,4541,4542,4544],{},[964,4543,335],{"href":336}," - Available composables reference",[4546,4547,4548],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":502,"searchDepth":531,"depth":531,"links":4550},[4551,4552,4553,4561,4562,4566,4567,4568,4573,4574,4575],{"id":461,"depth":531,"text":5},{"id":486,"depth":531,"text":487},{"id":776,"depth":531,"text":777,"children":4554},[4555,4556,4557,4558,4559,4560],{"id":781,"depth":543,"text":781},{"id":822,"depth":543,"text":822},{"id":857,"depth":543,"text":857},{"id":928,"depth":543,"text":928},{"id":971,"depth":543,"text":971},{"id":1011,"depth":543,"text":1011},{"id":1044,"depth":531,"text":1045},{"id":2051,"depth":531,"text":2052,"children":4563},[4564,4565],{"id":2055,"depth":543,"text":2056},{"id":2219,"depth":543,"text":2220},{"id":2369,"depth":531,"text":2370},{"id":2443,"depth":531,"text":2444},{"id":2464,"depth":531,"text":2465,"children":4569},[4570,4571,4572],{"id":2468,"depth":543,"text":846},{"id":2628,"depth":543,"text":2629},{"id":3406,"depth":543,"text":3407},{"id":4303,"depth":531,"text":4304},{"id":4357,"depth":531,"text":4358},{"id":4525,"depth":531,"text":4526},"md",null,{},{"title":323,"description":457},"aOBdvfuW7HdNFSxklXYME6qQqrBwN-sTb6hqyVVyoGk",[4582,4584],{"title":319,"path":320,"stem":321,"description":4583,"children":-1},"This document explains the comprehensive permission system implemented in Nuxt Auto Admin.",{"title":327,"path":328,"stem":329,"description":4585,"children":-1},"This guide covers how M2M relationships work in the auto-admin interface.",1772977479616]