[{"data":1,"prerenderedAt":1618},["ShallowReactive",2],{"duxt-navigation-docs-docs_pt":3,"i-lucide:rocket":833,"i-lucide:compass":838,"i-lucide:list":840,"i-lucide:ruler":842,"i-lucide:gavel":844,"i-lucide:book-open":846,"i-lucide:folder-git":848,"i-lucide:git-compare":850,"i-lucide:languages":852,"i-lucide:palette":854,"i-lucide:signpost":856,"i-lucide:cloud-upload":858,"i-lucide:thumbs-up":860,"i-lucide:badge-check":862,"docs-pt-BR-\u002Fguides\u002Fcollect-page-feedback":864,"i-lucide:copy":1580,"i-lucide:thumbs-down":1582,"i-lucide:star":1584,"i-lucide:circle-alert":1586,"i-simple-icons:discord":1588,"i-lucide:book-open-text":1590,"i-lucide:arrow-up-right":1592,"i-lucide:pencil":1594,"i-lucide:menu":1596,"i-lucide:chevron-down":1598,"i-lucide:search":1600,"i-simple-icons:github":1602,"i-lucide:moon":1604,"duxt-code-vue-\u003Cscript setup lang=\"ts\">\nimport DuxtPageFeedbackBase from '@duxt\u002Fcomponents\u002FDuxtPageFeedback.vue';\n\nconst route = useRoute();\n\n\u002F\u002F O evento transporta a resposta e mais nada — a página a que pertence és tu\n\u002F\u002F que a lês, e `fullPath` é a que mantém os prefixos de locale, repositório e\n\u002F\u002F versão sob os quais a resposta foi realmente dada.\nasync function onFeedback(helpful: boolean) {\n  await $fetch('\u002Fapi\u002Ffeedback', {\n    method: 'POST',\n    body: { path: route.fullPath, helpful }\n  });\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CDuxtPageFeedbackBase @feedback=\"onFeedback\" \u002F>\n\u003C\u002Ftemplate>\n":785,"duxt-code-ts-export default defineEventHandler(async (event) => {\n  const { path, helpful } = await readBody(event);\n\n  \u002F\u002F O teu armazenamento, a tua analítica, a tua fila.\n  await recordFeedback({ path, helpful });\n\n  return { ok: true };\n});\n":785,"duxt-code-vue-\u003Cscript setup lang=\"ts\">\nimport DuxtPageFeedbackBase from '@duxt\u002Fcomponents\u002FDuxtPageFeedback.vue';\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CDuxtPageFeedbackBase v-slot=\"{ answered, answer }\">\n    \u003Cform v-if=\"answered === undefined\" @submit.prevent=\"answer(true)\">\n      \u003Clabel>\n        Diz-nos o que falta\n        \u003Ctextarea name=\"comment\" \u002F>\n      \u003C\u002Flabel>\n      \u003Cbutton type=\"submit\">Enviar\u003C\u002Fbutton>\n    \u003C\u002Fform>\n    \u003Cp v-else>Obrigado.\u003C\u002Fp>\n  \u003C\u002FDuxtPageFeedbackBase>\n\u003C\u002Ftemplate>\n":785,"i-lucide:triangle-alert":1606,"i-flag:br-4x3":1608,"i-lucide:arrow-left":1612,"i-lucide:arrow-right":1614,"i-lucide:chevron-right":1616},[4,25,94,148,744,752,772,827],{"title":5,"path":6,"stem":7,"children":8,"description":12},"Introdução","\u002Fgetting-started","1.getting-started",[9,13,19],{"title":5,"path":6,"stem":10,"icon":11,"description":12},"1.getting-started\u002Findex","lucide:rocket","O que é o duxt, e o que chega com uma única linha de configuração.",{"title":14,"path":15,"stem":16,"icon":17,"description":18},"Instalação","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F1.installation","lucide:download","Adicione a camada, estenda-a, escreva Markdown.",{"title":20,"path":21,"stem":22,"icon":23,"description":24},"Configuração","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F2.configuration","lucide:settings","Um ficheiro configura o site inteiro — o que lhe pertence e como é combinado.",{"title":26,"path":27,"stem":28,"children":29,"description":33},"Conceitos","\u002Fconcepts","2.concepts",[30,34,40,46,52,58,64,70,76,82,88],{"title":26,"path":27,"stem":31,"icon":32,"description":33},"2.concepts\u002Findex","lucide:compass","Como a camada funciona — o modelo de fontes, o esquema de URL, as coleções e as verificações.",{"title":35,"path":36,"stem":37,"icon":38,"description":39},"Camadas e substituição","\u002Fconcepts\u002Flayers","2.concepts\u002F1.layers","lucide:layers","O que uma camada Nuxt te dá, o que te tira, e que caminhos não resolvem como se leem.",{"title":41,"path":42,"stem":43,"icon":44,"description":45},"Tematização","\u002Fconcepts\u002Ftheming","2.concepts\u002F10.theming","lucide:palette","Como o tema está montado — componentes próprios, uma camada de tokens e um modo escuro que comuta por classe.",{"title":47,"path":48,"stem":49,"icon":50,"description":51},"Fontes","\u002Fconcepts\u002Fsources","2.concepts\u002F2.sources","lucide:git-branch","Uma lista de fontes torna-se cada coleção, prefixo e versão que o site serve.",{"title":53,"path":54,"stem":55,"icon":56,"description":57},"URL e versões","\u002Fconcepts\u002Furls-and-versions","2.concepts\u002F3.urls-and-versions","lucide:git-compare","Como aparecem os segmentos de repositório e versão, e o que é dito a quem lê uma versão antiga.",{"title":59,"path":60,"stem":61,"icon":62,"description":63},"Coleções","\u002Fconcepts\u002Fcollections","2.concepts\u002F4.collections","lucide:database","O que o Content constrói a partir das fontes, e as quatro coisas que o esquema acrescenta.",{"title":65,"path":66,"stem":67,"icon":68,"description":69},"Secções geradas","\u002Fconcepts\u002Fgenerated-sections","2.concepts\u002F5.generated-sections","lucide:file-cog","Um artefacto mais um tipo, publicados como páginas — o que é o registo, e as duas políticas que um tipo responde.",{"title":71,"path":72,"stem":73,"icon":74,"description":75},"O que a compilação verifica","\u002Fconcepts\u002Fbuild-checks","2.concepts\u002F6.build-checks","lucide:shield-check","As falhas silenciosas que esta camada teve, transformadas em mensagens.",{"title":77,"path":78,"stem":79,"icon":80,"description":81},"Leitores automáticos","\u002Fconcepts\u002Fmachine-readers","2.concepts\u002F7.machine-readers","lucide:bot","O que um modelo recebe — llms.txt, o Markdown em bruto de qualquer página e um verdadeiro servidor MCP.",{"title":83,"path":84,"stem":85,"icon":86,"description":87},"SEO","\u002Fconcepts\u002Fseo","2.concepts\u002F8.seo","lucide:search","O que cada página emite para rastreadores e cartões sociais, que módulo o escreve, e o único valor que a camada não consegue adivinhar.",{"title":89,"path":90,"stem":91,"icon":92,"description":93},"Localização","\u002Fconcepts\u002Flocalisation","2.concepts\u002F9.localisation","lucide:languages","A camada traz sete locales, e cada texto configurado assume três formas.",{"title":95,"path":96,"stem":97,"children":98,"description":102},"Guias","\u002Fguides","3.guides",[99,103,109,114,119,124,130,136,142],{"title":95,"path":96,"stem":100,"icon":101,"description":102},"3.guides\u002Findex","lucide:book-open","Uma tarefa por página, do início ao fim — vários repositórios, várias versões, vários idiomas e uma implementação.",{"title":104,"path":105,"stem":106,"icon":107,"description":108},"Vários repositórios","\u002Fguides\u002Fseveral-repositories","3.guides\u002F1.several-repositories","lucide:folder-git","Servir a documentação de vários projetos a partir de um só site.",{"title":110,"path":111,"stem":112,"icon":56,"description":113},"Várias versões","\u002Fguides\u002Fseveral-versions","3.guides\u002F2.several-versions","Servir a mesma documentação em várias refs, com seletor e aviso.",{"title":115,"path":116,"stem":117,"icon":92,"description":118},"Vários idiomas","\u002Fguides\u002Fseveral-languages","3.guides\u002F3.several-languages","Servir a interface em vários idiomas, e traduzir também as páginas.",{"title":120,"path":121,"stem":122,"icon":44,"description":123},"Substituir o tema","\u002Fguides\u002Foverride-the-theme","3.guides\u002F4.override-the-theme","Mudar uma cor, substituir um componente, acrescentar uma primitiva shadcn-vue.",{"title":125,"path":126,"stem":127,"icon":128,"description":129},"Mover uma página","\u002Fguides\u002Fmove-a-page","3.guides\u002F5.move-a-page","lucide:signpost","redirectFrom no frontmatter, transformado em regras de rota sob todos os prefixos.",{"title":131,"path":132,"stem":133,"icon":134,"description":135},"Implementar um site","\u002Fguides\u002Fdeploy-a-site","3.guides\u002F6.deploy-a-site","lucide:cloud-upload","Onde um site duxt pode correr, do que precisa lá, e porque o conteúdo não é atualizado em execução.",{"title":137,"path":138,"stem":139,"icon":140,"description":141},"Recolher opiniões da página","\u002Fguides\u002Fcollect-page-feedback","3.guides\u002F7.collect-page-feedback","lucide:thumbs-up","Envolve o DuxtPageFeedback e guarda a resposta onde a tua analítica já vive.",{"title":143,"path":144,"stem":145,"icon":146,"description":147},"Dá identidade ao teu site","\u002Fguides\u002Fbrand-your-site","3.guides\u002F8.brand-your-site","lucide:badge-check","Define o nome, o logótipo e os ícones, para que o site se leia como teu e não como o da camada.",{"title":149,"path":150,"stem":151,"children":152,"description":156},"Referência","\u002Freference","4.reference",[153,157,161,193,197,203,343,490,611,656,717],{"title":149,"path":150,"stem":154,"icon":155,"description":156},"4.reference\u002Findex","lucide:list","A superfície pública da camada — chaves de configuração, frontmatter, componentes, composables e endpoints.",{"title":20,"path":158,"stem":159,"icon":23,"description":160},"\u002Freference\u002Fconfiguration","4.reference\u002F1.configuration","Cada chave sob duxt em app.config.ts — o que controla e quando é lida.",{"title":162,"path":163,"stem":164,"children":165,"icon":167,"description":168},"Registo de alterações","\u002Freference\u002Fchangelog","4.reference\u002F10.changelog\u002Findex",[166,169,175,181,187],{"title":162,"path":163,"stem":164,"icon":167,"description":168},"lucide:tag","Um registo de versões, publicado como páginas — uma cronologia, uma página por versão, e um feed.",{"title":170,"path":171,"stem":172,"icon":173,"description":174},"Declarar a secção","\u002Freference\u002Fchangelog\u002Fsection","4.reference\u002F10.changelog\u002F1.section","lucide:file-clock","O tipo de secção `changelog` — onde vive o ficheiro, e as duas políticas que responde.",{"title":176,"path":177,"stem":178,"icon":179,"description":180},"Granularidade","\u002Freference\u002Fchangelog\u002Fgranularity","4.reference\u002F10.changelog\u002F2.granularity","lucide:split","Uma página por versão, ou o ficheiro como a única página que foi escrito.",{"title":182,"path":183,"stem":184,"icon":185,"description":186},"O que é lido","\u002Freference\u002Fchangelog\u002Fwhat-is-read","4.reference\u002F10.changelog\u002F3.what-is-read","lucide:scan-text","Que títulos passam a versões, quais a grupos, e o que acontece ao resto.",{"title":188,"path":189,"stem":190,"icon":191,"description":192},"Esquema e componentes","\u002Freference\u002Fchangelog\u002Fcomponents","4.reference\u002F10.changelog\u002F4.components","lucide:box","O esquema em que um histórico dividido renderiza, e os dois componentes MDC de que as suas páginas são feitas.",{"title":47,"path":194,"stem":195,"icon":50,"description":196},"\u002Freference\u002Fsources","4.reference\u002F2.sources","Os campos de uma entrada de fonte, as suas refs, e as opções que moldam os URL.",{"title":198,"path":199,"stem":200,"icon":201,"description":202},"Frontmatter","\u002Freference\u002Ffrontmatter","4.reference\u002F3.frontmatter","lucide:file-code","Os campos que uma página pode ter além do título e da descrição, e os dois que a compilação preenche.",{"title":204,"path":205,"stem":206,"children":207,"icon":209,"description":210},"Componentes MDC","\u002Freference\u002Fmdc-components","4.reference\u002F4.mdc-components\u002Findex",[208,211,217,223,229,235,241,247,253,259,297,303,308,314,320,326,332,338],{"title":204,"path":205,"stem":206,"icon":209,"description":210},"lucide:blocks","Os blocos que uma página Markdown pode invocar, uma página cada, com as suas props.",{"title":212,"path":213,"stem":214,"icon":215,"description":216},"Callout","\u002Freference\u002Fmdc-components\u002Fcallout","4.reference\u002F4.mdc-components\u002F1.callout","lucide:message-square-warning","Um aparte em que o leitor deve parar — uma dica, um aviso, um perigo.",{"title":218,"path":219,"stem":220,"icon":221,"description":222},"Gestores de pacotes","\u002Freference\u002Fmdc-components\u002Fpackage-managers","4.reference\u002F4.mdc-components\u002F10.package-managers","lucide:package","Um comando, um separador por gestor de pacotes, memorizado de página em página.",{"title":224,"path":225,"stem":226,"icon":227,"description":228},"Árvore de ficheiros","\u002Freference\u002Fmdc-components\u002Ffile-tree","4.reference\u002F4.mdc-components\u002F11.file-tree","lucide:folder-tree","Uma estrutura de pastas, com ícones por tipo de ficheiro.",{"title":230,"path":231,"stem":232,"icon":233,"description":234},"Pré-visualização","\u002Freference\u002Fmdc-components\u002Fpreview","4.reference\u002F4.mdc-components\u002F12.preview","lucide:eye","Um componente desenhado tal como a página o desenha, com o seu código-fonte ao lado.",{"title":236,"path":237,"stem":238,"icon":239,"description":240},"Cartões de página","\u002Freference\u002Fmdc-components\u002Fpage-cards","4.reference\u002F4.mdc-components\u002F13.page-cards","lucide:layout-grid","Os filhos de uma secção, como cartões.",{"title":242,"path":243,"stem":244,"icon":245,"description":246},"Partial","\u002Freference\u002Fmdc-components\u002Fpartial","4.reference\u002F4.mdc-components\u002F14.partial","lucide:puzzle","Um bloco escrito uma vez e apresentado em todas as fontes que dele precisam.",{"title":248,"path":249,"stem":250,"icon":251,"description":252},"Since","\u002Freference\u002Fmdc-components\u002Fsince","4.reference\u002F4.mdc-components\u002F15.since","lucide:milestone","A versão em que algo apareceu, ao lado de um cabeçalho.",{"title":254,"path":255,"stem":256,"icon":257,"description":258},"Mermaid","\u002Freference\u002Fmdc-components\u002Fmermaid","4.reference\u002F4.mdc-components\u002F16.mermaid","lucide:workflow","Um diagrama a partir de um bloco de código ou de uma prop.",{"title":260,"path":261,"stem":262,"children":263,"icon":265,"description":266},"Substituições de prosa","\u002Freference\u002Fmdc-components\u002Fprose","4.reference\u002F4.mdc-components\u002F17.prose\u002Findex",[264,267,273,279,285,291],{"title":260,"path":261,"stem":262,"icon":265,"description":266},"lucide:type","O que a camada muda no Markdown simples — ligações, cabeçalhos, imagens, código e tabelas.",{"title":268,"path":269,"stem":270,"icon":271,"description":272},"ProseA","\u002Freference\u002Fmdc-components\u002Fprose\u002Fprose-a","4.reference\u002F4.mdc-components\u002F17.prose\u002F1.prose-a","lucide:link","Uma ligação, resolvida em função da fonte em que foi escrita.",{"title":274,"path":275,"stem":276,"icon":277,"description":278},"ProseH2, ProseH3, ProseH4","\u002Freference\u002Fmdc-components\u002Fprose\u002Fprose-headings","4.reference\u002F4.mdc-components\u002F17.prose\u002F2.prose-headings","lucide:heading","Cabeçalhos, cada um com a sua âncora permanente.",{"title":280,"path":281,"stem":282,"icon":283,"description":284},"ProseImg","\u002Freference\u002Fmdc-components\u002Fprose\u002Fprose-img","4.reference\u002F4.mdc-components\u002F17.prose\u002F3.prose-img","lucide:image","Uma imagem: consciente do tema, e ampliável.",{"title":286,"path":287,"stem":288,"icon":289,"description":290},"ProsePre","\u002Freference\u002Fmdc-components\u002Fprose\u002Fprose-pre","4.reference\u002F4.mdc-components\u002F17.prose\u002F4.prose-pre","lucide:terminal","O bloco de código: nome do ficheiro, ícone da linguagem, botão de copiar.",{"title":292,"path":293,"stem":294,"icon":295,"description":296},"ProseTable","\u002Freference\u002Fmdc-components\u002Fprose\u002Fprose-table","4.reference\u002F4.mdc-components\u002F17.prose\u002F5.prose-table","lucide:table","Uma tabela que se desloca em vez da página.",{"title":298,"path":299,"stem":300,"icon":301,"description":302},"Passos","\u002Freference\u002Fmdc-components\u002Fsteps","4.reference\u002F4.mdc-components\u002F2.steps","lucide:list-ordered","Uma lista ordenada desenhada como passos numerados sobre uma calha.",{"title":304,"path":305,"stem":306,"icon":201,"description":307},"Grupo de código","\u002Freference\u002Fmdc-components\u002Fcode-group","4.reference\u002F4.mdc-components\u002F3.code-group","Vários blocos de código como um só bloco com separadores, rotulados pelo nome do ficheiro.",{"title":309,"path":310,"stem":311,"icon":312,"description":313},"Grupo de separadores","\u002Freference\u002Fmdc-components\u002Ftab-group","4.reference\u002F4.mdc-components\u002F4.tab-group","lucide:panels-top-left","Separadores para tudo o que não seja código.",{"title":315,"path":316,"stem":317,"icon":318,"description":319},"Tab","\u002Freference\u002Fmdc-components\u002Ftab","4.reference\u002F4.mdc-components\u002F5.tab","lucide:square","Um painel de um grupo de separadores.",{"title":321,"path":322,"stem":323,"icon":324,"description":325},"Accordion","\u002Freference\u002Fmdc-components\u002Faccordion","4.reference\u002F4.mdc-components\u002F6.accordion","lucide:chevrons-up-down","Secções recolhíveis — um FAQ, ou respostas que o leitor escolhe.",{"title":327,"path":328,"stem":329,"icon":330,"description":331},"Item de accordion","\u002Freference\u002Fmdc-components\u002Faccordion-item","4.reference\u002F4.mdc-components\u002F7.accordion-item","lucide:chevron-down","Uma secção recolhível.",{"title":333,"path":334,"stem":335,"icon":336,"description":337},"Grupo de campos","\u002Freference\u002Fmdc-components\u002Ffield-group","4.reference\u002F4.mdc-components\u002F8.field-group","lucide:list-tree","Uma lista de campos como um só bloco.",{"title":339,"path":340,"stem":341,"icon":167,"description":342},"Campo","\u002Freference\u002Fmdc-components\u002Ffield","4.reference\u002F4.mdc-components\u002F9.field","Um parâmetro, propriedade ou opção, com o seu tipo e valor por omissão.",{"title":344,"path":345,"stem":346,"children":347,"icon":349,"description":350},"Componentes","\u002Freference\u002Fcomponents","4.reference\u002F5.components\u002Findex",[348,351,371,412,459],{"title":344,"path":345,"stem":346,"icon":349,"description":350},"lucide:component","Os componentes da própria camada, uma página cada — para que serve cada um e o que recebe.",{"title":352,"path":353,"stem":354,"children":355,"icon":357,"description":358},"Layout","\u002Freference\u002Fcomponents\u002Flayout","4.reference\u002F5.components\u002F1.layout\u002Findex",[356,359,365],{"title":352,"path":353,"stem":354,"icon":357,"description":358},"lucide:layout-panel-top","Os dois componentes que emolduram uma página — a barra de navegação e o rodapé.",{"title":360,"path":361,"stem":362,"icon":363,"description":364},"DuxtHeader","\u002Freference\u002Fcomponents\u002Flayout\u002Fduxt-header","4.reference\u002F5.components\u002F1.layout\u002F1.duxt-header","lucide:panel-top","A barra de navegação: título, navegação, pesquisa e as ligações de ícone.",{"title":366,"path":367,"stem":368,"icon":369,"description":370},"DuxtFooter","\u002Freference\u002Fcomponents\u002Flayout\u002Fduxt-footer","4.reference\u002F5.components\u002F1.layout\u002F2.duxt-footer","lucide:panel-bottom","O rodapé: o nome do site, as suas ligações legais e a linha da própria camada.",{"title":372,"path":373,"stem":374,"children":375,"icon":32,"description":377},"Navegação","\u002Freference\u002Fcomponents\u002Fnavigation","4.reference\u002F5.components\u002F2.navigation\u002Findex",[376,378,384,389,395,401,406],{"title":372,"path":373,"stem":374,"icon":32,"description":377},"Circular pela documentação — a linha de secções, a barra lateral, o trilho, o índice e anterior\u002Fseguinte.",{"title":379,"path":380,"stem":381,"icon":382,"description":383},"DuxtSections","\u002Freference\u002Fcomponents\u002Fnavigation\u002Fduxt-sections","4.reference\u002F5.components\u002F2.navigation\u002F1.duxt-sections","lucide:rows-3","A segunda linha da barra de navegação — as partes de topo da documentação.",{"title":385,"path":386,"stem":387,"icon":336,"description":388},"DuxtNavigation","\u002Freference\u002Fcomponents\u002Fnavigation\u002Fduxt-navigation","4.reference\u002F5.components\u002F2.navigation\u002F2.duxt-navigation","A árvore da barra lateral.",{"title":390,"path":391,"stem":392,"icon":393,"description":394},"DuxtNavigationLink","\u002Freference\u002Fcomponents\u002Fnavigation\u002Fduxt-navigation-link","4.reference\u002F5.components\u002F2.navigation\u002F3.duxt-navigation-link","lucide:link-2","Uma entrada da barra lateral.",{"title":396,"path":397,"stem":398,"icon":399,"description":400},"DuxtBreadcrumb","\u002Freference\u002Fcomponents\u002Fnavigation\u002Fduxt-breadcrumb","4.reference\u002F5.components\u002F2.navigation\u002F4.duxt-breadcrumb","lucide:chevrons-right","O trilho por cima do título da página.",{"title":402,"path":403,"stem":404,"icon":155,"description":405},"DuxtToc","\u002Freference\u002Fcomponents\u002Fnavigation\u002Fduxt-toc","4.reference\u002F5.components\u002F2.navigation\u002F5.duxt-toc","O índice, e o aside por baixo dele.",{"title":407,"path":408,"stem":409,"icon":410,"description":411},"DuxtPageNav","\u002Freference\u002Fcomponents\u002Fnavigation\u002Fduxt-page-nav","4.reference\u002F5.components\u002F2.navigation\u002F6.duxt-page-nav","lucide:arrow-left-right","Anterior e seguinte, limitados pela secção.",{"title":413,"path":414,"stem":415,"children":416,"icon":418,"description":419},"Controlos","\u002Freference\u002Fcomponents\u002Fcontrols","4.reference\u002F5.components\u002F3.controls\u002Findex",[417,420,425,430,436,441,447,453],{"title":413,"path":414,"stem":415,"icon":418,"description":419},"lucide:sliders-horizontal","O que o leitor opera — a pesquisa, os seletores, a folha de atalhos e dois indicadores.",{"title":421,"path":422,"stem":423,"icon":86,"description":424},"DuxtSearch","\u002Freference\u002Fcomponents\u002Fcontrols\u002Fduxt-search","4.reference\u002F5.components\u002F3.controls\u002F1.duxt-search","Pesquisa em todas as fontes, ordenada em conjunto.",{"title":426,"path":427,"stem":428,"icon":38,"description":429},"DuxtVersion","\u002Freference\u002Fcomponents\u002Fcontrols\u002Fduxt-version","4.reference\u002F5.components\u002F3.controls\u002F2.duxt-version","O distintivo de versão, e o seletor quando há mais do que uma.",{"title":431,"path":432,"stem":433,"icon":434,"description":435},"DuxtVersionBanner","\u002Freference\u002Fcomponents\u002Fcontrols\u002Fduxt-version-banner","4.reference\u002F5.components\u002F3.controls\u002F3.duxt-version-banner","lucide:triangle-alert","A barra que diz ao leitor que esta versão não é a atual.",{"title":437,"path":438,"stem":439,"icon":92,"description":440},"DuxtLocale","\u002Freference\u002Fcomponents\u002Fcontrols\u002Fduxt-locale","4.reference\u002F5.components\u002F3.controls\u002F4.duxt-locale","O seletor de idioma.",{"title":442,"path":443,"stem":444,"icon":445,"description":446},"DuxtProgress","\u002Freference\u002Fcomponents\u002Fcontrols\u002Fduxt-progress","4.reference\u002F5.components\u002F3.controls\u002F5.duxt-progress","lucide:loader","Até onde o leitor já desceu na página.",{"title":448,"path":449,"stem":450,"icon":451,"description":452},"DuxtShortcuts","\u002Freference\u002Fcomponents\u002Fcontrols\u002Fduxt-shortcuts","4.reference\u002F5.components\u002F3.controls\u002F6.duxt-shortcuts","lucide:keyboard","A folha de atalhos de teclado, na tecla ?.",{"title":454,"path":455,"stem":456,"icon":457,"description":458},"DuxtSkipLink","\u002Freference\u002Fcomponents\u002Fcontrols\u002Fduxt-skip-link","4.reference\u002F5.components\u002F3.controls\u002F7.duxt-skip-link","lucide:skip-forward","O primeiro elemento focável da página.",{"title":460,"path":461,"stem":462,"children":463,"icon":465,"description":466},"Página","\u002Freference\u002Fcomponents\u002Fpage","4.reference\u002F5.components\u002F4.page\u002Findex",[464,467,473,479,484],{"title":460,"path":461,"stem":462,"icon":465,"description":466},"lucide:file-text","Os componentes que pertencem à própria página.",{"title":468,"path":469,"stem":470,"icon":471,"description":472},"DuxtPageInfo","\u002Freference\u002Fcomponents\u002Fpage\u002Fduxt-page-info","4.reference\u002F5.components\u002F4.page\u002F1.duxt-page-info","lucide:git-commit-horizontal","De onde veio a página: ligação de edição, última atualização, contribuidores.",{"title":474,"path":475,"stem":476,"icon":477,"description":478},"DuxtCopyPage","\u002Freference\u002Fcomponents\u002Fpage\u002Fduxt-copy-page","4.reference\u002F5.components\u002F4.page\u002F2.duxt-copy-page","lucide:clipboard-copy","Entrega esta página a um modelo, ou lê o seu código-fonte.",{"title":480,"path":481,"stem":482,"icon":140,"description":483},"DuxtPageFeedback","\u002Freference\u002Fcomponents\u002Fpage\u002Fduxt-page-feedback","4.reference\u002F5.components\u002F4.page\u002F3.duxt-page-feedback","«Esta página foi útil?» — um evento, e sem backend.",{"title":485,"path":486,"stem":487,"icon":488,"description":489},"DuxtCodeBlock","\u002Freference\u002Fcomponents\u002Fpage\u002Fduxt-code-block","4.reference\u002F5.components\u002F4.page\u002F4.duxt-code-block","lucide:code","O cartão à volta de um bloco de código.",{"title":491,"path":492,"stem":493,"children":494,"icon":496,"description":497},"Composables","\u002Freference\u002Fcomposables","4.reference\u002F6.composables\u002Findex",[495,498,532,561],{"title":491,"path":492,"stem":493,"icon":496,"description":497},"lucide:function-square","As funções que a camada expõe aos teus próprios componentes, uma página cada.",{"title":499,"path":500,"stem":501,"children":502,"icon":62,"description":504},"Configuração e conteúdo","\u002Freference\u002Fcomposables\u002Fconfig-and-content","4.reference\u002F6.composables\u002F1.config-and-content\u002Findex",[503,505,510,516,521,527],{"title":499,"path":500,"stem":501,"icon":62,"description":504},"A configuração fundida, e que coleção serve a página que está a ser lida.",{"title":506,"path":507,"stem":508,"icon":23,"description":509},"useDuxtConfig()","\u002Freference\u002Fcomposables\u002Fconfig-and-content\u002Fuse-duxt-config","4.reference\u002F6.composables\u002F1.config-and-content\u002F1.use-duxt-config","A configuração fundida, com todos os campos de texto já resolvidos.",{"title":511,"path":512,"stem":513,"icon":514,"description":515},"useDuxtCollection()","\u002Freference\u002Fcomposables\u002Fconfig-and-content\u002Fuse-duxt-collection","4.reference\u002F6.composables\u002F1.config-and-content\u002F2.use-duxt-collection","lucide:library","Que coleção serve esta rota.",{"title":517,"path":518,"stem":519,"icon":336,"description":520},"useDuxtNavigation()","\u002Freference\u002Fcomposables\u002Fconfig-and-content\u002Fuse-duxt-navigation","4.reference\u002F6.composables\u002F1.config-and-content\u002F3.use-duxt-navigation","A árvore de navegação da coleção que serve esta rota.",{"title":522,"path":523,"stem":524,"icon":525,"description":526},"useDuxtSection()","\u002Freference\u002Fcomposables\u002Fconfig-and-content\u002Fuse-duxt-section","4.reference\u002F6.composables\u002F1.config-and-content\u002F4.use-duxt-section","lucide:folder-open","A parte da documentação em que esta página está.",{"title":528,"path":529,"stem":530,"icon":399,"description":531},"useDuxtBreadcrumb()","\u002Freference\u002Fcomposables\u002Fconfig-and-content\u002Fuse-duxt-breadcrumb","4.reference\u002F6.composables\u002F1.config-and-content\u002F5.use-duxt-breadcrumb","O trilho da secção até uma página.",{"title":533,"path":534,"stem":535,"children":536,"icon":538,"description":539},"Caminhos e versões","\u002Freference\u002Fcomposables\u002Fpaths-and-versions","4.reference\u002F6.composables\u002F2.paths-and-versions\u002Findex",[537,540,545,550,555],{"title":533,"path":534,"stem":535,"icon":538,"description":539},"lucide:route","Ler um URL, escrever outro de volta, e saber que versão está a ser lida.",{"title":541,"path":542,"stem":543,"icon":251,"description":544},"useDuxtPath()","\u002Freference\u002Fcomposables\u002Fpaths-and-versions\u002Fuse-duxt-path","4.reference\u002F6.composables\u002F2.paths-and-versions\u002F1.use-duxt-path","O caminho em que a documentação está, com o locale retirado.",{"title":546,"path":547,"stem":548,"icon":271,"description":549},"useDuxtLink()","\u002Freference\u002Fcomposables\u002Fpaths-and-versions\u002Fuse-duxt-link","4.reference\u002F6.composables\u002F2.paths-and-versions\u002F2.use-duxt-link","Um caminho de documentação, reescrito como ligação.",{"title":551,"path":552,"stem":553,"icon":38,"description":554},"useDuxtVersion()","\u002Freference\u002Fcomposables\u002Fpaths-and-versions\u002Fuse-duxt-version","4.reference\u002F6.composables\u002F2.paths-and-versions\u002F3.use-duxt-version","O que o seletor mostra, o que o aviso diz, se se deve indexar.",{"title":556,"path":557,"stem":558,"icon":559,"description":560},"useDuxtSiteUrl()","\u002Freference\u002Fcomposables\u002Fpaths-and-versions\u002Fuse-duxt-site-url","4.reference\u002F6.composables\u002F2.paths-and-versions\u002F4.use-duxt-site-url","lucide:globe","A origem configurada, e caminhos tornados absolutos.",{"title":562,"path":563,"stem":564,"children":565,"icon":101,"description":567},"Experiência de leitura","\u002Freference\u002Fcomposables\u002Freading","4.reference\u002F6.composables\u002F3.reading\u002Findex",[566,568,572,578,583,589,595,600,606],{"title":562,"path":563,"stem":564,"icon":101,"description":567},"Pesquisa, cabeçalhos, foco, histórico e as escolhas que um leitor faz.",{"title":569,"path":570,"stem":571,"icon":86,"description":424},"useDuxtSearch()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-duxt-search","4.reference\u002F6.composables\u002F3.reading\u002F1.use-duxt-search",{"title":573,"path":574,"stem":575,"icon":576,"description":577},"useFuzzySearch()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-fuzzy-search","4.reference\u002F6.composables\u002F3.reading\u002F2.use-fuzzy-search","lucide:spell-check","Tolerância a gralhas ao lado do índice exato.",{"title":579,"path":580,"stem":581,"icon":277,"description":582},"useActiveHeading()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-active-heading","4.reference\u002F6.composables\u002F3.reading\u002F3.use-active-heading","O cabeçalho que está à vista neste momento.",{"title":584,"path":585,"stem":586,"icon":587,"description":588},"useDuxtPageFocus()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-duxt-page-focus","4.reference\u002F6.composables\u002F3.reading\u002F4.use-duxt-page-focus","lucide:focus","Move o foco para o cabeçalho depois de uma navegação do lado do cliente.",{"title":590,"path":591,"stem":592,"icon":593,"description":594},"useRecentPages()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-recent-pages","4.reference\u002F6.composables\u002F3.reading\u002F5.use-recent-pages","lucide:history","As últimas cinco páginas que este leitor abriu.",{"title":596,"path":597,"stem":598,"icon":221,"description":599},"usePackageManager()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-package-manager","4.reference\u002F6.composables\u002F3.reading\u002F6.use-package-manager","O gestor de pacotes que um leitor escolheu.",{"title":601,"path":602,"stem":603,"icon":604,"description":605},"useDuxtToast()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-duxt-toast","4.reference\u002F6.composables\u002F3.reading\u002F7.use-duxt-toast","lucide:bell","Notificações, embrulhadas para que nenhum componente importe a biblioteca.",{"title":607,"path":608,"stem":609,"icon":451,"description":610},"useDuxtShortcuts()","\u002Freference\u002Fcomposables\u002Freading\u002Fuse-duxt-shortcuts","4.reference\u002F6.composables\u002F3.reading\u002F8.use-duxt-shortcuts","As teclas que o tema escuta.",{"title":612,"path":613,"stem":614,"children":615,"icon":538,"description":617},"Endpoints","\u002Freference\u002Fendpoints","4.reference\u002F7.endpoints\u002Findex",[616,618,623,629,634,639,644,650],{"title":612,"path":613,"stem":614,"icon":538,"description":617},"Tudo o que o site serve além das páginas, uma página cada.",{"title":619,"path":620,"stem":621,"icon":465,"description":622},"\u002Fllms.txt","\u002Freference\u002Fendpoints\u002Fllms-txt","4.reference\u002F7.endpoints\u002F1.llms-txt","A documentação como índice Markdown, segundo llmstxt.org.",{"title":624,"path":625,"stem":626,"icon":627,"description":628},"\u002Fllms-full.txt","\u002Freference\u002Fendpoints\u002Fllms-full-txt","4.reference\u002F7.endpoints\u002F2.llms-full-txt","lucide:file-stack","As mesmas páginas, inteiras, num único ficheiro Markdown.",{"title":630,"path":631,"stem":632,"icon":201,"description":633},"\u003Cpage>.md","\u002Freference\u002Fendpoints\u002Fpage-markdown","4.reference\u002F7.endpoints\u002F3.page-markdown","O código-fonte de qualquer página, no seu próprio URL mais .md.",{"title":635,"path":636,"stem":637,"icon":80,"description":638},"\u002Fmcp","\u002Freference\u002Fendpoints\u002Fmcp","4.reference\u002F7.endpoints\u002F4.mcp","Um servidor MCP sobre o mesmo conteúdo.",{"title":640,"path":641,"stem":642,"icon":86,"description":643},"\u002Fsitemap.xml e \u002Frobots.txt","\u002Freference\u002Fendpoints\u002Fsitemap-and-robots","4.reference\u002F7.endpoints\u002F5.sitemap-and-robots","Para onde um rastreador é apontado, e aquilo de que é mantido fora.",{"title":645,"path":646,"stem":647,"icon":648,"description":649},"\u002Frss.xml","\u002Freference\u002Fendpoints\u002Frss-xml","4.reference\u002F7.endpoints\u002F6.rss-xml","lucide:rss","O feed, assim que uma secção for nomeada.",{"title":651,"path":652,"stem":653,"icon":654,"description":655},"\u002F_duxt\u002Fdevtools","\u002Freference\u002Fendpoints\u002Fdevtools","4.reference\u002F7.endpoints\u002F7.devtools","lucide:wrench","A rota a partir da qual o painel das Nuxt Devtools é servido. Apenas em desenvolvimento.",{"title":657,"path":658,"stem":659,"children":660,"icon":654,"description":662},"Devtools","\u002Freference\u002Fdevtools","4.reference\u002F8.devtools\u002Findex",[661,663,668,673,678,684,690,696,701,706,711],{"title":657,"path":658,"stem":659,"icon":654,"description":662},"Dez painéis que mostram no que as tuas fontes se tornaram. Apenas em desenvolvimento.",{"title":664,"path":665,"stem":666,"icon":514,"description":667},"Sources","\u002Freference\u002Fdevtools\u002Fsources","4.reference\u002F8.devtools\u002F1.sources","No que `duxt.sources` se tornou — uma coleção por fonte, versão e idioma.",{"title":669,"path":670,"stem":671,"icon":128,"description":672},"Redirects","\u002Freference\u002Fdevtools\u002Fredirects","4.reference\u002F8.devtools\u002F10.redirects","Todos os redireccionamentos que o servidor serve, e quais deles a camada escreveu.",{"title":674,"path":675,"stem":676,"icon":538,"description":677},"Paths","\u002Freference\u002Fdevtools\u002Fpaths","4.reference\u002F8.devtools\u002F2.paths","Cola um URL e vê que fonte o reclama e o que encontra lá.",{"title":679,"path":680,"stem":681,"icon":682,"description":683},"Pages","\u002Freference\u002Fdevtools\u002Fpages","4.reference\u002F8.devtools\u002F3.pages","lucide:files","Todas as páginas de todas as coleções, com o frontmatter e os metadados de git.",{"title":685,"path":686,"stem":687,"icon":688,"description":689},"Versions","\u002Freference\u002Fdevtools\u002Fversions","4.reference\u002F8.devtools\u002F4.versions","lucide:columns-3","Que versão — e que idioma — leva que página.",{"title":691,"path":692,"stem":693,"icon":694,"description":695},"Checks","\u002Freference\u002Fdevtools\u002Fchecks","4.reference\u002F8.devtools\u002F5.checks","lucide:check-check","O validador da compilação, aplicado ao que o site está a servir agora.",{"title":697,"path":698,"stem":699,"icon":86,"description":700},"Search","\u002Freference\u002Fdevtools\u002Fsearch","4.reference\u002F8.devtools\u002F6.search","O que o índice de pesquisa contém, pela mesma consulta que a caixa de diálogo faz.",{"title":702,"path":703,"stem":704,"icon":418,"description":705},"Config","\u002Freference\u002Fdevtools\u002Fconfig","4.reference\u002F8.devtools\u002F7.config","A configuração `duxt` fundida, e de que lado da fusão vem cada valor.",{"title":707,"path":708,"stem":709,"icon":92,"description":710},"i18n","\u002Freference\u002Fdevtools\u002Fi18n","4.reference\u002F8.devtools\u002F8.i18n","Chaves de mensagem por idioma, contra o idioma base.",{"title":712,"path":713,"stem":714,"icon":715,"description":716},"Cache","\u002Freference\u002Fdevtools\u002Fcache","4.reference\u002F8.devtools\u002F9.cache","lucide:hard-drive","A cache de descargas do Content, e uma forma de deitar fora uma entrada.",{"title":718,"path":719,"stem":720,"children":721,"icon":723,"description":724},"Referência da API","\u002Freference\u002Fopenapi","4.reference\u002F9.openapi\u002Findex",[722,725,729,733,739],{"title":718,"path":719,"stem":720,"icon":723,"description":724},"lucide:plug","Um documento OpenAPI, publicado como páginas de referência com um cliente que envia pedidos reais.",{"title":170,"path":726,"stem":727,"icon":201,"description":728},"\u002Freference\u002Fopenapi\u002Fsection","4.reference\u002F9.openapi\u002F1.section","O tipo de secção `openapi` — onde vive o documento, e no que se torna.",{"title":344,"path":730,"stem":731,"icon":191,"description":732},"\u002Freference\u002Fopenapi\u002Fcomponents","4.reference\u002F9.openapi\u002F2.components","Os três componentes MDC de que é feita uma página de referência gerada.",{"title":734,"path":735,"stem":736,"icon":737,"description":738},"O cliente de ensaio","\u002Freference\u002Fopenapi\u002Ftry-it","4.reference\u002F9.openapi\u002F3.try-it","lucide:send","Um pedido real, enviado pelo próprio navegador do leitor.",{"title":740,"path":741,"stem":742,"icon":488,"description":743},"Amostras de pedido","\u002Freference\u002Fopenapi\u002Frequest-samples","4.reference\u002F9.openapi\u002F4.request-samples","O mesmo pedido em doze clientes, e como acrescentar o teu.",{"title":745,"path":746,"stem":747,"children":748,"icon":750,"description":751},"Créditos","\u002Fcredits","5.credits\u002Findex",[749],{"title":745,"path":746,"stem":747,"icon":750,"description":751},"lucide:heart","Aquilo em que o duxt assenta, e aquilo de que partiu.",{"title":753,"path":754,"stem":755,"children":756,"description":760},"Convenções","\u002Fconventions","6.conventions",[757,761,767],{"title":753,"path":754,"stem":758,"icon":759,"description":760},"6.conventions\u002Findex","lucide:ruler","Regras próprias do projeto — as que não se deduzem do código.",{"title":762,"path":763,"stem":764,"icon":765,"description":766},"Identidade","\u002Fconventions\u002Fbranding","6.conventions\u002F1.branding","lucide:shapes","A marca [d]uxt — onde é usado cada recurso, por que os parênteses do ícone foram redesenhados, e que cores são fixas.",{"title":768,"path":769,"stem":770,"icon":283,"description":771},"Ícones","\u002Fconventions\u002Ficons","6.conventions\u002F2.icons","Quatro conjuntos de ícones, e a única pergunta que decide qual deles desenha uma marca.",{"title":773,"path":774,"stem":775,"children":776,"description":780},"Decisões de arquitetura","\u002Fadr","99.adr",[777,781,787,792,797,802,807,812,817,822],{"title":773,"path":774,"stem":778,"icon":779,"description":780},"99.adr\u002Findex","lucide:gavel","O registo de decisões — todas as decisões de arquitetura registadas para o duxt.",{"title":782,"path":783,"stem":784,"icon":785,"description":786},"Construir o duxt como uma camada que transporta um módulo","\u002Fadr\u002F0001-build-duxt-as-a-layer-carrying-a-module","99.adr\u002F0001-build-duxt-as-a-layer-carrying-a-module",null,"Distribuir o tema como uma camada Nuxt cuja raiz é o pacote, e não como um modelo inicial.",{"title":788,"path":789,"stem":790,"icon":785,"description":791},"Gerar as coleções a partir de uma só lista de fontes","\u002Fadr\u002F0002-generate-the-collections-from-one-source-list","99.adr\u002F0002-generate-the-collections-from-one-source-list","Calcular as coleções do Content a partir de uma lista de fontes compacta ao carregar a configuração, em vez de fazer quem a consome declará-las.",{"title":793,"path":794,"stem":795,"icon":785,"description":796},"Decidir os prefixos de URL em tempo de compilação","\u002Fadr\u002F0003-decide-the-url-prefixes-at-build-time","99.adr\u002F0003-decide-the-url-prefixes-at-build-time","Se um segmento de repositório ou de versão aparece é decidido pela lista de fontes antes do primeiro pedido, nunca por pedido.",{"title":798,"path":799,"stem":800,"icon":785,"description":801},"Desenhar os componentes Markdown com MDC","\u002Fadr\u002F0004-render-markdown-components-with-mdc","99.adr\u002F0004-render-markdown-components-with-mdc","Usar a própria sintaxe MDC do Content para componentes dentro do Markdown, em vez de adotar MDX.",{"title":803,"path":804,"stem":805,"icon":785,"description":806},"Entregar a camada sem ligações específicas do proprietário","\u002Fadr\u002F0005-ship-the-layer-without-owner-specific-links","99.adr\u002F0005-ship-the-layer-without-owner-specific-links","Toda a predefinição que nomearia um projeto concreto — repositório, gestor de issues, comunidade, aviso legal — é entregue vazia.",{"title":808,"path":809,"stem":810,"icon":785,"description":811},"Recompilar de forma agendada em vez de atualizar em tempo de execução","\u002Fadr\u002F0006-rebuild-on-a-schedule-rather-than-refresh-at-runtime","99.adr\u002F0006-rebuild-on-a-schedule-rather-than-refresh-at-runtime","Um site que lê outro repositório apanha as suas alterações quando compila, e não é oferecida nenhuma atualização em tempo de execução.",{"title":813,"path":814,"stem":815,"icon":785,"description":816},"Servir as traduções como coleções próprias","\u002Fadr\u002F0007-serve-translations-as-collections-of-their-own","99.adr\u002F0007-serve-translations-as-collections-of-their-own","Acrescentar uma dimensão de locale a uma fonte, em vez de um segmento de locale ao caminho de conteúdo.",{"title":818,"path":819,"stem":820,"icon":785,"description":821},"Construir o tema sobre componentes shadcn-vue próprios","\u002Fadr\u002F0008-build-the-theme-on-owned-shadcn-vue-components","99.adr\u002F0008-build-the-theme-on-owned-shadcn-vue-components","A camada guarda o código-fonte dos seus componentes de interface em vez de os importar de uma biblioteca de componentes ou de um tema de documentação já feito.",{"title":823,"path":824,"stem":825,"icon":785,"description":826},"Tirar a base de SEO do pacote Nuxt SEO","\u002Fadr\u002F0009-take-the-seo-stack-from-the-nuxt-seo-bundle","99.adr\u002F0009-take-the-seo-stack-from-the-nuxt-seo-bundle","A camada instala o @nuxtjs\u002Fseo e entrega-lhe as etiquetas de head e os dados estruturados que antes escrevia à mão, guardando apenas as regras que dependem de versões e traduções.",{"title":828,"path":829,"stem":830,"icon":831,"description":832},"Documentação","\u002F","index","lucide:book-open-text","Uma camada Nuxt que transforma a pasta docs de um repositório num site de documentação versionado e multirrepositório.",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":837},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\"\u002F>\u003Cpath d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\"\u002F>\u003Cpath d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":839},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"m16.24 7.76l-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":841},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":843},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Zm-6.8-2.8l2-2m-5-1l2-2m-5-1l2-2m7 11l2-2\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":845},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m14 13l-8.381 8.38a1 1 0 0 1-3.001-3l8.384-8.381M16 16l6-6m-.5.5l-8-8M8 8l6-6M8.5 7.5l8 8\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":847},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 5v16m8.001-2A2 2 0 0 0 22 17V5a2 2 0 0 0-1.999-2L16 3.002A5 5 0 0 0 12 5a5 5 0 0 0-4-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 1.999 2H8a5 5 0 0 1 4 2a5 5 0 0 1 4-2z\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":849},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"13\" r=\"2\"\u002F>\u003Cpath d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Zm-6-7h3M7 13h3\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":851},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"18\" cy=\"18\" r=\"3\"\u002F>\u003Ccircle cx=\"6\" cy=\"6\" r=\"3\"\u002F>\u003Cpath d=\"M13 6h3a2 2 0 0 1 2 2v7m-7 3H8a2 2 0 0 1-2-2V9\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":853},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m5 8l6 6m-7 0l6-6l2-3M2 5h12M7 2h1m14 20l-5-10l-5 10m2-4h6\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":855},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 22a1 1 0 0 1 0-20a10 9 0 0 1 10 9a5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\"\u002F>\u003Ccircle cx=\"13.5\" cy=\"6.5\" r=\".5\" fill=\"currentColor\"\u002F>\u003Ccircle cx=\"17.5\" cy=\"10.5\" r=\".5\" fill=\"currentColor\"\u002F>\u003Ccircle cx=\"6.5\" cy=\"12.5\" r=\".5\" fill=\"currentColor\"\u002F>\u003Ccircle cx=\"8.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":857},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 13v8m0-18v3m-9.646 4.354a1.207 1.207 0 0 1 0-1.708l2.06-2.06A2 2 0 0 1 5.828 6h12.344a2 2 0 0 1 1.414.586l2.06 2.06a1.207 1.207 0 0 1 0 1.708l-2.06 2.06a2 2 0 0 1-1.414.586H5.828a2 2 0 0 1-1.414-.586z\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":859},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 13v8m-8-6.101A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\"\u002F>\u003Cpath d=\"m8 17l4-4l4 4\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":861},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 5.88L14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88M7 10v12\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":863},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77a4 4 0 0 1 6.74 0a4 4 0 0 1 4.78 4.78a4 4 0 0 1 0 6.74a4 4 0 0 1-4.77 4.78a4 4 0 0 1-6.75 0a4 4 0 0 1-4.78-4.77a4 4 0 0 1 0-6.76\"\u002F>\u003Cpath d=\"m16 9l-5.5 5.5L8 12\"\u002F>\u003C\u002Fg>",{"page":865,"from":1578,"asked":1579},{"id":866,"title":137,"body":867,"compare":785,"contributors":1568,"date":785,"description":141,"extension":1571,"icon":140,"lastUpdated":1572,"layout":785,"meta":1573,"navigation":836,"path":138,"rawbody":1574,"redirectFrom":785,"seo":1575,"sitemap":1576,"stem":139,"__hash__":1577},"docs_pt\u002F3.guides\u002F7.collect-page-feedback.md",{"type":868,"value":869,"toc":1562},"minimark",[870,874,878,1276,1280,1283,1492,1502,1510,1514,1522,1526,1558],[871,872,873],"p",{},"Cada página de documentação termina com «Esta página foi útil?», e a camada não\nfaz nada com a resposta: mantém-na no estado do próprio componente durante a\nvisita, emite um evento e não guarda nada. Envolver o componente é a forma de a\nresposta chegar até ti.",[875,876,298],"h2",{"id":877},"passos",[879,880,881],"steps",{},[882,883,884,1146,1270],"ol",{},[885,886,887,891,892,896,897,900,901],"li",{},[888,889,890],"strong",{},"Envolve o componente da camada com o nome dele."," O Nuxt resolve o teu\nficheiro primeiro, por isso ",[893,894,895],"code",{},"app\u002Fcomponents\u002FDuxtPageFeedback.vue"," no teu\nprojeto substitui o da camada — e o alias ",[893,898,899],{},"@duxt"," continua a alcançar o\noriginal pelo caminho, de modo que o invólucro mantém a marcação, as traduções\ne a reposição na navegação da camada:",[902,903,908],"pre",{"className":904,"code":905,"filename":895,"language":906,"meta":907,"style":907},"language-vue shiki shiki-themes github-light github-dark","\u003Cscript setup lang=\"ts\">\nimport DuxtPageFeedbackBase from '@duxt\u002Fcomponents\u002FDuxtPageFeedback.vue';\n\nconst route = useRoute();\n\n\u002F\u002F O evento transporta a resposta e mais nada — a página a que pertence és tu\n\u002F\u002F que a lês, e `fullPath` é a que mantém os prefixos de locale, repositório e\n\u002F\u002F versão sob os quais a resposta foi realmente dada.\nasync function onFeedback(helpful: boolean) {\n  await $fetch('\u002Fapi\u002Ffeedback', {\n    method: 'POST',\n    body: { path: route.fullPath, helpful }\n  });\n}\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CDuxtPageFeedbackBase @feedback=\"onFeedback\" \u002F>\n\u003C\u002Ftemplate>\n","vue","",[893,909,910,940,959,966,985,990,997,1003,1009,1037,1054,1066,1072,1078,1084,1094,1099,1109,1137],{"__ignoreMap":907},[911,912,915,919,923,927,930,933,937],"span",{"class":913,"line":914},"line",1,[911,916,918],{"class":917},"sVt8B","\u003C",[911,920,922],{"class":921},"s9eBZ","script",[911,924,926],{"class":925},"sScJk"," setup",[911,928,929],{"class":925}," lang",[911,931,932],{"class":917},"=",[911,934,936],{"class":935},"sZZnC","\"ts\"",[911,938,939],{"class":917},">\n",[911,941,943,947,950,953,956],{"class":913,"line":942},2,[911,944,946],{"class":945},"szBVR","import",[911,948,949],{"class":917}," DuxtPageFeedbackBase ",[911,951,952],{"class":945},"from",[911,954,955],{"class":935}," '@duxt\u002Fcomponents\u002FDuxtPageFeedback.vue'",[911,957,958],{"class":917},";\n",[911,960,962],{"class":913,"line":961},3,[911,963,965],{"emptyLinePlaceholder":964},true,"\n",[911,967,969,972,976,979,982],{"class":913,"line":968},4,[911,970,971],{"class":945},"const",[911,973,975],{"class":974},"sj4cs"," route",[911,977,978],{"class":945}," =",[911,980,981],{"class":925}," useRoute",[911,983,984],{"class":917},"();\n",[911,986,988],{"class":913,"line":987},5,[911,989,965],{"emptyLinePlaceholder":964},[911,991,993],{"class":913,"line":992},6,[911,994,996],{"class":995},"sJ8bj","\u002F\u002F O evento transporta a resposta e mais nada — a página a que pertence és tu\n",[911,998,1000],{"class":913,"line":999},7,[911,1001,1002],{"class":995},"\u002F\u002F que a lês, e `fullPath` é a que mantém os prefixos de locale, repositório e\n",[911,1004,1006],{"class":913,"line":1005},8,[911,1007,1008],{"class":995},"\u002F\u002F versão sob os quais a resposta foi realmente dada.\n",[911,1010,1012,1015,1018,1021,1024,1028,1031,1034],{"class":913,"line":1011},9,[911,1013,1014],{"class":945},"async",[911,1016,1017],{"class":945}," function",[911,1019,1020],{"class":925}," onFeedback",[911,1022,1023],{"class":917},"(",[911,1025,1027],{"class":1026},"s4XuR","helpful",[911,1029,1030],{"class":945},":",[911,1032,1033],{"class":974}," boolean",[911,1035,1036],{"class":917},") {\n",[911,1038,1040,1043,1046,1048,1051],{"class":913,"line":1039},10,[911,1041,1042],{"class":945},"  await",[911,1044,1045],{"class":925}," $fetch",[911,1047,1023],{"class":917},[911,1049,1050],{"class":935},"'\u002Fapi\u002Ffeedback'",[911,1052,1053],{"class":917},", {\n",[911,1055,1057,1060,1063],{"class":913,"line":1056},11,[911,1058,1059],{"class":917},"    method: ",[911,1061,1062],{"class":935},"'POST'",[911,1064,1065],{"class":917},",\n",[911,1067,1069],{"class":913,"line":1068},12,[911,1070,1071],{"class":917},"    body: { path: route.fullPath, helpful }\n",[911,1073,1075],{"class":913,"line":1074},13,[911,1076,1077],{"class":917},"  });\n",[911,1079,1081],{"class":913,"line":1080},14,[911,1082,1083],{"class":917},"}\n",[911,1085,1087,1090,1092],{"class":913,"line":1086},15,[911,1088,1089],{"class":917},"\u003C\u002F",[911,1091,922],{"class":921},[911,1093,939],{"class":917},[911,1095,1097],{"class":913,"line":1096},16,[911,1098,965],{"emptyLinePlaceholder":964},[911,1100,1102,1104,1107],{"class":913,"line":1101},17,[911,1103,918],{"class":917},[911,1105,1106],{"class":921},"template",[911,1108,939],{"class":917},[911,1110,1112,1115,1118,1121,1124,1126,1129,1132,1134],{"class":913,"line":1111},18,[911,1113,1114],{"class":917},"  \u003C",[911,1116,1117],{"class":921},"DuxtPageFeedbackBase",[911,1119,1120],{"class":917}," @",[911,1122,1123],{"class":925},"feedback",[911,1125,932],{"class":917},[911,1127,1128],{"class":935},"\"",[911,1130,1131],{"class":917},"onFeedback",[911,1133,1128],{"class":935},[911,1135,1136],{"class":917}," \u002F>\n",[911,1138,1140,1142,1144],{"class":913,"line":1139},19,[911,1141,1089],{"class":917},[911,1143,1106],{"class":921},[911,1145,939],{"class":917},[885,1147,1148,1151,1152,1262,1265,1266,1269],{},[888,1149,1150],{},"Dá à resposta um sítio onde aterrar."," Uma rota tua, para que o browser do\nleitor nunca fale com um terceiro que não escolheste:",[902,1153,1158],{"className":1154,"code":1155,"filename":1156,"language":1157,"meta":907,"style":907},"language-ts shiki shiki-themes github-light github-dark","export default defineEventHandler(async (event) => {\n  const { path, helpful } = await readBody(event);\n\n  \u002F\u002F O teu armazenamento, a tua analítica, a tua fila.\n  await recordFeedback({ path, helpful });\n\n  return { ok: true };\n});\n","server\u002Fapi\u002Ffeedback.post.ts","ts",[893,1159,1160,1190,1220,1224,1229,1239,1243,1257],{"__ignoreMap":907},[911,1161,1162,1165,1168,1171,1173,1175,1178,1181,1184,1187],{"class":913,"line":914},[911,1163,1164],{"class":945},"export",[911,1166,1167],{"class":945}," default",[911,1169,1170],{"class":925}," defineEventHandler",[911,1172,1023],{"class":917},[911,1174,1014],{"class":945},[911,1176,1177],{"class":917}," (",[911,1179,1180],{"class":1026},"event",[911,1182,1183],{"class":917},") ",[911,1185,1186],{"class":945},"=>",[911,1188,1189],{"class":917}," {\n",[911,1191,1192,1195,1198,1201,1204,1206,1209,1211,1214,1217],{"class":913,"line":942},[911,1193,1194],{"class":945},"  const",[911,1196,1197],{"class":917}," { ",[911,1199,1200],{"class":974},"path",[911,1202,1203],{"class":917},", ",[911,1205,1027],{"class":974},[911,1207,1208],{"class":917}," } ",[911,1210,932],{"class":945},[911,1212,1213],{"class":945}," await",[911,1215,1216],{"class":925}," readBody",[911,1218,1219],{"class":917},"(event);\n",[911,1221,1222],{"class":913,"line":961},[911,1223,965],{"emptyLinePlaceholder":964},[911,1225,1226],{"class":913,"line":968},[911,1227,1228],{"class":995},"  \u002F\u002F O teu armazenamento, a tua analítica, a tua fila.\n",[911,1230,1231,1233,1236],{"class":913,"line":987},[911,1232,1042],{"class":945},[911,1234,1235],{"class":925}," recordFeedback",[911,1237,1238],{"class":917},"({ path, helpful });\n",[911,1240,1241],{"class":913,"line":992},[911,1242,965],{"emptyLinePlaceholder":964},[911,1244,1245,1248,1251,1254],{"class":913,"line":999},[911,1246,1247],{"class":945},"  return",[911,1249,1250],{"class":917}," { ok: ",[911,1252,1253],{"class":974},"true",[911,1255,1256],{"class":917}," };\n",[911,1258,1259],{"class":913,"line":1005},[911,1260,1261],{"class":917},"});\n",[1263,1264],"br",{},"Uma chamada de analítica do lado do cliente funciona da mesma maneira —\nsubstitui o ",[893,1267,1268],{},"$fetch"," do invólucro pelo que o SDK do teu fornecedor expuser.",[885,1271,1272,1275],{},[888,1273,1274],{},"Compila de novo e responde à pergunta uma vez",", depois verifica se a\nresposta chegou com o caminho que esperavas — sob um prefixo de versão, e não\napenas no URL nu.",[875,1277,1279],{"id":1278},"apresentar-o-teu-próprio-controlo","Apresentar o teu próprio controlo",[871,1281,1282],{},"O evento mantém os botões da camada. Para os substituir, usa antes o slot por\nomissão: expõe o mesmo estado a partir do qual o componente é apresentado, para\nque a reposição na navegação e o estado de «obrigado» continuem a ser tarefa da\ncamada.",[902,1284,1286],{"className":904,"code":1285,"filename":895,"language":906,"meta":907,"style":907},"\u003Cscript setup lang=\"ts\">\nimport DuxtPageFeedbackBase from '@duxt\u002Fcomponents\u002FDuxtPageFeedback.vue';\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CDuxtPageFeedbackBase v-slot=\"{ answered, answer }\">\n    \u003Cform v-if=\"answered === undefined\" @submit.prevent=\"answer(true)\">\n      \u003Clabel>\n        Diz-nos o que falta\n        \u003Ctextarea name=\"comment\" \u002F>\n      \u003C\u002Flabel>\n      \u003Cbutton type=\"submit\">Enviar\u003C\u002Fbutton>\n    \u003C\u002Fform>\n    \u003Cp v-else>Obrigado.\u003C\u002Fp>\n  \u003C\u002FDuxtPageFeedbackBase>\n\u003C\u002Ftemplate>\n",[893,1287,1288,1304,1316,1324,1328,1336,1356,1382,1392,1397,1419,1428,1450,1459,1475,1484],{"__ignoreMap":907},[911,1289,1290,1292,1294,1296,1298,1300,1302],{"class":913,"line":914},[911,1291,918],{"class":917},[911,1293,922],{"class":921},[911,1295,926],{"class":925},[911,1297,929],{"class":925},[911,1299,932],{"class":917},[911,1301,936],{"class":935},[911,1303,939],{"class":917},[911,1305,1306,1308,1310,1312,1314],{"class":913,"line":942},[911,1307,946],{"class":945},[911,1309,949],{"class":917},[911,1311,952],{"class":945},[911,1313,955],{"class":935},[911,1315,958],{"class":917},[911,1317,1318,1320,1322],{"class":913,"line":961},[911,1319,1089],{"class":917},[911,1321,922],{"class":921},[911,1323,939],{"class":917},[911,1325,1326],{"class":913,"line":968},[911,1327,965],{"emptyLinePlaceholder":964},[911,1329,1330,1332,1334],{"class":913,"line":987},[911,1331,918],{"class":917},[911,1333,1106],{"class":921},[911,1335,939],{"class":917},[911,1337,1338,1340,1342,1345,1347,1349,1352,1354],{"class":913,"line":992},[911,1339,1114],{"class":917},[911,1341,1117],{"class":921},[911,1343,1344],{"class":925}," v-slot",[911,1346,932],{"class":917},[911,1348,1128],{"class":935},[911,1350,1351],{"class":917},"{ answered, answer }",[911,1353,1128],{"class":935},[911,1355,939],{"class":917},[911,1357,1358,1361,1364,1367,1369,1372,1375,1377,1380],{"class":913,"line":999},[911,1359,1360],{"class":917},"    \u003C",[911,1362,1363],{"class":921},"form",[911,1365,1366],{"class":925}," v-if",[911,1368,932],{"class":917},[911,1370,1371],{"class":935},"\"answered === undefined\"",[911,1373,1374],{"class":925}," @submit.prevent",[911,1376,932],{"class":917},[911,1378,1379],{"class":935},"\"answer(true)\"",[911,1381,939],{"class":917},[911,1383,1384,1387,1390],{"class":913,"line":1005},[911,1385,1386],{"class":917},"      \u003C",[911,1388,1389],{"class":921},"label",[911,1391,939],{"class":917},[911,1393,1394],{"class":913,"line":1011},[911,1395,1396],{"class":917},"        Diz-nos o que falta\n",[911,1398,1399,1402,1405,1408,1410,1413,1417],{"class":913,"line":1039},[911,1400,1401],{"class":917},"        \u003C",[911,1403,1404],{"class":921},"textarea",[911,1406,1407],{"class":925}," name",[911,1409,932],{"class":917},[911,1411,1412],{"class":935},"\"comment\"",[911,1414,1416],{"class":1415},"s7hpK"," \u002F",[911,1418,939],{"class":917},[911,1420,1421,1424,1426],{"class":913,"line":1056},[911,1422,1423],{"class":917},"      \u003C\u002F",[911,1425,1389],{"class":921},[911,1427,939],{"class":917},[911,1429,1430,1432,1435,1438,1440,1443,1446,1448],{"class":913,"line":1068},[911,1431,1386],{"class":917},[911,1433,1434],{"class":921},"button",[911,1436,1437],{"class":925}," type",[911,1439,932],{"class":917},[911,1441,1442],{"class":935},"\"submit\"",[911,1444,1445],{"class":917},">Enviar\u003C\u002F",[911,1447,1434],{"class":921},[911,1449,939],{"class":917},[911,1451,1452,1455,1457],{"class":913,"line":1074},[911,1453,1454],{"class":917},"    \u003C\u002F",[911,1456,1363],{"class":921},[911,1458,939],{"class":917},[911,1460,1461,1463,1465,1468,1471,1473],{"class":913,"line":1080},[911,1462,1360],{"class":917},[911,1464,871],{"class":921},[911,1466,1467],{"class":925}," v-else",[911,1469,1470],{"class":917},">Obrigado.\u003C\u002F",[911,1472,871],{"class":921},[911,1474,939],{"class":917},[911,1476,1477,1480,1482],{"class":913,"line":1086},[911,1478,1479],{"class":917},"  \u003C\u002F",[911,1481,1117],{"class":921},[911,1483,939],{"class":917},[911,1485,1486,1488,1490],{"class":913,"line":1096},[911,1487,1089],{"class":917},[911,1489,1106],{"class":921},[911,1491,939],{"class":917},[871,1493,1494,1497,1498,1501],{},[893,1495,1496],{},"answer(helpful)"," define o estado e emite o evento, por isso um slot e um\nouvinte compõem-se: pendura o teu formulário no slot e mantém o manipulador\n",[893,1499,1500],{},"@feedback"," do passo 1 para entregar o que ele recolheu.",[1503,1504,1507],"callout",{"title":1505,"type":1506},"Duas respostas não são dois leitores","warning",[871,1508,1509],{},"Nada no componente identifica um visitante, e assim fica de propósito. Se contas\nrespostas por página, conta-as como respostas — um browser que recarrega e\nresponde outra vez é uma segunda resposta, não um segundo leitor, e transformar\numa coisa na outra é uma questão de consentimento que a tua política de\nprivacidade tem de responder primeiro.",[875,1511,1513],{"id":1512},"porque-a-camada-não-guarda-nada","Porque a camada não guarda nada",[871,1515,1516,1517,1521],{},"Um tema de documentação que telefonasse para casa por omissão teria de escolher\num destino para os leitores de outra pessoa, e não há nenhum defensável: a\ncamada não sabe onde vive a tua analítica nem o que promete a tua política de\nprivacidade. Entregar a pergunta com um evento e sem backend mantém a decisão\nonde pertence — a mesma razão por que a linha legal do rodapé e as ligações ao\nrepositório são entregues vazias\n(",[1518,1519,1520],"a",{"href":804},"ADR 0005",").",[875,1523,1525],{"id":1524},"lista-de-verificação","Lista de verificação",[1527,1528,1531,1540,1546,1552],"ul",{"className":1529},[1530],"contains-task-list",[885,1532,1535,1539],{"className":1533},[1534],"task-list-item",[1536,1537],"input",{"disabled":964,"type":1538},"checkbox"," O invólucro apresenta o componente da camada em vez de o reimplementar",[885,1541,1543,1545],{"className":1542},[1534],[1536,1544],{"disabled":964,"type":1538}," A resposta é enviada com o caminho em que foi dada, prefixos incluídos",[885,1547,1549,1551],{"className":1548},[1534],[1536,1550],{"disabled":964,"type":1538}," O destino é teu — uma rota, uma fila ou um SDK que escolheste",[885,1553,1555,1557],{"className":1554},[1534],[1536,1556],{"disabled":964,"type":1538}," Nada na carga útil identifica o leitor",[1559,1560,1561],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}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 .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}",{"title":907,"searchDepth":942,"depth":942,"links":1563},[1564,1565,1566,1567],{"id":877,"depth":942,"text":298},{"id":1278,"depth":942,"text":1279},{"id":1512,"depth":942,"text":1513},{"id":1524,"depth":942,"text":1525},[1569],{"name":1570,"commits":914},"Titus Kirch","md","2026-09-06T21:35:31+02:00",{},"---\ntitle: Recolher opiniões da página\ndescription: Envolve o DuxtPageFeedback e guarda a resposta onde a tua analítica já vive.\nicon: lucide:thumbs-up\n---\n\nCada página de documentação termina com «Esta página foi útil?», e a camada não\nfaz nada com a resposta: mantém-na no estado do próprio componente durante a\nvisita, emite um evento e não guarda nada. Envolver o componente é a forma de a\nresposta chegar até ti.\n\n## Passos\n\n::steps\n\n1. **Envolve o componente da camada com o nome dele.** O Nuxt resolve o teu\n   ficheiro primeiro, por isso `app\u002Fcomponents\u002FDuxtPageFeedback.vue` no teu\n   projeto substitui o da camada — e o alias `@duxt` continua a alcançar o\n   original pelo caminho, de modo que o invólucro mantém a marcação, as traduções\n   e a reposição na navegação da camada:\n\n   ```vue [app\u002Fcomponents\u002FDuxtPageFeedback.vue]\n   \u003Cscript setup lang=\"ts\">\n   import DuxtPageFeedbackBase from '@duxt\u002Fcomponents\u002FDuxtPageFeedback.vue';\n\n   const route = useRoute();\n\n   \u002F\u002F O evento transporta a resposta e mais nada — a página a que pertence és tu\n   \u002F\u002F que a lês, e `fullPath` é a que mantém os prefixos de locale, repositório e\n   \u002F\u002F versão sob os quais a resposta foi realmente dada.\n   async function onFeedback(helpful: boolean) {\n     await $fetch('\u002Fapi\u002Ffeedback', {\n       method: 'POST',\n       body: { path: route.fullPath, helpful }\n     });\n   }\n   \u003C\u002Fscript>\n\n   \u003Ctemplate>\n     \u003CDuxtPageFeedbackBase @feedback=\"onFeedback\" \u002F>\n   \u003C\u002Ftemplate>\n   ```\n\n2. **Dá à resposta um sítio onde aterrar.** Uma rota tua, para que o browser do\n   leitor nunca fale com um terceiro que não escolheste:\n\n   ```ts [server\u002Fapi\u002Ffeedback.post.ts]\n   export default defineEventHandler(async (event) => {\n     const { path, helpful } = await readBody(event);\n\n     \u002F\u002F O teu armazenamento, a tua analítica, a tua fila.\n     await recordFeedback({ path, helpful });\n\n     return { ok: true };\n   });\n   ```\n\n   Uma chamada de analítica do lado do cliente funciona da mesma maneira —\n   substitui o `$fetch` do invólucro pelo que o SDK do teu fornecedor expuser.\n\n3. **Compila de novo e responde à pergunta uma vez**, depois verifica se a\n   resposta chegou com o caminho que esperavas — sob um prefixo de versão, e não\n   apenas no URL nu.\n\n::\n\n## Apresentar o teu próprio controlo\n\nO evento mantém os botões da camada. Para os substituir, usa antes o slot por\nomissão: expõe o mesmo estado a partir do qual o componente é apresentado, para\nque a reposição na navegação e o estado de «obrigado» continuem a ser tarefa da\ncamada.\n\n```vue [app\u002Fcomponents\u002FDuxtPageFeedback.vue]\n\u003Cscript setup lang=\"ts\">\nimport DuxtPageFeedbackBase from '@duxt\u002Fcomponents\u002FDuxtPageFeedback.vue';\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003CDuxtPageFeedbackBase v-slot=\"{ answered, answer }\">\n    \u003Cform v-if=\"answered === undefined\" @submit.prevent=\"answer(true)\">\n      \u003Clabel>\n        Diz-nos o que falta\n        \u003Ctextarea name=\"comment\" \u002F>\n      \u003C\u002Flabel>\n      \u003Cbutton type=\"submit\">Enviar\u003C\u002Fbutton>\n    \u003C\u002Fform>\n    \u003Cp v-else>Obrigado.\u003C\u002Fp>\n  \u003C\u002FDuxtPageFeedbackBase>\n\u003C\u002Ftemplate>\n```\n\n`answer(helpful)` define o estado e emite o evento, por isso um slot e um\nouvinte compõem-se: pendura o teu formulário no slot e mantém o manipulador\n`@feedback` do passo 1 para entregar o que ele recolheu.\n\n::callout{type=\"warning\" title=\"Duas respostas não são dois leitores\"}\nNada no componente identifica um visitante, e assim fica de propósito. Se contas\nrespostas por página, conta-as como respostas — um browser que recarrega e\nresponde outra vez é uma segunda resposta, não um segundo leitor, e transformar\numa coisa na outra é uma questão de consentimento que a tua política de\nprivacidade tem de responder primeiro.\n::\n\n## Porque a camada não guarda nada\n\nUm tema de documentação que telefonasse para casa por omissão teria de escolher\num destino para os leitores de outra pessoa, e não há nenhum defensável: a\ncamada não sabe onde vive a tua analítica nem o que promete a tua política de\nprivacidade. Entregar a pergunta com um evento e sem backend mantém a decisão\nonde pertence — a mesma razão por que a linha legal do rodapé e as ligações ao\nrepositório são entregues vazias\n([ADR 0005](\u002Fadr\u002F0005-ship-the-layer-without-owner-specific-links)).\n\n## Lista de verificação\n\n- [ ] O invólucro apresenta o componente da camada em vez de o reimplementar\n- [ ] A resposta é enviada com o caminho em que foi dada, prefixos incluídos\n- [ ] O destino é teu — uma rota, uma fila ou um SDK que escolheste\n- [ ] Nada na carga útil identifica o leitor\n",{"title":137,"description":141},{"loc":138},"GtPiF31H_lekdV4JdGEesel-rZ6zYar4yGkguc_lWTY","pt","pt-BR",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1581},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1583},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 18.12L10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88M17 14V2\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1585},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1587},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 8v4m0 4h.01\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1589},"\u003Cpath fill=\"currentColor\" d=\"M20.317 4.37a19.8 19.8 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.3 18.3 0 0 0-5.487 0a13 13 0 0 0-.617-1.25a.08.08 0 0 0-.079-.037A19.7 19.7 0 0 0 3.677 4.37a.1.1 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.08.08 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.08.08 0 0 0 .084-.028a14 14 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13 13 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10 10 0 0 0 .372-.292a.07.07 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.07.07 0 0 1 .078.01q.181.149.373.292a.077.077 0 0 1-.006.127a12.3 12.3 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.08.08 0 0 0 .084.028a19.8 19.8 0 0 0 6.002-3.03a.08.08 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.06.06 0 0 0-.031-.03M8.02 15.33c-1.182 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418m7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1591},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 5v16m4-8h2m-2-4h2m2.001 10A2 2 0 0 0 22 17V5a2 2 0 0 0-1.999-2L16 3.002A5 5 0 0 0 12 5a5 5 0 0 0-4-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 1.999 2H8a5 5 0 0 1 4 2a5 5 0 0 1 4-2zM6 13h2M6 9h2\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1593},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M7 7h10v10M7 17L17 7\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1595},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497zM15 5l4 4\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1597},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1599},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1601},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"\u002F>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1603},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1605},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1607},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01\"\u002F>",{"left":834,"top":834,"width":1609,"height":1610,"rotate":834,"vFlip":836,"hFlip":836,"body":1611},640,480,"\u003Cg stroke-width=\"1pt\">\u003Cpath fill=\"#229e45\" fill-rule=\"evenodd\" d=\"M0 0h640v480H0z\"\u002F>\u003Cpath fill=\"#f8e509\" fill-rule=\"evenodd\" d=\"m321.4 436l301.5-195.7L319.6 44L17.1 240.7z\"\u002F>\u003Cpath fill=\"#2b49a3\" fill-rule=\"evenodd\" d=\"M452.8 240c0 70.3-57.1 127.3-127.6 127.3A127.4 127.4 0 1 1 452.8 240\"\u002F>\u003Cpath fill=\"#ffffef\" fill-rule=\"evenodd\" d=\"m283.3 316.3l-4-2.3l-4 2l.9-4.5l-3.2-3.4l4.5-.5l2.2-4l1.9 4.2l4.4.8l-3.3 3m86 26.3l-3.9-2.3l-4 2l.8-4.5l-3.1-3.3l4.5-.5l2.1-4.1l2 4.2l4.4.8l-3.4 3.1m-36.2-30l-3.4-2l-3.5 1.8l.8-3.9l-2.8-2.9l4-.4l1.8-3.6l1.6 3.7l3.9.7l-3 2.7m87-8.5l-3.4-2l-3.5 1.8l.8-3.9l-2.7-2.8l3.9-.4l1.8-3.5l1.6 3.6l3.8.7l-2.9 2.6m-87.3-22l-4-2.2l-4 2l.8-4.6l-3.1-3.3l4.5-.5l2.1-4.1l2 4.2l4.4.8l-3.4 3.2m-104.6-35l-4-2.2l-4 2l1-4.6l-3.3-3.3l4.6-.5l2-4.1l2 4.2l4.4.8l-3.3 3.1m13.3 57.2l-4-2.3l-4 2l.9-4.5l-3.2-3.3l4.5-.6l2.1-4l2 4.2l4.4.8l-3.3 3.1m132-67.3l-3.6-2l-3.6 1.8l.8-4l-2.8-3l4-.5l1.9-3.6l1.7 3.8l4 .7l-3 2.7m-6.7 38.3l-2.7-1.6l-2.9 1.4l.6-3.2l-2.2-2.3l3.2-.4l1.5-2.8l1.3 3l3 .5l-2.2 2.2m-142.2 50.4l-2.7-1.5l-2.7 1.3l.6-3l-2.1-2.2l3-.4l1.4-2.7l1.3 2.8l3 .6l-2.3 2M419 299.8l-2.2-1.1l-2.2 1l.5-2.3l-1.7-1.6l2.4-.3l1.2-2l1 2l2.5.5l-1.9 1.5\"\u002F>\u003Cpath fill=\"#ffffef\" fill-rule=\"evenodd\" d=\"m219.3 287.6l-2.7-1.5l-2.7 1.3l.6-3l-2.1-2.2l3-.4l1.4-2.7l1.3 2.8l3 .6l-2.3 2\"\u002F>\u003Cpath fill=\"#ffffef\" fill-rule=\"evenodd\" d=\"m219.3 287.6l-2.7-1.5l-2.7 1.3l.6-3l-2.1-2.2l3-.4l1.4-2.7l1.3 2.8l3 .6l-2.3 2m42.3 3l-2.6-1.4l-2.7 1.3l.6-3l-2.1-2.2l3-.4l1.4-2.7l1.3 2.8l3 .5l-2.3 2.1m-4.8 17l-2.6-1.5l-2.7 1.4l.6-3l-2.1-2.3l3-.4l1.4-2.7l1.3 2.8l3 .6l-2.3 2m87.4-22.2l-2.6-1.6l-2.8 1.4l.6-3l-2-2.3l3-.3l1.4-2.7l1.2 2.8l3 .5l-2.2 2.1m-25.1 3l-2.7-1.5l-2.7 1.4l.6-3l-2-2.3l3-.3l1.4-2.8l1.2 2.9l3 .5l-2.2 2.1m-68.8-5.8l-1.7-1l-1.7.8l.4-1.9l-1.3-1.4l1.9-.2l.8-1.7l.8 1.8l1.9.3l-1.4 1.3m167.8 45.4l-2.6-1.5l-2.7 1.4l.6-3l-2.1-2.3l3-.4l1.4-2.7l1.3 2.8l3 .6l-2.3 2m-20.8 6l-2.2-1.4l-2.3 1.2l.5-2.6l-1.7-1.8l2.5-.3l1.2-2.3l1 2.4l2.5.4l-1.9 1.8m10.4 2.3l-2-1.2l-2.1 1l.4-2.3l-1.6-1.7l2.3-.3l1.1-2l1 2l2.3.5l-1.7 1.6m29.1-22.8l-2-1l-2 1l.5-2.3l-1.6-1.7l2.3-.3l1-2l1 2.1l2.1.4l-1.6 1.6m-38.8 41.8l-2.5-1.4l-2.7 1.2l.6-2.8l-2-2l3-.3l1.3-2.5l1.2 2.6l3 .5l-2.3 1.9m.6 14.2l-2.4-1.4l-2.4 1.3l.6-2.8l-1.9-2l2.7-.4l1.2-2.5l1.1 2.6l2.7.5l-2 2m-19-23.1l-1.9-1.2l-2 1l.4-2.2l-1.5-1.7l2.2-.2l1-2l1 2l2.2.4l-1.6 1.6m-17.8 2.3l-2-1.2l-2 1l.5-2.2l-1.6-1.7l2.3-.2l1-2l1 2l2.1.4l-1.6 1.6m-30.4-24.6l-2-1.1l-2 1l.5-2.3l-1.6-1.6l2.2-.3l1-2l1 2l2.2.5l-1.6 1.5m3.7 57l-1.6-.9l-1.8.9l.4-2l-1.3-1.4l1.9-.2l.9-1.7l.8 1.8l1.9.3l-1.4 1.3m-46.2-86.6l-4-2.3l-4 2l.9-4.5l-3.2-3.3l4.5-.6l2.2-4l1.9 4.2l4.4.8l-3.3 3.1\"\u002F>\u003Cpath fill=\"#fff\" fill-rule=\"evenodd\" d=\"M444.4 285.8a125 125 0 0 0 5.8-19.8c-67.8-59.5-143.3-90-238.7-83.7a125 125 0 0 0-8.5 20.9c113-10.8 196 39.2 241.4 82.6\"\u002F>\u003Cpath fill=\"#309e3a\" d=\"m414 252.4l2.3 1.3a3 3 0 0 0-.3 2.2a3 3 0 0 0 1.4 1.7q1 .8 2 .7q.9 0 1.3-.7l.2-.9l-.5-1l-1.5-1.8a8 8 0 0 1-1.8-3a4 4 0 0 1 2-4.4a4 4 0 0 1 2.3-.2a7 7 0 0 1 2.6 1.2q2.1 1.5 2.6 3.2a4 4 0 0 1-.6 3.3l-2.4-1.5q.5-1 .2-1.7q-.2-.8-1.2-1.4a3 3 0 0 0-1.8-.7a1 1 0 0 0-.9.5q-.3.4-.1 1q.2.8 1.6 2.2t2 2.5a4 4 0 0 1-.3 4.2a4 4 0 0 1-1.9 1.5a4 4 0 0 1-2.4.3q-1.3-.3-2.8-1.3q-2.2-1.5-2.7-3.3a5 5 0 0 1 .6-4zm-11.6-7.6l2.5 1.3a3 3 0 0 0-.2 2.2a3 3 0 0 0 1.4 1.6q1.1.8 2 .6q.9 0 1.3-.8l.2-.8q0-.5-.5-1l-1.6-1.8q-1.7-1.6-2-2.8a4 4 0 0 1 .4-3.1a4 4 0 0 1 1.6-1.4a4 4 0 0 1 2.2-.3a7 7 0 0 1 2.6 1q2.3 1.5 2.7 3.1a4 4 0 0 1-.4 3.4l-2.5-1.4q.5-1 .2-1.7q-.4-1-1.3-1.4a3 3 0 0 0-1.9-.6a1 1 0 0 0-.8.5q-.3.4-.1 1q.3.8 1.7 2.2q1.5 1.5 2 2.4a4 4 0 0 1 0 4.2a4 4 0 0 1-1.8 1.6a4 4 0 0 1-2.4.3a8 8 0 0 1-2.9-1.1a6 6 0 0 1-2.8-3.2a5 5 0 0 1 .4-4m-14.2-3.8l7.3-12l8.8 5.5l-1.2 2l-6.4-4l-1.6 2.7l6 3.7l-1.3 2l-6-3.7l-2 3.3l6.7 4l-1.2 2zm-20.7-17l1.1-2l5.4 2.7l-2.5 5q-1.2.3-3 .2a9 9 0 0 1-3.3-1a8 8 0 0 1-3-2.6a6 6 0 0 1-1-3.5a9 9 0 0 1 1-3.7a8 8 0 0 1 2.6-3a6 6 0 0 1 3.6-1.1q1.4 0 3.2 1q2.4 1.1 3.1 2.8a5 5 0 0 1 .3 3.5l-2.7-.8a3 3 0 0 0-.2-2q-.4-.9-1.6-1.4a4 4 0 0 0-3.1-.3q-1.5.5-2.6 2.6t-.7 3.8a4 4 0 0 0 2 2.4q.8.5 1.7.5h1.8l.8-1.6zm-90.2-22.3l2-14l4.2.7l1.1 9.8l3.9-9l4.2.6l-2 13.8l-2.7-.4l1.7-10.9l-4.4 10.5l-2.7-.4l-1.1-11.3l-1.6 11zm-14.1-1.7l1.3-14l10.3 1l-.2 2.4l-7.5-.7l-.3 3l7 .7l-.3 2.4l-7-.7l-.3 3.8l7.8.7l-.2 2.4z\"\u002F>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"M216.5 191.3q0-2.2.7-3.6a7 7 0 0 1 1.4-1.9a5 5 0 0 1 1.8-1.2q1.5-.5 3-.5q3.1.1 5 2a7 7 0 0 1 1.6 5.5q0 3.3-2 5.3a7 7 0 0 1-5 1.7a7 7 0 0 1-4.8-2a7 7 0 0 1-1.7-5.3\"\u002F>\u003Cpath fill=\"#f7ffff\" d=\"M219.4 191.3q0 2.3 1 3.6t2.8 1.3a4 4 0 0 0 2.8-1.1q1-1.2 1.1-3.7q.1-2.4-1-3.6a4 4 0 0 0-2.7-1.3a4 4 0 0 0-2.8 1.2q-1.1 1.2-1.2 3.6\"\u002F>\u003C\u002Fg>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"m233 198.5l.2-14h6q2.2 0 3.2.5q1 .3 1.6 1.3c.6 1 .6 1.4.6 2.3a4 4 0 0 1-1 2.6a5 5 0 0 1-2.7 1.2l1.5 1.2q.6.6 1.5 2.3l1.7 2.8h-3.4l-2-3.2l-1.4-2l-.9-.6l-1.4-.2h-.6v5.8z\"\u002F>\u003Cpath fill=\"#fff\" d=\"M236 190.5h2q2.1 0 2.6-.2q.5-.1.8-.5q.4-.6.3-1q0-.9-.4-1.2q-.3-.4-1-.6h-2l-2.3-.1z\"\u002F>\u003C\u002Fg>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"m249 185.2l5.2.3q1.7 0 2.6.3a5 5 0 0 1 2 1.4a6 6 0 0 1 1.2 2.4q.4 1.4.3 3.3a9 9 0 0 1-.5 3q-.6 1.5-1.7 2.4a5 5 0 0 1-2 1q-1 .3-2.5.2l-5.3-.3z\"\u002F>\u003Cpath fill=\"#fff\" d=\"m251.7 187.7l-.5 9.3h3.8q.8 0 1.2-.5q.5-.4.8-1.3t.4-2.6l-.1-2.5a3 3 0 0 0-.8-1.4l-1.2-.7l-2.3-.3z\"\u002F>\u003C\u002Fg>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"m317.6 210.2l3.3-13.6l4.4 1l3.2 1q1.1.6 1.6 1.9t.2 2.8q-.3 1.2-1 2a4 4 0 0 1-3 1.4q-1 0-3-.5l-1.7-.5l-1.2 5.2z\"\u002F>\u003Cpath fill=\"#fff\" d=\"m323 199.6l-.8 3.8l1.5.4q1.6.4 2.2.3a2 2 0 0 0 1.6-1.5q0-.7-.2-1.3a2 2 0 0 0-1-.9l-1.9-.5l-1.3-.3z\"\u002F>\u003C\u002Fg>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"m330.6 214.1l4.7-13.2l5.5 2q2.2.8 3 1.4q.8.7 1 1.8c.2 1.1.2 1.5 0 2.3q-.6 1.5-1.8 2.2q-1.2.6-3 .3q.6.7 1 1.6l.8 2.7l.6 3.1l-3.1-1.1l-1-3.6l-.7-2.4l-.6-.8q-.3-.4-1.3-.7l-.5-.2l-2 5.6z\"\u002F>\u003Cpath fill=\"#fff\" d=\"m336 207.4l1.9.7q2 .7 2.5.7t.9-.3q.5-.3.6-.9q.3-.6 0-1.2l-.8-.9l-2-.7l-2-.7l-1.2 3.3z\"\u002F>\u003C\u002Fg>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"M347 213.6a9 9 0 0 1 1.7-3.2l1.8-1.5l2-.7q1.5-.1 3.1.4a7 7 0 0 1 4.2 3.3q1.2 2.4.2 5.7a7 7 0 0 1-3.4 4.5q-2.3 1.3-5.2.4a7 7 0 0 1-4.2-3.3a7 7 0 0 1-.2-5.6\"\u002F>\u003Cpath fill=\"#fff\" d=\"M349.8 214.4q-.7 2.3 0 3.8c.7 1.5 1.2 1.6 2.3 2q1.5.5 3-.4q1.4-.8 2.1-3.2q.8-2.2 0-3.7a4 4 0 0 0-2.2-2a4 4 0 0 0-3 .3q-1.5.8-2.2 3.2\"\u002F>\u003C\u002Fg>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"m374.3 233.1l6.4-12.4l5.3 2.7a10 10 0 0 1 2.7 1.9q.8.7.8 1.9c0 1.2 0 1.5-.4 2.2a4 4 0 0 1-2 2q-1.5.4-3.1-.2q.6 1 .8 1.7q.3.9.4 2.8l.2 3.2l-3-1.5l-.4-3.7l-.3-2.5l-.5-1l-1.2-.7l-.5-.3l-2.7 5.2z\"\u002F>\u003Cpath fill=\"#fff\" d=\"m380.5 227.2l1.9 1q1.8 1 2.3 1t1-.2q.4-.2.7-.8t.2-1.2l-.7-1l-1.8-1l-2-1z\"\u002F>\u003C\u002Fg>\u003Cg stroke-opacity=\".5\">\u003Cpath fill=\"#309e3a\" d=\"M426.1 258.7a9 9 0 0 1 2.5-2.6a7 7 0 0 1 2.2-.9a6 6 0 0 1 2.2 0q1.5.3 2.8 1.2a7 7 0 0 1 3 4.4q.4 2.6-1.4 5.5a7 7 0 0 1-4.5 3.3a7 7 0 0 1-5.2-1.1a7 7 0 0 1-3-4.4q-.4-2.7 1.4-5.4\"\u002F>\u003Cpath fill=\"#fff\" d=\"M428.6 260.3q-1.4 2-1.1 3.6a4 4 0 0 0 1.6 2.5q1.5 1 3 .6t2.9-2.4q1.4-2.1 1.1-3.6t-1.6-2.6c-1.4-1.1-2-.8-3-.5q-1.5.3-3 2.4z\"\u002F>\u003C\u002Fg>\u003Cpath fill=\"#309e3a\" d=\"m301.8 204.5l2.3-9.8l7.2 1.7l-.3 1.6l-5.3-1.2l-.5 2.2l4.9 1.1l-.4 1.7l-4.9-1.2l-.6 2.7l5.5 1.3l-.4 1.6z\"\u002F>\u003C\u002Fg>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1613},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m12 19l-7-7l7-7m7 7H5\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1615},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",{"left":834,"top":834,"width":835,"height":835,"rotate":834,"vFlip":836,"hFlip":836,"body":1617},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\"\u002F>",1789004696885]