From 287082e273127577e558ae966ecc0cd9c892576a Mon Sep 17 00:00:00 2001 From: Marcus Souza Date: Mon, 21 Sep 2026 15:09:32 -0300 Subject: [PATCH 1/2] feat(sidebar): render Fundamentals and Platform as home dropdowns --- .../azion-edge-runtime/overview/overview.mdx | 2 +- .../use-a-template.mdx | 2 +- .../get-started/azion-platform-overview.mdx | 4 +- .../main-menu/get-started/fundamentals.mdx | 28 ++++++++ .../get-started/start-with-a-template.mdx | 2 +- .../edge-application/edge-application.mdx | 2 +- .../visao-geral/visao-geral-runtime.mdx | 2 +- .../comecar-com-um-template.mdx | 2 +- .../ponto-de-partida/fundamentos.mdx | 28 ++++++++ .../ponto-de-partida/visao-geral-da-azion.mdx | 4 +- .../usar-um-template-via-rtm.mdx | 2 +- src/data/agent-setup.json | 8 +-- src/i18n/en/footer.ts | 2 +- src/nav/resolve.ts | 29 +++++++-- src/nav/root.json | 29 +-------- src/nav/schema.ts | 1 + src/nav/trees/fundamentals.json | 7 +- src/nav/trees/platform.json | 65 +++++++++++++++++++ 18 files changed, 165 insertions(+), 54 deletions(-) create mode 100644 src/content/docs/en/pages/main-menu/get-started/fundamentals.mdx create mode 100644 src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/fundamentos.mdx create mode 100644 src/nav/trees/platform.json diff --git a/src/content/docs/en/pages/devtools/azion-edge-runtime/overview/overview.mdx b/src/content/docs/en/pages/devtools/azion-edge-runtime/overview/overview.mdx index 064e58687a..efe456c822 100644 --- a/src/content/docs/en/pages/devtools/azion-edge-runtime/overview/overview.mdx +++ b/src/content/docs/en/pages/devtools/azion-edge-runtime/overview/overview.mdx @@ -54,7 +54,7 @@ Learn more about [Strict mode](https://developer.mozilla.org/en-US/docs/Web/Java Every ceiling one invocation runs inside, and what happens past each one. The `active` field, which stops an instance from running without deleting it. What an application enables before a function can run on it. - Where the code physically executes. + Where the code physically executes. The support and community channels. diff --git a/src/content/docs/en/pages/main-menu/additional-resources/templates-and-integrations/use-a-template.mdx b/src/content/docs/en/pages/main-menu/additional-resources/templates-and-integrations/use-a-template.mdx index 4c1c5d6a74..0a1d73dd89 100644 --- a/src/content/docs/en/pages/main-menu/additional-resources/templates-and-integrations/use-a-template.mdx +++ b/src/content/docs/en/pages/main-menu/additional-resources/templates-and-integrations/use-a-template.mdx @@ -67,7 +67,7 @@ After the deployment, each template creates a new application and its Azion doma Go to the [guides page](https://www.azion.com/en/documentation/guides/#azion-templates) and check more details on the specific template you're willing to use. :::tip -To know more on how to edit and customize your application's main settings, go to the [Configuring main settings](/en/documentation/guides/application-development/getting-started/configure-main-settings/) guide. You can also [Go live with Azion](/en/documentation/fundamentals/), adding a custom domain and poiting your traffic. +To know more on how to edit and customize your application's main settings, go to the [Configuring main settings](/en/documentation/guides/application-development/getting-started/configure-main-settings/) guide. You can also [Go live with Azion](/en/documentation/products/go-live-with-azion/), adding a custom domain and poiting your traffic. ::: diff --git a/src/content/docs/en/pages/main-menu/get-started/azion-platform-overview.mdx b/src/content/docs/en/pages/main-menu/get-started/azion-platform-overview.mdx index 91c7f96729..1b337874c5 100644 --- a/src/content/docs/en/pages/main-menu/get-started/azion-platform-overview.mdx +++ b/src/content/docs/en/pages/main-menu/get-started/azion-platform-overview.mdx @@ -1,11 +1,11 @@ --- -title: "Azion Web Platform Overview" +title: "How Azion works" description: >- This documentation introduces the Azion Web Platform, which unifies app development, security, and observability on a global infrastructure so you can ship faster with performance and control. meta_tags: >- Azion, application, Azion Web Platform, developer platform, application platform, modern application platform, global web platform, serverless platform, serverless computing, serverless functions, functions, application development, application security, API security, web application firewall, WAF, DDoS protection, DDoS mitigation namespace: documentation_azion_platform_overview -permalink: /documentation/fundamentals/ +permalink: /documentation/platform/ --- diff --git a/src/content/docs/en/pages/main-menu/get-started/fundamentals.mdx b/src/content/docs/en/pages/main-menu/get-started/fundamentals.mdx new file mode 100644 index 0000000000..2fc0a0fc6c --- /dev/null +++ b/src/content/docs/en/pages/main-menu/get-started/fundamentals.mdx @@ -0,0 +1,28 @@ +--- +title: Fundamentals +description: >- + Create an Azion account, add the people who work in it, keep it secure, and + understand what you are charged for. +meta_tags: >- + account, fundamentals, billing, subscriptions, permissions, teams, security, compliance, single sign-on, multi-factor authentication +namespace: documentation_fundamentals +permalink: /documentation/fundamentals/ +--- + +import DocCardGroup from '@aziontech/webkit/doc-card-group' +import DocCard from '@aziontech/webkit/doc-card' + +Everything you build on Azion lives inside an account. This section covers the account itself: how you create one, who else can work in it and with which permissions, how usage becomes an invoice, and the controls that keep the account secure. + +Looking for what the platform does instead? Start with [How Azion works](/en/documentation/platform/). + +--- + + + + + + + + + diff --git a/src/content/docs/en/pages/main-menu/get-started/start-with-a-template.mdx b/src/content/docs/en/pages/main-menu/get-started/start-with-a-template.mdx index 8a0d92fb03..812b57bd76 100644 --- a/src/content/docs/en/pages/main-menu/get-started/start-with-a-template.mdx +++ b/src/content/docs/en/pages/main-menu/get-started/start-with-a-template.mdx @@ -21,6 +21,6 @@ You have these ways to start building with a template: -Once you've built your application with the preferred method, you can come back to follow your journey and [Go live with Azion](/en/documentation/fundamentals/). +Once you've built your application with the preferred method, you can come back to follow your journey and [Go live with Azion](/en/documentation/products/go-live-with-azion/). diff --git a/src/content/docs/en/pages/main-menu/reference/build/edge-application/edge-application.mdx b/src/content/docs/en/pages/main-menu/reference/build/edge-application/edge-application.mdx index e212b4c39b..4eae8d69a4 100644 --- a/src/content/docs/en/pages/main-menu/reference/build/edge-application/edge-application.mdx +++ b/src/content/docs/en/pages/main-menu/reference/build/edge-application/edge-application.mdx @@ -29,7 +29,7 @@ With Applications, you can: - Bring your business rules for any request or response. - Optimize content and image delivery for your users. - + You can create and manage applications using: diff --git a/src/content/docs/pt-br/pages/devtools/azion-edge-runtime/visao-geral/visao-geral-runtime.mdx b/src/content/docs/pt-br/pages/devtools/azion-edge-runtime/visao-geral/visao-geral-runtime.mdx index 24ff0adddc..d0f3b90447 100644 --- a/src/content/docs/pt-br/pages/devtools/azion-edge-runtime/visao-geral/visao-geral-runtime.mdx +++ b/src/content/docs/pt-br/pages/devtools/azion-edge-runtime/visao-geral/visao-geral-runtime.mdx @@ -55,7 +55,7 @@ Saiba mais sobre o [Strict mode](https://developer.mozilla.org/en-US/docs/Web/Ja Todos os tetos dentro dos quais uma invocação roda, e o que acontece além de cada um. O campo `active`, que impede uma instância de rodar sem apagá-la. O que uma aplicação habilita antes de uma função poder rodar nela. - Onde o código é executado fisicamente. + Onde o código é executado fisicamente. Os canais de suporte e de comunidade. diff --git a/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/comecar-com-um-template.mdx b/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/comecar-com-um-template.mdx index b16fd4b593..ee2356febd 100644 --- a/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/comecar-com-um-template.mdx +++ b/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/comecar-com-um-template.mdx @@ -19,7 +19,7 @@ Você tem as seguintes maneiras de começar a construir com templates: -Depois de criar uma application com seu método preferido, volte para continuar sua jornada e [activá-la em produção](/pt-br/documentacao/fundamentos/). +Depois de criar uma application com seu método preferido, volte para continuar sua jornada e [activá-la em produção](/pt-br/documentacao/produtos/ative-em-producao/). diff --git a/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/fundamentos.mdx b/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/fundamentos.mdx new file mode 100644 index 0000000000..b0b9cd2043 --- /dev/null +++ b/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/fundamentos.mdx @@ -0,0 +1,28 @@ +--- +title: Fundamentos +description: >- + Crie uma conta na Azion, adicione as pessoas que trabalham nela, mantenha a + conta segura e entenda o que é cobrado. +meta_tags: >- + conta, fundamentos, faturamento, assinaturas, permissões, times, segurança, conformidade, single sign-on, autenticação multifator +namespace: documentation_fundamentals +permalink: /documentacao/fundamentos/ +--- + +import DocCardGroup from '@aziontech/webkit/doc-card-group' +import DocCard from '@aziontech/webkit/doc-card' + +Tudo o que você constrói na Azion fica dentro de uma conta. Esta seção trata da própria conta: como criá-la, quem mais pode trabalhar nela e com quais permissões, como o uso vira uma fatura e quais controles mantêm a conta segura. + +Procura o que a plataforma faz? Comece por [Como a Azion funciona](/pt-br/documentacao/plataforma/). + +--- + + + + + + + + + diff --git a/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/visao-geral-da-azion.mdx b/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/visao-geral-da-azion.mdx index 771e23d5e7..4f5a0c4d4a 100644 --- a/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/visao-geral-da-azion.mdx +++ b/src/content/docs/pt-br/pages/menu-principal/ponto-de-partida/visao-geral-da-azion.mdx @@ -1,10 +1,10 @@ --- -title: Visão geral da Azion Web Platform +title: Como a Azion funciona description: >- Esta documentação apresenta a Azion Web Platform e conceitos-chave para ajudar a entender melhor a arquitetura distribuída. meta_tags: 'Azion, application, jornada, onboarding, templates, domínios, tráfego' namespace: documentation_azion_platform_overview -permalink: /documentacao/fundamentos/ +permalink: /documentacao/plataforma/ --- diff --git a/src/content/docs/pt-br/pages/menu-principal/recursos-adicionais/templates-e-integracoes/usar-um-template-via-rtm.mdx b/src/content/docs/pt-br/pages/menu-principal/recursos-adicionais/templates-e-integracoes/usar-um-template-via-rtm.mdx index 5d4c8cb9c3..7ff139857a 100644 --- a/src/content/docs/pt-br/pages/menu-principal/recursos-adicionais/templates-e-integracoes/usar-um-template-via-rtm.mdx +++ b/src/content/docs/pt-br/pages/menu-principal/recursos-adicionais/templates-e-integracoes/usar-um-template-via-rtm.mdx @@ -64,7 +64,7 @@ Após a implantação, cada template cria uma nova application e seu domínio Az Vá para a [página de guias](/pt-br/documentacao/guias/#azion-templates) e verifique mais detalhes sobre o template específico que você quer usar. :::tip[dica] -Para saber mais sobre como editar e personalizar as configurações principais de sua aplicação, acesse o guia sobre [configuração](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/definir-configuracoes-principais/) das applications. Você também pode [rodar na rede da Azion](/pt-br/documentacao/fundamentos/), adicionando um domínio personalizado e direcionando seu tráfego. +Para saber mais sobre como editar e personalizar as configurações principais de sua aplicação, acesse o guia sobre [configuração](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/primeiros-passos/definir-configuracoes-principais/) das applications. Você também pode [rodar na rede da Azion](/pt-br/documentacao/produtos/ative-em-producao/), adicionando um domínio personalizado e direcionando seu tráfego. ::: diff --git a/src/data/agent-setup.json b/src/data/agent-setup.json index 821ae7a83d..6adb925f4e 100644 --- a/src/data/agent-setup.json +++ b/src/data/agent-setup.json @@ -846,8 +846,8 @@ "pt-br": "Visão geral da plataforma" }, "href": { - "en": "/en/documentation/fundamentals/", - "pt-br": "/pt-br/documentacao/fundamentos/" + "en": "/en/documentation/platform/", + "pt-br": "/pt-br/documentacao/plataforma/" } }, "workload": { @@ -861,8 +861,8 @@ "pt-br": "Visão geral da plataforma" }, "href": { - "en": "/en/documentation/fundamentals/", - "pt-br": "/pt-br/documentacao/fundamentos/" + "en": "/en/documentation/platform/", + "pt-br": "/pt-br/documentacao/plataforma/" } } }, diff --git a/src/i18n/en/footer.ts b/src/i18n/en/footer.ts index efa6876257..7942fc4176 100644 --- a/src/i18n/en/footer.ts +++ b/src/i18n/en/footer.ts @@ -58,7 +58,7 @@ const listData = [ }, { title: 'How to start', - link: '/en/documentation/fundamentals/', + link: '/en/documentation/platform/', }, { title: 'Pricing', diff --git a/src/nav/resolve.ts b/src/nav/resolve.ts index 16643efaf4..cd33a47599 100644 --- a/src/nav/resolve.ts +++ b/src/nav/resolve.ts @@ -262,10 +262,21 @@ export function buildNavIndex(data: NavData, lang: Lang): NavIndex { return byPermalink; } -function openedTree(node: NavNode, href: string | undefined, ctx: MenuContext): string | undefined { +function inlineTree(data: NavData, node: NavNode): NavTree | undefined { + const tree = node.tree ? data.trees.get(node.tree) : undefined; + return tree?.inline ? tree : undefined; +} + +function openedTree( + data: NavData, + node: NavNode, + href: string | undefined, + ctx: MenuContext +): string | undefined { if (node.href || node.placeholder || !href) return undefined; const target = ctx.index.get(normalize(href))?.treeId; - return target && target !== ctx.treeId ? target : undefined; + if (!target || target === ctx.treeId) return undefined; + return data.trees.get(target)?.inline ? undefined : target; } interface MenuContext { @@ -292,10 +303,12 @@ function toMenuNodes( const label = nodeLabel(data, node, lang); if (!label) return; - const href = nodeHref(data, node, lang); + const inlined = inlineTree(data, node); + const rows = inlined ? inlined.groups.flatMap((group) => group.items) : node.items; + const href = inlined ? undefined : nodeHref(data, node, lang); const external = Boolean(node.href); - const children = node.items?.length - ? toMenuNodes(data, node.items, lang, id, ctx, [...ancestors, id]) + const children = rows?.length + ? toMenuNodes(data, rows, lang, id, ctx, [...ancestors, id]) : undefined; const claimsActive = Boolean(href) && href !== ctx.comingSoonHref; @@ -308,7 +321,7 @@ function toMenuNodes( node.tag ?? (node.page && !hasOwnLanguage(data, node.page, lang) && lang !== 'en' ? 'EN' : undefined); - const opensTree = openedTree(node, href, ctx); + const opensTree = openedTree(data, node, href, ctx); if (children?.length) { if (href) { @@ -367,6 +380,7 @@ export function resolveTreeMenus( const out: Record = {}; for (const tree of data.trees.values()) { + if (tree.inline) continue; out[tree.id] = groupsToMenu(data, tree.groups, lang, tree.id, { activePath: '', activeId: '', @@ -389,7 +403,8 @@ export function resolveSidebar( ): SidebarModel { const activePath = normalize(pathname); const location = index.get(activePath); - const tree = location ? data.trees.get(location.treeId) : undefined; + const located = location ? data.trees.get(location.treeId) : undefined; + const tree = located?.inline ? undefined : located; const ctx: MenuContext = { activePath, diff --git a/src/nav/root.json b/src/nav/root.json index d3e7fdd644..44faf2e09e 100644 --- a/src/nav/root.json +++ b/src/nav/root.json @@ -15,36 +15,9 @@ ] }, { - "label": { - "en": "Platform" - }, "items": [ { - "tree": "applications" - }, - { - "tree": "firewall" - }, - { - "tree": "connectors" - }, - { - "tree": "workloads" - }, - { - "tree": "real-time-metrics" - }, - { - "tree": "ddos-protection" - }, - { - "tree": "custom-pages" - }, - { - "tree": "certificate-manager" - }, - { - "tree": "load-balancer" + "tree": "platform" } ] }, diff --git a/src/nav/schema.ts b/src/nav/schema.ts index 74f4019b94..7caece848b 100644 --- a/src/nav/schema.ts +++ b/src/nav/schema.ts @@ -71,6 +71,7 @@ export const navTree = z.object({ parent: z.string().min(1).default('root'), path: localized, root: z.string().min(1).optional(), + inline: z.boolean().optional(), groups: z.array(navGroup).min(1), }); diff --git a/src/nav/trees/fundamentals.json b/src/nav/trees/fundamentals.json index c3a202b2cf..9acde08eb9 100644 --- a/src/nav/trees/fundamentals.json +++ b/src/nav/trees/fundamentals.json @@ -5,19 +5,20 @@ "pt-br": "Fundamentos" }, "description": { - "en": "Accounts, billing and platform basics" + "en": "Accounts, billing, permissions and account security" }, "parent": "root", "path": { "en": "fundamentals", "pt-br": "fundamentos" }, - "root": "documentation_azion_platform_overview", + "root": "documentation_fundamentals", + "inline": true, "groups": [ { "items": [ { - "page": "documentation_azion_platform_overview", + "page": "documentation_fundamentals", "label": { "en": "Overview", "pt-br": "Visão geral" diff --git a/src/nav/trees/platform.json b/src/nav/trees/platform.json new file mode 100644 index 0000000000..77ef2543f8 --- /dev/null +++ b/src/nav/trees/platform.json @@ -0,0 +1,65 @@ +{ + "id": "platform", + "title": { + "en": "Platform", + "pt-br": "Plataforma" + }, + "description": { + "en": "The services that run, secure and observe your applications" + }, + "parent": "root", + "path": { + "en": "platform", + "pt-br": "plataforma" + }, + "root": "documentation_azion_platform_overview", + "inline": true, + "groups": [ + { + "items": [ + { + "page": "documentation_azion_platform_overview", + "label": { + "en": "How Azion works", + "pt-br": "Como a Azion funciona" + } + }, + { + "label": { + "en": "Core services", + "pt-br": "Serviços principais" + }, + "items": [ + { + "tree": "applications" + }, + { + "tree": "firewall" + }, + { + "tree": "connectors" + }, + { + "tree": "workloads" + }, + { + "tree": "real-time-metrics" + }, + { + "tree": "ddos-protection" + }, + { + "tree": "custom-pages" + }, + { + "tree": "certificate-manager" + }, + { + "tree": "load-balancer" + } + ] + } + ] + } + ] +} From 88b0395edb8f1fad4e09c44e4556ed0e5eecfed3 Mon Sep 17 00:00:00 2001 From: Marcus Souza Date: Mon, 21 Sep 2026 19:38:04 -0300 Subject: [PATCH 2/2] feat(sidebar): name the section at the top of its own menu --- src/nav/resolve.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/nav/resolve.ts b/src/nav/resolve.ts index cd33a47599..bdfde20ef6 100644 --- a/src/nav/resolve.ts +++ b/src/nav/resolve.ts @@ -371,6 +371,11 @@ function groupsToMenu( .filter((group) => group.items.length > 0); } +function withSectionTitle(groups: MenuGroupNode[], title: string | undefined): MenuGroupNode[] { + if (!title || groups.length === 0 || groups[0].label) return groups; + return [{ ...groups[0], label: title }, ...groups.slice(1)]; +} + export function resolveTreeMenus( data: NavData, index: NavIndex, @@ -381,7 +386,7 @@ export function resolveTreeMenus( for (const tree of data.trees.values()) { if (tree.inline) continue; - out[tree.id] = groupsToMenu(data, tree.groups, lang, tree.id, { + const groups = groupsToMenu(data, tree.groups, lang, tree.id, { activePath: '', activeId: '', expanded: [], @@ -389,6 +394,7 @@ export function resolveTreeMenus( index, treeId: tree.id, }); + out[tree.id] = withSectionTitle(groups, text(tree.title, lang)); } return out; @@ -428,7 +434,10 @@ export function resolveSidebar( } const back = backRow(data, tree, lang, labels); - const groups = groupsToMenu(data, tree.groups, lang, tree.id, ctx); + const groups = withSectionTitle( + groupsToMenu(data, tree.groups, lang, tree.id, ctx), + text(tree.title, lang) + ); const catalog = groupsToMenu(data, data.root.groups, lang, 'root', { activePath, activeId: '',