From d55b38754c78343fbc76dbef145067ae9874a122 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Wed, 8 Jul 2026 20:32:10 +0200 Subject: [PATCH 1/2] docs: restyle documentation to match AWS Developer Guide Align the MkDocs Material UI with AWS Developer Guide patterns. Add AWS-style header, footer, navigation, right rail, and callout styling. Restructure the docs navigation and remove outdated homepage cards and badges. --- .../features/event-handler/appsync-graphql.md | 1 - docs/features/event-handler/http.md | 1 - docs/features/metadata.md | 1 - docs/index.md | 29 +- docs/javascript/aws-header.js | 189 +++ docs/javascript/extra.js | 6 + docs/media/aws-logo-dark.svg | 38 + docs/overrides/main.html | 6 +- docs/overrides/partials/footer.html | 78 ++ docs/overrides/partials/header.html | 191 +++ docs/overrides/partials/search.html | 43 + docs/overrides/partials/toc.html | 30 + docs/stylesheets/aws-content.css | 129 +++ docs/stylesheets/aws-footer.css | 224 ++++ docs/stylesheets/aws-header.css | 563 +++++++++ docs/stylesheets/aws-nav.css | 480 ++++++++ docs/stylesheets/aws-restyle.css | 1024 +++++++++++++++++ docs/stylesheets/extra.css | 21 - docs/stylesheets/fonts/amazon-ember-300.woff | Bin 0 -> 17720 bytes .../fonts/amazon-ember-400-italic.woff | Bin 0 -> 18836 bytes docs/stylesheets/fonts/amazon-ember-400.woff | Bin 0 -> 18156 bytes docs/stylesheets/fonts/amazon-ember-700.woff | Bin 0 -> 18144 bytes docs/stylesheets/fonts/amazon-ember-900.woff | Bin 0 -> 37068 bytes mkdocs.yml | 127 +- 24 files changed, 3066 insertions(+), 115 deletions(-) create mode 100644 docs/javascript/aws-header.js create mode 100644 docs/media/aws-logo-dark.svg create mode 100644 docs/overrides/partials/footer.html create mode 100644 docs/overrides/partials/header.html create mode 100644 docs/overrides/partials/search.html create mode 100644 docs/overrides/partials/toc.html create mode 100644 docs/stylesheets/aws-content.css create mode 100644 docs/stylesheets/aws-footer.css create mode 100644 docs/stylesheets/aws-header.css create mode 100644 docs/stylesheets/aws-nav.css create mode 100644 docs/stylesheets/aws-restyle.css create mode 100644 docs/stylesheets/fonts/amazon-ember-300.woff create mode 100644 docs/stylesheets/fonts/amazon-ember-400-italic.woff create mode 100644 docs/stylesheets/fonts/amazon-ember-400.woff create mode 100644 docs/stylesheets/fonts/amazon-ember-700.woff create mode 100644 docs/stylesheets/fonts/amazon-ember-900.woff diff --git a/docs/features/event-handler/appsync-graphql.md b/docs/features/event-handler/appsync-graphql.md index fc97428b55..e0920f6ea2 100644 --- a/docs/features/event-handler/appsync-graphql.md +++ b/docs/features/event-handler/appsync-graphql.md @@ -1,7 +1,6 @@ --- title: AppSync GraphQL description: Event Handler for AppSync GraphQL APIs -status: new --- Event Handler for AWS AppSync GraphQL APIs simplifies routing and processing of events in AWS Lambda functions. It allows you to define resolvers for GraphQL types and fields, making it easier to handle GraphQL requests without the need for complex VTL or JavaScript templates. diff --git a/docs/features/event-handler/http.md b/docs/features/event-handler/http.md index 3a93b51857..417ed9d511 100644 --- a/docs/features/event-handler/http.md +++ b/docs/features/event-handler/http.md @@ -1,7 +1,6 @@ --- title: HTTP API description: Event handler for building HTTP APIs in AWS Lambda -status: new --- Event handler for Amazon API Gateway REST and HTTP APIs, Application Loader Balancer (ALB), and Lambda Function URLs. diff --git a/docs/features/metadata.md b/docs/features/metadata.md index e820bec9b2..5b521b6cd4 100644 --- a/docs/features/metadata.md +++ b/docs/features/metadata.md @@ -1,7 +1,6 @@ --- title: Metadata description: Utility to fetch data from the AWS Lambda Metadata endpoint -status: new --- diff --git a/docs/index.md b/docs/index.md index d3da99e342..800af326b4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,36 +7,9 @@ description: Powertools for AWS Lambda (TypeScript) Powertools for AWS Lambda (TypeScript) is a developer toolkit to implement Serverless best practices and increase developer velocity. -You can use Powertools for AWS Lambda in both TypeScript and JavaScript code bases. +You can use Powertools for AWS Lambda also in [Python](https://docs.aws.amazon.com/powertools/python/latest/){target="_blank" }, [Java](https://docs.aws.amazon.com/powertools/java/){target="_blank"}, and [.NET](https://docs.aws.amazon.com/powertools/dotnet/){target="_blank"}. -
- -- :material-battery-charging:{ .lg .middle } __Features__ - - --- - - Adopt one, a few, or all industry practices. **Progressively**. - - [:octicons-arrow-right-24: All features](./features/index.md) - -- :heart:{ .lg .middle } __Support this project__ - - --- - - Become a public reference customer, share your work, contribute, use Lambda Layers, etc. - - [:octicons-arrow-right-24: Support](#support-powertools-for-aws) - -- :material-file-code:{ .lg .middle } __Available languages__ - - --- - - Powertools for AWS Lambda is also available in other languages - - :octicons-arrow-right-24: [Python](https://docs.aws.amazon.com/powertools/python/latest/){target="_blank" }, [Java](https://docs.aws.amazon.com/powertools/java/){target="_blank"}, and [.NET](https://docs.aws.amazon.com/powertools/dotnet/){target="_blank"} - -
## Features diff --git a/docs/javascript/aws-header.js b/docs/javascript/aws-header.js new file mode 100644 index 0000000000..3990060273 --- /dev/null +++ b/docs/javascript/aws-header.js @@ -0,0 +1,189 @@ +(() => { + if (window.__awsHeaderMenusBound) { + return; + } + + window.__awsHeaderMenusBound = true; + + const menuSelector = ".aws-header__menu"; + const summarySelector = ".aws-header__menu-summary"; + + const closeMenus = (except) => { + document.querySelectorAll(`${menuSelector}[open]`).forEach((menu) => { + if (menu !== except) { + menu.removeAttribute("open"); + } + }); + }; + + document.addEventListener("click", (event) => { + const summary = event.target.closest(summarySelector); + + if (summary) { + const menu = summary.closest(menuSelector); + if (menu && !menu.open) { + closeMenus(menu); + } + return; + } + + if (!event.target.closest(menuSelector)) { + closeMenus(); + } + }); + + document.addEventListener("keydown", (event) => { + if (event.key !== "Escape") { + return; + } + + const openMenu = document.querySelector(`${menuSelector}[open]`); + if (!openMenu) { + return; + } + + const summary = openMenu.querySelector(summarySelector); + closeMenus(); + if (summary) { + summary.focus(); + } + }); +})(); + +(() => { + if (window.__awsNavCollapseBound) { + return; + } + + window.__awsNavCollapseBound = true; + + const collapsedClass = "aws-nav-collapsed"; + const collapseButtonClass = "aws-nav-collapse"; + const reopenButtonClass = "aws-nav-reopen"; + const storageKey = "aws-nav-collapsed"; + + const chevronSvg = (direction) => ` + + `; + + const menuSvg = () => ` + + `; + + const setReopenPosition = () => { + const mainInner = document.querySelector(".md-main__inner"); + if (!mainInner) { + return; + } + + const rect = mainInner.getBoundingClientRect(); + document.documentElement.style.setProperty( + "--aws-nav-reopen-left", + `${Math.max(rect.left + 12, 12)}px` + ); + document.documentElement.style.setProperty( + "--aws-nav-reopen-top", + `${Math.max(rect.top + window.scrollY, 0)}px` + ); + }; + + const queueReopenPosition = () => { + window.requestAnimationFrame(setReopenPosition); + }; + + const restoreState = () => { + let isCollapsed = false; + + try { + isCollapsed = localStorage.getItem(storageKey) === "true"; + } catch (_) { + isCollapsed = false; + } + + document.documentElement.classList.toggle(collapsedClass, isCollapsed); + }; + + const setCollapsed = (isCollapsed) => { + document.documentElement.classList.toggle(collapsedClass, isCollapsed); + queueReopenPosition(); + + try { + localStorage.setItem(storageKey, String(isCollapsed)); + } catch (_) { + // Ignore storage failures in private browsing or locked-down contexts. + } + }; + + const createButton = ({ className, label, direction, icon }) => { + const button = document.createElement("button"); + button.type = "button"; + button.className = className; + button.setAttribute("aria-label", label); + button.innerHTML = icon === "menu" ? menuSvg() : chevronSvg(direction); + return button; + }; + + const ensureButtons = () => { + const sidebar = document.querySelector(".md-sidebar--primary"); + const collapseButtonHost = + sidebar?.querySelector(".md-sidebar__scrollwrap") ?? sidebar; + + if (collapseButtonHost && !sidebar.querySelector(`.${collapseButtonClass}`)) { + collapseButtonHost.append( + createButton({ + className: collapseButtonClass, + label: "Collapse navigation", + direction: "left", + }) + ); + } + + if (!document.querySelector(`.${reopenButtonClass}`)) { + document.body.append( + createButton({ + className: reopenButtonClass, + label: "Open navigation", + icon: "menu", + }) + ); + } + }; + + restoreState(); + + document.addEventListener("click", (event) => { + const collapseButton = event.target.closest(`.${collapseButtonClass}`); + const reopenButton = event.target.closest(`.${reopenButtonClass}`); + + if (collapseButton) { + setCollapsed(true); + return; + } + + if (reopenButton) { + setCollapsed(false); + } + }); + + const init = () => { + restoreState(); + ensureButtons(); + queueReopenPosition(); + }; + + window.addEventListener("resize", queueReopenPosition); + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", init, { once: true }); + } else { + init(); + } + + if (window.document$ && typeof window.document$.subscribe === "function") { + window.document$.subscribe(init); + } +})(); diff --git a/docs/javascript/extra.js b/docs/javascript/extra.js index f0df000448..485de99ba4 100644 --- a/docs/javascript/extra.js +++ b/docs/javascript/extra.js @@ -11,6 +11,12 @@ function enableClipboardElements() { }); } +document.addEventListener('click', (event) => { + document.querySelectorAll('.aws-prefs[open]').forEach((details) => { + if (!details.contains(event.target)) details.removeAttribute('open'); + }); +}); + const attachListeners = () => { enableSearchOnBlurElement(); enableClipboardElements(); diff --git a/docs/media/aws-logo-dark.svg b/docs/media/aws-logo-dark.svg new file mode 100644 index 0000000000..4a79380f34 --- /dev/null +++ b/docs/media/aws-logo-dark.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + diff --git a/docs/overrides/main.html b/docs/overrides/main.html index 64dcbf5499..0fef10f733 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -10,4 +10,8 @@ {% block extrahead %} -{% endblock %} \ No newline at end of file +{% endblock %} + +{% block content %} +{{ super() }} +{% endblock %} diff --git a/docs/overrides/partials/footer.html b/docs/overrides/partials/footer.html new file mode 100644 index 0000000000..4771f603bd --- /dev/null +++ b/docs/overrides/partials/footer.html @@ -0,0 +1,78 @@ +{#- + This file was automatically generated - do not edit +-#} +{% set external_icon -%}{%- endset %} + diff --git a/docs/overrides/partials/header.html b/docs/overrides/partials/header.html new file mode 100644 index 0000000000..3ce23c3014 --- /dev/null +++ b/docs/overrides/partials/header.html @@ -0,0 +1,191 @@ +{#- + AWS documentation portal-inspired header. + Rebuilt from Material for MkDocs' partials/header.html while preserving + drawer, search, palette, and header component hooks. +-#} +{% set class = "md-header aws-header" %} +{% if "navigation.tabs.sticky" in features %} + {% set class = class ~ " md-header--shadow md-header--lifted" %} +{% elif "navigation.tabs" not in features %} + {% set class = class ~ " md-header--shadow" %} +{% endif %} +
+
+ +
+ +
+ +
+
diff --git a/docs/overrides/partials/search.html b/docs/overrides/partials/search.html new file mode 100644 index 0000000000..607ca947bc --- /dev/null +++ b/docs/overrides/partials/search.html @@ -0,0 +1,43 @@ +{#- + This file is copied from Material for MkDocs' partials/search.html and only + changes the visible placeholder/label copy for the AWS docs header. +-#} + diff --git a/docs/overrides/partials/toc.html b/docs/overrides/partials/toc.html new file mode 100644 index 0000000000..5caa2381af --- /dev/null +++ b/docs/overrides/partials/toc.html @@ -0,0 +1,30 @@ +{#- + This file was automatically generated - do not edit +-#} +{% set title = "On this page" %} + diff --git a/docs/stylesheets/aws-content.css b/docs/stylesheets/aws-content.css new file mode 100644 index 0000000000..0649e449aa --- /dev/null +++ b/docs/stylesheets/aws-content.css @@ -0,0 +1,129 @@ +/* AWS docs restyle: content typography + layout (owned by Minion C) */ + +/* -------------------------------------------------------------------------- + * Main layout: keep the page shell broad, but the prose column readable. + * Material uses 20px root rems, so 45rem is approximately a 900px column. + * ------------------------------------------------------------------------ */ +.md-grid { + max-width: 1440px; +} + +.md-content__inner { + max-width: 45rem; + padding-top: 0; +} + +.md-main__inner { + margin-top: 0.8rem; +} + +/* -------------------------------------------------------------------------- + * Light-scheme content colors from current AWS Developer Guide docs. + * Dark mode inherits the existing Material/Powertools slate palette. + * ------------------------------------------------------------------------ */ +[data-md-color-scheme="default"] .md-typeset { + color: #0f141a; +} + +.md-typeset { + font-family: "Amazon Ember", Helvetica, Arial, sans-serif; +} + +[data-md-color-scheme="default"] .md-typeset h1, +[data-md-color-scheme="default"] .md-typeset h2, +[data-md-color-scheme="default"] .md-typeset h3, +[data-md-color-scheme="default"] .md-typeset h4, +[data-md-color-scheme="default"] .md-typeset h5 { + color: #0f141a; +} + +/* -------------------------------------------------------------------------- + * Typography: current AWS Developer Guide content column. + * The live page promotes the document title into a generated Cloudscape + * display heading (42px/700); the older in-body h1 rule was 36px/300. + * ------------------------------------------------------------------------ */ +.md-typeset h1, +.md-typeset h2, +.md-typeset h3, +.md-typeset h4, +.md-typeset h5 { + font-family: "Amazon Ember", Helvetica, Arial, sans-serif; + letter-spacing: normal; +} + +.md-typeset h1 { + font-size: 2.625em; + font-weight: 700; + line-height: 1; + margin: 0 0 10px; + padding: 0; +} + +.md-typeset h2 { + font-size: 1.625em; + font-weight: 600; + line-height: 1.226em; + margin: 1em 0 0.75em; + padding: 1em 0 0; +} + +.md-typeset h3 { + font-size: 1.375em; + font-weight: 700; + line-height: 1.226em; + margin: 1.25em 0 0.75em; + padding: 0; +} + +.md-typeset h4 { + font-size: 1.25em; + font-weight: 700; + line-height: 1.267em; + margin: 1.2em 0 0.75em; + padding: 0; +} + +.md-typeset h5 { + font-size: 1.125em; + font-weight: 700; + line-height: 1.267em; + margin: 1.2em 0 1em; + padding: 0; +} + +.md-typeset p { + line-height: 1.5; + margin: 1em 0; +} + +/* -------------------------------------------------------------------------- + * Lists: AWS-style top-level spacing with standard markers. + * Keep card grids and nested lists on Material's existing spacing. + * ------------------------------------------------------------------------ */ +.md-typeset > ul { + list-style-type: disc; +} + +.md-typeset > ol { + list-style-type: decimal; +} + +.md-typeset > ul > li + li, +.md-typeset > ol > li + li { + margin-top: 1em; +} + +.md-typeset li::marker { + color: currentColor; +} + +/* -------------------------------------------------------------------------- + * Section dividers. + * ------------------------------------------------------------------------ */ +.md-typeset hr { + border-bottom: 1px solid var(--aws-border-secondary, #ebebf0); +} + +[data-md-color-scheme="default"] .md-typeset hr { + border-bottom-color: #ebebf0; +} diff --git a/docs/stylesheets/aws-footer.css b/docs/stylesheets/aws-footer.css new file mode 100644 index 0000000000..f09068f688 --- /dev/null +++ b/docs/stylesheets/aws-footer.css @@ -0,0 +1,224 @@ +/* AWS docs restyle: footer (owned by Minion B) */ + +.aws-footer.md-footer { + background: #fff; + color: #0f141a; +} + +.aws-footer__pager { + background: #fff; + border-top: 1px solid #ebebf0; + color: #0f141a; + display: block; + padding-bottom: 24px; + padding-top: 24px; +} + +.aws-footer__pager-line { + color: #0f141a; + font-size: 15px; + line-height: 22px; + margin: 0; +} + +.aws-footer__pager-line + .aws-footer__pager-line { + margin-top: 8px; +} + +.aws-footer__pager-line strong { + color: #0f141a; + font-weight: 700; +} + +.aws-footer__pager-line a { + color: #006ce0; + font-weight: 400; + text-decoration: none; +} + +.aws-footer__pager-line a:hover, +.aws-footer__pager-line a:focus-visible { + color: #006ce0; + text-decoration: underline; + text-underline-offset: 0.25em; +} + +.aws-footer__panel { + background: #161d26; + color: rgba(255, 255, 255, 0.85); + font-family: var(--md-text-font), sans-serif; + padding: 48px 0 0; + position: relative; +} + +.aws-footer__panel-inner { + box-sizing: border-box; + margin-left: auto; + margin-right: auto; + max-width: 1440px; + padding-left: 40px; + padding-right: 40px; + position: relative; + width: 100%; +} + +.aws-footer__columns { + box-sizing: border-box; + display: grid; + gap: 32px 40px; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.aws-footer__column { + margin: 0; +} + +.aws-footer__heading { + color: #fff; + font-family: var(--md-text-font), sans-serif; + font-size: 16px; + font-weight: 700; + line-height: 22px; + margin: 0 0 16px; +} + +.aws-footer__list { + list-style: none; + margin: 0; + padding: 0; +} + +.aws-footer__list li + li { + margin-top: 11px; +} + +.aws-footer__link { + color: rgba(255, 255, 255, 0.85); + font-family: var(--md-text-font), sans-serif; + font-size: 14px; + font-weight: 400; + line-height: 1.4; + text-decoration: none; +} + +.aws-footer__link:hover, +.aws-footer__link:focus-visible { + color: #fff; + text-decoration: underline; + text-underline-offset: 0.25em; +} + +.aws-footer__external-icon { + color: currentcolor; + display: inline-flex; + height: 12px; + margin-left: 4px; + vertical-align: -1px; + width: 12px; +} + +.aws-footer__external-icon svg { + display: block; + fill: none; + height: 12px; + stroke: currentcolor; + stroke-linecap: square; + stroke-linejoin: miter; + stroke-width: 1.5; + width: 12px; +} + +.aws-footer__legal { + border-top: 1px solid rgba(255, 255, 255, 0.2); + color: rgba(255, 255, 255, 0.72); + font-family: var(--md-text-font), sans-serif; + font-size: 12px; + font-weight: 400; + line-height: 18px; + margin-top: 40px; + padding-bottom: 24px; + padding-top: 24px; +} + +.aws-footer__legal .md-copyright, +.aws-footer__legal .md-copyright__highlight, +.aws-footer__legal #awsdocs-legal-zone-copyright, +.aws-footer__legal .copyright { + color: rgba(255, 255, 255, 0.72); + font-family: var(--md-text-font), sans-serif; + font-size: 12px; + font-weight: 400; + line-height: 18px; +} + +.aws-footer__legal .md-copyright { + max-width: none; + padding: 0; + width: 100%; +} + +.aws-footer__legal a { + color: rgba(255, 255, 255, 0.72); + font-weight: 400; + margin-left: 10px; + margin-right: 10px; + text-decoration: none; +} + +.aws-footer__legal a:first-child { + margin-left: 0; +} + +.aws-footer__legal a:hover, +.aws-footer__legal a:focus-visible { + color: #fff; + text-decoration: underline; + text-underline-offset: 0.25em; +} + +@media screen and (max-width: 62.5em) { + .aws-footer__columns { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media screen and (max-width: 44.9375em) { + .aws-footer__pager { + padding-bottom: 20px; + padding-top: 20px; + } + + .aws-footer__panel { + padding-top: 40px; + } + + .aws-footer__panel-inner { + padding-left: 24px; + padding-right: 24px; + } + + .aws-footer__columns { + grid-template-columns: 1fr; + } +} + +[data-md-color-scheme="slate"] .aws-footer.md-footer, +[data-md-color-scheme="slate"] .aws-footer__pager { + background: #0f141a; + color: rgba(255, 255, 255, 0.88); +} + +[data-md-color-scheme="slate"] .aws-footer__pager { + border-top-color: #424650; +} + +[data-md-color-scheme="slate"] .aws-footer__pager-line, +[data-md-color-scheme="slate"] .aws-footer__pager-line strong { + color: rgba(255, 255, 255, 0.88); +} + +[data-md-color-scheme="slate"] .aws-footer__pager-line a, +[data-md-color-scheme="slate"] .aws-footer__pager-line a:hover, +[data-md-color-scheme="slate"] .aws-footer__pager-line a:focus-visible { + color: #42b4ff; +} diff --git a/docs/stylesheets/aws-header.css b/docs/stylesheets/aws-header.css new file mode 100644 index 0000000000..996ba51d7f --- /dev/null +++ b/docs/stylesheets/aws-header.css @@ -0,0 +1,563 @@ +/* AWS docs restyle: portal header (owned by Minion A) */ + +:root { + --aws-header-text: #0f141a; + --aws-header-muted: #424650; + --aws-header-border: #dedee3; + --aws-header-link-blue: #006ce0; + --aws-header-utility-bg: #0f141a; + --aws-header-orange: #ff9900; + --aws-header-orange-hover: #ec7211; +} + +[data-md-color-scheme="default"] { + --md-primary-fg-color: #ffffff; + --md-primary-fg-color--light: #ffffff; + --md-primary-fg-color--dark: #f9f9fb; + --md-primary-bg-color: var(--aws-header-text); + --md-primary-bg-color--light: var(--aws-header-muted); +} + +.aws-header.md-header { + background: transparent; + box-shadow: none; + color: var(--aws-header-text); +} + +.aws-header.md-header--shadow, +.aws-header.md-header[data-md-state="shadow"], +.aws-header.md-header--shadow[data-md-state="shadow"] { + box-shadow: none; +} + +.aws-utility-bar { + background: var(--aws-header-utility-bg); + color: #ffffff; + min-height: 36px; +} + +.aws-utility-bar__inner { + align-items: center; + box-sizing: border-box; + display: flex; + gap: 24px; + justify-content: flex-end; + max-width: none; + min-height: 36px; + padding-left: 24px; + padding-right: 24px; + width: 100%; +} + +.aws-utility-bar__preferences { + display: flex; + margin: 0; + position: relative; +} + +.aws-prefs__palette-sentinel { + display: none; +} + +.aws-utility-bar__link { + align-items: center; + background: none; + border: 0; + color: #ffffff; + cursor: pointer; + display: inline-flex; + font-size: 13px; + font-weight: 700; + line-height: 1.3; + margin: 0; + padding: 0; + text-decoration: none; +} + +.aws-prefs { + position: relative; +} + +.aws-prefs__summary { + align-items: center; + gap: 0.25rem; + list-style: none; +} + +.aws-prefs__summary::-webkit-details-marker { + display: none; +} + +.aws-prefs[open] .aws-prefs__summary { + color: #42b4ff; + text-decoration: none; +} + +.aws-prefs__caret { + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid currentcolor; + height: 0; + margin-top: 2px; + width: 0; +} + +.aws-prefs[open] .aws-prefs__caret { + border-bottom: 4px solid currentcolor; + border-top: 0; +} + +.aws-prefs__panel { + background: #161d26; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.45); + color: #ffffff; + min-width: 200px; + padding: 16px; + position: absolute; + right: 0; + top: calc(100% + 10px); + z-index: 10; +} + +.aws-prefs__heading { + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + color: #ffffff; + font-size: 16px; + font-weight: 700; + line-height: 1.4; + padding-bottom: 12px; +} + +.aws-prefs__section-label { + color: #ffffff; + font-size: 14px; + line-height: 1.4; + margin-top: 14px; +} + +.aws-prefs__options { + display: grid; + gap: 10px; + margin-top: 10px; +} + +.aws-prefs__option { + align-items: center; + color: #ffffff; + cursor: pointer; + display: inline-flex; + font-size: 14px; + gap: 8px; + line-height: 1.4; +} + +.aws-radio { + border: 2px solid rgba(255, 255, 255, 0.7); + border-radius: 50%; + box-sizing: border-box; + display: inline-flex; + flex: 0 0 auto; + height: 14px; + position: relative; + width: 14px; +} + +.aws-radio::after { + background: #42b4ff; + border-radius: 50%; + content: ""; + height: 6px; + left: 50%; + opacity: 0; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + width: 6px; +} + +body[data-md-color-media="(prefers-color-scheme: light)"] .aws-prefs__option[for="__palette_1"] .aws-radio, +body[data-md-color-media="(prefers-color-scheme: dark)"] .aws-prefs__option[for="__palette_2"] .aws-radio, +body[data-md-color-media="(prefers-color-scheme)"] .aws-prefs__option[for="__palette_0"] .aws-radio, +#__palette_1:checked ~ .aws-prefs .aws-prefs__option[for="__palette_1"] .aws-radio, +#__palette_2:checked ~ .aws-prefs .aws-prefs__option[for="__palette_2"] .aws-radio, +#__palette_0:checked ~ .aws-prefs .aws-prefs__option[for="__palette_0"] .aws-radio { + border-color: #42b4ff; +} + +body[data-md-color-media="(prefers-color-scheme: light)"] .aws-prefs__option[for="__palette_1"] .aws-radio::after, +body[data-md-color-media="(prefers-color-scheme: dark)"] .aws-prefs__option[for="__palette_2"] .aws-radio::after, +body[data-md-color-media="(prefers-color-scheme)"] .aws-prefs__option[for="__palette_0"] .aws-radio::after, +#__palette_1:checked ~ .aws-prefs .aws-prefs__option[for="__palette_1"] .aws-radio::after, +#__palette_2:checked ~ .aws-prefs .aws-prefs__option[for="__palette_2"] .aws-radio::after, +#__palette_0:checked ~ .aws-prefs .aws-prefs__option[for="__palette_0"] .aws-radio::after { + opacity: 1; +} + +.aws-utility-bar__link:hover, +.aws-utility-bar__link:focus, +.aws-prefs__summary:hover, +.aws-prefs__summary:focus { + color: #ffffff; + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.25em; +} + +.aws-main-header { + background: #ffffff; + border-bottom: 1px solid var(--aws-header-border); + color: var(--aws-header-text); +} + +.aws-main-header__inner.md-header__inner { + align-items: center; + box-sizing: border-box; + display: flex; + gap: 0; + max-width: none; + min-height: 72px; + padding-bottom: 0; + padding-left: 24px; + padding-right: 24px; + padding-top: 0; + width: 100%; +} + +.aws-header__drawer.md-header__button { + color: var(--aws-header-text); + flex: 0 0 auto; + margin: 0; +} + +.aws-header__logo.md-logo { + align-items: center; + display: inline-flex; + flex: 0 0 auto; + height: 72px; + margin: 0; + padding: 0; +} + +.aws-header__logo img, +[data-md-color-scheme="default"] .aws-header__logo img, +[data-md-color-scheme="slate"] .aws-header__logo img { + content: url("../media/aws-logo-dark.svg"); + height: 32px; + width: auto; +} + +.aws-header__nav { + align-items: center; + display: flex; + flex: 0 1 auto; + gap: 0; + margin-left: 60px; + min-width: 0; +} + +.aws-header__menu { + display: block; + flex: 0 0 auto; + position: relative; +} + +.aws-header__nav-link { + background: transparent; + border: 0; + color: var(--aws-header-text); + cursor: pointer; + display: inline-flex; + flex: 0 0 auto; + font-size: 14px; + font-weight: 700; + line-height: 1.4; + list-style: none; + margin: 0; + padding: 26px 20px; + text-decoration: none; +} + +.aws-header__menu-summary::-webkit-details-marker { + display: none; +} + +.aws-header__menu-summary::marker { + content: ""; +} + +.aws-header__nav-link:hover, +.aws-header__nav-link:focus { + color: var(--aws-header-text); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.25em; +} + +.aws-header__menu[open] > .aws-header__menu-summary { + color: var(--aws-header-link-blue); + text-decoration: underline; + text-decoration-thickness: 2px; + text-underline-offset: 0.55em; +} + +.aws-header__menu-panel { + background: #ffffff; + border: 1px solid #ebebf0; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + box-sizing: border-box; + color: var(--aws-header-text); + display: grid; + gap: 22px; + left: 20px; + min-width: 380px; + padding: 24px 32px; + position: absolute; + top: calc(100% + 1px); + width: 380px; + z-index: 1000; +} + +.aws-header__menu-section { + display: grid; + gap: 8px; +} + +.aws-header__menu-heading { + color: var(--aws-header-text); + font-size: 16px; + font-weight: 700; + line-height: 1.35; +} + +.aws-header__menu-link { + align-items: baseline; + color: var(--aws-header-text); + display: inline-flex; + font-size: 14px; + font-weight: 400; + gap: 0.3rem; + line-height: 1.45; + text-decoration: none; + width: fit-content; +} + +.aws-header__menu-link:hover, +.aws-header__menu-link:focus { + color: var(--aws-header-link-blue); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.25em; +} + +.aws-header__menu-link--external::after { + background-color: currentcolor; + content: ""; + display: inline-block; + flex: 0 0 auto; + height: 12px; + margin-left: 2px; + -webkit-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 3h4v1.5H4.5v7h7V9H13v4H3V3zm6 0h4v4h-1.5V5.56L7.53 9.53 6.47 8.47l3.97-3.97H9V3z'/%3E%3C/svg%3E") center / contain no-repeat; + mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 3h4v1.5H4.5v7h7V9H13v4H3V3zm6 0h4v4h-1.5V5.56L7.53 9.53 6.47 8.47l3.97-3.97H9V3z'/%3E%3C/svg%3E") center / contain no-repeat; + width: 12px; +} + +.aws-header__actions { + align-items: center; + display: flex; + flex: 0 1 auto; + gap: 16px; + margin-left: auto; + min-width: 0; +} + +.aws-header__search-toggle.md-header__button { + color: var(--aws-header-text); + flex: 0 0 auto; + margin: 0; +} + +.aws-header__console { + align-items: center; + background: var(--aws-header-orange); + border-radius: 9999px; + color: var(--aws-header-text); + display: inline-flex; + flex: 0 0 auto; + font-size: 14px; + font-weight: 700; + justify-content: center; + line-height: 1.2; + padding: 0.45rem 1.25rem; + text-decoration: none; + white-space: nowrap; +} + +.aws-header__console:hover, +.aws-header__console:focus { + background: var(--aws-header-orange-hover); + color: var(--aws-header-text); + text-decoration: none; +} + +.aws-header .md-search__form { + border-radius: 8px; + overflow: hidden; +} + +.aws-header .md-search__input { + border-radius: 8px; + box-shadow: none; +} + +[data-md-color-scheme="default"] .aws-header .md-search__form { + background-color: #ffffff; + border: 1px solid #c6c6cd; + box-shadow: none; +} + +[data-md-color-scheme="default"] .aws-header .md-search__form:hover, +[data-md-color-scheme="default"] .aws-header .md-search__form:focus-within { + border-color: var(--aws-header-link-blue); + box-shadow: 0 0 0 1px var(--aws-header-link-blue); +} + +[data-md-color-scheme="default"] .aws-header .md-search__input { + background-color: #ffffff; + box-shadow: none; + color: var(--aws-header-text); +} + +[data-md-color-scheme="default"] .aws-header .md-search__input::placeholder, +[data-md-color-scheme="default"] .aws-header .md-search__icon, +[data-md-color-scheme="default"] .aws-header .md-search__options, +[data-md-color-scheme="default"] .aws-header .md-search__options .md-icon { + color: var(--aws-header-muted); +} + +[data-md-color-scheme="default"] .aws-header .md-search__input + .md-search__icon:hover, +[data-md-color-scheme="default"] .aws-header .md-search__options .md-icon:hover { + color: var(--aws-header-link-blue); +} + +[data-md-color-scheme="slate"] .aws-utility-bar, +[data-md-color-scheme="slate"] .aws-main-header { + background-color: #161d26; + color: #ffffff; +} + +[data-md-color-scheme="slate"] .aws-main-header { + border-bottom-color: #2a3541; +} + +[data-md-color-scheme="slate"] .aws-header__drawer.md-header__button, +[data-md-color-scheme="slate"] .aws-header__search-toggle.md-header__button, +[data-md-color-scheme="slate"] .aws-header__nav-link { + color: rgba(255, 255, 255, 0.9); +} + +[data-md-color-scheme="slate"] .aws-header__nav-link:hover, +[data-md-color-scheme="slate"] .aws-header__nav-link:focus { + color: #ffffff; +} + +[data-md-color-scheme="slate"] .aws-header__menu[open] > .aws-header__menu-summary { + color: #42b4ff; +} + +[data-md-color-scheme="slate"] .aws-header__menu-panel { + background: #ffffff; + color: var(--aws-header-text); +} + +[data-md-color-scheme="slate"] .aws-header__logo img { + filter: invert(1) grayscale(1) brightness(1.8); +} + +[data-md-color-scheme="slate"] .aws-header .md-search__form { + background-color: #0f141a; + border: 1px solid #424650; + box-shadow: none; +} + +[data-md-color-scheme="slate"] .aws-header .md-search__form:hover, +[data-md-color-scheme="slate"] .aws-header .md-search__form:focus-within { + border-color: #42b4ff; + box-shadow: 0 0 0 1px #42b4ff; +} + +[data-md-color-scheme="slate"] .aws-header .md-search__input { + background-color: #0f141a; + box-shadow: none; + color: #ffffff; +} + +[data-md-color-scheme="slate"] .aws-header .md-search__input::placeholder, +[data-md-color-scheme="slate"] .aws-header .md-search__icon, +[data-md-color-scheme="slate"] .aws-header .md-search__options, +[data-md-color-scheme="slate"] .aws-header .md-search__options .md-icon { + color: rgba(255, 255, 255, 0.72); +} + +@media screen and (min-width: 60em) { + .aws-header__search-toggle { + display: none; + } + + .aws-header .md-search { + flex: 0 0 300px; + margin: 0; + padding: 0; + width: 300px; + } + + .aws-header .md-search__inner { + width: 100%; + } + + .aws-header .md-search__form { + height: 38px; + } + + .aws-header .md-search__input { + font-size: 14px; + height: 100%; + } +} + +@media screen and (min-width: 76.25em) { + .aws-header__drawer { + display: none; + } +} + +@media screen and (max-width: 76.234375em) { + .aws-main-header__inner.md-header__inner { + gap: 16px; + } + + .aws-header__nav { + display: none; + } +} + +@media screen and (max-width: 59.984375em) { + .aws-utility-bar__inner { + gap: 24px; + } + + .aws-main-header__inner.md-header__inner { + min-height: 56px; + } + + .aws-header__logo.md-logo { + height: 56px; + } + + .aws-header__actions { + gap: 0.25rem; + } + + .aws-header__console { + display: none; + } +} diff --git a/docs/stylesheets/aws-nav.css b/docs/stylesheets/aws-nav.css new file mode 100644 index 0000000000..9b92cd620e --- /dev/null +++ b/docs/stylesheets/aws-nav.css @@ -0,0 +1,480 @@ +/* AWS docs restyle: left sidebar + right rail (owned by Minion B) */ + +[data-md-color-scheme="default"] { + --aws-nav-text: #0f141a; + --aws-nav-secondary-text: #424650; + --aws-nav-muted-text: #656871; + --aws-nav-link: #006ce0; + --aws-nav-divider: #ebebf0; +} + +[data-md-color-scheme="slate"] { + --aws-nav-text: #f2f3f3; + --aws-nav-secondary-text: #d5dbdb; + --aws-nav-muted-text: #aab7b8; + --aws-nav-link: #42b4ff; + --aws-nav-divider: #424650; +} + +/* -------------------------------------------------------------------------- + * Left sidebar: AWS Developer Guide style navigation + * ------------------------------------------------------------------------ */ + +.md-sidebar--primary .md-sidebar__scrollwrap, +.md-sidebar--secondary .md-sidebar__scrollwrap { + -ms-overflow-style: none; + scrollbar-width: none; +} + +.md-sidebar { + padding-top: 0; +} + +.md-sidebar--primary .md-sidebar__scrollwrap::-webkit-scrollbar, +.md-sidebar--secondary .md-sidebar__scrollwrap::-webkit-scrollbar { + display: none; +} + +.aws-nav-collapse, +.aws-nav-reopen { + display: none; +} + +@media screen and (min-width: 76.25em) { + .md-sidebar--primary .md-sidebar__scrollwrap { + position: relative; + } + + .md-sidebar--primary .md-sidebar__scrollwrap::before { + color: var(--aws-nav-text); + content: "Powertools for AWS Lambda (TypeScript)"; + display: block; + font-size: 16px; + font-weight: 700; + line-height: 1.25; + margin: 0 0.6rem 0 0; + padding: 0.2rem 2.1rem 0.15rem 36px; + } + + .md-sidebar--primary .md-sidebar__inner::before { + border-bottom: 1px solid var(--aws-nav-divider); + color: var(--aws-nav-muted-text); + content: "Developer Guide"; + display: block; + font-size: 12px; + font-weight: 400; + line-height: 1.35; + margin: 0 0.6rem 0.55rem 0; + padding: 0 0 0.75rem 36px; + } + + .md-sidebar--primary .md-nav--primary > .md-nav__title { + display: none; + } + + .aws-nav-collapse { + align-items: center; + background: transparent; + border: 0; + border-radius: 4px; + color: #424650; + cursor: pointer; + display: inline-flex; + height: 28px; + justify-content: center; + padding: 0; + width: 28px; + z-index: 5; + } + + .aws-nav-collapse:hover, + .aws-nav-collapse:focus { + color: #006ce0; + } + + .aws-nav-collapse:focus-visible { + outline: 2px solid #006ce0; + outline-offset: 2px; + } + + .aws-nav-collapse svg { + display: block; + height: 16px; + width: 16px; + } + + .aws-nav-collapse { + position: absolute; + right: 0.2rem; + top: 0.05rem; + } + + .aws-nav-reopen { + align-items: center; + background: #161d26; + border: 0; + border-radius: 50%; + color: #fff; + cursor: pointer; + display: none; + height: 40px; + justify-content: center; + left: var( + --aws-nav-reopen-left, + calc((100vw - min(100vw, 72rem)) / 2 + 0.6rem) + ); + padding: 0; + position: fixed; + top: var(--aws-nav-reopen-top, calc(var(--md-header-height, 2.4rem) + 0.6rem)); + width: 40px; + z-index: 8; + } + + .aws-nav-reopen:hover, + .aws-nav-reopen:focus { + background: #253142; + } + + .aws-nav-reopen:focus-visible { + outline: 3px solid #0972d3; + outline-offset: 3px; + } + + .aws-nav-reopen svg { + display: block; + height: 20px; + width: 20px; + } + + .aws-nav-collapsed .md-sidebar--primary { + display: none; + } + + .aws-nav-collapsed .md-main__inner { + padding-left: 2.4rem; + position: relative; + } + + .aws-nav-collapsed .aws-nav-reopen { + display: inline-flex; + } +} + +.md-sidebar--primary .md-nav--primary, +.md-sidebar--primary .md-nav--primary .md-nav { + --aws-nav-caret-gap: 6px; + --aws-nav-caret-size: 14px; + --aws-nav-indent-step: 16px; + --aws-nav-label-indent: 24px; + --aws-nav-structural-indent: 12px; + font-size: 14px; +} + +.md-sidebar--primary .md-nav--primary .md-nav[data-md-level="1"] { + --aws-nav-label-indent: calc( + 24px + var(--aws-nav-indent-step) - var(--aws-nav-structural-indent) + ); +} + +.md-sidebar--primary .md-nav--primary .md-nav[data-md-level="2"] { + --aws-nav-label-indent: calc( + 24px + var(--aws-nav-indent-step) - var(--aws-nav-structural-indent) + + var(--aws-nav-indent-step) - var(--aws-nav-structural-indent) + ); +} + +.md-sidebar--primary .md-nav--primary .md-nav[data-md-level="3"] { + --aws-nav-label-indent: calc( + 24px + var(--aws-nav-indent-step) - var(--aws-nav-structural-indent) + + var(--aws-nav-indent-step) - var(--aws-nav-structural-indent) + + var(--aws-nav-indent-step) - var(--aws-nav-structural-indent) + ); +} + +.md-sidebar--primary .md-nav--primary .md-nav__link { + color: var(--aws-nav-text); + font-size: 14px; + line-height: 1.4; + margin-top: 0; + min-height: 0; + padding-bottom: 0.35rem; + padding-left: var(--aws-nav-label-indent); + padding-top: 0.35rem; + position: relative; + text-decoration: none; + text-transform: none; +} + +.md-sidebar--primary .md-nav--primary .md-nav__item { + margin: 0; +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__link, +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__container + > .md-nav__link { + align-items: center; + display: flex; + font-weight: 400; +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__container { + align-items: center; + display: flex; + padding-left: var(--aws-nav-label-indent); + position: relative; +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__container + > a.md-nav__link { + flex: 1 1 auto; + padding-left: 0; +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__container + > label.md-nav__link { + bottom: 0; + flex: 0 0 auto; + left: calc( + var(--aws-nav-label-indent) - var(--aws-nav-caret-size) - + var(--aws-nav-caret-gap) + ); + order: -1; + padding-left: 0; + padding-right: 0; + position: absolute; + top: 0; + width: var(--aws-nav-caret-size); +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__container + > label.md-nav__link + .md-nav__icon { + left: 0; +} + +.md-sidebar--primary .md-nav--primary .md-nav__container { + padding-bottom: 0; + padding-top: 0; +} + +.md-sidebar--primary .md-nav--primary .md-nav__link:hover, +.md-sidebar--primary .md-nav--primary .md-nav__link:focus { + color: var(--aws-nav-link); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.25em; +} + +.md-sidebar--primary .md-nav--primary .md-nav__link--active, +.md-sidebar--primary .md-nav--primary .md-nav__link--active code { + color: var(--aws-nav-link); + font-weight: 700; +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__link:not([for="__toc"]) + .md-nav__icon { + align-self: center; + background-color: transparent; + border-radius: 0; + flex: 0 0 var(--aws-nav-caret-size); + height: var(--aws-nav-caret-size); + left: calc( + var(--aws-nav-label-indent) - var(--aws-nav-caret-size) - + var(--aws-nav-caret-gap) + ); + margin-left: 0; + margin-right: 0; + order: -1; + position: absolute; + width: var(--aws-nav-caret-size); +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__link:not([for="__toc"]) + .md-nav__icon:hover { + background-color: transparent; +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__link:not([for="__toc"]) + .md-nav__icon::after { + background-color: #424650; + border-radius: 0; + display: block; + height: var(--aws-nav-caret-size); + -webkit-mask-image: url('data:image/svg+xml;charset=utf-8,'); + mask-image: url('data:image/svg+xml;charset=utf-8,'); + -webkit-mask-size: var(--aws-nav-caret-size) var(--aws-nav-caret-size); + mask-size: var(--aws-nav-caret-size) var(--aws-nav-caret-size); + transition: transform 0.25s; + transform-origin: center; + vertical-align: 0; + width: var(--aws-nav-caret-size); +} + +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__toggle:checked + + .md-nav__link + .md-nav__icon::after, +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-nav__toggle:checked + ~ .md-nav__container + > .md-nav__link + .md-nav__icon::after, +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-toggle--indeterminate + + .md-nav__link + .md-nav__icon::after, +.md-sidebar--primary + .md-nav--primary + .md-nav__item--nested + > .md-toggle--indeterminate + ~ .md-nav__container + > .md-nav__link + .md-nav__icon::after { + transform: rotate(90deg); +} + +/* -------------------------------------------------------------------------- + * Right rail: AWS "on this page" table of contents + * ------------------------------------------------------------------------ */ + +.md-sidebar--secondary .md-nav--secondary { + margin-bottom: 0; + font-size: 14px; + line-height: 20px; +} + +@media screen and (min-width: 76.25em) { + .md-sidebar--secondary { + width: 13.3125rem; + } + + .md-sidebar--secondary .md-sidebar__inner, + .md-sidebar--secondary .md-nav--secondary { + width: 100%; + } +} + +.md-sidebar--secondary .md-nav--secondary > .md-nav__title { + background: transparent; + color: var(--aws-nav-text); + font-size: 18px; + font-weight: 700; + line-height: 22px; + margin: 0; + padding: 4px 0; + position: static; +} + +.md-sidebar--secondary .md-nav--secondary .md-nav__list { + border-left: 0; + margin: 0; + padding: 0; +} + +.md-sidebar--secondary .md-nav--secondary > .md-nav__list { + /* AWS uses one rail at the left edge of the page-contents list. */ + border-left: 1px solid var(--aws-nav-divider); + margin: 4px 0 0; + padding: 0 0 0.4rem; + position: relative; +} + +.md-sidebar--secondary .md-nav--secondary .md-nav__item { + margin: 4px 0; + position: relative; +} + +.md-sidebar--secondary .md-nav--secondary .md-nav__link--active::before { + background-color: var(--aws-nav-link); + bottom: -2px; + content: ""; + left: -1px; + position: absolute; + top: -2px; + transition: background-color 0.2s ease; + width: 2px; + z-index: 1; +} + +.md-sidebar--secondary .md-nav--secondary .md-nav__link { + border-left: 0; + color: var(--aws-nav-secondary-text); + display: flex; + font-size: 14px; + line-height: 20px; + margin: 0; + margin-top: 0; + min-height: 0; + padding: 0 0 0 14px; + position: relative; + text-decoration: none; + transition: color 0.15s ease; +} + +.md-sidebar--secondary .md-nav--secondary .md-nav__link:hover, +.md-sidebar--secondary .md-nav--secondary .md-nav__link:focus { + color: var(--aws-nav-link); + text-decoration: none; +} + +.md-sidebar--secondary .md-nav--secondary .md-nav__link--active, +.md-sidebar--secondary .md-nav--secondary .md-nav__link--active code { + color: var(--aws-nav-link); + font-weight: 700; +} + +.aws-page-feedback { + display: none; +} + +.md-sidebar--secondary .aws-page-feedback { + border-top: 1px solid var(--aws-nav-divider); + display: block; + margin-top: 0.8rem; + padding-top: 0.8rem; +} + +.md-sidebar--secondary .aws-page-feedback__link { + color: var(--aws-nav-link); + font-size: 14px; + line-height: 20px; + text-decoration: none; +} + +.md-sidebar--secondary .aws-page-feedback__link:hover, +.md-sidebar--secondary .aws-page-feedback__link:focus { + color: var(--aws-nav-link); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.25em; +} diff --git a/docs/stylesheets/aws-restyle.css b/docs/stylesheets/aws-restyle.css new file mode 100644 index 0000000000..ad56fe06b7 --- /dev/null +++ b/docs/stylesheets/aws-restyle.css @@ -0,0 +1,1024 @@ +/* + * AWS Developer Guide restyle for MkDocs Material + * ------------------------------------------------ + * Replicates the look & feel of official AWS docs (docs.aws.amazon.com), + * which are built on the Cloudscape Design System (awsui). + * Color values are Cloudscape design-token fallbacks extracted from the + * production CSS of the AWS Developer Guides. + */ + +/* -------------------------------------------------------------------------- + * Amazon Ember (extracted from AWS docs production CSS) + * ------------------------------------------------------------------------ */ +@font-face { + font-family: "Amazon Ember"; + font-style: normal; + font-weight: 300; + src: url("fonts/amazon-ember-300.woff") format("woff"); +} +@font-face { + font-family: "Amazon Ember"; + font-style: normal; + font-weight: 400; + src: url("fonts/amazon-ember-400.woff") format("woff"); +} +@font-face { + font-family: "Amazon Ember"; + font-style: italic; + font-weight: 400; + src: url("fonts/amazon-ember-400-italic.woff") format("woff"); +} +@font-face { + font-family: "Amazon Ember"; + font-style: normal; + font-weight: 700; + src: url("fonts/amazon-ember-700.woff") format("woff"); +} +@font-face { + font-family: "Amazon Ember"; + font-style: normal; + font-weight: 900; + src: url("fonts/amazon-ember-900.woff") format("woff"); +} + +/* -------------------------------------------------------------------------- + * Fonts + * ------------------------------------------------------------------------ */ +:root { + --md-text-font: "Amazon Ember", Helvetica, Arial, sans-serif; + --md-code-font: Monaco, Menlo, Consolas, "Courier Prime", Courier, + "Courier New", monospace; +} + +/* -------------------------------------------------------------------------- + * Color tokens - light scheme + * ------------------------------------------------------------------------ */ +[data-md-color-scheme="default"] { + /* Header bar: awsdocs dark header */ + --md-primary-fg-color: #161d26; + --md-primary-fg-color--light: #2a3541; + --md-primary-fg-color--dark: #0f141a; + --md-primary-bg-color: #ffffff; + --md-primary-bg-color--light: rgba(255, 255, 255, 0.7); + + /* Accent: Cloudscape link blue */ + --md-accent-fg-color: #006ce0; + --md-accent-fg-color--transparent: rgba(0, 108, 224, 0.1); + + /* Text */ + --md-default-fg-color: #0f141a; /* --color-text-body-default */ + --md-default-fg-color--light: #424650; /* --color-text-body-secondary */ + --md-default-fg-color--lighter: #656871; + --md-default-fg-color--lightest: #ebebf0; + --md-default-bg-color: #ffffff; + + /* Links */ + --md-typeset-a-color: #006ce0; /* --color-text-link-default */ + --aws-link-hover-color: #002b66; /* --color-text-link-hover */ + + /* Code */ + --md-code-fg-color: #16191f; + --md-code-bg-color: #f3f3f7; /* inline code bg */ + --aws-code-block-bg: #f9f9f9; /* block code bg */ + --aws-border-default: #c6c6cd; /* --color-border-divider-default */ + --aws-border-secondary: #ebebf0; + + /* Tables */ + --md-typeset-table-color: #c6c6cd; + --aws-table-header-bg: #f3f3f7; + + /* Admonitions (AWS note / warning / important callouts) */ + --aws-note-bg: rgba(241, 250, 255, 0.8); + --aws-note-border: rgba(0, 115, 187, 0.35); + --aws-note-icon: #006ce0; + --aws-note-code-bg: #e3edf3; + --aws-warning-bg: hsla(10, 75%, 97%, 0.8); + --aws-warning-border: rgba(223, 51, 18, 0.35); + --aws-warning-icon: #db0000; + --aws-warning-code-bg: #ede3e0; + --aws-important-bg: var(--aws-warning-bg); + --aws-important-border: var(--aws-warning-border); + --aws-important-icon: var(--aws-warning-icon); + --aws-important-code-bg: var(--aws-warning-code-bg); + + /* Footer */ + --md-footer-bg-color: #161d26; + --md-footer-bg-color--dark: #0f141a; +} + +/* -------------------------------------------------------------------------- + * Color tokens - dark scheme (Cloudscape dark-mode equivalents) + * ------------------------------------------------------------------------ */ +[data-md-color-scheme="slate"] { + --md-primary-fg-color: #161d26; + --md-primary-fg-color--light: #2a3541; + --md-primary-fg-color--dark: #0f141a; + --md-primary-bg-color: #ffffff; + --md-primary-bg-color--light: rgba(255, 255, 255, 0.7); + + --md-accent-fg-color: #42b4ff; + --md-accent-fg-color--transparent: rgba(66, 180, 255, 0.1); + + --md-default-bg-color: #0f141a; + --md-typeset-a-color: #42b4ff; /* Cloudscape dark link */ + --aws-link-hover-color: #75cfff; + + --md-code-bg-color: #1b232d; + --aws-code-block-bg: #161d26; + --aws-border-default: #424650; + --aws-border-secondary: #2a3541; + + --md-typeset-table-color: #424650; + --aws-table-header-bg: #1b232d; + + --aws-note-bg: #12293b; + --aws-note-border: rgba(0, 161, 201, 0.35); + --aws-note-icon: #00a1c9; + --aws-note-code-bg: #0a2030; + --aws-warning-bg: #270a11; + --aws-warning-border: rgba(209, 50, 18, 0.35); + --aws-warning-icon: #ff5d64; + --aws-warning-code-bg: #180308; + --aws-important-bg: var(--aws-warning-bg); + --aws-important-border: var(--aws-warning-border); + --aws-important-icon: var(--aws-warning-icon); + --aws-important-code-bg: var(--aws-warning-code-bg); + + --md-footer-bg-color: #161d26; + --md-footer-bg-color--dark: #0b0f14; +} + +/* -------------------------------------------------------------------------- + * Header / tabs: fixed dark bar like awsdocs-header + * ------------------------------------------------------------------------ */ +.md-header { + background-color: var(--md-primary-fg-color); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +.md-tabs { + background-color: var(--md-primary-fg-color); + border-top: 1px solid rgba(255, 255, 255, 0.1); +} + +.md-header a:hover, +.md-tabs__link:hover { + color: #42b4ff; +} + +.md-tabs__link--active { + border-bottom: 2px solid #42b4ff; + color: #ffffff; +} + +/* -------------------------------------------------------------------------- + * Typography: current AWS Developer Guide scale + * base 16px, line-height 1.5; h1 is the current generated page title + * size/weight (42px/700), not the legacy in-body 300-weight title. + * ------------------------------------------------------------------------ */ +.md-typeset { + font-size: 0.8rem; /* 16px */ + line-height: 1.5; +} + +.md-typeset h1 { + color: var(--md-default-fg-color); + font-size: 2.625em; + font-weight: 700; + line-height: 1; + margin: 1em 0 0.5em; +} + +.md-typeset h2 { + color: var(--md-default-fg-color); + font-size: 1.625em; + font-weight: 600; + margin: 1em 0 0.75em; +} + +.md-typeset h3 { + color: var(--md-default-fg-color); + font-size: 1.375em; + font-weight: 700; + margin-top: 1.25em; +} + +.md-typeset h4 { + font-size: 1.25em; + font-weight: 700; +} + +.md-typeset h5 { + color: var(--md-default-fg-color); + font-size: 1.125em; + font-weight: 700; + text-transform: none; +} + +/* -------------------------------------------------------------------------- + * Links: no underline by default, underline + darker blue on hover + * ------------------------------------------------------------------------ */ +.md-typeset a { + border-bottom: none; /* remove dashed underline from extra.css */ + text-decoration: none; +} + +.md-typeset a:hover, +.md-typeset a:focus { + color: var(--aws-link-hover-color); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.25em; +} + +/* -------------------------------------------------------------------------- + * Code: inline + blocks + * ------------------------------------------------------------------------ */ +.md-typeset code { + background-color: var(--md-code-bg-color); + border-radius: 2px; + padding: 0 3px; +} + +.md-typeset p > code, +.md-typeset li > code { + font-weight: 400; /* AWS does not bold inline code */ +} + +.md-typeset pre > code { + background-color: var(--aws-code-block-bg); + border-radius: 0; + padding: 16px; +} + +.md-typeset .highlight { + background-color: var(--aws-code-block-bg); + border: 1px solid var(--aws-border-default); + border-radius: 3px; +} + +.md-typeset .highlight pre { + margin: 0; +} + +/* Keep tabbed code groups coherent with bordered blocks */ +.md-typeset .tabbed-block .highlight { + border: none; + border-top: 1px solid var(--aws-border-secondary); + border-radius: 0; +} + +/* -------------------------------------------------------------------------- + * Admonitions: AWS callouts + * Live AWS Developer Guides currently render Warning and Important with the + * same red/error scheme (status-warning icon with error color), so keep the + * semantic mappings separate even though their token values match today: + * - Note (blue): note, info, tip, success, question, abstract, example, quote + * - Warning (red): warning, caution, attention + * - Important (red): danger, failure, bug, error + * Uses the Cloudscape status-info/status-warning SVG strokes from live AWS docs. + * ------------------------------------------------------------------------ */ +:root { + --aws-admonition-icon-note: url("data:image/svg+xml;charset=utf-8,"); + --aws-admonition-icon-warning: url("data:image/svg+xml;charset=utf-8,"); + + --md-admonition-icon--note: var(--aws-admonition-icon-note); + --md-admonition-icon--info: var(--aws-admonition-icon-note); + --md-admonition-icon--tip: var(--aws-admonition-icon-note); + --md-admonition-icon--success: var(--aws-admonition-icon-note); + --md-admonition-icon--question: var(--aws-admonition-icon-note); + --md-admonition-icon--abstract: var(--aws-admonition-icon-note); + --md-admonition-icon--example: var(--aws-admonition-icon-note); + --md-admonition-icon--quote: var(--aws-admonition-icon-note); + --md-admonition-icon--warning: var(--aws-admonition-icon-warning); + --md-admonition-icon--danger: var(--aws-admonition-icon-warning); + --md-admonition-icon--failure: var(--aws-admonition-icon-warning); + --md-admonition-icon--bug: var(--aws-admonition-icon-warning); + --md-admonition-icon--error: var(--aws-admonition-icon-warning); + --md-admonition-icon--caution: var(--aws-admonition-icon-warning); + --md-admonition-icon--attention: var(--aws-admonition-icon-warning); +} + +.md-typeset .admonition, +.md-typeset details { + background-color: var(--aws-note-bg); + border: 2px solid var(--aws-note-border); + border-radius: var(--border-radius-alert-thlkk1, 12px); + box-shadow: none; + color: var(--md-default-fg-color); + font-size: 1em; + line-height: 1.5; + margin: 16px 0; + padding: 15px 20px; +} + +.md-typeset .admonition-title, +.md-typeset summary { + background-color: transparent !important; + color: var(--md-default-fg-color); + font-size: 1em; + font-weight: 700; + line-height: 1.5; + margin: 0; + padding: 0 0 0 27px !important; +} + +.md-typeset summary { + padding-right: 36px !important; +} + +.md-typeset .admonition-title::before, +.md-typeset summary::before { + background-color: var(--aws-note-icon); + height: 16px; + left: 0; + top: 4px; + width: 16px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 16px 16px; + mask-size: 16px 16px; +} + +.md-typeset .admonition > :not(.admonition-title), +.md-typeset details > :not(summary) { + padding-left: 27px; +} + +.md-typeset .admonition p, +.md-typeset details p { + margin: 5px 0 0 !important; +} + +.md-typeset .admonition code, +.md-typeset details code { + background-color: var(--aws-note-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset .admonition, +[data-md-color-scheme="slate"] .md-typeset details { + border-width: 1px; +} + +/* AWS Warning variants */ +.md-typeset .admonition.warning, +.md-typeset .admonition.caution, +.md-typeset .admonition.attention, +.md-typeset details.warning, +.md-typeset details.caution, +.md-typeset details.attention { + background-color: var(--aws-warning-bg); + border-color: var(--aws-warning-border); +} + +/* AWS Important/error variants */ +.md-typeset .admonition.danger, +.md-typeset .admonition.failure, +.md-typeset .admonition.bug, +.md-typeset .admonition.error, +.md-typeset details.danger, +.md-typeset details.failure, +.md-typeset details.bug, +.md-typeset details.error { + background-color: var(--aws-important-bg); + border-color: var(--aws-important-border); +} + +.md-typeset .admonition.warning code, +.md-typeset .admonition.caution code, +.md-typeset .admonition.attention code, +.md-typeset details.warning code, +.md-typeset details.caution code, +.md-typeset details.attention code { + background-color: var(--aws-warning-code-bg); +} + +.md-typeset .admonition.danger code, +.md-typeset .admonition.failure code, +.md-typeset .admonition.bug code, +.md-typeset .admonition.error code, +.md-typeset details.danger code, +.md-typeset details.failure code, +.md-typeset details.bug code, +.md-typeset details.error code { + background-color: var(--aws-important-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset .admonition code, +[data-md-color-scheme="slate"] .md-typeset details code { + background-color: var(--aws-note-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset .admonition.warning code, +[data-md-color-scheme="slate"] .md-typeset .admonition.caution code, +[data-md-color-scheme="slate"] .md-typeset .admonition.attention code, +[data-md-color-scheme="slate"] .md-typeset details.warning code, +[data-md-color-scheme="slate"] .md-typeset details.caution code, +[data-md-color-scheme="slate"] .md-typeset details.attention code { + background-color: var(--aws-warning-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset .admonition.danger code, +[data-md-color-scheme="slate"] .md-typeset .admonition.failure code, +[data-md-color-scheme="slate"] .md-typeset .admonition.bug code, +[data-md-color-scheme="slate"] .md-typeset .admonition.error code, +[data-md-color-scheme="slate"] .md-typeset details.danger code, +[data-md-color-scheme="slate"] .md-typeset details.failure code, +[data-md-color-scheme="slate"] .md-typeset details.bug code, +[data-md-color-scheme="slate"] .md-typeset details.error code { + background-color: var(--aws-important-code-bg); +} + +.md-typeset .warning > .admonition-title::before, +.md-typeset .caution > .admonition-title::before, +.md-typeset .attention > .admonition-title::before, +.md-typeset details.warning > summary::before, +.md-typeset details.caution > summary::before, +.md-typeset details.attention > summary::before { + background-color: var(--aws-warning-icon); +} + +.md-typeset .danger > .admonition-title::before, +.md-typeset .failure > .admonition-title::before, +.md-typeset .bug > .admonition-title::before, +.md-typeset .error > .admonition-title::before, +.md-typeset details.danger > summary::before, +.md-typeset details.failure > summary::before, +.md-typeset details.bug > summary::before, +.md-typeset details.error > summary::before { + background-color: var(--aws-important-icon); +} + +/* Blue variants: normalize border and icon color for all remaining types */ +.md-typeset .admonition.note, +.md-typeset .admonition.info, +.md-typeset .admonition.tip, +.md-typeset .admonition.success, +.md-typeset .admonition.question, +.md-typeset .admonition.abstract, +.md-typeset .admonition.example, +.md-typeset .admonition.quote, +.md-typeset details.note, +.md-typeset details.info, +.md-typeset details.tip, +.md-typeset details.success, +.md-typeset details.question, +.md-typeset details.abstract, +.md-typeset details.example, +.md-typeset details.quote { + background-color: var(--aws-note-bg); + border-color: var(--aws-note-border); +} + +.md-typeset .note > .admonition-title::before, +.md-typeset .info > .admonition-title::before, +.md-typeset .tip > .admonition-title::before, +.md-typeset .success > .admonition-title::before, +.md-typeset .question > .admonition-title::before, +.md-typeset .abstract > .admonition-title::before, +.md-typeset .example > .admonition-title::before, +.md-typeset .quote > .admonition-title::before, +.md-typeset details.note > summary::before, +.md-typeset details.info > summary::before, +.md-typeset details.tip > summary::before, +.md-typeset details.success > summary::before, +.md-typeset details.question > summary::before, +.md-typeset details.abstract > summary::before, +.md-typeset details.example > summary::before, +.md-typeset details.quote > summary::before { + background-color: var(--aws-note-icon) !important; + height: 16px !important; + left: 0 !important; + top: 4px !important; + width: 16px !important; +} + +.md-typeset .warning > .admonition-title::before, +.md-typeset .danger > .admonition-title::before, +.md-typeset .failure > .admonition-title::before, +.md-typeset .bug > .admonition-title::before, +.md-typeset .error > .admonition-title::before, +.md-typeset .caution > .admonition-title::before, +.md-typeset .attention > .admonition-title::before, +.md-typeset details.warning > summary::before, +.md-typeset details.danger > summary::before, +.md-typeset details.failure > summary::before, +.md-typeset details.bug > summary::before, +.md-typeset details.error > summary::before, +.md-typeset details.caution > summary::before, +.md-typeset details.attention > summary::before { + height: 16px !important; + left: 0 !important; + top: 4px !important; + width: 16px !important; +} + +/* Generic collapsible sections: Cloudscape-style expandable section headers. + * Variant-classed details (note, warning, etc.) are collapsible admonitions and + * get the AWS callout skin in the override block below. + */ +.md-typeset details { + background-color: transparent !important; + border: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; + color: var(--md-default-fg-color); + margin: 16px 0; + padding: 0 !important; +} + +.md-typeset details > summary { + background-color: transparent !important; + color: #0f141a; + cursor: pointer; + display: block; + font-size: 1em; + font-weight: 700; + line-height: 1.5; + margin: 0; + outline: none; + padding: 8px 0 8px 24px !important; + position: relative; +} + +.md-typeset details > summary:hover, +.md-typeset details > summary:focus { + background-color: transparent !important; +} + +.md-typeset details > summary:hover { + color: var(--md-typeset-a-color); +} + +.md-typeset details > summary:focus-visible { + outline: 2px solid var(--md-typeset-a-color); + outline-offset: 2px; +} + +.md-typeset details > summary::-webkit-details-marker { + display: none; +} + +.md-typeset details > summary::marker { + content: ""; +} + +.md-typeset details > summary::before, +.md-typeset details.note > summary::before, +.md-typeset details.info > summary::before, +.md-typeset details.tip > summary::before, +.md-typeset details.success > summary::before, +.md-typeset details.question > summary::before, +.md-typeset details.abstract > summary::before, +.md-typeset details.example > summary::before, +.md-typeset details.quote > summary::before, +.md-typeset details.warning > summary::before, +.md-typeset details.danger > summary::before, +.md-typeset details.failure > summary::before, +.md-typeset details.bug > summary::before, +.md-typeset details.error > summary::before, +.md-typeset details.caution > summary::before, +.md-typeset details.attention > summary::before { + background: none !important; + color: #424650; + content: "▸"; + font-size: 14px !important; + height: auto !important; + left: 0 !important; + line-height: 1; + -webkit-mask: none !important; + mask: none !important; + position: absolute; + top: 12px !important; + transform-origin: 50% 50%; + transition: transform 115ms ease-out; + width: auto !important; +} + +.md-typeset details[open] > summary::before { + transform: rotate(90deg); +} + +.md-typeset details > summary:hover::before { + color: var(--md-typeset-a-color); +} + +/* Hide Material's right-side details chevron. */ +.md-typeset details > summary::after { + content: none !important; + display: none !important; +} + +.md-typeset details > :not(summary) { + padding-left: 24px !important; +} + +.md-typeset details code, +.md-typeset details.warning code, +.md-typeset details.danger code, +.md-typeset details.failure code, +.md-typeset details.bug code, +.md-typeset details.error code, +.md-typeset details.caution code, +.md-typeset details.attention code { + background-color: var(--md-code-bg-color); +} + +[data-md-color-scheme="slate"] .md-typeset details > summary { + color: #f9f9fa; +} + +[data-md-color-scheme="slate"] .md-typeset details > summary::before { + color: #dedee3; +} + +[data-md-color-scheme="slate"] .md-typeset details > summary:hover, +[data-md-color-scheme="slate"] .md-typeset details > summary:hover::before { + color: #75cfff; +} + +/* Collapsible admonitions: keep the AWS callout skin while replacing Material's + * floating chevron with a small right-aligned caret. + */ +.md-typeset details.note, +.md-typeset details.info, +.md-typeset details.tip, +.md-typeset details.success, +.md-typeset details.question, +.md-typeset details.abstract, +.md-typeset details.example, +.md-typeset details.quote, +.md-typeset details.warning, +.md-typeset details.danger, +.md-typeset details.failure, +.md-typeset details.bug, +.md-typeset details.error, +.md-typeset details.caution, +.md-typeset details.attention { + background-color: var(--aws-note-bg) !important; + border: 2px solid var(--aws-note-border) !important; + border-radius: var(--border-radius-alert-thlkk1, 12px) !important; + box-shadow: none !important; + color: var(--md-default-fg-color); + font-size: 1em; + line-height: 1.5; + margin: 16px 0; + padding: 15px 20px !important; +} + +.md-typeset details.warning, +.md-typeset details.caution, +.md-typeset details.attention { + background-color: var(--aws-warning-bg) !important; + border-color: var(--aws-warning-border) !important; +} + +.md-typeset details.danger, +.md-typeset details.failure, +.md-typeset details.bug, +.md-typeset details.error { + background-color: var(--aws-important-bg) !important; + border-color: var(--aws-important-border) !important; +} + +[data-md-color-scheme="slate"] .md-typeset details.note, +[data-md-color-scheme="slate"] .md-typeset details.info, +[data-md-color-scheme="slate"] .md-typeset details.tip, +[data-md-color-scheme="slate"] .md-typeset details.success, +[data-md-color-scheme="slate"] .md-typeset details.question, +[data-md-color-scheme="slate"] .md-typeset details.abstract, +[data-md-color-scheme="slate"] .md-typeset details.example, +[data-md-color-scheme="slate"] .md-typeset details.quote, +[data-md-color-scheme="slate"] .md-typeset details.warning, +[data-md-color-scheme="slate"] .md-typeset details.danger, +[data-md-color-scheme="slate"] .md-typeset details.failure, +[data-md-color-scheme="slate"] .md-typeset details.bug, +[data-md-color-scheme="slate"] .md-typeset details.error, +[data-md-color-scheme="slate"] .md-typeset details.caution, +[data-md-color-scheme="slate"] .md-typeset details.attention { + border-width: 1px !important; +} + +.md-typeset details.note > summary, +.md-typeset details.info > summary, +.md-typeset details.tip > summary, +.md-typeset details.success > summary, +.md-typeset details.question > summary, +.md-typeset details.abstract > summary, +.md-typeset details.example > summary, +.md-typeset details.quote > summary, +.md-typeset details.warning > summary, +.md-typeset details.danger > summary, +.md-typeset details.failure > summary, +.md-typeset details.bug > summary, +.md-typeset details.error > summary, +.md-typeset details.caution > summary, +.md-typeset details.attention > summary { + background-color: transparent !important; + color: var(--md-default-fg-color); + cursor: pointer; + display: block; + font-size: 1em; + font-weight: 700; + line-height: 1.5; + margin: 0; + outline: none; + padding: 0 28px 0 27px !important; + position: relative; +} + +.md-typeset details.note > summary:hover, +.md-typeset details.info > summary:hover, +.md-typeset details.tip > summary:hover, +.md-typeset details.success > summary:hover, +.md-typeset details.question > summary:hover, +.md-typeset details.abstract > summary:hover, +.md-typeset details.example > summary:hover, +.md-typeset details.quote > summary:hover, +.md-typeset details.warning > summary:hover, +.md-typeset details.danger > summary:hover, +.md-typeset details.failure > summary:hover, +.md-typeset details.bug > summary:hover, +.md-typeset details.error > summary:hover, +.md-typeset details.caution > summary:hover, +.md-typeset details.attention > summary:hover { + background-color: transparent !important; + color: var(--md-default-fg-color); +} + +.md-typeset details.note > summary::before, +.md-typeset details.info > summary::before, +.md-typeset details.tip > summary::before, +.md-typeset details.success > summary::before, +.md-typeset details.question > summary::before, +.md-typeset details.abstract > summary::before, +.md-typeset details.example > summary::before, +.md-typeset details.quote > summary::before, +.md-typeset details.warning > summary::before, +.md-typeset details.danger > summary::before, +.md-typeset details.failure > summary::before, +.md-typeset details.bug > summary::before, +.md-typeset details.error > summary::before, +.md-typeset details.caution > summary::before, +.md-typeset details.attention > summary::before { + content: ""; + height: 16px !important; + left: 0 !important; + line-height: 1; + position: absolute; + top: 4px !important; + transform: none; + width: 16px !important; + -webkit-mask-position: center !important; + mask-position: center !important; + -webkit-mask-repeat: no-repeat !important; + mask-repeat: no-repeat !important; + -webkit-mask-size: 16px 16px !important; + mask-size: 16px 16px !important; +} + +.md-typeset details.note > summary::before, +.md-typeset details.info > summary::before, +.md-typeset details.tip > summary::before, +.md-typeset details.success > summary::before, +.md-typeset details.question > summary::before, +.md-typeset details.abstract > summary::before, +.md-typeset details.example > summary::before, +.md-typeset details.quote > summary::before { + background-color: var(--aws-note-icon) !important; + -webkit-mask-image: var(--aws-admonition-icon-note) !important; + mask-image: var(--aws-admonition-icon-note) !important; +} + +.md-typeset details.warning > summary::before, +.md-typeset details.caution > summary::before, +.md-typeset details.attention > summary::before { + background-color: var(--aws-warning-icon) !important; + -webkit-mask-image: var(--aws-admonition-icon-warning) !important; + mask-image: var(--aws-admonition-icon-warning) !important; +} + +.md-typeset details.danger > summary::before, +.md-typeset details.failure > summary::before, +.md-typeset details.bug > summary::before, +.md-typeset details.error > summary::before { + background-color: var(--aws-important-icon) !important; + -webkit-mask-image: var(--aws-admonition-icon-warning) !important; + mask-image: var(--aws-admonition-icon-warning) !important; +} + +.md-typeset details.note > summary::after, +.md-typeset details.info > summary::after, +.md-typeset details.tip > summary::after, +.md-typeset details.success > summary::after, +.md-typeset details.question > summary::after, +.md-typeset details.abstract > summary::after, +.md-typeset details.example > summary::after, +.md-typeset details.quote > summary::after, +.md-typeset details.warning > summary::after, +.md-typeset details.danger > summary::after, +.md-typeset details.failure > summary::after, +.md-typeset details.bug > summary::after, +.md-typeset details.error > summary::after, +.md-typeset details.caution > summary::after, +.md-typeset details.attention > summary::after { + background: none !important; + color: #424650; + content: "▸" !important; + display: block !important; + font-size: 12px; + height: auto; + line-height: 1; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); + transform-origin: 50% 50%; + transition: transform 115ms ease-out; + width: auto; +} + +.md-typeset details.note[open] > summary::after, +.md-typeset details.info[open] > summary::after, +.md-typeset details.tip[open] > summary::after, +.md-typeset details.success[open] > summary::after, +.md-typeset details.question[open] > summary::after, +.md-typeset details.abstract[open] > summary::after, +.md-typeset details.example[open] > summary::after, +.md-typeset details.quote[open] > summary::after, +.md-typeset details.warning[open] > summary::after, +.md-typeset details.danger[open] > summary::after, +.md-typeset details.failure[open] > summary::after, +.md-typeset details.bug[open] > summary::after, +.md-typeset details.error[open] > summary::after, +.md-typeset details.caution[open] > summary::after, +.md-typeset details.attention[open] > summary::after { + transform: translateY(-50%) rotate(90deg); +} + +.md-typeset details.note > :not(summary), +.md-typeset details.info > :not(summary), +.md-typeset details.tip > :not(summary), +.md-typeset details.success > :not(summary), +.md-typeset details.question > :not(summary), +.md-typeset details.abstract > :not(summary), +.md-typeset details.example > :not(summary), +.md-typeset details.quote > :not(summary), +.md-typeset details.warning > :not(summary), +.md-typeset details.danger > :not(summary), +.md-typeset details.failure > :not(summary), +.md-typeset details.bug > :not(summary), +.md-typeset details.error > :not(summary), +.md-typeset details.caution > :not(summary), +.md-typeset details.attention > :not(summary) { + padding-left: 27px !important; +} + +.md-typeset details.note code, +.md-typeset details.info code, +.md-typeset details.tip code, +.md-typeset details.success code, +.md-typeset details.question code, +.md-typeset details.abstract code, +.md-typeset details.example code, +.md-typeset details.quote code { + background-color: var(--aws-note-code-bg); +} + +.md-typeset details.warning code, +.md-typeset details.caution code, +.md-typeset details.attention code { + background-color: var(--aws-warning-code-bg); +} + +.md-typeset details.danger code, +.md-typeset details.failure code, +.md-typeset details.bug code, +.md-typeset details.error code { + background-color: var(--aws-important-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset details.note code, +[data-md-color-scheme="slate"] .md-typeset details.info code, +[data-md-color-scheme="slate"] .md-typeset details.tip code, +[data-md-color-scheme="slate"] .md-typeset details.success code, +[data-md-color-scheme="slate"] .md-typeset details.question code, +[data-md-color-scheme="slate"] .md-typeset details.abstract code, +[data-md-color-scheme="slate"] .md-typeset details.example code, +[data-md-color-scheme="slate"] .md-typeset details.quote code { + background-color: var(--aws-note-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset details.warning code, +[data-md-color-scheme="slate"] .md-typeset details.caution code, +[data-md-color-scheme="slate"] .md-typeset details.attention code { + background-color: var(--aws-warning-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset details.danger code, +[data-md-color-scheme="slate"] .md-typeset details.failure code, +[data-md-color-scheme="slate"] .md-typeset details.bug code, +[data-md-color-scheme="slate"] .md-typeset details.error code { + background-color: var(--aws-important-code-bg); +} + +[data-md-color-scheme="slate"] .md-typeset details.note > summary, +[data-md-color-scheme="slate"] .md-typeset details.info > summary, +[data-md-color-scheme="slate"] .md-typeset details.tip > summary, +[data-md-color-scheme="slate"] .md-typeset details.success > summary, +[data-md-color-scheme="slate"] .md-typeset details.question > summary, +[data-md-color-scheme="slate"] .md-typeset details.abstract > summary, +[data-md-color-scheme="slate"] .md-typeset details.example > summary, +[data-md-color-scheme="slate"] .md-typeset details.quote > summary, +[data-md-color-scheme="slate"] .md-typeset details.warning > summary, +[data-md-color-scheme="slate"] .md-typeset details.danger > summary, +[data-md-color-scheme="slate"] .md-typeset details.failure > summary, +[data-md-color-scheme="slate"] .md-typeset details.bug > summary, +[data-md-color-scheme="slate"] .md-typeset details.error > summary, +[data-md-color-scheme="slate"] .md-typeset details.caution > summary, +[data-md-color-scheme="slate"] .md-typeset details.attention > summary { + color: #f9f9fa; +} + +[data-md-color-scheme="slate"] .md-typeset details.note > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.info > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.tip > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.success > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.question > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.abstract > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.example > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.quote > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.warning > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.danger > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.failure > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.bug > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.error > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.caution > summary::after, +[data-md-color-scheme="slate"] .md-typeset details.attention > summary::after { + color: #dedee3; +} + +/* -------------------------------------------------------------------------- + * Tables: gray sticky header, full cell borders, drop shadow container + * ------------------------------------------------------------------------ */ +.md-typeset table:not([class]) { + border: none; + border-top: 1px solid var(--aws-border-default); + border-radius: 0; + box-shadow: + 0 1px 1px rgba(0, 28, 36, 0.3), + 1px 1px 1px rgba(0, 28, 36, 0.15), + -1px 1px 1px rgba(0, 28, 36, 0.15); + font-size: 0.7rem; /* 14px, matches AWS table density */ +} + +.md-typeset table:not([class]) th { + background-color: var(--aws-table-header-bg); + border: 1px solid var(--aws-border-default); + border-top: none; + color: var(--md-default-fg-color); + font-weight: 700; + padding: 1em 20px; + vertical-align: bottom; +} + +.md-typeset table:not([class]) td { + border: 1px solid var(--aws-border-default); + border-top: none; + padding: 8px 20px; + vertical-align: top; +} + +/* -------------------------------------------------------------------------- + * Navigation sidebars: 14px, blue active item + * ------------------------------------------------------------------------ */ +.md-nav { + font-size: 0.7rem; +} + +.md-nav__link--active, +.md-nav__link--active code { + color: var(--md-typeset-a-color); +} + +.md-nav__item .md-nav__link--active { + font-weight: 700; +} + +/* -------------------------------------------------------------------------- + * Breadcrumb-ish / misc chrome + * ------------------------------------------------------------------------ */ +.md-footer-meta { + background-color: var(--md-footer-bg-color--dark); +} + +/* Search input on dark header */ +.md-search__input { + background-color: rgba(255, 255, 255, 0.12); +} + +.md-search__input:hover { + background-color: rgba(255, 255, 255, 0.2); +} diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 4901162e1a..9576f546c5 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -12,22 +12,10 @@ font-size: 0.75rem; } -.md-typeset a { - border-bottom: 0.1px dashed black; -} - -.md-typeset table:not([class]) { - font-size: 0.75rem; -} - .md-tabs__link { font-size: 0.8rem; } -.md-tabs__link--active { - border-bottom: 6px solid white; -} - .md-nav__link--active { font-weight: bold; } @@ -37,10 +25,6 @@ font-size: 0.7rem; } -[data-md-color-scheme="slate"] { - --md-typeset-a-color: rgb(28, 152, 152); -} - .copyMe { cursor: pointer; border-bottom: 0.1px dashed black; @@ -49,8 +33,3 @@ .copyMe::after { content: " 📋"; } - -p > code, -li > code { - font-weight: bold; -} diff --git a/docs/stylesheets/fonts/amazon-ember-300.woff b/docs/stylesheets/fonts/amazon-ember-300.woff new file mode 100644 index 0000000000000000000000000000000000000000..abb987ddf4d1f7521616d59e26de1ce784e45283 GIT binary patch literal 17720 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 XPoN-z{{iOSVrKvV00CC2Uhn__=I_gx literal 0 HcmV?d00001 diff --git a/docs/stylesheets/fonts/amazon-ember-400-italic.woff b/docs/stylesheets/fonts/amazon-ember-400-italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..90c756a10429e69a66a210baab403b6f7d846476 GIT binary patch literal 18836 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 literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index b37c4e969b..10847b8fbb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -32,78 +32,66 @@ watch: [ ] nav: - - Homepage: - - index.md - - Getting Started: - - Installation: getting-started/installation.md - - Usage patterns: getting-started/usage-patterns.md - - TypeScript settings: getting-started/typescript-settings.md - - Lambda layers: getting-started/lambda-layers.md - - Workshop: https://s12d.com/powertools-for-aws-lambda-workshop" target="_blank - - Features: - - features/index.md - - features/tracer.md - - features/logger.md - - features/metrics.md - - Event Handler: - - features/event-handler/index.md - - features/event-handler/http.md - - features/event-handler/appsync-events.md - - features/event-handler/appsync-graphql.md - - features/event-handler/bedrock-agents.md - - features/parameters.md - - features/idempotency.md - - features/batch.md - - features/jmespath.md - - features/parser.md - - features/validation.md - - features/data-masking.md - - features/kafka.md - - features/metadata.md - - Environment variables: environment-variables.md + - What is Powertools for AWS Lambda (TypeScript): index.md + - Getting Started: + - Installation: getting-started/installation.md + - Usage patterns: getting-started/usage-patterns.md + - TypeScript settings: getting-started/typescript-settings.md + - Lambda layers: getting-started/lambda-layers.md + - features/tracer.md + - features/logger.md + - features/metrics.md + - Event Handler: + - features/event-handler/index.md + - features/event-handler/http.md + - features/event-handler/appsync-events.md + - features/event-handler/appsync-graphql.md + - features/event-handler/bedrock-agents.md + - features/parameters.md + - features/idempotency.md + - features/batch.md + - features/jmespath.md + - features/parser.md + - features/validation.md + - features/data-masking.md + - features/kafka.md + - features/metadata.md + - Environment variables: environment-variables.md + - API reference: api/ + - Changelog: changelog.md + - Versioning policy: versioning.md + - Resources: - Upgrade guide: upgrade.md - Community Content: we_made_this.md - - Roadmap: roadmap.md - - Changelog: changelog.md - - Resources: - - "llms.txt": ./llms.txt - - "llms.txt (full version)": ./llms-full.txt - - API reference: api/ - - Processes: - - Roadmap: roadmap.md - - Versioning policy: versioning.md - - Maintainers: maintainers.md - - Contributing: - - Development environment: contributing/setup.md - - Your first contribution: contributing/getting_started.md - - Conventions: contributing/conventions.md - - Testing: contributing/testing.md + - "llms.txt": ./llms.txt theme: name: material - font: - text: Ubuntu + font: false # Amazon Ember is self-hosted via stylesheets/aws-restyle.css palette: - - scheme: default - primary: deep orange - accent: deep orange + - media: "(prefers-color-scheme)" toggle: - icon: material/lightbulb - name: Switch to dark mode - - scheme: slate - primary: deep orange - accent: deep orange + icon: material/brightness-auto + name: Device + - media: "(prefers-color-scheme: light)" + scheme: default + primary: custom + accent: custom toggle: - icon: material/lightbulb-outline - name: Switch to light mode + icon: material/brightness-7 + name: Light + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: custom + accent: custom + toggle: + icon: material/brightness-4 + name: Dark features: - - header.autohide - - navigation.sections - navigation.top - navigation.instant - navigation.indexes - navigation.tracking - - navigation.tabs - content.code.annotate - content.code.copy - announce.dismiss @@ -132,7 +120,7 @@ markdown_extensions: - meta - toc: permalink: true - toc_depth: 4 + toc_depth: 2 - attr_list - md_in_html - pymdownx.emoji: @@ -175,6 +163,8 @@ plugins: markdown_description: Powertools for AWS Lambda (TypeScript) is a developer toolkit to implement Serverless best practices and increase developer velocity. It provides a suite of utilities for AWS Lambda Functions that makes tracing with AWS X-Ray, structured logging and creating custom metrics asynchronously easier. full_output: llms-full.txt sections: + What is Powertools for AWS Lambda (TypeScript): + - index.md Getting Started: - getting-started/installation.md - getting-started/usage-patterns.md @@ -184,6 +174,7 @@ plugins: - features/tracer.md - features/logger.md - features/metrics.md + - features/event-handler/index.md - features/event-handler/http.md - features/event-handler/appsync-events.md - features/event-handler/appsync-graphql.md @@ -194,17 +185,29 @@ plugins: - features/jmespath.md - features/parser.md - features/validation.md + - features/data-masking.md - features/kafka.md - features/metadata.md - Environment variables: + Environment variables: - environment-variables.md - Upgrade guide: + Changelog: + - changelog.md + Versioning policy: + - versioning.md + Resources: - upgrade.md + - we_made_this.md extra_css: - stylesheets/extra.css + - stylesheets/aws-restyle.css + - stylesheets/aws-header.css + - stylesheets/aws-nav.css + - stylesheets/aws-content.css + - stylesheets/aws-footer.css extra_javascript: - javascript/extra.js + - javascript/aws-header.js - https://docs.aws.amazon.com/powertools/shared/mermaid.min.js - https://docs.aws.amazon.com/assets/js/awsdocs-boot.js From 5c304823d9f0186516d534687d3f8fccee0fd90f Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Wed, 8 Jul 2026 22:47:20 +0200 Subject: [PATCH 2/2] docs: add sidebar vertical divider matching AWS docs Match the AWS docs sidebar edge with a responsive vertical divider. Keep the divider hidden when the sidebar collapses and adapt it for dark mode. --- docs/stylesheets/aws-nav.css | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/stylesheets/aws-nav.css b/docs/stylesheets/aws-nav.css index 9b92cd620e..22e6bd161a 100644 --- a/docs/stylesheets/aws-nav.css +++ b/docs/stylesheets/aws-nav.css @@ -41,6 +41,27 @@ } @media screen and (min-width: 76.25em) { + .md-sidebar--primary { + min-height: calc(100vh - var(--md-header-height, 2.4rem)); + position: sticky; + } + + .md-sidebar--primary::after { + background-color: #c6c6cd; + bottom: 0; + content: ""; + pointer-events: none; + position: absolute; + right: 0; + top: 0; + width: 1px; + z-index: 1; + } + + [data-md-color-scheme="slate"] .md-sidebar--primary::after { + background-color: var(--aws-nav-divider); + } + .md-sidebar--primary .md-sidebar__scrollwrap { position: relative; }