[{"data":1,"prerenderedAt":2179},["ShallowReactive",2],{"navigation_docs":3,"-modules-account":153,"-modules-account-surround":2174},[4,35,50,59,144],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Local Development","\u002Fgetting-started\u002Flocal-development","1.getting-started\u002F3.local-development","i-lucide-terminal",{"title":21,"path":22,"stem":23,"icon":24},"Publishing Packages","\u002Fgetting-started\u002Fpublishing","1.getting-started\u002F4.publishing","i-lucide-package-check",{"title":26,"path":27,"stem":28,"icon":29},"Writing a Module","\u002Fgetting-started\u002Fwriting-a-module","1.getting-started\u002F5.writing-a-module","i-lucide-puzzle",{"title":31,"path":32,"stem":33,"icon":34},"UX Patterns","\u002Fgetting-started\u002Fux-patterns","1.getting-started\u002F6.ux-patterns","i-lucide-layout-template",{"title":36,"path":37,"stem":38,"children":39},"Applications","\u002Fapplications","2.applications",[40,45],{"title":41,"path":42,"stem":43,"icon":44},"Website","\u002Fapplications\u002Fwebsite","2.applications\u002F1.website","i-lucide-layout-dashboard",{"title":46,"path":47,"stem":48,"icon":49},"Docs","\u002Fapplications\u002Fdocs","2.applications\u002F2.docs","i-lucide-book-open",{"title":51,"path":52,"stem":53,"children":54},"Layers","\u002Flayers","3.layers",[55],{"title":56,"path":57,"stem":58},"Base Layer","\u002Flayers\u002Fbase","3.layers\u002F1.base",{"title":60,"path":61,"stem":62,"children":63},"Modules","\u002Fmodules","4.modules",[64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140],{"title":65,"path":66,"stem":67},"Account","\u002Fmodules\u002Faccount","4.modules\u002F01.account",{"title":69,"path":70,"stem":71},"Admin","\u002Fmodules\u002Fadmin","4.modules\u002F02.admin",{"title":73,"path":74,"stem":75},"Auth","\u002Fmodules\u002Fauth","4.modules\u002F03.auth",{"title":77,"path":78,"stem":79},"Authorization","\u002Fmodules\u002Fauthorization","4.modules\u002F04.authorization",{"title":81,"path":82,"stem":83},"Cookie Consent","\u002Fmodules\u002Fcookie-consent","4.modules\u002F05.cookie-consent",{"title":85,"path":86,"stem":87},"Events","\u002Fmodules\u002Fevents","4.modules\u002F06.events",{"title":89,"path":90,"stem":91},"Forms","\u002Fmodules\u002Fforms","4.modules\u002F07.forms",{"title":93,"path":94,"stem":95},"MCP","\u002Fmodules\u002Fmcp","4.modules\u002F08.mcp",{"title":97,"path":98,"stem":99},"Menu","\u002Fmodules\u002Fmenu","4.modules\u002F09.menu",{"title":101,"path":102,"stem":103},"Module Kit","\u002Fmodules\u002Fmodule-kit","4.modules\u002F10.module-kit",{"title":105,"path":106,"stem":107},"Notify","\u002Fmodules\u002Fnotify","4.modules\u002F11.notify",{"title":109,"path":110,"stem":111},"OAuth Server","\u002Fmodules\u002Foauth-server","4.modules\u002F12.oauth-server",{"title":113,"path":114,"stem":115},"Payments","\u002Fmodules\u002Fpayments","4.modules\u002F13.payments",{"title":117,"path":118,"stem":119},"Preferences","\u002Fmodules\u002Fpreferences","4.modules\u002F14.preferences",{"title":121,"path":122,"stem":123},"Stripe","\u002Fmodules\u002Fstripe","4.modules\u002F15.stripe",{"title":125,"path":126,"stem":127},"Subscriptions","\u002Fmodules\u002Fsubscriptions","4.modules\u002F16.subscriptions",{"title":129,"path":130,"stem":131},"UI","\u002Fmodules\u002Fui","4.modules\u002F17.ui",{"title":133,"path":134,"stem":135},"Users","\u002Fmodules\u002Fusers","4.modules\u002F18.users",{"title":137,"path":138,"stem":139},"Widget","\u002Fmodules\u002Fwidget","4.modules\u002F19.widget",{"title":141,"path":142,"stem":143},"Email Templates","\u002Fmodules\u002Femail-templates","4.modules\u002F20.email-templates",{"title":145,"path":146,"stem":147,"children":148},"Packages","\u002Fpackages","5.packages",[149],{"title":150,"path":151,"stem":152},"CLI","\u002Fpackages\u002Fcli","5.packages\u002F4.cli",{"id":154,"title":65,"body":155,"description":2168,"extension":2169,"links":2170,"meta":2171,"navigation":1277,"path":66,"seo":2172,"stem":67,"__hash__":2173},"docs\u002F4.modules\u002F01.account.md",{"type":156,"value":157,"toc":2150},"minimark",[158,199,253,258,289,680,684,690,881,887,996,1007,1012,1029,1043,1045,1072,1079,1114,1135,1144,1148,1175,1202,1211,1215,1240,1362,1375,1379,1389,1393,1562,1572,1608,1637,1647,1652,1678,1727,1769,1780,1785,1791,1829,1833,1850,1979,1994,1998,2023,2027,2030,2034,2092,2146],[159,160,161,162,169,170,174,175,182,183,188,189,191,192,194,195,198],"p",{},"The account area as a ",[163,164,168],"a",{"href":165,"rel":166},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules",[167],"nofollow","Nuxt module",": an ",[171,172,173],"code",{},"account"," layout with a left\nnavigation, and opt-in pages built with ",[163,176,179],{"href":177,"rel":178},"https:\u002F\u002Fui.nuxt.com",[167],[171,180,181],{},"@nuxt\u002Fui"," and the\n",[163,184,185],{"href":130},[171,186,187],{},"@frigear-nu\u002Fui"," page patterns over the self-service routes of ",[163,190,133],{"href":134}," and the token\nroutes of ",[163,193,73],{"href":74},". It owns no tables and registers no server routes of its own. The screens follow the\n",[163,196,197],{"href":32},"UX patterns",".",[200,201,202,206,207,210,211,210,214,219,220,225,226,230,231,233,234,237,242,243,248,249,252],"note",{},[203,204,205],"strong",{},"Requires"," ",[171,208,209],{},"@nuxthub\u002Fcore",", ",[171,212,213],{},"@frigear-nu\u002Fmodule-kit",[163,215,216],{"href":74},[171,217,218],{},"@frigear-nu\u002Fauth",",\n",[163,221,222],{"href":134},[171,223,224],{},"@frigear-nu\u002Fusers"," and ",[163,227,228],{"href":130},[171,229,187],{}," (which brings ",[171,232,181],{},"). ",[203,235,236],{},"Optional:",[163,238,239],{"href":98},[171,240,241],{},"@frigear-nu\u002Fmenu"," (the account navigation, the dropdown and the overview page) and\n",[163,244,245],{"href":138},[171,246,247],{},"@frigear-nu\u002Fwidget"," (the ",[171,250,251],{},"account.overview"," widget area).",[254,255,257],"h2",{"id":256},"quick-setup","Quick setup",[259,260,265],"pre",{"className":261,"code":262,"language":263,"meta":264,"style":264},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx nuxt module add @frigear-nu\u002Faccount\n","bash","",[171,266,267],{"__ignoreMap":264},[268,269,272,276,280,283,286],"span",{"class":270,"line":271},"line",1,[268,273,275],{"class":274},"sBMFI","npx",[268,277,279],{"class":278},"sfazB"," nuxt",[268,281,282],{"class":278}," module",[268,284,285],{"class":278}," add",[268,287,288],{"class":278}," @frigear-nu\u002Faccount\n",[259,290,294],{"className":291,"code":292,"language":293,"meta":264,"style":264},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: [\n    '@nuxthub\u002Fcore',\n    '@frigear-nu\u002Fusers',\n    '@frigear-nu\u002Fmenu', \u002F\u002F optional\n    '@frigear-nu\u002Faccount',\n  ],\n  account: {\n    settings: {\n      pages: {\n        profile: true, \u002F\u002F or a custom path, e.g. '\u002Fme'\n        security: true,\n        index: true, \u002F\u002F the overview, only registered with @frigear-nu\u002Fmenu\n        documents: true,\n        apiTokens: true,\n      },\n      documents: [\n        { id: 'handbook', label: { da: 'Håndbog', en: 'Handbook' }, path: '\u002Fassets\u002Ffiles\u002Fhandbook.pdf' },\n        { id: 'crew', label: 'Crew plan', path: '\u002Fassets\u002Ffiles\u002Fcrew.pdf', roles: ['admin', 'crew'] },\n      ],\n    },\n  },\n})\n","ts",[171,295,296,317,330,343,354,370,382,390,401,411,421,438,450,465,477,489,495,505,578,651,659,665,671],{"__ignoreMap":264},[268,297,298,302,305,309,313],{"class":270,"line":271},[268,299,301],{"class":300},"s7zQu","export",[268,303,304],{"class":300}," default",[268,306,308],{"class":307},"s2Zo4"," defineNuxtConfig",[268,310,312],{"class":311},"sTEyZ","(",[268,314,316],{"class":315},"sMK4o","{\n",[268,318,320,324,327],{"class":270,"line":319},2,[268,321,323],{"class":322},"swJcz","  modules",[268,325,326],{"class":315},":",[268,328,329],{"class":311}," [\n",[268,331,333,336,338,341],{"class":270,"line":332},3,[268,334,335],{"class":315},"    '",[268,337,209],{"class":278},[268,339,340],{"class":315},"'",[268,342,219],{"class":315},[268,344,346,348,350,352],{"class":270,"line":345},4,[268,347,335],{"class":315},[268,349,224],{"class":278},[268,351,340],{"class":315},[268,353,219],{"class":315},[268,355,357,359,361,363,366],{"class":270,"line":356},5,[268,358,335],{"class":315},[268,360,241],{"class":278},[268,362,340],{"class":315},[268,364,365],{"class":315},",",[268,367,369],{"class":368},"sHwdD"," \u002F\u002F optional\n",[268,371,373,375,378,380],{"class":270,"line":372},6,[268,374,335],{"class":315},[268,376,377],{"class":278},"@frigear-nu\u002Faccount",[268,379,340],{"class":315},[268,381,219],{"class":315},[268,383,385,388],{"class":270,"line":384},7,[268,386,387],{"class":311},"  ]",[268,389,219],{"class":315},[268,391,393,396,398],{"class":270,"line":392},8,[268,394,395],{"class":322},"  account",[268,397,326],{"class":315},[268,399,400],{"class":315}," {\n",[268,402,404,407,409],{"class":270,"line":403},9,[268,405,406],{"class":322},"    settings",[268,408,326],{"class":315},[268,410,400],{"class":315},[268,412,414,417,419],{"class":270,"line":413},10,[268,415,416],{"class":322},"      pages",[268,418,326],{"class":315},[268,420,400],{"class":315},[268,422,424,427,429,433,435],{"class":270,"line":423},11,[268,425,426],{"class":322},"        profile",[268,428,326],{"class":315},[268,430,432],{"class":431},"sfNiH"," true",[268,434,365],{"class":315},[268,436,437],{"class":368}," \u002F\u002F or a custom path, e.g. '\u002Fme'\n",[268,439,441,444,446,448],{"class":270,"line":440},12,[268,442,443],{"class":322},"        security",[268,445,326],{"class":315},[268,447,432],{"class":431},[268,449,219],{"class":315},[268,451,453,456,458,460,462],{"class":270,"line":452},13,[268,454,455],{"class":322},"        index",[268,457,326],{"class":315},[268,459,432],{"class":431},[268,461,365],{"class":315},[268,463,464],{"class":368}," \u002F\u002F the overview, only registered with @frigear-nu\u002Fmenu\n",[268,466,468,471,473,475],{"class":270,"line":467},14,[268,469,470],{"class":322},"        documents",[268,472,326],{"class":315},[268,474,432],{"class":431},[268,476,219],{"class":315},[268,478,480,483,485,487],{"class":270,"line":479},15,[268,481,482],{"class":322},"        apiTokens",[268,484,326],{"class":315},[268,486,432],{"class":431},[268,488,219],{"class":315},[268,490,492],{"class":270,"line":491},16,[268,493,494],{"class":315},"      },\n",[268,496,498,501,503],{"class":270,"line":497},17,[268,499,500],{"class":322},"      documents",[268,502,326],{"class":315},[268,504,329],{"class":311},[268,506,508,511,514,516,519,522,524,526,529,531,534,537,539,541,544,546,548,551,553,555,558,560,563,566,568,570,573,575],{"class":270,"line":507},18,[268,509,510],{"class":315},"        {",[268,512,513],{"class":322}," id",[268,515,326],{"class":315},[268,517,518],{"class":315}," '",[268,520,521],{"class":278},"handbook",[268,523,340],{"class":315},[268,525,365],{"class":315},[268,527,528],{"class":322}," label",[268,530,326],{"class":315},[268,532,533],{"class":315}," {",[268,535,536],{"class":322}," da",[268,538,326],{"class":315},[268,540,518],{"class":315},[268,542,543],{"class":278},"Håndbog",[268,545,340],{"class":315},[268,547,365],{"class":315},[268,549,550],{"class":322}," en",[268,552,326],{"class":315},[268,554,518],{"class":315},[268,556,557],{"class":278},"Handbook",[268,559,340],{"class":315},[268,561,562],{"class":315}," },",[268,564,565],{"class":322}," path",[268,567,326],{"class":315},[268,569,518],{"class":315},[268,571,572],{"class":278},"\u002Fassets\u002Ffiles\u002Fhandbook.pdf",[268,574,340],{"class":315},[268,576,577],{"class":315}," },\n",[268,579,581,583,585,587,589,592,594,596,598,600,602,605,607,609,611,613,615,618,620,622,625,627,630,632,635,637,639,641,643,645,648],{"class":270,"line":580},19,[268,582,510],{"class":315},[268,584,513],{"class":322},[268,586,326],{"class":315},[268,588,518],{"class":315},[268,590,591],{"class":278},"crew",[268,593,340],{"class":315},[268,595,365],{"class":315},[268,597,528],{"class":322},[268,599,326],{"class":315},[268,601,518],{"class":315},[268,603,604],{"class":278},"Crew plan",[268,606,340],{"class":315},[268,608,365],{"class":315},[268,610,565],{"class":322},[268,612,326],{"class":315},[268,614,518],{"class":315},[268,616,617],{"class":278},"\u002Fassets\u002Ffiles\u002Fcrew.pdf",[268,619,340],{"class":315},[268,621,365],{"class":315},[268,623,624],{"class":322}," roles",[268,626,326],{"class":315},[268,628,629],{"class":311}," [",[268,631,340],{"class":315},[268,633,634],{"class":278},"admin",[268,636,340],{"class":315},[268,638,365],{"class":315},[268,640,518],{"class":315},[268,642,591],{"class":278},[268,644,340],{"class":315},[268,646,647],{"class":311},"] ",[268,649,650],{"class":315},"},\n",[268,652,654,657],{"class":270,"line":653},20,[268,655,656],{"class":311},"      ]",[268,658,219],{"class":315},[268,660,662],{"class":270,"line":661},21,[268,663,664],{"class":315},"    },\n",[268,666,668],{"class":270,"line":667},22,[268,669,670],{"class":315},"  },\n",[268,672,674,677],{"class":270,"line":673},23,[268,675,676],{"class":315},"}",[268,678,679],{"class":311},")\n",[254,681,683],{"id":682},"options","Options",[159,685,686,687,198],{},"All options live under ",[171,688,689],{},"account.settings",[691,692,693,712],"table",{},[694,695,696],"thead",{},[697,698,699,703,706,709],"tr",{},[700,701,702],"th",{},"Option",[700,704,705],{},"Type",[700,707,708],{},"Default",[700,710,711],{},"Purpose",[713,714,715,747,774,795,816,841,862],"tbody",{},[697,716,717,723,728,733],{},[718,719,720],"td",{},[171,721,722],{},"layout",[718,724,725],{},[171,726,727],{},"boolean",[718,729,730],{},[171,731,732],{},"true",[718,734,735,736,738,739,233,743,746],{},"Renders the account area in the ",[171,737,173],{}," layout (see ",[163,740,742],{"href":741},"#layout","Layout",[171,744,745],{},"false"," leaves the layout to the app.",[697,748,749,754,759,762],{},[718,750,751],{},[171,752,753],{},"pages.index",[718,755,756],{},[171,757,758],{},"string | boolean",[718,760,761],{},"off",[718,763,764,765,767,768,770,771,198],{},"The overview (summary, widgets, shortcuts). Needs ",[171,766,241],{},"; skipped with a warning without it. ",[171,769,732],{}," = ",[171,772,773],{},"\u002Faccount",[697,775,776,781,785,787],{},[718,777,778],{},[171,779,780],{},"pages.profile",[718,782,783],{},[171,784,758],{},[718,786,761],{},[718,788,789,790,770,792,198],{},"Profile page (name, avatar, email). ",[171,791,732],{},[171,793,794],{},"\u002Faccount\u002Fprofile",[697,796,797,802,806,808],{},[718,798,799],{},[171,800,801],{},"pages.security",[718,803,804],{},[171,805,758],{},[718,807,761],{},[718,809,810,811,770,813,198],{},"Password and passkeys. ",[171,812,732],{},[171,814,815],{},"\u002Faccount\u002Fsecurity",[697,817,818,823,827,829],{},[718,819,820],{},[171,821,822],{},"pages.documents",[718,824,825],{},[171,826,758],{},[718,828,761],{},[718,830,831,832,835,836,770,838,198],{},"Lists ",[171,833,834],{},"documents"," for download. ",[171,837,732],{},[171,839,840],{},"\u002Faccount\u002Fdocuments",[697,842,843,848,852,854],{},[718,844,845],{},[171,846,847],{},"pages.apiTokens",[718,849,850],{},[171,851,758],{},[718,853,761],{},[718,855,856,857,770,859,198],{},"Create and revoke personal API tokens. ",[171,858,732],{},[171,860,861],{},"\u002Faccount\u002Fapi-tokens",[697,863,864,868,873,878],{},[718,865,866],{},[171,867,834],{},[718,869,870],{},[171,871,872],{},"AccountDocument[]",[718,874,875],{},[171,876,877],{},"[]",[718,879,880],{},"Files offered on the documents page.",[159,882,883,884,886],{},"A page is enabled with ",[171,885,732],{}," (default path), a custom path string, or left off. A page whose path already exists in\nthe app is not registered, so an app replaces a shipped page by declaring its own at that path.",[259,888,890],{"className":291,"code":889,"language":293,"meta":264,"style":264},"type AccountDocument = {\n  id: string\n  \u002F** A string, or a locale map (falls back to `en`, then the first value). *\u002F\n  label: string | Record\u003Cstring, string>\n  \u002F** Where the file is served from, e.g. `\u002Fassets\u002Ffiles\u002Fhandbook.pdf`. *\u002F\n  path: string\n  icon?: string\n  \u002F** Only listed for users whose session `role` is one of these. Omit to list for every signed-in user. *\u002F\n  roles?: string[]\n}\n",[171,891,892,906,916,921,950,955,964,974,979,991],{"__ignoreMap":264},[268,893,894,898,901,904],{"class":270,"line":271},[268,895,897],{"class":896},"spNyl","type",[268,899,900],{"class":274}," AccountDocument",[268,902,903],{"class":315}," =",[268,905,400],{"class":315},[268,907,908,911,913],{"class":270,"line":319},[268,909,910],{"class":322},"  id",[268,912,326],{"class":315},[268,914,915],{"class":274}," string\n",[268,917,918],{"class":270,"line":332},[268,919,920],{"class":368},"  \u002F** A string, or a locale map (falls back to `en`, then the first value). *\u002F\n",[268,922,923,926,928,931,934,937,940,943,945,947],{"class":270,"line":345},[268,924,925],{"class":322},"  label",[268,927,326],{"class":315},[268,929,930],{"class":274}," string",[268,932,933],{"class":315}," |",[268,935,936],{"class":274}," Record",[268,938,939],{"class":315},"\u003C",[268,941,942],{"class":274},"string",[268,944,365],{"class":315},[268,946,930],{"class":274},[268,948,949],{"class":315},">\n",[268,951,952],{"class":270,"line":356},[268,953,954],{"class":368},"  \u002F** Where the file is served from, e.g. `\u002Fassets\u002Ffiles\u002Fhandbook.pdf`. *\u002F\n",[268,956,957,960,962],{"class":270,"line":372},[268,958,959],{"class":322},"  path",[268,961,326],{"class":315},[268,963,915],{"class":274},[268,965,966,969,972],{"class":270,"line":384},[268,967,968],{"class":322},"  icon",[268,970,971],{"class":315},"?:",[268,973,915],{"class":274},[268,975,976],{"class":270,"line":392},[268,977,978],{"class":368},"  \u002F** Only listed for users whose session `role` is one of these. Omit to list for every signed-in user. *\u002F\n",[268,980,981,984,986,988],{"class":270,"line":403},[268,982,983],{"class":322},"  roles",[268,985,971],{"class":315},[268,987,930],{"class":274},[268,989,990],{"class":311},"[]\n",[268,992,993],{"class":270,"line":413},[268,994,995],{"class":315},"}\n",[997,998,999,1002,1003,1006],"warning",{},[171,1000,1001],{},"roles"," only filters the list. A file served from ",[171,1004,1005],{},"public\u002F"," can be fetched by anyone who knows its URL; put sensitive\nfiles behind a server route if that matters.",[1008,1009,1011],"h3",{"id":1010},"api-tokens-and-email-changes","API tokens and email changes",[159,1013,1014,1015,1018,1019,1021,1022,1025,1026,1028],{},"The API tokens page lists the user's tokens in a table; ",[203,1016,1017],{},"Create API token"," opens a slideover with the name, scopes and\nexpiry, and the new token is shown once above the table with a copy button. Revoking a token asks for confirmation.\nTokens are created through ",[163,1020,73],{"href":74},". When ",[171,1023,1024],{},"users.settings.mcp"," is on, the page also shows a \"Connect to\nMCP\" card (",[163,1027,93],{"href":94},").",[159,1030,1031,1032,1035,1036,1039,1040,198],{},"Verified email changes are a setting of Users (",[171,1033,1034],{},"users.settings.verifyEmailChange","); point ",[171,1037,1038],{},"users.settings.profilePath","\nat the profile page, which shows the result. See ",[163,1041,133],{"href":1042},"\u002Fmodules\u002Fusers#routes",[254,1044,742],{"id":722},[159,1046,1047,1048,1050,1051,1054,1055,1057,1058,1061,1062,1064,1065,1067,1068,1071],{},"Every page under ",[171,1049,773],{}," (and ",[171,1052,1053],{},"\u002F\u003Clocale>\u002Faccount","), plus any configured page path outside it, renders in the\n",[171,1056,173],{}," layout. The module sets this with an ",[171,1059,1060],{},"appLayout"," route rule, so pages other modules add under ",[171,1063,773],{},"\n(membership, tickets, applications) get it too, whenever they register. A page that sets ",[171,1066,722],{}," in its own\n",[171,1069,1070],{},"definePageMeta"," keeps its choice.",[159,1073,1074,1075,1078],{},"The layout renders the app's ",[171,1076,1077],{},"default"," layout (the site header and footer) and puts the account area inside it:",[1080,1081,1082,1101,1108],"ul",{},[1083,1084,1085,1086,1089,1090,1092,1093,1096,1097,1100],"li",{},"on wide screens a left column (",[171,1087,1088],{},"UPageAside",") with the signed-in user and a vertical navigation built from the\n",[171,1091,173],{}," menu (",[171,1094,1095],{},"useMenu('account')",", through ",[171,1098,1099],{},"useNavLinks","); the overview is only active on its own path;",[1083,1102,1103,1104,1107],{},"on narrow screens the same entries as a ",[171,1105,1106],{},"PageTabs"," strip above the content;",[1083,1109,1110,1113],{},[171,1111,1112],{},"AccountHeader",", then the page.",[159,1115,1116,1117,1119,1120,1123,1124,1126,1127,1130,1131,1134],{},"Without ",[171,1118,241],{}," the navigation lists the enabled pages from ",[171,1121,1122],{},"settings.pages"," instead. An app without a\n",[171,1125,1077],{}," layout still works: the account area then renders on its own. The app's ",[171,1128,1129],{},"app.vue"," must render\n",[171,1132,1133],{},"\u003CNuxtLayout>"," for any layout to apply.",[159,1136,1137,1140,1141,198],{},[171,1138,1139],{},"settings.layout: false"," turns this off: no layout is registered and the pages render in whatever layout the app picks.\nThe shipped pages bring no container or heading of their own, so wrap them in a layout that renders ",[171,1142,1143],{},"\u003CAccountHeader \u002F>",[1008,1145,1147],{"id":1146},"heading","Heading",[159,1149,1150,1152,1153,1159,1160,1163,1164,1166,1167,1170,1171,1174],{},[171,1151,1112],{}," is a ",[163,1154,1156],{"href":1155},"\u002Fmodules\u002Fui#page-components",[171,1157,1158],{},"PageHeading",". Its title is the page's ",[171,1161,1162],{},"title"," meta, else the label\nof the ",[171,1165,173],{}," menu item the route belongs to (the longest matching path, so ",[171,1168,1169],{},"\u002Faccount\u002Fmembership\u002Fsuccess"," still reads\n\"Membership\"), else \"Account\"; the description comes from the same menu item. It also sets the document title.\n",[171,1172,1173],{},"AccountHeaderRight"," fills its actions on every page. A page hides the heading with:",[259,1176,1178],{"className":291,"code":1177,"language":293,"meta":264,"style":264},"definePageMeta({ heading: false })\n",[171,1179,1180],{"__ignoreMap":264},[268,1181,1182,1184,1186,1189,1192,1194,1197,1200],{"class":270,"line":271},[268,1183,1070],{"class":307},[268,1185,312],{"class":311},[268,1187,1188],{"class":315},"{",[268,1190,1191],{"class":322}," heading",[268,1193,326],{"class":315},[268,1195,1196],{"class":431}," false",[268,1198,1199],{"class":315}," }",[268,1201,679],{"class":311},[159,1203,1204,1205,1207,1208,198],{},"A page another module adds needs nothing but its route and an ",[171,1206,173],{}," menu item to get the navigation and heading.\nIt should not draw its own container or account header; its root is a plain ",[171,1209,1210],{},"\u003Cdiv class=\"flex flex-col gap-4\">",[254,1212,1214],{"id":1213},"overview","Overview",[159,1216,1217,1218,1220,1221,1223,1224,206,1226,1229,1230,1232,1233,1235,1236,1239],{},"The overview (",[171,1219,753],{},") shows a summary card (avatar, name, email and ",[171,1222,1173],{},"), then the\n",[171,1225,251],{},[163,1227,1228],{"href":138},"widget area"," when ",[171,1231,247],{}," is installed, then a card with shortcuts to\nevery other entry of the ",[171,1234,173],{}," menu. Widgets receive the session ",[171,1237,1238],{},"user"," as a prop:",[259,1241,1243],{"className":291,"code":1242,"language":293,"meta":264,"style":264},"\u002F\u002F In another module's setup()\nimport { extendWidgets } from '@frigear-nu\u002Fwidget\u002Futils'\n\nextendWidgets(nuxt, 'account.overview', {\n  id: 'next-ticket',\n  component: resolver.resolve('.\u002Fruntime\u002Fapp\u002Fcomponents\u002FNextTicket.vue'),\n  order: 10,\n})\n",[171,1244,1245,1250,1273,1279,1299,1314,1343,1356],{"__ignoreMap":264},[268,1246,1247],{"class":270,"line":271},[268,1248,1249],{"class":368},"\u002F\u002F In another module's setup()\n",[268,1251,1252,1255,1257,1260,1262,1265,1267,1270],{"class":270,"line":319},[268,1253,1254],{"class":300},"import",[268,1256,533],{"class":315},[268,1258,1259],{"class":311}," extendWidgets",[268,1261,1199],{"class":315},[268,1263,1264],{"class":300}," from",[268,1266,518],{"class":315},[268,1268,1269],{"class":278},"@frigear-nu\u002Fwidget\u002Futils",[268,1271,1272],{"class":315},"'\n",[268,1274,1275],{"class":270,"line":332},[268,1276,1278],{"emptyLinePlaceholder":1277},true,"\n",[268,1280,1281,1284,1287,1289,1291,1293,1295,1297],{"class":270,"line":345},[268,1282,1283],{"class":307},"extendWidgets",[268,1285,1286],{"class":311},"(nuxt",[268,1288,365],{"class":315},[268,1290,518],{"class":315},[268,1292,251],{"class":278},[268,1294,340],{"class":315},[268,1296,365],{"class":315},[268,1298,400],{"class":315},[268,1300,1301,1303,1305,1307,1310,1312],{"class":270,"line":356},[268,1302,910],{"class":322},[268,1304,326],{"class":315},[268,1306,518],{"class":315},[268,1308,1309],{"class":278},"next-ticket",[268,1311,340],{"class":315},[268,1313,219],{"class":315},[268,1315,1316,1319,1321,1324,1326,1329,1331,1333,1336,1338,1341],{"class":270,"line":372},[268,1317,1318],{"class":322},"  component",[268,1320,326],{"class":315},[268,1322,1323],{"class":311}," resolver",[268,1325,198],{"class":315},[268,1327,1328],{"class":307},"resolve",[268,1330,312],{"class":311},[268,1332,340],{"class":315},[268,1334,1335],{"class":278},".\u002Fruntime\u002Fapp\u002Fcomponents\u002FNextTicket.vue",[268,1337,340],{"class":315},[268,1339,1340],{"class":311},")",[268,1342,219],{"class":315},[268,1344,1345,1348,1350,1354],{"class":270,"line":384},[268,1346,1347],{"class":322},"  order",[268,1349,326],{"class":315},[268,1351,1353],{"class":1352},"sbssI"," 10",[268,1355,219],{"class":315},[268,1357,1358,1360],{"class":270,"line":392},[268,1359,676],{"class":315},[268,1361,679],{"class":311},[159,1363,1364,1365,1370,1371,1374],{},"Use ",[163,1366,1367],{"href":1155},[171,1368,1369],{},"StatCard"," for numbers and ",[171,1372,1373],{},"ListCard"," for short lists, as on the admin dashboard.",[254,1376,1378],{"id":1377},"server","Server",[159,1380,1381,1382,1384,1385,1388],{},"The account routes call the self-service routes of ",[163,1383,133],{"href":1042}," (",[171,1386,1387],{},"\u002Fapi\u002Fusers\u002Fme\u002F*","),\nwhich require a cookie session.",[254,1390,1392],{"id":1391},"app","App",[259,1394,1396],{"className":291,"code":1395,"language":293,"meta":264,"style":264},"const { updateProfileDetails, changeEmailAddress, changePassword, pending, error } = useAccount()\n\nawait updateProfileDetails({ name: 'Ada Lovelace', avatar: 'https:\u002F\u002Fexample.com\u002Fada.png' })\nawait changeEmailAddress({ email: 'ada@example.com' })\nawait changePassword({ currentPassword: 'old', newPassword: 'new-password', confirmNewPassword: 'new-password' })\n",[171,1397,1398,1438,1442,1483,1509],{"__ignoreMap":264},[268,1399,1400,1403,1405,1408,1410,1413,1415,1418,1420,1423,1425,1428,1430,1432,1435],{"class":270,"line":271},[268,1401,1402],{"class":896},"const",[268,1404,533],{"class":315},[268,1406,1407],{"class":311}," updateProfileDetails",[268,1409,365],{"class":315},[268,1411,1412],{"class":311}," changeEmailAddress",[268,1414,365],{"class":315},[268,1416,1417],{"class":311}," changePassword",[268,1419,365],{"class":315},[268,1421,1422],{"class":311}," pending",[268,1424,365],{"class":315},[268,1426,1427],{"class":311}," error ",[268,1429,676],{"class":315},[268,1431,903],{"class":315},[268,1433,1434],{"class":307}," useAccount",[268,1436,1437],{"class":311},"()\n",[268,1439,1440],{"class":270,"line":319},[268,1441,1278],{"emptyLinePlaceholder":1277},[268,1443,1444,1447,1449,1451,1453,1456,1458,1460,1463,1465,1467,1470,1472,1474,1477,1479,1481],{"class":270,"line":332},[268,1445,1446],{"class":300},"await",[268,1448,1407],{"class":307},[268,1450,312],{"class":311},[268,1452,1188],{"class":315},[268,1454,1455],{"class":322}," name",[268,1457,326],{"class":315},[268,1459,518],{"class":315},[268,1461,1462],{"class":278},"Ada Lovelace",[268,1464,340],{"class":315},[268,1466,365],{"class":315},[268,1468,1469],{"class":322}," avatar",[268,1471,326],{"class":315},[268,1473,518],{"class":315},[268,1475,1476],{"class":278},"https:\u002F\u002Fexample.com\u002Fada.png",[268,1478,340],{"class":315},[268,1480,1199],{"class":315},[268,1482,679],{"class":311},[268,1484,1485,1487,1489,1491,1493,1496,1498,1500,1503,1505,1507],{"class":270,"line":345},[268,1486,1446],{"class":300},[268,1488,1412],{"class":307},[268,1490,312],{"class":311},[268,1492,1188],{"class":315},[268,1494,1495],{"class":322}," email",[268,1497,326],{"class":315},[268,1499,518],{"class":315},[268,1501,1502],{"class":278},"ada@example.com",[268,1504,340],{"class":315},[268,1506,1199],{"class":315},[268,1508,679],{"class":311},[268,1510,1511,1513,1515,1517,1519,1522,1524,1526,1529,1531,1533,1536,1538,1540,1543,1545,1547,1550,1552,1554,1556,1558,1560],{"class":270,"line":356},[268,1512,1446],{"class":300},[268,1514,1417],{"class":307},[268,1516,312],{"class":311},[268,1518,1188],{"class":315},[268,1520,1521],{"class":322}," currentPassword",[268,1523,326],{"class":315},[268,1525,518],{"class":315},[268,1527,1528],{"class":278},"old",[268,1530,340],{"class":315},[268,1532,365],{"class":315},[268,1534,1535],{"class":322}," newPassword",[268,1537,326],{"class":315},[268,1539,518],{"class":315},[268,1541,1542],{"class":278},"new-password",[268,1544,340],{"class":315},[268,1546,365],{"class":315},[268,1548,1549],{"class":322}," confirmNewPassword",[268,1551,326],{"class":315},[268,1553,518],{"class":315},[268,1555,1542],{"class":278},[268,1557,340],{"class":315},[268,1559,1199],{"class":315},[268,1561,679],{"class":311},[159,1563,1564,1565,225,1568,1571],{},"Each call refreshes the user session afterwards; ",[171,1566,1567],{},"pending",[171,1569,1570],{},"error"," are refs.",[259,1573,1575],{"className":291,"code":1574,"language":293,"meta":264,"style":264},"const { items, links, current } = await useAccountNav()\n",[171,1576,1577],{"__ignoreMap":264},[268,1578,1579,1581,1583,1586,1588,1591,1593,1596,1598,1600,1603,1606],{"class":270,"line":271},[268,1580,1402],{"class":896},[268,1582,533],{"class":315},[268,1584,1585],{"class":311}," items",[268,1587,365],{"class":315},[268,1589,1590],{"class":311}," links",[268,1592,365],{"class":315},[268,1594,1595],{"class":311}," current ",[268,1597,676],{"class":315},[268,1599,903],{"class":315},[268,1601,1602],{"class":300}," await",[268,1604,1605],{"class":307}," useAccountNav",[268,1607,1437],{"class":311},[159,1609,1610,1613,1614,1617,1618,1620,1621,1624,1625,1628,1629,1632,1633,1636],{},[171,1611,1612],{},"useAccountNav()"," is what the layout, the heading and the overview read: ",[171,1615,1616],{},"items"," are the account navigation entries\n(the ",[171,1619,173],{}," menu, or the enabled pages without the menu module), ",[171,1622,1623],{},"links"," the same as ",[171,1626,1627],{},"UNavigationMenu"," items\n(localised, with ",[171,1630,1631],{},"active","), and ",[171,1634,1635],{},"current"," the entry the route belongs to.",[159,1638,1639,1640,210,1642,225,1644,198],{},"The module also auto-imports the components ",[171,1641,1112],{},[171,1643,1173],{},[171,1645,1646],{},"AccountMenu",[1008,1648,1650],{"id":1649},"accountmenu",[171,1651,1646],{},[159,1653,1654,1655,1657,1658,1661,1662,1665,1666,1669,1670,1673,1674,1677],{},"The signed-in user's dropdown: the user (with a role badge for anything but ",[171,1656,1238],{},"), the ",[171,1659,1660],{},"account.dropdown"," menu\n(Account, Admin, sign out), and ",[203,1663,1664],{},"Appearance"," (light, dark or system, setting ",[171,1667,1668],{},"useColorMode().preference","). Items with\n",[171,1671,1672],{},"meta.roles"," are only listed for users holding one of those roles, the entry for the area you are in is left out, and\nitems with ",[171,1675,1676],{},"order"," 99 or more (sign out) come last.",[691,1679,1680,1691],{},[694,1681,1682],{},[697,1683,1684,1687,1689],{},[700,1685,1686],{},"Prop",[700,1688,705],{},[700,1690,711],{},[713,1692,1693,1710],{},[697,1694,1695,1700,1704],{},[718,1696,1697],{},[171,1698,1699],{},"block",[718,1701,1702],{},[171,1703,727],{},[718,1705,1706,1707,1709],{},"A full-width row (avatar, name, chevrons) for a sidebar footer, as in the ",[163,1708,634],{"href":70}," shell. Without it, an avatar button for a site header.",[697,1711,1712,1717,1721],{},[718,1713,1714],{},[171,1715,1716],{},"collapsed",[718,1718,1719],{},[171,1720,727],{},[718,1722,1723,1724,1726],{},"With ",[171,1725,1699],{},": only the avatar, for a collapsed sidebar.",[259,1728,1732],{"className":1729,"code":1730,"language":1731,"meta":264,"style":264},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CAccountMenu \u002F>\n\u003CAccountMenu block :collapsed=\"collapsed\" \u002F>\n","vue",[171,1733,1734,1743],{"__ignoreMap":264},[268,1735,1736,1738,1740],{"class":270,"line":271},[268,1737,939],{"class":315},[268,1739,1646],{"class":322},[268,1741,1742],{"class":315}," \u002F>\n",[268,1744,1745,1747,1749,1752,1755,1757,1760,1763,1765,1767],{"class":270,"line":319},[268,1746,939],{"class":315},[268,1748,1646],{"class":322},[268,1750,1751],{"class":896}," block",[268,1753,1754],{"class":315}," :",[268,1756,1716],{"class":896},[268,1758,1759],{"class":315},"=",[268,1761,1762],{"class":315},"\"",[268,1764,1716],{"class":311},[268,1766,1762],{"class":315},[268,1768,1742],{"class":315},[159,1770,1771,1772,1775,1776,1779],{},"The colour mode lives here rather than in the header: set ",[171,1773,1774],{},"header.colorMode: false"," in the\n",[163,1777,1778],{"href":57},"base layer"," app config to drop the header toggle.",[1781,1782,1784],"h4",{"id":1783},"overriding-parts","Overriding parts",[159,1786,1787,1788,1790],{},"The module's components have a lower priority than the app's, so a component with the same name in your app replaces\nit. ",[171,1789,1173],{}," is the block in the actions of the account heading and in the overview's summary card\n(signed-in email by default); override it to show anything else, such as a member or Frigear ID badge:",[259,1792,1794],{"className":1729,"code":1793,"language":1731,"meta":264,"style":264},"\u003C!-- app\u002Fcomponents\u002FAccount\u002FAccountHeaderRight.vue -->\n\u003Ctemplate>\n  \u003CMyHeaderDetails \u002F>\n\u003C\u002Ftemplate>\n",[171,1795,1796,1801,1810,1820],{"__ignoreMap":264},[268,1797,1798],{"class":270,"line":271},[268,1799,1800],{"class":368},"\u003C!-- app\u002Fcomponents\u002FAccount\u002FAccountHeaderRight.vue -->\n",[268,1802,1803,1805,1808],{"class":270,"line":319},[268,1804,939],{"class":315},[268,1806,1807],{"class":322},"template",[268,1809,949],{"class":315},[268,1811,1812,1815,1818],{"class":270,"line":332},[268,1813,1814],{"class":315},"  \u003C",[268,1816,1817],{"class":322},"MyHeaderDetails",[268,1819,1742],{"class":315},[268,1821,1822,1825,1827],{"class":270,"line":345},[268,1823,1824],{"class":315},"\u003C\u002F",[268,1826,1807],{"class":322},[268,1828,949],{"class":315},[1008,1830,1832],{"id":1831},"menu-contributions","Menu contributions",[159,1834,1723,1835,1837,1838,1840,1841,1843,1844,1846,1847,1849],{},[163,1836,97],{"href":98}," installed, each enabled page adds an item. The ",[171,1839,173],{}," menu is the account navigation\n(and the overview's shortcuts); ",[171,1842,1660],{}," is ",[171,1845,1646],{},". ",[171,1848,1676],{}," sorts within the menu.",[691,1851,1852,1867],{},[694,1853,1854],{},[697,1855,1856,1859,1861,1864],{},[700,1857,1858],{},"Item",[700,1860,97],{},[700,1862,1863],{},"Order",[700,1865,1866],{},"Page",[713,1868,1869,1887,1906,1926,1944,1962],{},[697,1870,1871,1876,1880,1883],{},[718,1872,1873,1875],{},[171,1874,173],{}," (\"Account\")",[718,1877,1878],{},[171,1879,1660],{},[718,1881,1882],{},"-99",[718,1884,1885],{},[171,1886,753],{},[697,1888,1889,1895,1899,1902],{},[718,1890,1891,1894],{},[171,1892,1893],{},"account-overview"," (\"Overview\")",[718,1896,1897],{},[171,1898,173],{},[718,1900,1901],{},"0",[718,1903,1904],{},[171,1905,753],{},[697,1907,1908,1913,1919,1922],{},[718,1909,1910],{},[171,1911,1912],{},"profile",[718,1914,1915,225,1917],{},[171,1916,173],{},[171,1918,1660],{},[718,1920,1921],{},"10",[718,1923,1924],{},[171,1925,780],{},[697,1927,1928,1933,1937,1940],{},[718,1929,1930],{},[171,1931,1932],{},"security",[718,1934,1935],{},[171,1936,173],{},[718,1938,1939],{},"20",[718,1941,1942],{},[171,1943,801],{},[697,1945,1946,1951,1955,1958],{},[718,1947,1948],{},[171,1949,1950],{},"api-tokens",[718,1952,1953],{},[171,1954,173],{},[718,1956,1957],{},"25",[718,1959,1960],{},[171,1961,847],{},[697,1963,1964,1968,1972,1975],{},[718,1965,1966],{},[171,1967,834],{},[718,1969,1970],{},[171,1971,173],{},[718,1973,1974],{},"30",[718,1976,1977],{},[171,1978,822],{},[159,1980,1981,1982,1984,1985,1987,1988,1990,1991,1993],{},"Other modules slot into the same menu: Membership (",[163,1983,125],{"href":126},") at 15, Tickets\n(",[163,1986,85],{"href":86},") at 40 and Applications (",[163,1989,109],{"href":110},") at 50. Pick an order between\nthese for a new page. The source is registered for the ",[171,1992,173],{}," menu.",[254,1995,1997],{"id":1996},"page-guard","Page guard",[159,1999,1723,2000,2003,2004,2007,2008,2010,2011,2014,2015,2018,2019,2022],{},[171,2001,2002],{},"@frigear-nu\u002Fauthorization"," installed, the module adds an ",[171,2005,2006],{},"authenticated: true"," route rule for ",[171,2009,773],{}," and\n",[171,2012,2013],{},"\u002Faccount\u002F**"," (and each ",[171,2016,2017],{},"\u002F\u003Clocale>"," prefix), so every page under it, including those other modules add (membership,\ntickets, applications), is closed to guests. Set ",[171,2020,2021],{},"authorization.redirectTo"," to send guests to the login page instead of\na 401 error. Without the authorization module the pages are not guarded and the module logs a warning.",[254,2024,2026],{"id":2025},"routes","Routes",[159,2028,2029],{},"None. The module registers no server routes.",[254,2031,2033],{"id":2032},"translations","Translations",[159,2035,2036,2037,225,2040,2043,2044,2047,2048,210,2050,219,2053,210,2056,210,2059,2062,2063,2066,2067,210,2070,210,2073,225,2076,2079,2080,2083,2084,2087,2088,326],{},"The module registers ",[171,2038,2039],{},"da",[171,2041,2042],{},"en"," locale files under the ",[171,2045,2046],{},"account.*"," namespace (key groups ",[171,2049,1162],{},[171,2051,2052],{},"menu.*",[171,2054,2055],{},"profile.*",[171,2057,2058],{},"documents.*",[171,2060,2061],{},"security.*","; the full list is\n",[171,2064,2065],{},"src\u002Fruntime\u002Fi18n\u002Flang\u002Fen.json","; the layout and menu use ",[171,2068,2069],{},"nav.*",[171,2071,2072],{},"appearance.*",[171,2074,2075],{},"overview.*",[171,2077,2078],{},"accountMenu",").\nWithout ",[171,2081,2082],{},"@nuxtjs\u002Fi18n"," the English defaults are used. Override strings in your app's\n",[171,2085,2086],{},"i18n\u002Flocales\u002F\u003Ccode>.json",", see\n",[163,2089,2091],{"href":2090},"\u002Fmodules\u002Fmodule-kit#overriding-module-strings-in-your-app","overriding module strings",[259,2093,2097],{"className":2094,"code":2095,"language":2096,"meta":264,"style":264},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"account\": { \"profile\": { \"title\": \"My details\" } } }\n","json",[171,2098,2099],{"__ignoreMap":264},[268,2100,2101,2103,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134,2137,2139,2141,2143],{"class":270,"line":271},[268,2102,1188],{"class":315},[268,2104,2105],{"class":315}," \"",[268,2107,173],{"class":896},[268,2109,1762],{"class":315},[268,2111,326],{"class":315},[268,2113,533],{"class":315},[268,2115,2105],{"class":315},[268,2117,1912],{"class":274},[268,2119,1762],{"class":315},[268,2121,326],{"class":315},[268,2123,533],{"class":315},[268,2125,2105],{"class":315},[268,2127,1162],{"class":1352},[268,2129,1762],{"class":315},[268,2131,326],{"class":315},[268,2133,2105],{"class":315},[268,2135,2136],{"class":278},"My details",[268,2138,1762],{"class":315},[268,2140,1199],{"class":315},[268,2142,1199],{"class":315},[268,2144,2145],{"class":315}," }\n",[2147,2148,2149],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":264,"searchDepth":319,"depth":319,"links":2151},[2152,2153,2156,2159,2160,2161,2165,2166,2167],{"id":256,"depth":319,"text":257},{"id":682,"depth":319,"text":683,"children":2154},[2155],{"id":1010,"depth":332,"text":1011},{"id":722,"depth":319,"text":742,"children":2157},[2158],{"id":1146,"depth":332,"text":1147},{"id":1213,"depth":319,"text":1214},{"id":1377,"depth":319,"text":1378},{"id":1391,"depth":319,"text":1392,"children":2162},[2163,2164],{"id":1649,"depth":332,"text":1646},{"id":1831,"depth":332,"text":1832},{"id":1996,"depth":319,"text":1997},{"id":2025,"depth":319,"text":2026},{"id":2032,"depth":319,"text":2033},"The account area - a layout with its own navigation, an overview and the profile, security, documents and API tokens pages - built on Users and Auth.","md",null,{},{"title":65,"description":2168},"mDSeSSr2rNnkfPJ6CblU4QEsOPFlf8avQhkj0aW2iC4",[2175,2177],{"title":60,"path":61,"stem":62,"children":-1,"description":2176},"Every Frigear Nuxt module, grouped by what it does, with how they depend on each other.",{"title":69,"path":70,"stem":71,"description":2178,"children":-1},"Generic admin area - guarded shell, dashboard and navigation that other modules contribute to.",1792824485286]