From b650fe2cc3370a9daad5424d1dc2237f0f355151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Garc=C3=ADa=20Herv=C3=A1s?= Date: Thu, 21 May 2026 12:47:46 +0200 Subject: [PATCH 01/33] Match docs content width to homepage --- docs/src/app/(docs)/layout.css | 15 +++++++-------- docs/src/css/index.css | 5 ----- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/docs/src/app/(docs)/layout.css b/docs/src/app/(docs)/layout.css index 2f4f615366c..9e6f6baa975 100644 --- a/docs/src/app/(docs)/layout.css +++ b/docs/src/app/(docs)/layout.css @@ -14,14 +14,15 @@ @layer components { .RootLayout { + --main-content-width: 44.75rem; + --sidebar-width: 17.5rem; + z-index: 0; position: relative; - - --root-layout-padding-x: 0rem; - padding-inline: var(--root-layout-padding-x); + padding-inline: 0; @media (--show-side-nav) { - --root-layout-padding-x: 3rem; + padding-inline: 3rem; &::before, &::after { @@ -52,7 +53,7 @@ flex-direction: column; margin-inline: auto; min-height: 100dvh; - max-width: calc(var(--breakpoint-max-layout-width) - var(--root-layout-padding-x) * 2); + max-width: calc(var(--sidebar-width) + var(--main-content-width) + var(--sidebar-width)); @media (--show-side-nav) { padding-block: var(--header-height); @@ -101,8 +102,6 @@ } .ContentLayoutRoot { - --sidebar-width: 17.5rem; - display: grid; align-items: start; padding-top: var(--header-height); @@ -126,7 +125,7 @@ .ContentLayoutMain { min-width: 0; - max-width: 48rem; + max-width: var(--main-content-width); width: 100%; margin: 0 auto; diff --git a/docs/src/css/index.css b/docs/src/css/index.css index d4fc926bbce..316d2a70784 100644 --- a/docs/src/css/index.css +++ b/docs/src/css/index.css @@ -228,9 +228,6 @@ 0 10px 32px var(--blackA-5), 0 1px 1px var(--blackA-1), 0 4px 6px var(--blackA-2), 0 1px 1px var(--blackA-2), 0 24px 68px var(--blackA-4); - /* Breakpoints (use custom-media.css where possible) */ - --breakpoint-max-layout-width: 89rem; /* 1424px - this is a 1440px device minus 16px scrollbar */ - --ease-out-fast: cubic-bezier(0.45, 1.005, 0, 1.005); --ease-in-slow: cubic-bezier(0.375, 0.015, 0.545, 0.455); --header-height: 3rem; @@ -389,8 +386,6 @@ --ease-out-fast: initial; --ease-in-slow: initial; --header-height: initial; - - --breakpoint-max-layout-width: initial; } } From d4dd9392892eb2159a762fbb13fa81ff2ca8d9e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Garc=C3=ADa=20Herv=C3=A1s?= Date: Wed, 27 May 2026 13:20:11 +0200 Subject: [PATCH 02/33] Remove body background --- docs/src/app/(docs)/layout.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/src/app/(docs)/layout.css b/docs/src/app/(docs)/layout.css index 9e6f6baa975..ab3a6493351 100644 --- a/docs/src/app/(docs)/layout.css +++ b/docs/src/app/(docs)/layout.css @@ -6,8 +6,6 @@ position: relative; /* iOS 26 `position: absolute` backdrops */ min-width: 320px; line-height: 1.5; - /* It's also the iOS footer overscroll background */ - background-color: var(--color-background); color: var(--color-foreground); } } @@ -90,7 +88,6 @@ .RootLayoutFooter { @media (--lg) { - background-color: var(--color-background); width: 100%; height: var(--header-height); position: absolute; From fdf662c43914a8899cee582bcabaa632617fdacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Garc=C3=ADa=20Herv=C3=A1s?= Date: Wed, 27 May 2026 15:35:49 +0200 Subject: [PATCH 03/33] Grid-based layout --- docs/src/app/(docs)/layout.css | 87 ++++--------------- docs/src/app/(docs)/layout.tsx | 2 + docs/src/app/(website)/layout.tsx | 45 +++++++++- docs/src/app/(website)/page.tsx | 1 + docs/src/components/Header.css | 1 + docs/src/components/QuickNav/QuickNav.css | 25 ++++-- docs/src/components/QuickNav/QuickNav.tsx | 15 +++- docs/src/components/SideNav.css | 28 ++---- docs/src/components/SideNav.tsx | 7 +- .../src/components/TestBackgroundShortcut.tsx | 33 +++++++ docs/src/css/custom-media.css | 1 - 11 files changed, 146 insertions(+), 99 deletions(-) create mode 100644 docs/src/components/TestBackgroundShortcut.tsx diff --git a/docs/src/app/(docs)/layout.css b/docs/src/app/(docs)/layout.css index ab3a6493351..4a306d5562c 100644 --- a/docs/src/app/(docs)/layout.css +++ b/docs/src/app/(docs)/layout.css @@ -12,35 +12,31 @@ @layer components { .RootLayout { - --main-content-width: 44.75rem; - --sidebar-width: 17.5rem; + --content-layout-gap: 2.5rem; + --content-layout-max-width: 48rem; z-index: 0; position: relative; - padding-inline: 0; + padding-inline: 1.5rem; - @media (--show-side-nav) { + @media (--md) { + --content-layout-gap: 3rem; padding-inline: 3rem; + } - &::before, - &::after { + @media (--show-side-nav) { + --content-layout-max-width: 92.5rem; + + &::before { content: ''; position: absolute; - background-color: var(--color-gridline); - height: 1px; + z-index: 1; + top: var(--header-height); right: 0; left: 0; - } - - &::before { - top: var(--header-height); + height: 1px; margin-top: -1px; - } - - &::after { - bottom: var(--header-height); - margin-bottom: -1px; - z-index: 1; + background-color: var(--color-gridline); } } } @@ -51,31 +47,11 @@ flex-direction: column; margin-inline: auto; min-height: 100dvh; - max-width: calc(var(--sidebar-width) + var(--main-content-width) + var(--sidebar-width)); + max-width: var(--content-layout-max-width); @media (--show-side-nav) { padding-block: var(--header-height); padding-bottom: 0; - - &::before, - &::after { - content: ''; - position: absolute; - top: 0; - bottom: 0; - width: 1px; - background-color: var(--color-gridline); - } - - &::before { - left: 0; - margin-left: -1px; - } - - &::after { - right: 0; - margin-right: -1px; - } } } @@ -86,43 +62,22 @@ background-color: var(--color-content); } - .RootLayoutFooter { - @media (--lg) { - width: 100%; - height: var(--header-height); - position: absolute; - z-index: 1; - left: 0; - right: 0; - bottom: 0; - } - } - .ContentLayoutRoot { display: grid; align-items: start; + gap: var(--content-layout-gap); padding-top: var(--header-height); - padding-inline: 1.5rem; - grid-template-columns: 1fr; - - @media (--sm) { - padding-inline: 2.5rem; - } + grid-template-columns: repeat(8, minmax(0, 1fr)); @media (--show-side-nav) { padding-top: 0; - padding-inline: 0; - grid-template-columns: var(--sidebar-width) 1fr 3rem; - } - - @media (--show-quick-nav) { - grid-template-columns: var(--sidebar-width) 1fr var(--sidebar-width); } } .ContentLayoutMain { + grid-column: 1 / -1; + grid-row: 1; min-width: 0; - max-width: var(--main-content-width); width: 100%; margin: 0 auto; @@ -130,9 +85,5 @@ @media (--show-side-nav) { margin: 0; } - - @media (--show-quick-nav) { - margin: 0; - } } } diff --git a/docs/src/app/(docs)/layout.tsx b/docs/src/app/(docs)/layout.tsx index 26a24155378..ee254a96f50 100644 --- a/docs/src/app/(docs)/layout.tsx +++ b/docs/src/app/(docs)/layout.tsx @@ -10,6 +10,7 @@ import * as SideNav from 'docs/src/components/SideNav'; import * as QuickNav from 'docs/src/components/QuickNav/QuickNav'; import { Header, titleMap } from 'docs/src/components/Header'; import { MAIN_CONTENT_ID } from 'docs/src/components/SkipNav'; +import { TestBackgroundShortcut } from 'docs/src/components/TestBackgroundShortcut'; import { sitemap } from 'docs/src/app/sitemap'; const showPrivatePages = process.env.SHOW_PRIVATE_PAGES === 'true'; @@ -49,6 +50,7 @@ export default function Layout({ children }: React.PropsWithChildren) { /> +
diff --git a/docs/src/app/(website)/layout.tsx b/docs/src/app/(website)/layout.tsx index 3a238f3213f..dc1c614c495 100644 --- a/docs/src/app/(website)/layout.tsx +++ b/docs/src/app/(website)/layout.tsx @@ -7,6 +7,7 @@ import type { Metadata, Viewport } from 'next/types'; import { GoogleAnalytics } from 'docs/src/components/GoogleAnalytics'; import { Link } from 'docs/src/components/Link'; import { Logo } from 'docs/src/components/Logo'; +import { TestBackgroundShortcut } from 'docs/src/components/TestBackgroundShortcut'; export default function Layout({ children }: React.PropsWithChildren) { return ( @@ -29,11 +30,53 @@ export default function Layout({ children }: React.PropsWithChildren) { /> +
+ + +
diff --git a/docs/src/app/(website)/page.tsx b/docs/src/app/(website)/page.tsx index 63ca1e2721d..4f6e8f1d641 100644 --- a/docs/src/app/(website)/page.tsx +++ b/docs/src/app/(website)/page.tsx @@ -86,6 +86,7 @@ export default function Homepage() {
+

Made for the makers

diff --git a/docs/src/components/Header.css b/docs/src/components/Header.css index 4a2d82ccc50..449b796d9cb 100644 --- a/docs/src/components/Header.css +++ b/docs/src/components/Header.css @@ -30,6 +30,7 @@ position: static; box-shadow: none; background-color: transparent; + padding-inline: 0; } @media print { diff --git a/docs/src/components/QuickNav/QuickNav.css b/docs/src/components/QuickNav/QuickNav.css index 179bf741d68..76f5b245966 100644 --- a/docs/src/components/QuickNav/QuickNav.css +++ b/docs/src/components/QuickNav/QuickNav.css @@ -5,9 +5,15 @@ /* Quick Nav's container shouldn't have any paddings to maintain correct positioning */ padding: 0; position: relative; + display: grid; + gap: var(--content-layout-gap); + grid-template-columns: repeat(8, minmax(0, 1fr)); } .QuickNavContent { + grid-column: 1 / -1; + grid-row: 1; + min-width: 0; padding-top: 1.5rem; padding-bottom: 5rem; @@ -16,12 +22,16 @@ } @media (--show-side-nav) { - padding-bottom: 8rem; + grid-column: 3 / 9; + padding-bottom: var(--header-height); + } + + @media (--xl) { + grid-column: 3 / 7; } } .QuickNavRoot { - --quick-nav-margin-x: 2rem; --quick-nav-scrollbar-thumb-width: 0.25rem; --quick-nav-scrollbar-width: 1.5rem; @@ -35,22 +45,23 @@ font-size: var(--font-size-15); line-height: 1.375rem; z-index: 1; + grid-column: 7 / 9; + grid-row: 1; + align-self: start; + min-width: 0; position: sticky; top: 0; - width: 0; - float: right; contain: layout; display: none; - @media (--show-quick-nav) { + @media (--xl) { display: block; } } .QuickNavInner { position: relative; - left: var(--quick-nav-margin-x); - width: calc(var(--sidebar-width) - var(--quick-nav-margin-x)); + width: 100%; } .QuickNavViewport { diff --git a/docs/src/components/QuickNav/QuickNav.tsx b/docs/src/components/QuickNav/QuickNav.tsx index 9f1b63d7302..746e452c961 100644 --- a/docs/src/components/QuickNav/QuickNav.tsx +++ b/docs/src/components/QuickNav/QuickNav.tsx @@ -11,12 +11,23 @@ export function Container({ className, ...props }: React.ComponentProps<'div'>) } export function Content({ className, ...props }: React.ComponentProps<'div'>) { - return
; + return ( +
+ ); } export function Root({ children, className, ...props }: React.ComponentProps<'div'>) { return ( -