diff --git a/assets/css/v2/style.css b/assets/css/v2/style.css index ef68fb6..ff2184f 100644 --- a/assets/css/v2/style.css +++ b/assets/css/v2/style.css @@ -85,11 +85,11 @@ --code-copy-icon-height: 1rem; --code-copy-icon-width: 1rem; --breadcrumb-max-height: 54px; - --sidebar-margin: 24px; + --sidebar-margin: 1.5rem; --sidebar-line-box-side-length: 8px; --sidebar-line-box-top: 6px; --sidebar-line-box-left: 12px; - --sidebar-width: 24rem; + --sidebar-width: 22rem; --sidebar-line-width: 11.5px; --side-gutter-width: 20rem; --table-top-bottom-spacing: 1rem; @@ -281,6 +281,12 @@ header { } } +main { + flex: 1; + min-width: 20rem; + margin: 0 2rem 2rem 1rem; +} + /* MARK: Footer */ footer { @@ -453,8 +459,20 @@ nav { .sidebar-layout { display: flex; flex-direction: column; - position: relative; + position: relative; /* required for absolute-positioned pseudo element */ z-index: 2; + min-height: 100vh; +} + +/* this is the complete, corrected CSS you can directly copy/paste clearly: */ +.sidebar-layout::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 1px; + background-color: var(--color-divider); } #searchbox { @@ -511,6 +529,10 @@ nav { .sidebar-layout { display: none; } + + main { + margin: 0 2rem 2rem 2rem; + } } @media (min-width: 88em) { @@ -554,6 +576,11 @@ nav { .content-layout .side-gutter { grid-column-start: 2; } + + .navbar atomic-search-interface { + margin: 0; + display: block; + } } .list-page { @@ -686,11 +713,6 @@ atomic-search-layout atomic-layout-section[section="search"] { z-index: 9999; } -header atomic-search-interface { - /* Hide by default */ - display: none; -} - body:not(:has(.main-layout)) header atomic-search-interface { /* Show on landing pages */ display: block; @@ -703,43 +725,8 @@ body:not(:has(.main-layout)) header atomic-search-interface { } } -@media (max-width: 1023px) { - /* Show on search page with facet if it is hidden */ - body:has(atomic-search-layout) header atomic-search-interface { - display: block; - } -} - -/* MARK: Sidebar +/* MARK: Product Selector */ -.sidebar { - display: flex; - flex-direction: column; - width: 24rem; - max-height: 100vh; - position: sticky; - top: 0; - margin-top: -1rem; - padding-top: 1rem; -} - -.sidebar .product-selector-button { - display: flex; - align-items: center; - justify-content: space-between; - background-color: oklch(var(--color-brand)); - color: var(--color-brand-100); - border: none; - font-size: 1.25rem; - width: 100%; - padding: 0.5rem 0.5rem 0.5rem 1rem; /* 1rem to vertically align with searchbar text */ - cursor: pointer; -} - -.sidebar .product-selector-button .selector-icon { - height: 24px; - width: 24px; -} .product-selector { display: none; @@ -782,282 +769,167 @@ button:has(~ .product-selector[style*="none"]) > .product-selector-button-icon { font-size: 1rem; } -/* Sidebar scroller */ -.sidebar .scrollbar-container { - width: 100%; - max-height: 100vh; - overflow: scroll; - scrollbar-gutter: stable; - scrollbar-width: none; -} - -.sidebar .scrollbar-container:hover { - overflow: auto; -} - -.sidebar .sidebar-navigation { - margin-left: var(--sidebar-margin); -} - -/* removes the built in ul padding/margin */ -.sidebar .sidebar-navigation ul { - margin-left: 0; - padding-left: 0; - list-style-type: none; -} - -.sidebar ul :not(.sidebar-navigation) ul { - padding-left: 16px; -} - -.sidebar .sidebar-navigation li { - margin-bottom: 16px; -} - -.sidebar .sidebar-navigation a { - text-decoration: none; - color: black; -} - -.sidebar .sidebar-navigation .collapsible-header { - cursor: pointer; -} - -.sidebar .sidebar-navigation .collapsible-content { - display: none; - position: relative; -} - -.sidebar .sidebar-navigation .parent-box.opened, -.sidebar .sidebar-navigation .box.opened { - display: none; -} - -.toggle-checkbox:checked ~ .collapsible-header .parent-box.expand, -.toggle-checkbox:checked ~ .collapsible-header .box.expand { - display: none; -} +/* MARK: Sidebar +*/ -.toggle-checkbox:checked ~ .collapsible-content { - display: block; -} +.sidebar { + --color-foreground: oklch(0 0 0 / 0.75); -.toggle-checkbox:checked ~ .collapsible-header .parent-box.opened { - display: inline-block; -} + display: flex; + flex-direction: column; + width: 22rem; + max-height: 100vh; + position: sticky; + top: 0; + margin-top: 0rem; + padding-top: 1.5rem; + align-items: start; + overflow-y: auto; + color: var(--color-foreground); -.toggle-checkbox:checked ~ .collapsible-header .box.opened { - display: block; -} + /* Reset/Renormalize lists to remove default browser styling */ + .sidebar__container, + .sidebar__container button, + .sidebar__container ul, + .sidebar__container li { + margin: 0; + padding: 0; + list-style: none; + font-weight: 400; + font-size: 0.875rem; + } -/* Every other Sidebar Partial Vertical Line */ -.toggle-checkbox:checked ~ .collapsible-content::before { - content: ""; - position: absolute; - border-left: black 1px solid; - left: -8.5px; - top: -22.5px; - height: calc(100% + 13.5px); -} + .sidebar__container { + width: var(--sidebar-width); + } -/* Every other Sidebar Partial Horizontal Lines */ -.toggle-checkbox:checked ~ .collapsible-content li { - position: relative; -} + .sidebar__container button { + padding: 0.25rem 0.75rem; + justify-content: space-between; + } -.collapsible-content .box::after { - content: ""; - position: absolute; - border-top: black 1px solid; - left: -11.5px; - width: var(--sidebar-line-width); - top: 50%; -} + .sidebar__content { + padding: 0.5rem 0 0.4rem 0; + margin-right: 0.25rem; + } -.collapsible-content .opened::after { - content: ""; - position: absolute; - border-top: black 1px solid; - left: -12.5px; - width: var(--sidebar-line-width); - top: 50%; -} + .sidebar__ul { + padding-left: 0; + } -.collapsible-content .box-link::after { - content: ""; - position: absolute; - border-top: black 1px solid; - left: -11.5px; - width: var(--sidebar-line-width); - top: 50%; -} + .sidebar__children { + padding-left: 1rem; + } -.selected { - font-weight: 800; -} + .sidebar__toggle { + display: flex; + align-items: center; + gap: 0.25rem; + cursor: pointer; + background: none; + border: none; + width: 100%; + text-align: left; + padding: 0.25rem 0.5rem; + border-radius: 5px 0 0 5px; + font-weight: 500; + color: var(--color-foreground); -.sidebar .sidebar-navigation li:first-child { - margin-top: 16px; -} + &:hover { + background-color: oklch(var(--color-brand) / 0.06); + color: oklch(var(--color-brand) / 1); + } + } -.sidebar .sidebar-navigation ul li .parent-box-link { - content: ""; - background-color: black; - position: absolute; - width: 1px; - height: var(--sidebar-line-box-side-length); - margin-top: var(--sidebar-line-box-top); - left: calc(0px - var(--sidebar-line-box-left)); -} + .sidebar__container button.sidebar__toggle--ancestor { + font-weight: 600; + } -.sidebar .sidebar-navigation ul li .box-link { - content: ""; - background-color: black; - position: absolute; - width: 1px; - height: var(--sidebar-line-box-side-length); - margin-top: var(--sidebar-line-box-top); - left: var(--sidebar-line-box-left); -} + .sidebar__chevron { + display: flex; + align-items: flex-end; + } -.sidebar .sidebar-navigation ul li .parent-box { - content: ""; - display: inline-block; - width: var(--sidebar-line-box-side-length); - height: var(--sidebar-line-box-side-length); - vertical-align: middle; - margin-left: -12px; - margin-top: -4px; -} + .sidebar__chevron svg { + stroke-width: 1.5; + width: 1rem; + height: 1rem; + } -.sidebar .sidebar-navigation ul li .box { - content: ""; - position: absolute; - width: var(--sidebar-line-box-side-length); - height: var(--sidebar-line-box-side-length); - margin-top: var(--sidebar-line-box-top); - left: var(--sidebar-line-box-left); -} + .sidebar__chevron--open { + transform: rotate(90deg); + } -.sidebar .sidebar-navigation ul li .expand { - background-color: black; -} + .sidebar__toggle:not(:has(.sidebar__chevron)) { + padding-left: 2rem; + } -.sidebar .sidebar-navigation ul li .opened { - border: black 1px solid; -} + .sidebar__link { + display: block; + padding: 0.25rem 0.75rem; + margin: 2px 0 2px 0; + border-radius: 5px 0 0 5px; + color: oklch(0 0 0 / 0.75); + text-decoration: none; + transition: background-color 0.2s ease, color 0.2s ease; -.sidebar .sidebar-navigation ul li .current { - background-color: oklch(var(--color-brand)); -} + &:hover { + background-color: oklch(var(--color-brand) / 0.08); + color: oklch(var(--color-brand)); + } + } -.sidebar .sidebar-navigation ul li .partial-box { - margin-left: -24px; -} + .sidebar__link--current, + .sidebar__toggle.sidebar__link--current { + color: oklch(var(--color-brand) / 1); + background-color: oklch(var(--color-brand) / 0.1); + font-weight: 600; + display: flex; + justify-self: stretch; + width: auto; + box-sizing: border-box; + } -.sidebar .sidebar-navigation ul li .partial { - margin-top: 0; - top: 5px; - left: -13px; -} + .sidebar__toc { + #TableOfContents { + padding: 0 0.75rem 0 0; + margin: 0.5rem 0.25rem 0.5rem 0.8rem; + border-left: 1px solid var(--color-divider); + color: oklch(0 0 0 / 0.75); -/* First Sidebar Nav Vertical Line */ -.sidebar .sidebar-navigation .parent-collapsible-content { - position: relative; -} + &[hidden] { + display: none; + } -.sidebar .sidebar-navigation .parent-collapsible-content:first-child::before { - content: ""; - position: absolute; - border-left: black 1px solid; - left: -24px; - top: 10px; - height: calc(100% - 9px - 10px); -} - -.sidebar - .sidebar-navigation - .parent-collapsible-content - li:not(:only-child) - a - + :not(:has(#TableOfContents)) - li::before { - border: none; -} + a { + text-decoration: none; + } -/* First Sidebar Nav Horizontal Lines */ -.sidebar - .sidebar-navigation - .parent-collapsible-content - li:not(:only-child) - .parent-box::before { - content: ""; - display: block; - border-top: black 1px solid; - margin-left: -12px; - margin-top: 50%; - width: var(--sidebar-line-width); -} + &:empty { + display: none; + } -.parent-collapsible-content .parent-box-link::after { - content: ""; - position: absolute; - border-top: black 1px solid; - left: -11.5px; - width: var(--sidebar-line-width); - top: 50%; -} + li { + padding: 0.25rem 0.75rem; + } -.row { - display: flex; - flex-wrap: nowrap; - align-items: flex-start; -} + li:first-child { + padding-top: 0; + } -/* Details/Summary */ -details summary { - color: oklch(var(--color-brand)); - transition: text-decoration-color 0.15s ease-in-out; - text-decoration: underline; - text-decoration-color: oklch(var(--color-brand) / 0.3); + ul ul li:first-child { + padding-top: 0.75rem; + } - & ~ * { - margin-top: 1rem; + li:last-child { + padding-bottom: 0; + } + } } } -details summary:hover { - text-decoration-color: oklch(var(--color-brand) / 0.8); -} - -details:hover { - cursor: pointer; -} - -/* Table of Contents */ -#TableOfContents { - /* Close all TOC on sidebar */ - display: none; -} - -.current ~ nav, -.collapsible-content li ul li:has(.current) > nav { - /* Open TOC for current page */ - display: block !important; -} - -#TableOfContents li:not(:empty) { - position: relative; - list-style: square; -} - /* MARK: Content */ -main { - flex: 1; - min-width: 20rem; - margin: 0 2rem 2rem 2rem; -} p { margin: 0; @@ -1727,6 +1599,31 @@ hr { margin: 0; } +/* MARK: Accessibility +*/ + +.skip-link { + position: fixed; + top: 0; + left: 0; + background-color: var(--color-background); + color: var(--color-foreground); + padding: 1rem 1rem; + font-size: 1rem; + border: 2px solid var(--color-foreground); + z-index: 1000; + text-decoration: none; + border-radius: 0; + box-shadow: 3px 3px 0px var(--color-shadow); + opacity: 0; + pointer-events: none; +} + +.skip-link:focus { + opacity: 1; + pointer-events: auto; +} + /* FILTHY HACKS BEGIN */ /* Override logo with black text version */ diff --git a/assets/js/coveo.js b/assets/js/coveo.js index 780e36c..8dc9bf7 100644 --- a/assets/js/coveo.js +++ b/assets/js/coveo.js @@ -53,22 +53,6 @@ async function atomicCoveo() { }, }); await searchPageInterface.executeFirstSearch(); - } else { - if (sidebar) { - await searchBarSidebar.initialize({ - accessToken: token, - organizationId: org_id, - analytics: { analyticsMode: 'legacy' }, - preprocessRequest: (request, clientOrigin, metadata) => { - const body = JSON.parse(request.body); - body.q = `<@- ${body.q} -@>`; - request.body = JSON.stringify(body); - - return request; - }, - }); - await searchBarSidebar.executeFirstSearch(); - } } /* Initialize the header searchbar*/ diff --git a/assets/js/sidebar-v2.js b/assets/js/sidebar-v2.js index ff7cf59..3efb8c5 100644 --- a/assets/js/sidebar-v2.js +++ b/assets/js/sidebar-v2.js @@ -1,17 +1,34 @@ -document.addEventListener('DOMContentLoaded', () => { - function expandToCurrentPage() { - const currentPage = document.getElementById('current-page'); - if (currentPage) { - let parentLabel = currentPage.closest('li'); - while (parentLabel) { - const checkbox = parentLabel.querySelector('.toggle-checkbox'); - if (checkbox) { - checkbox.checked = true; - } - parentLabel = parentLabel.closest('ul').closest('li'); - } +document.addEventListener('click', (e) => { + const toggle = e.target.closest('.sidebar__toggle'); + if (toggle) { + const chevron = toggle.querySelector('.sidebar__chevron'); + const expanded = toggle.getAttribute('aria-expanded') === 'true'; + const panel = document.getElementById(toggle.getAttribute('aria-controls')); + + toggle.setAttribute('aria-expanded', String(!expanded)); + + if (panel) { + panel.hidden = expanded; + } + + if (chevron) { + chevron.classList.toggle('sidebar__chevron--open', !expanded); } } +}); - expandToCurrentPage(); +document.addEventListener('DOMContentLoaded', () => { + const sidebar = document.querySelector('.sidebar__ul'); + + if (!sidebar) return; + + const activeLink = sidebar.querySelector('.sidebar__link--current'); + + if (activeLink) { + activeLink.scrollIntoView({ + behavior: 'auto', + block: 'center', + inline: 'nearest', + }); + } }); diff --git a/exampleSite/content/test-product/feather/_index.md b/exampleSite/content/test-product/feather/_index.md index ae1afcf..b0e0c9f 100644 --- a/exampleSite/content/test-product/feather/_index.md +++ b/exampleSite/content/test-product/feather/_index.md @@ -4,3 +4,5 @@ title: Feather weight: 300 toc: true --- + +Hello! diff --git a/exampleSite/content/test-product/sidebar/_index.md b/exampleSite/content/test-product/sidebar/_index.md new file mode 100644 index 0000000..878b6ab --- /dev/null +++ b/exampleSite/content/test-product/sidebar/_index.md @@ -0,0 +1,10 @@ +--- +description: Sidebar +title: Sidebar +--- + +This is the overview page for level 0. The root. This is an `_index.md` file. + +Because there is some content in this `_index.md` file, it should be displayed. + +If it were empty, we'd skip this and go straight to the first populated content in this tree. \ No newline at end of file diff --git a/exampleSite/content/test-product/sidebar/nesting-1a/_index.md b/exampleSite/content/test-product/sidebar/nesting-1a/_index.md new file mode 100644 index 0000000..79dce29 --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1a/_index.md @@ -0,0 +1,7 @@ +--- +description: Nesting-1a +title: Nesting-1a +--- + + +1a only has content at this level. This is an `_index.md` file. \ No newline at end of file diff --git a/exampleSite/content/test-product/sidebar/nesting-1b/_index.md b/exampleSite/content/test-product/sidebar/nesting-1b/_index.md new file mode 100644 index 0000000..23035ac --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1b/_index.md @@ -0,0 +1,4 @@ +--- +description: Nesting-1b +title: Nesting-1b +--- diff --git a/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/_index.md b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/_index.md new file mode 100644 index 0000000..e25a6fe --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/_index.md @@ -0,0 +1,4 @@ +--- +description: Nesting-2 +title: Nesting-2 +--- diff --git a/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-2-1.md b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-2-1.md new file mode 100644 index 0000000..d043889 --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-2-1.md @@ -0,0 +1,6 @@ +--- +description: Nesting-2-content-1 +title: Nesting-2-content-1 +--- + +This is some content in Nesting-2-content-1 \ No newline at end of file diff --git a/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-2-2.md b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-2-2.md new file mode 100644 index 0000000..74e5b71 --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-2-2.md @@ -0,0 +1,87 @@ +--- +description: Nesting-2-content-2 +title: Nesting-2-content-2 +--- + +This is some content in Nesting-2-content-2. + +This is long enough to push headers outside of the normal viewport. + + +## Testing some headings for the toc 1 + +Some content + + +## Testing some headings for the toc 2 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. + + +## Testing some headings for the toc 3 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. + +## Testing some headings for the toc 4 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. + +## Testing some headings for the toc 5 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. \ No newline at end of file diff --git a/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-3/_index.md b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-3/_index.md new file mode 100644 index 0000000..c7494ae --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1b/nesting-2/nesting-3/_index.md @@ -0,0 +1,4 @@ +--- +description: Nesting-3 +title: Nesting-3 +--- diff --git a/exampleSite/content/test-product/sidebar/nesting-1c/_index.md b/exampleSite/content/test-product/sidebar/nesting-1c/_index.md new file mode 100644 index 0000000..a6bd5a3 --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1c/_index.md @@ -0,0 +1,4 @@ +--- +description: Nesting-1c +title: Nesting-1c +--- diff --git a/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/_index.md b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/_index.md new file mode 100644 index 0000000..e25a6fe --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/_index.md @@ -0,0 +1,4 @@ +--- +description: Nesting-2 +title: Nesting-2 +--- diff --git a/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-2-1.md b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-2-1.md new file mode 100644 index 0000000..d043889 --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-2-1.md @@ -0,0 +1,6 @@ +--- +description: Nesting-2-content-1 +title: Nesting-2-content-1 +--- + +This is some content in Nesting-2-content-1 \ No newline at end of file diff --git a/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-2-2.md b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-2-2.md new file mode 100644 index 0000000..74e5b71 --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-2-2.md @@ -0,0 +1,87 @@ +--- +description: Nesting-2-content-2 +title: Nesting-2-content-2 +--- + +This is some content in Nesting-2-content-2. + +This is long enough to push headers outside of the normal viewport. + + +## Testing some headings for the toc 1 + +Some content + + +## Testing some headings for the toc 2 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. + + +## Testing some headings for the toc 3 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. + +## Testing some headings for the toc 4 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. + +## Testing some headings for the toc 5 + +Once upon a time in the Technicolor Cloud Kingdom of Serverlandia, a joyful wind blew across the binary meadows, whispering tales of a mystical creature named nginx (pronounced "engine-x" by the locals and "wizard-swoosh" by the jellyfish). It wasn’t a dragon, a unicorn, or a sentient avocado—it was something far more magical: a hyper-fast, ever-smiling web server with the personality of a golden retriever and the efficiency of 10,000 caffeinated squirrels. + +Every morning, nginx would wake up with a cheerful beep-boop, stretch its configuration files, and greet the sun with a reverse proxy pirouette. Birds chirped in HTTP headers, and butterflies fluttered by on compressed gzip wings. Wherever nginx went, latency dropped to zero and 404 errors turned into motivational quotes. + +“Your content is just loading its potential!” they would say, bringing tears to the eyes of developers and hummingbirds alike. + +The townsfolk of Serverlandia adored nginx. They built shrines out of old USB cables and offered it snacks made of finely spun JSON. Even the databases—who were notoriously grumpy—would sing praises of nginx’s load balancing lullabies. Apache, the wise old monk of the hills, once tried to challenge nginx to a duel of requests-per-second, but halfway through the contest he just sighed, gave nginx a hug, and invited it to tea. + +At night, nginx would tuck in the children of the village by wrapping their bedtime stories in TLS encryption and caching their dreams for extra speed. Unicorns danced across CDN rainbows, singing songs about scalability and uptime. The moon itself would giggle as nginx gracefully handled a billion concurrent connections while baking cookies shaped like serverless functions. + +Even the grumpy firewall trolls came around, offering friendly port forwards and warm handshakes. Life was good. Load times were fast. The air smelled faintly of peppermint and perfectly formed XML. + +And thus, in a land where packets flowed like chocolate rivers and downtime was just a scary campfire story, nginx reigned supreme—not with power, but with kindness, balance, and beautifully efficient asynchronous processing. + +Everyone lived happily ever after, behind seven layers of security and a content delivery network that sparkled in the sky. \ No newline at end of file diff --git a/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-3/_index.md b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-3/_index.md new file mode 100644 index 0000000..c7494ae --- /dev/null +++ b/exampleSite/content/test-product/sidebar/nesting-1c/nesting-2/nesting-3/_index.md @@ -0,0 +1,4 @@ +--- +description: Nesting-3 +title: Nesting-3 +--- diff --git a/layouts/_default/docs.html b/layouts/_default/docs.html index 373e7b0..43b4d6e 100644 --- a/layouts/_default/docs.html +++ b/layouts/_default/docs.html @@ -74,7 +74,7 @@ -
+
-