diff options
Diffstat (limited to 'docs/src/layouts/Main.astro')
-rw-r--r-- | docs/src/layouts/Main.astro | 164 |
1 files changed, 112 insertions, 52 deletions
diff --git a/docs/src/layouts/Main.astro b/docs/src/layouts/Main.astro index 52cfa741d..f2a73e07e 100644 --- a/docs/src/layouts/Main.astro +++ b/docs/src/layouts/Main.astro @@ -5,46 +5,72 @@ import ThemeToggle from '../components/ThemeToggle.tsx'; import DocSidebar from '../components/DocSidebar.tsx'; import MenuToggle from '../components/MenuToggle.tsx'; -const { content } = Astro.props; +const { content = {}, centered = false } = Astro.props; const headers = content?.astro?.headers; -const currentPage = Astro.request.url.pathname; -const currentFile = currentPage === '/' ? 'src/pages/index.md' : `src/pages${currentPage.replace(/\/$/, "")}.md`; -const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${currentFile}`; +const currentPage = Astro.request?.url?.pathname; +let currentFile; +let githubEditUrl; +if (currentPage) { + currentFile = currentPage === '/' ? 'src/pages/index.md' : `src/pages${currentPage.replace(/\/$/, "")}.md`; + githubEditUrl = `https://github.com/snowpackjs/astro/blob/main/docs/${currentFile}`; +} --- -<html lang="{content.lang ?? 'en-us'}"> +<html lang="{content.lang ?? 'en-us'}" class="initial"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{content.title}</title> + + <!-- This is intentionally inlined to avoid FOUC --> + <script> + (() => { + const root = document.documentElement; + const theme = localStorage.getItem('theme'); + if ( + theme === 'dark' || + (!theme) && window.matchMedia('(prefers-color-scheme: dark)').matches) + { + root.classList.add('theme-dark'); + } else { + root.classList.remove('theme-dark'); + } + })(); + </script> <link rel="stylesheet" href="/theme.css" /> <link rel="stylesheet" href="/code.css" /> <link rel="stylesheet" href="/index.css" /> - <script src="/theme.js" /> + <link rel="icon" type="image/svg+xml" href="/favicon.svg"> + <link rel="preconnect" href="https://fonts.googleapis.com"> + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital@0;1&display=swap" rel="stylesheet"> + <style> body { width: 100%; display: grid; - grid-template-rows: 3.5rem 1fr; + grid-template-rows: var(--theme-navbar-height) 1fr; --gutter: 0.5rem; --doc-padding: 2rem; } header { - position: sticky; - top: 0; z-index: 10; - height: 56px; + height: var(--theme-navbar-height); width: 100%; - background-color: var(--theme-bg-offset); + background-color: var(--theme-navbar-bg); display: flex; align-items: center; justify-content: center; + z-index: 1001; + overflow: hidden; + position: sticky; + top: 0; } .layout { @@ -54,34 +80,16 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr minmax(var(--gutter), 1fr) minmax(0, var(--max-width)) minmax(var(--gutter), 1fr); - gap: 1em; + overflow-x: hidden; } - .menu-and-logo { - gap: 1em; - } - - #site-title { + .logo { display: flex; align-items: center; - gap: 0.25em; - font-size: 1.5rem; - font-weight: 700; - margin: 0; - line-height: 1; - color: var(--theme-text); - text-decoration: none; - } - - #site-title:hover, - #site-title:focus { - color: var(--theme-text-light); - } - - #site-title h1 { - font: inherit; - color: inherit; - margin: 0; + justify-content: center; + gap: 1em; + z-index: -1; + margin: 0 auto; } .nav-wrapper { @@ -99,11 +107,9 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr } .sidebar { - min-height: calc(100vh - 3.5rem); - height: calc(100vh - 3.5rem); - max-height: 100vh; + height: 100vh; position: sticky; - top: 3.5rem; + top: 0; padding: 0; } @@ -121,7 +127,27 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr height: 100%; } + .layout.centered #article main { + display: flex; + flex-direction: column; + margin: auto; + align-items: center; + justify-content: center; + font-size: 1.5rem; + gap: 0.5em; + text-align: center; + } + + .layout.centered #article main :global(> *) { + margin: 0; + } + + .layout.centered #article main h1 { + font-size: 5rem; + } + .content { + padding: 0; max-width: 75ch; width: 100%; height: 100%; @@ -147,8 +173,20 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr } :global(.mobile-sidebar-toggle) #sidebar-site { display: block; + top: 0; } @media (min-width: 60em) { + header { + position: static; + } + .layout { + overflow: initial; + } + .logo { + width: auto; + margin: 0; + z-index: 0; + } #sidebar-site { display: flex; } @@ -165,6 +203,7 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr grid-template-columns: 20rem minmax(0, var(--max-width)); + gap: 1em; } #article { grid-column: 2; @@ -202,6 +241,9 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr display: flex; grid-column: 3; } + .nav-wrapper { + padding: 0; + } } </style> @@ -210,16 +252,32 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr <body> <header> <nav class="nav-wrapper"> - <div class="menu-and-logo flex"> - <div class="menu-toggle"> - <MenuToggle client:idle/> - </div> - <a id="site-title" href="/"> - <h1>Astro Documentation</h1> - </a> + <div class="menu-toggle"> + <MenuToggle client:idle/> </div> - <div /> + <div class="logo flex"> + <a href="https://astro.build/"> + <h1 class="sr-only">Astro</h1> + <svg xmlns="http://www.w3.org/2000/svg" width="363" height="102" viewBox="0 0 363 102" fill="none"> + <path fill="url(#paint0_linear)" fill-rule="evenodd" d="M55.07 14.216l16.81 54.865a72.6 72.6 0 00-20.765-6.984L39.808 24.135a1.475 1.475 0 00-2.827.005L25.81 62.078a72.598 72.598 0 00-20.859 6.995L21.847 14.2c.998-3.243 1.497-4.865 2.47-6.066a8 8 0 013.239-2.392c1.434-.576 3.13-.576 6.524-.576h8.751c3.398 0 5.097 0 6.532.577a8 8 0 013.241 2.397c.972 1.203 1.47 2.827 2.465 6.076z" clip-rule="evenodd"/> + <path fill="#FF5D01" fill-rule="evenodd" d="M54.618 71.779c-2.863 2.432-8.578 4.091-15.161 4.091-8.08 0-14.852-2.499-16.649-5.86-.642 1.926-.786 4.13-.786 5.539 0 0-.423 6.915 4.418 11.725 0-2.498 2.037-4.522 4.551-4.522 4.309 0 4.304 3.734 4.3 6.764v.27c0 4.6 2.829 8.541 6.852 10.203a9.22 9.22 0 01-.938-4.064c0-4.386 2.592-6.02 5.604-7.917 2.396-1.51 5.06-3.188 6.894-6.554a12.297 12.297 0 001.502-5.905c0-1.314-.206-2.581-.587-3.77z" clip-rule="evenodd"/> + <path fill="#fff" d="M126.554 69c13.115 0 21.047-3.14 25.68-9.654 0 2.904.157 5.651.55 8.163h7.774c-.706-4.082-.863-6.75-.863-14.128V43.334c0-10.831-8.403-16.56-24.424-16.56-15.47 0-25.522 5.964-26.779 14.598h8.246c1.256-5.808 7.774-8.87 18.533-8.87 10.602 0 16.885 3.69 16.885 9.969v.785l-24.502 1.413c-9.974.549-13.665 1.962-16.492 4.003-2.67 1.962-4.162 5.023-4.162 8.555C107 64.683 114.696 69 126.554 69zm2.513-5.573c-9.109 0-14.135-2.119-14.135-6.357 0-4.553 3.141-6.593 14.214-7.3l23.01-1.412v1.805c0 8.241-9.66 13.264-23.089 13.264zM196.086 69c16.256 0 22.775-5.337 22.775-13.108 0-6.436-4.006-9.732-14.215-10.596l-19.083-1.49c-5.183-.393-8.088-1.884-8.088-5.102 0-4.082 4.476-6.201 14.135-6.201 10.995 0 16.727 2.198 20.497 7.064l6.361-3.061c-3.927-6.122-12.644-9.733-26.151-9.733-13.9 0-22.224 4.631-22.224 12.244 0 6.829 4.947 10.125 14.292 10.91l18.926 1.492c6.204.47 8.089 1.726 8.089 4.944 0 4.631-4.79 6.829-14.293 6.829-11.544 0-18.847-3.14-22.381-8.87l-6.204 3.376C173.312 64.918 181.715 69 196.086 69zM234.929 34.151v18.916c0 7.77 2.67 15.54 17.198 15.54 3.691 0 8.167-.706 10.131-1.57V60.68c-2.749.628-6.047 1.1-9.267 1.1-6.832 0-10.523-2.67-10.523-9.42V34.151h19.633v-5.887h-19.633V15l-7.539 3.061v10.204h-12.33v5.886h12.33zM280.823 28.265h-6.911v39.244h7.461V52.83c0-5.65 1.099-10.439 4.24-13.735 2.749-3.061 6.283-4.788 12.487-4.788 2.12 0 3.455.157 5.262.471v-7.22c-1.65-.393-3.063-.472-5.184-.472-8.402 0-15.078 4.945-17.355 12.558v-11.38zM334.807 69C351.534 69 363 60.523 363 47.887c0-12.637-11.466-21.114-28.193-21.114-16.727 0-28.193 8.477-28.193 21.114C306.614 60.523 318.08 69 334.807 69zm0-6.2c-12.329 0-20.261-5.809-20.261-14.913 0-9.105 7.932-14.913 20.261-14.913 12.251 0 20.261 5.808 20.261 14.913 0 9.104-8.01 14.912-20.261 14.912z"/> + <defs> + <linearGradient id="paint0_linear" x1="57.99" x2="38.65" y1="2.161" y2="69.149" gradientUnits="userSpaceOnUse"> + <stop stop-color="#fff"/> + <stop offset="1" stop-color="#F9FAFB"/> + </linearGradient> + </defs> + </svg> + </a> + <a href="https://docs.astro.build/"> + <h1 class="sr-only">Docs</h1> + <svg xmlns="http://www.w3.org/2000/svg" width="226" height="102" viewBox="0 0 226 102" fill="none"> + <path fill="currentColor" d="M25.805 68c14.688 0 24.883-8.41 24.883-21.14 0-12.786-9.62-19.756-24.653-19.756H0V68h25.805zm-14.17-33.005H24.25c8.352 0 14.17 4.09 14.17 12.039 0 8.236-5.3 13.075-14.113 13.075H11.635V34.995zM82.673 69.382c16.704 0 27.418-8.582 27.418-21.83 0-13.248-10.771-21.83-27.418-21.83-16.589 0-27.418 8.582-27.418 21.83 0 13.19 10.83 21.83 27.418 21.83zm0-8.64c-9.1 0-15.149-5.299-15.149-13.19 0-7.891 6.048-13.19 15.15-13.19 9.1 0 15.205 5.299 15.205 13.19 0 7.891-6.105 13.19-15.206 13.19zM141.497 69.382c13.306 0 22.637-5.299 25.978-14.572l-11.866-2.535c-1.67 5.415-6.393 8.295-13.709 8.295-9.216 0-15.033-5.127-15.033-13.018 0-8.006 5.702-13.018 14.918-13.018 7.43 0 12.154 3.053 13.709 8.64l12.038-2.13c-2.707-9.562-12.268-15.322-25.574-15.322-16.128 0-27.302 9.043-27.302 22.003 0 13.133 10.425 21.657 26.841 21.657zM194.94 69.382c14.745 0 23.212-5.01 23.212-14.054 0-7.603-4.665-10.944-15.955-12.096l-11.289-1.094c-5.242-.576-6.97-1.556-6.97-4.09 0-2.765 3.456-4.262 9.792-4.262 7.834 0 13.709 2.476 16.762 6.508l7.315-6.163c-5.069-5.702-13.133-8.41-23.501-8.41-13.997 0-21.888 4.781-21.888 12.903 0 7.546 4.781 11.232 14.803 12.326l12.557 1.383c4.896.518 6.624 1.555 6.624 4.09 0 3.225-3.456 4.723-10.886 4.723-8.352 0-14.688-3.226-18.087-8.007l-8.294 5.818c4.205 6.451 13.709 10.425 25.805 10.425z"/> + </svg> + </a> + </div> <div class="theme-toggle-wrapper"> <ThemeToggle client:idle /> @@ -227,24 +285,26 @@ const githubEditUrl = `https://github.com/snowpackjs/astro/edit/main/docs/${curr </nav> </header> - <main class="layout"> + <main class={centered ? "layout centered" : "layout"}> <aside class="sidebar" id="sidebar-site"> - <SiteSidebar currentPage={currentPage.slice(1)} /> + <SiteSidebar currentPage={currentPage?.slice(1) ?? ''} /> </aside> <div id="article"> <article class="content"> <main> - <h1 class="content-title" id="overview">{content.title}</h1> + <h1 class="content-title" id="overview">{content?.title}</h1> <slot /> </main> - <ArticleFooter path={currentFile} /> + {currentPage && <ArticleFooter path={currentFile} />} </article> </div> <aside class="sidebar" id="sidebar-content"> - <DocSidebar client:idle headers={headers} editHref={githubEditUrl} /> + {currentPage && <DocSidebar client:idle headers={headers} editHref={githubEditUrl} />} </aside> </main> + <script type="module" src="/nav.js" /> + <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-TEL60V1WM9"></script> <script> |