From 189a2914b720c1c80a7357ee65cffaaffacb0f30 Mon Sep 17 00:00:00 2001 From: Bruno Germano Date: Fri, 11 Sep 2026 18:58:13 -0300 Subject: [PATCH 1/8] fix(styles): stop base.css from overriding every theme font token MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `* { font-family: 'Sora' }` was unlayered, so it outranked Tailwind's `@layer utilities` regardless of specificity, and matched every element directly, defeating inheritance. Together that silently forced Sora over `text-overline-*`, `text-big-number-*` and `font-mono` — the other properties of those tokens still applied, which is why it read as "the mono font is broken" rather than "the token is broken". The base family already comes from the theme's `--default-font-family` via Tailwind preflight on `html`, so the declaration was redundant. Co-Authored-By: Claude Opus 5 --- src/styles/base.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/styles/base.css b/src/styles/base.css index 5389f0cdac..c1c8fa84b1 100644 --- a/src/styles/base.css +++ b/src/styles/base.css @@ -8,8 +8,12 @@ body { color: var(--text-default); } +/* NEVER set font-family here. `*` matches every element directly, so it defeats + inheritance AND — being unlayered — it outranks every normal utility in + `@layer utilities`, silently killing `text-overline-*`, `text-big-number-*`, + `font-mono` and friends. The base family already comes from the theme's + `--default-font-family` (Sora) via Tailwind preflight on `html`. */ * { - font-family: 'Sora', sans-serif; box-sizing: border-box; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; From b7204e67a2e847b15057b727686a238ffc3c4194 Mon Sep 17 00:00:00 2001 From: Bruno Germano Date: Fri, 11 Sep 2026 18:58:30 -0300 Subject: [PATCH 2/8] fix(footer): point the two stale docs links at their real permalinks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `/products/azion-platform-overview/` and `/products/release-notes/` both 404 — the pages live at the permalinks declared in their own frontmatter, `/fundamentals/` and `/changelog/`. Verified 200 on both local and the preview deploy. Co-Authored-By: Claude Opus 5 --- src/i18n/en/footer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/en/footer.ts b/src/i18n/en/footer.ts index a7933da076..efa6876257 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/products/azion-platform-overview/', + link: '/en/documentation/fundamentals/', }, { title: 'Pricing', @@ -87,7 +87,7 @@ const listData = [ }, { title: 'Release Notes', - link: '/en/documentation/products/release-notes/', + link: '/en/documentation/changelog/', }, { title: 'Our Community', From 8604d4cca53ce17ccdce38d3819504ff7c91acd5 Mon Sep 17 00:00:00 2001 From: Bruno Germano Date: Fri, 11 Sep 2026 18:59:11 -0300 Subject: [PATCH 3/8] refactor(sidebar): move the theme switch into the rail footer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The light/dark control lived in the site footer, which put it below the fold on every docs page. It now sits in the Sidebar's footer slot, where it is reachable from anywhere in the rail. Patches webkit's Sidebar so the footer region is a bar rather than a padded block — one row at the header's own height with a top rule, so the rail ends on the baseline the top bar starts on. That also lets DocsSidebar drop its `--rail-w` style override and the eslint-disable it needed. Co-Authored-By: Claude Opus 5 --- patches/@aziontech__webkit@5.0.0.patch | 50 +++++++++++++++---- pnpm-lock.yaml | 6 +-- src/components/Footer.vue | 3 -- src/components/webkit/DocsSidebar.vue | 21 +++----- .../webkit/DropdownThemeSwitcher.vue | 4 +- src/layouts/BaseLayout.astro | 4 -- 6 files changed, 50 insertions(+), 38 deletions(-) diff --git a/patches/@aziontech__webkit@5.0.0.patch b/patches/@aziontech__webkit@5.0.0.patch index 990763318b..8e1edc063e 100644 --- a/patches/@aziontech__webkit@5.0.0.patch +++ b/patches/@aziontech__webkit@5.0.0.patch @@ -1,5 +1,5 @@ diff --git a/package.json b/package.json -index b2b7bc4..1d6cab3 100644 +index b2b7bc46f632597afdc1104ddc701ab5c3aa3eb3..1d6cab340858046f4d112e39d0f2eaed47410002 100644 --- a/package.json +++ b/package.json @@ -348,6 +348,7 @@ @@ -11,7 +11,7 @@ index b2b7bc4..1d6cab3 100644 "./vite": "./src/vite/index.js" } diff --git a/src/components/documentation/doc-page-header/doc-page-header.vue b/src/components/documentation/doc-page-header/doc-page-header.vue -index bd7aee0..bf37ca2 100644 +index bd7aee09c96243e3d40418608c2e3c579a25b309..bf37ca2e51cda1e24ec7fbf790c5bc40a760607f 100644 --- a/src/components/documentation/doc-page-header/doc-page-header.vue +++ b/src/components/documentation/doc-page-header/doc-page-header.vue @@ -41,6 +41,10 @@ @@ -53,7 +53,7 @@ index bd7aee0..bf37ca2 100644

diff --git a/src/components/documentation/doc-prose/doc-prose.vue b/src/components/documentation/doc-prose/doc-prose.vue -index 090fd5e..f79ea6d 100644 +index 090fd5e0dad546180edb21b4a6d3cb0dde0dd7b1..f79ea6d19780b927a12f717b60c2c6ee80f1e103 100644 --- a/src/components/documentation/doc-prose/doc-prose.vue +++ b/src/components/documentation/doc-prose/doc-prose.vue @@ -1,6 +1,8 @@ @@ -87,7 +87,7 @@ index 090fd5e..f79ea6d 100644 enter-active-class="animate-popup-scale-in motion-reduce:animate-none" leave-active-class="animate-popup-scale-out motion-reduce:animate-none" diff --git a/src/components/documentation/doc-step/doc-step.vue b/src/components/documentation/doc-step/doc-step.vue -index 6c963f0..640d2cf 100644 +index 6c963f0ac90595a07c58e83cb9e88c654c7dfdd8..640d2cf523441a631709ea03633e1e594e13a04a 100644 --- a/src/components/documentation/doc-step/doc-step.vue +++ b/src/components/documentation/doc-step/doc-step.vue @@ -1,7 +1,7 @@ @@ -135,7 +135,7 @@ index 6c963f0..640d2cf 100644 data-step-connector class="w-px flex-1 bg-(--border-default)" diff --git a/src/components/documentation/doc-steps/doc-steps.vue b/src/components/documentation/doc-steps/doc-steps.vue -index bedd592..291587d 100644 +index bedd592536501fe4bb7cec496784b1a40020e7ed..291587d3cf4f29ddd875eb9f7a88ae2a6ece41b8 100644 --- a/src/components/documentation/doc-steps/doc-steps.vue +++ b/src/components/documentation/doc-steps/doc-steps.vue @@ -46,6 +46,7 @@ @@ -146,8 +146,38 @@ index bedd592..291587d 100644 :data-testid="testId" class="flex w-full flex-col items-start" > +diff --git a/src/components/layout/sidebar/sidebar.vue b/src/components/layout/sidebar/sidebar.vue +index fd51d19623ddc9940b10fa338fb4e42e41487ed1..a8943e38d42fdbf6732ffc4547bdbd55afb0ca19 100644 +--- a/src/components/layout/sidebar/sidebar.vue ++++ b/src/components/layout/sidebar/sidebar.vue +@@ -157,16 +157,17 @@ + INNER_MOTION_CLASS + ) + +- const FOOTER_REGION_CLASS = 'w-full shrink-0 px-(--spacing-md) pb-(--spacing-md)' ++ // The footer is a bar, not a padded block: one row at the header's own height, so ++ // the rail ends on the same baseline the top bar starts on. The rule belongs to the ++ // region (full-bleed across the rail); the band inside it only lays the row out. ++ const FOOTER_REGION_CLASS = ++ 'flex h-(--size-14) w-full shrink-0 items-center border-t border-(--border-default) px-(--spacing-md)' + + const footerBandClass = computed(() => +- props.collapsible +- ? cn( +- 'flex items-center gap-(--spacing-xs)', +- 'border-t border-(--border-muted) pt-(--spacing-md)', +- !slots['footer'] ? 'justify-end' : undefined +- ) +- : undefined ++ cn( ++ 'flex min-w-0 flex-1 items-center gap-(--spacing-xs)', ++ props.collapsible && !slots['footer'] ? 'justify-end' : undefined ++ ) + ) + + const scrollClass = computed(() => diff --git a/src/components/navigation/dropdown/dropdown.vue b/src/components/navigation/dropdown/dropdown.vue -index 91e42e8..0a3cba6 100644 +index 91e42e8da0ac60a784937bc248d70b620e669510..0a3cba6d2193fcdb8a210c278dd67105dd0a9748 100644 --- a/src/components/navigation/dropdown/dropdown.vue +++ b/src/components/navigation/dropdown/dropdown.vue @@ -12,6 +12,7 @@ @@ -180,7 +210,7 @@ index 91e42e8..0a3cba6 100644 enter-active-class="animate-popup-scale-in motion-reduce:animate-none" leave-active-class="animate-popup-scale-out motion-reduce:animate-none" diff --git a/src/components/navigation/menu/menu-sub-trigger/menu-sub-trigger.vue b/src/components/navigation/menu/menu-sub-trigger/menu-sub-trigger.vue -index 6b29257..ec17332 100644 +index 6b29257f9aa685228948543b717e680aa7e6abaf..ec17332390bf1e1a4f17e1a3ec5e740100789099 100644 --- a/src/components/navigation/menu/menu-sub-trigger/menu-sub-trigger.vue +++ b/src/components/navigation/menu/menu-sub-trigger/menu-sub-trigger.vue @@ -62,8 +62,9 @@ @@ -196,7 +226,7 @@ index 6b29257..ec17332 100644 // Names the arrow: an inline arrow names the disclosure state, a drill arrow names the level it opens. const arrowAriaLabel = computed(() => { diff --git a/src/components/navigation/tab-view/tab-view-panel.vue b/src/components/navigation/tab-view/tab-view-panel.vue -index 607875d..f8fd34b 100644 +index 607875d360f1e8fca6f6bef35dffbccac38a087c..f8fd34bd6f6652d5301ae3c9c6b8ad377f3d2778 100644 --- a/src/components/navigation/tab-view/tab-view-panel.vue +++ b/src/components/navigation/tab-view/tab-view-panel.vue @@ -69,6 +69,10 @@ @@ -211,7 +241,7 @@ index 607875d..f8fd34b 100644 motionReady.value = true }) diff --git a/src/components/overlay/tooltip/tooltip.vue b/src/components/overlay/tooltip/tooltip.vue -index bc46309..2a57369 100644 +index bc46309e6fd6c3734f59c7338770e02d09012eb0..2a57369713bd76f09c83cb17b806d567a5d3494e 100644 --- a/src/components/overlay/tooltip/tooltip.vue +++ b/src/components/overlay/tooltip/tooltip.vue @@ -2,6 +2,7 @@ @@ -245,7 +275,7 @@ index bc46309..2a57369 100644 leave-active-class="animate-popup-scale-out motion-reduce:animate-none" diff --git a/src/composables/use-mounted/index.ts b/src/composables/use-mounted/index.ts new file mode 100644 -index 0000000..c4816ed +index 0000000000000000000000000000000000000000..c4816edb01a52d096d2e917156b831b855dedfb7 --- /dev/null +++ b/src/composables/use-mounted/index.ts @@ -0,0 +1,22 @@ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 91b44dd60e..777aff9eb0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false patchedDependencies: - '@aziontech/webkit@5.0.0': 685dcce2e0fc35723ffe3ad74610e97ea9420d875d89b2bb0c554fec6b126f9d + '@aziontech/webkit@5.0.0': c802272627b578d3409127445a41bf6053e097155dfb3f3c5d0deeba44c3bad8 importers: @@ -22,7 +22,7 @@ importers: version: 5.0.0 '@aziontech/webkit': specifier: 5.0.0 - version: 5.0.0(patch_hash=685dcce2e0fc35723ffe3ad74610e97ea9420d875d89b2bb0c554fec6b126f9d)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(stylelint@16.26.1(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)(vue-eslint-parser@10.4.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(vue@3.5.42(typescript@5.9.3)) + version: 5.0.0(patch_hash=c802272627b578d3409127445a41bf6053e097155dfb3f3c5d0deeba44c3bad8)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(stylelint@16.26.1(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)(vue-eslint-parser@10.4.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(vue@3.5.42(typescript@5.9.3)) '@babel/types': specifier: ^7.22.19 version: 7.29.8 @@ -5708,7 +5708,7 @@ snapshots: '@aziontech/theme@5.0.0': {} - '@aziontech/webkit@5.0.0(patch_hash=685dcce2e0fc35723ffe3ad74610e97ea9420d875d89b2bb0c554fec6b126f9d)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(stylelint@16.26.1(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)(vue-eslint-parser@10.4.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(vue@3.5.42(typescript@5.9.3))': + '@aziontech/webkit@5.0.0(patch_hash=c802272627b578d3409127445a41bf6053e097155dfb3f3c5d0deeba44c3bad8)(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(stylelint@16.26.1(supports-color@7.2.0)(typescript@5.9.3))(supports-color@7.2.0)(vue-eslint-parser@10.4.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0))(vue@3.5.42(typescript@5.9.3))': dependencies: '@aziontech/theme': 4.3.1 '@modelcontextprotocol/sdk': 1.30.0(supports-color@7.2.0)(zod@3.25.76) diff --git a/src/components/Footer.vue b/src/components/Footer.vue index 3295254d63..d2d4dabc43 100644 --- a/src/components/Footer.vue +++ b/src/components/Footer.vue @@ -42,7 +42,6 @@ @@ -89,8 +88,6 @@ defineSlots<{ 'system-status'(): unknown; /** The language switcher. */ action(): unknown; - /** The light/dark control. */ - 'theme-switch'(): unknown; }>(); // The treatment every other brand redirect in the app carries: hover opacity, focus ring. diff --git a/src/components/webkit/DocsSidebar.vue b/src/components/webkit/DocsSidebar.vue index 5d0a2dad8b..72c8ff74c9 100644 --- a/src/components/webkit/DocsSidebar.vue +++ b/src/components/webkit/DocsSidebar.vue @@ -1,8 +1,4 @@