diff --git a/docs/guide/book.toml b/docs/guide/book.toml index 08713e86..64877af8 100644 --- a/docs/guide/book.toml +++ b/docs/guide/book.toml @@ -14,3 +14,11 @@ preferred-dark-theme = "navy" git-repository-url = "https://github.com/awslabs/aws-lambda-web-adapter" git-repository-icon = "fa-github" site-url = "/aws-lambda-web-adapter/" +additional-css = ["theme/custom.css"] +additional-js = [] +no-section-label = false +cname = "" + +[output.html.fold] +enable = true +level = 1 diff --git a/docs/guide/src/favicon.svg b/docs/guide/src/favicon.svg new file mode 100644 index 00000000..8c36db38 --- /dev/null +++ b/docs/guide/src/favicon.svg @@ -0,0 +1,4 @@ + + + λ + diff --git a/docs/guide/theme/custom.css b/docs/guide/theme/custom.css new file mode 100644 index 00000000..7f84db57 --- /dev/null +++ b/docs/guide/theme/custom.css @@ -0,0 +1,229 @@ +/* AWS Lambda Web Adapter — mdBook custom theme */ + +/* ── Fonts ── */ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); + +:root { + --aws-orange: #ff9900; + --aws-orange-dark: #ec7211; + --aws-squid-ink: #232f3e; + --aws-smile: #ff9900; +} + +/* ── Light theme ── */ +.light { + --bg: #ffffff; + --fg: #1a1a2e; + --sidebar-bg: #f8f9fb; + --sidebar-fg: #333; + --sidebar-active: var(--aws-orange-dark); + --links: #0073bb; + --inline-code-color: #c7254e; + --theme-popup-bg: #fafafa; + --search-mark-bg: #fff3cd; +} + +/* ── Navy (dark) theme ── */ +.navy { + --bg: #161923; + --fg: #d4d4d8; + --sidebar-bg: #1a1f2e; + --sidebar-fg: #b0b8c8; + --sidebar-active: var(--aws-orange); + --links: #59b0f0; + --inline-code-color: #f0a8c0; + --theme-popup-bg: #1e2433; + --search-mark-bg: #4a3f00; +} + +/* ── Global typography ── */ +body, .sidebar, .content, .menu-title { + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; +} + +code, pre, .hljs { + font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace; + font-size: 0.875em; +} + +.content main { + max-width: 52rem; + line-height: 1.75; +} + +.content main h1 { font-size: 2em; font-weight: 700; margin-top: 0; } +.content main h2 { font-size: 1.5em; font-weight: 600; margin-top: 2.5rem; padding-bottom: 0.3rem; border-bottom: 2px solid var(--aws-orange); } +.content main h3 { font-size: 1.2em; font-weight: 600; margin-top: 1.8rem; } + +/* ── Sidebar ── */ +.sidebar { + font-size: 0.9rem; + padding-top: 1rem; +} + +.sidebar .sidebar-scrollbox { + padding: 0 1.2rem; +} + +.sidebar ol.chapter li a { + padding: 6px 0; + border-radius: 4px; + transition: color 0.15s; +} + +.sidebar ol.chapter li a:hover { + color: var(--sidebar-active); +} + +.sidebar ol.chapter li.chapter-item.expanded a, +.sidebar ol.chapter li a.active { + color: var(--sidebar-active); + font-weight: 600; +} + +/* Sidebar section headers */ +.sidebar .chapter li.part-title { + font-size: 0.75rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--aws-orange-dark); + margin-top: 1.2rem; + padding-bottom: 0.2rem; +} + +.navy .sidebar .chapter li.part-title { + color: var(--aws-orange); +} + +/* ── Code blocks ── */ +pre { + border-radius: 8px; + padding: 1rem 1.2rem; + border: 1px solid rgba(128, 128, 128, 0.15); +} + +.light pre { + background: #f6f8fa; +} + +.navy pre { + background: #0d1117; +} + +code:not(pre > code) { + padding: 0.15em 0.4em; + border-radius: 4px; + font-size: 0.88em; +} + +.light code:not(pre > code) { + background: #f0f2f5; +} + +.navy code:not(pre > code) { + background: #252b38; +} + +/* ── Tables ── */ +table { + border-collapse: collapse; + width: 100%; + margin: 1.2rem 0; + font-size: 0.92em; +} + +table thead th { + background: var(--aws-squid-ink); + color: #fff; + font-weight: 600; + padding: 0.65rem 0.9rem; + text-align: left; +} + +.navy table thead th { + background: #252d3d; +} + +table tbody td { + padding: 0.55rem 0.9rem; + border-bottom: 1px solid rgba(128, 128, 128, 0.15); +} + +table tbody tr:hover { + background: rgba(255, 153, 0, 0.04); +} + +/* ── Blockquotes (used for admonitions) ── */ +blockquote { + border-left: 4px solid var(--aws-orange); + background: rgba(255, 153, 0, 0.06); + border-radius: 0 6px 6px 0; + padding: 0.8rem 1.2rem; + margin: 1.2rem 0; +} + +blockquote p:first-child strong { + color: var(--aws-orange-dark); +} + +.navy blockquote p:first-child strong { + color: var(--aws-orange); +} + +/* ── Links ── */ +.content a { + text-decoration: none; + border-bottom: 1px solid transparent; + transition: border-color 0.15s; +} + +.content a:hover { + border-bottom-color: var(--links); +} + +/* ── Navigation buttons ── */ +.nav-chapters { + font-size: 0.9rem; + opacity: 0.7; + transition: opacity 0.15s; +} + +.nav-chapters:hover { + opacity: 1; + color: var(--aws-orange); +} + +/* ── Menu bar ── */ +.menu-bar { + border-bottom: 1px solid rgba(128, 128, 128, 0.12); +} + +.menu-bar .menu-title { + font-weight: 600; + font-size: 1rem; +} + +/* ── Scrollbar (webkit) ── */ +::-webkit-scrollbar { width: 6px; } +::-webkit-scrollbar-track { background: transparent; } +::-webkit-scrollbar-thumb { background: rgba(128, 128, 128, 0.3); border-radius: 3px; } +::-webkit-scrollbar-thumb:hover { background: rgba(128, 128, 128, 0.5); } + +/* ── Images ── */ +.content main img { + border-radius: 8px; + margin: 1rem 0; + max-width: 100%; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); +} + +.navy .content main img { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); +} + +/* ── Print tweaks ── */ +@media print { + .content main h2 { border-bottom-color: #ccc; } + table thead th { background: #eee; color: #000; } +} diff --git a/docs/guide/theme/favicon.svg b/docs/guide/theme/favicon.svg new file mode 100644 index 00000000..8c36db38 --- /dev/null +++ b/docs/guide/theme/favicon.svg @@ -0,0 +1,4 @@ + + + λ + diff --git a/docs/guide/theme/head.hbs b/docs/guide/theme/head.hbs new file mode 100644 index 00000000..6f17e63c --- /dev/null +++ b/docs/guide/theme/head.hbs @@ -0,0 +1 @@ +