diff --git a/.gitignore b/.gitignore index 02a8a8a..9641068 100644 --- a/.gitignore +++ b/.gitignore @@ -136,4 +136,8 @@ dist .pnp.* AGENTS.md -CLAUDE.md \ No newline at end of file +CLAUDE.md +.DS_Store +benchmarks/.DS_Store +/website/.agents +benchmarks/.DS_Store diff --git a/benchmarks/.DS_Store b/benchmarks/.DS_Store index 9a60d59..fcda7c9 100644 Binary files a/benchmarks/.DS_Store and b/benchmarks/.DS_Store differ diff --git a/website/package-lock.json b/website/package-lock.json index a2623be..105302a 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -548,15 +548,15 @@ } }, "node_modules/@next/env": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.3.tgz", - "integrity": "sha512-ZWXyj4uNu4GCWQw9cjRxWlbD+33mcDszIo9iQxFnBX3Wmgq9ulaSJcl6VhuWx5pCWqqD+9W6Wfz7N0lM5lYPMA==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.6.tgz", + "integrity": "sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==", "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.3.tgz", - "integrity": "sha512-u37KDKTKQ+OQLvY+z7SNXixwo4Q2/IAJFDzU1fYe66IbCE51aDSAzkNDkWmLN0yjTUh4BKBd+hb69jYn6qqqSg==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.6.tgz", + "integrity": "sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==", "cpu": [ "arm64" ], @@ -570,9 +570,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.3.tgz", - "integrity": "sha512-gHjL/qy6Q6CG3176FWbAKyKh9IfntKZTB3RY/YOJdDFpHGsUDXVH38U4mMNpHVGXmeYW4wj22dMp1lTfmu/bTQ==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.6.tgz", + "integrity": "sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==", "cpu": [ "x64" ], @@ -586,9 +586,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.3.tgz", - "integrity": "sha512-U6vtblPtU/P14Y/b/n9ZY0GOxbbIhTFuaFR7F4/uMBidCi2nSdaOFhA0Go81L61Zd6527+yvuX44T4ksnf8T+Q==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.6.tgz", + "integrity": "sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==", "cpu": [ "arm64" ], @@ -605,9 +605,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.3.tgz", - "integrity": "sha512-/YV0LgjHUmfhQpn9bVoGc4x4nan64pkhWR5wyEV8yCOfwwrH630KpvRg86olQHTwHIn1z59uh6JwKvHq1h4QEw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.6.tgz", + "integrity": "sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==", "cpu": [ "arm64" ], @@ -624,9 +624,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.3.tgz", - "integrity": "sha512-/HiWEcp+WMZ7VajuiMEFGZ6cg0+aYZPqCJD3YJEfpVWQsKYSjXQG06vJP6F1rdA03COD9Fef4aODs3YxKx+RDQ==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.6.tgz", + "integrity": "sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==", "cpu": [ "x64" ], @@ -643,9 +643,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.3.tgz", - "integrity": "sha512-Kt44hGJfZSefebhk/7nIdivoDr3Ugp5+oNz9VvF3GUtfxutucUIHfIO0ZYO8QlOPDQloUVQn4NVC/9JvHRk9hw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.6.tgz", + "integrity": "sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==", "cpu": [ "x64" ], @@ -662,9 +662,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.3.tgz", - "integrity": "sha512-O2NZ9ie3Tq6xj5Z5CSwBT3+aWAMW2PIZ4egUi9MaWLkwaehgtB7YZjPm+UpcNpKOme0IQuqDcor7BsW6QBiQBw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.6.tgz", + "integrity": "sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==", "cpu": [ "arm64" ], @@ -678,9 +678,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.3.tgz", - "integrity": "sha512-Ibm29/GgB/ab5n7XKqlStkm54qqZE8v2FnijUPBgrd67FWrac45o/RsNlaOWjme/B5UqeWt/8KM4aWBwA1D2Kw==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.6.tgz", + "integrity": "sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==", "cpu": [ "x64" ], @@ -1501,9 +1501,9 @@ } }, "node_modules/dompurify": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", - "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.7.tgz", + "integrity": "sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -2089,9 +2089,9 @@ } }, "node_modules/mermaid": { - "version": "10.9.5", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.5.tgz", - "integrity": "sha512-eRlKEjzak4z1rcXeCd1OAlyawhrptClQDo8OuI8n6bSVqJ9oMfd5Lrf3Q+TdJHewi/9AIOc3UmEo8Fz+kNzzuQ==", + "version": "10.9.6", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.6.tgz", + "integrity": "sha512-XRjjRaI4aPCAMpVaOhxIwLYdx3U4Cb6mN0M268ggFAfFRqsvyFW8zxWbEZazN/mPkqsVWThb0oa1UawWK+XMNg==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^6.0.1", @@ -2112,7 +2112,7 @@ "non-layered-tidy-tree-layout": "^2.0.2", "stylis": "^4.1.3", "ts-dedent": "^2.2.0", - "uuid": "^9.0.0", + "uuid": "^9.0.0 || ^10 || ^11.1.0 || ^12 || ^13 || ^14.0.0", "web-worker": "^1.2.0" } }, @@ -3220,12 +3220,12 @@ } }, "node_modules/next": { - "version": "16.2.3", - "resolved": "https://registry.npmjs.org/next/-/next-16.2.3.tgz", - "integrity": "sha512-9V3zV4oZFza3PVev5/poB9g0dEafVcgNyQ8eTRop8GvxZjV2G15FC5ARuG1eFD42QgeYkzJBJzHghNP8Ad9xtA==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/next/-/next-16.2.6.tgz", + "integrity": "sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==", "license": "MIT", "dependencies": { - "@next/env": "16.2.3", + "@next/env": "16.2.6", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", @@ -3239,14 +3239,14 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.2.3", - "@next/swc-darwin-x64": "16.2.3", - "@next/swc-linux-arm64-gnu": "16.2.3", - "@next/swc-linux-arm64-musl": "16.2.3", - "@next/swc-linux-x64-gnu": "16.2.3", - "@next/swc-linux-x64-musl": "16.2.3", - "@next/swc-win32-arm64-msvc": "16.2.3", - "@next/swc-win32-x64-msvc": "16.2.3", + "@next/swc-darwin-arm64": "16.2.6", + "@next/swc-darwin-x64": "16.2.6", + "@next/swc-linux-arm64-gnu": "16.2.6", + "@next/swc-linux-arm64-musl": "16.2.6", + "@next/swc-linux-x64-gnu": "16.2.6", + "@next/swc-linux-x64-musl": "16.2.6", + "@next/swc-win32-arm64-msvc": "16.2.6", + "@next/swc-win32-x64-msvc": "16.2.6", "sharp": "^0.34.5" }, "peerDependencies": { @@ -3786,16 +3786,16 @@ } }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/uvu": { diff --git a/website/package.json b/website/package.json index 431d5e4..d1b90b9 100644 --- a/website/package.json +++ b/website/package.json @@ -10,11 +10,11 @@ }, "dependencies": { "gray-matter": "^4.0.3", - "next": "^16.2.3", + "next": "^16.2.6", "react": "^19.2.5", "react-dom": "^19.2.5", "react-markdown": "^9.0.1", "remark-gfm": "^4.0.0", - "mermaid": "^10.9.1" + "mermaid": "^10.9.6" } } diff --git a/website/src/app/globals.css b/website/src/app/globals.css index 67f1386..d165940 100644 --- a/website/src/app/globals.css +++ b/website/src/app/globals.css @@ -10,7 +10,12 @@ --focus: #2563eb; --shadow: 0 4px 10px rgba(17, 24, 39, 0.05); --radius: 10px; - --font-sans: var(--font-body), "Segoe UI", sans-serif; + --font-sans: "Helvetica Neue", Helvetica, Arial, sans-serif; + --font-heading: "Helvetica Neue", Helvetica, Arial, sans-serif; + --font-mono: "SF Mono", "Fira Code", ui-monospace, monospace; + --code-bg: #0d1117; + --code-fg: #e6edf3; + --code-border: #30363d; } @media (prefers-color-scheme: dark) { @@ -25,6 +30,7 @@ --accent-strong: #7dd1f4; --focus: #7dd1f4; --shadow: 0 12px 38px rgba(0, 0, 0, 0.35); + --code-bg: #1c2128; } } @@ -43,6 +49,7 @@ body { font-family: var(--font-sans); line-height: 1.55; text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; } .skip-link { @@ -344,108 +351,127 @@ button:focus-visible, font-size: 0.92rem; } +/* ---- DOCS ---- */ + .docs-path-strip { - margin-top: 0.9rem; + margin-top: 1.1rem; display: flex; flex-wrap: wrap; - gap: 0.55rem; + gap: 0.4rem; + align-items: center; } .docs-path-link { text-decoration: none; border: 1px solid var(--border); - border-radius: 6px; - background: var(--surface); - padding: 0.3rem 0.6rem; - font-size: 0.84rem; + border-radius: 3px; + background: transparent; + padding: 0.26rem 0.55rem; + font-size: 0.72rem; + font-weight: 700; color: var(--muted); + text-transform: uppercase; + letter-spacing: 0.06em; + transition: color 140ms, background 140ms, border-color 140ms; } .docs-path-link:hover { - background: var(--surface-soft); + background: var(--surface); color: var(--text); + border-color: var(--text); } .docs-shell { - margin-top: 1rem; + margin-top: 1.25rem; } .docs-topbar { - border: 1px solid var(--border); - border-radius: 8px; - background: var(--surface); - padding: 1rem; + border: none; + background: transparent; + border-radius: 0; + padding: 0 0 1.1rem; + border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; - align-items: flex-start; - gap: 0.8rem; + align-items: flex-end; + gap: 1rem; } .docs-topbar h1 { - margin: 0.22rem 0 0; + margin: 0.25rem 0 0; font-family: var(--font-heading); - line-height: 1.1; - letter-spacing: -0.02em; + font-size: 1.75rem; + font-weight: 700; + line-height: 1; + letter-spacing: -0.04em; } .docs-topbar-eyebrow { margin: 0; - font-size: 0.72rem; + font-size: 0.64rem; + font-weight: 700; text-transform: uppercase; - letter-spacing: 0.1em; + letter-spacing: 0.14em; color: var(--muted); } .docs-topbar-links { display: flex; - gap: 0.45rem; + gap: 0.35rem; flex-wrap: wrap; justify-content: flex-end; + align-items: flex-end; } .docs-topbar-links a { text-decoration: none; border: 1px solid var(--border); - border-radius: 6px; - background: var(--surface-soft); + border-radius: 3px; + background: transparent; color: var(--muted); - font-size: 0.84rem; - font-weight: 500; - padding: 0.32rem 0.58rem; + font-size: 0.68rem; + font-weight: 700; + letter-spacing: 0.06em; + padding: 0.26rem 0.5rem; + text-transform: uppercase; + transition: color 140ms, background 140ms, border-color 140ms; } .docs-topbar-links a:hover { color: var(--text); - background: var(--surface); + background: var(--surface-soft); + border-color: var(--text); } .docs-layout { - margin-top: 0.8rem; + margin-top: 0; display: grid; - grid-template-columns: minmax(220px, 250px) 1fr; - gap: 0.9rem; + grid-template-columns: 210px 1fr; + gap: 0; + min-height: 70vh; } .sidebar { - border: 1px solid var(--border); - background: var(--surface); - border-radius: 8px; - padding: 0.75rem; + border: none; + background: transparent; + border-radius: 0; + padding: 1.5rem 1.25rem 2rem 0; + border-right: 1px solid var(--border); height: fit-content; position: sticky; top: 1rem; - box-shadow: none; } .sidebar-group + .sidebar-group { - margin-top: 1rem; + margin-top: 1.5rem; } .sidebar-group h4 { - margin: 0 0 0.48rem; - font-size: 0.7rem; + margin: 0 0 0.5rem; + font-size: 0.62rem; + font-weight: 700; text-transform: uppercase; - letter-spacing: 0.1em; + letter-spacing: 0.14em; color: var(--muted); } @@ -456,50 +482,88 @@ button:focus-visible, } .sidebar li + li { - margin-top: 0.12rem; + margin-top: 0.05rem; } .sidebar a { display: block; - border-radius: 6px; + border-radius: 0; text-decoration: none; color: var(--muted); - padding: 0.35rem 0.52rem; + padding: 0.35rem 0.5rem; border-left: 2px solid transparent; - font-size: 0.92rem; + font-size: 0.88rem; + font-weight: 400; + transition: color 140ms, border-left-color 140ms; +} + +.sidebar a:hover { + color: var(--text); + background: transparent; + border-left-color: var(--border); } -.sidebar a:hover, .sidebar a.active { color: var(--text); - background: var(--surface-soft); + background: transparent; border-left-color: var(--accent); + font-weight: 600; } .prose { - border: 1px solid var(--border); - border-radius: 8px; - background: var(--surface); - padding: 1.15rem 1.15rem; + border: none; + border-radius: 0; + background: transparent; + padding: 1.75rem 0 3rem 2rem; min-width: 0; + max-width: 78ch; } .prose h1, .prose h2, -.prose h3 { +.prose h3, +.prose h4 { font-family: var(--font-heading); text-wrap: balance; - line-height: 1.22; - letter-spacing: -0.02em; + line-height: 1.18; + letter-spacing: -0.025em; + font-weight: 700; } .prose h1 { margin-top: 0; + font-size: 2rem; + letter-spacing: -0.04em; +} + +.prose h2 { + font-size: 1.3rem; + margin-top: 2.75rem; + margin-bottom: 0.75rem; + padding-top: 1rem; + border-top: 1px solid var(--border); +} + +.prose h3 { + font-size: 1.05rem; + margin-top: 1.75rem; + margin-bottom: 0.5rem; +} + +.prose h4 { + font-size: 0.88rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.07em; + color: var(--muted); + margin-top: 1.5rem; + margin-bottom: 0.4rem; } .prose p, .prose li { color: var(--text); + line-height: 1.72; } .prose :is(p, li) { @@ -508,99 +572,167 @@ button:focus-visible, .prose ul, .prose ol { - padding-left: 1.2rem; + padding-left: 1.25rem; } .prose code { font-family: var(--font-mono); - font-size: 0.9em; + font-size: 0.85em; background: var(--surface-soft); border: 1px solid var(--border); - border-radius: 6px; - padding: 0.08rem 0.35rem; + border-radius: 3px; + padding: 0.09rem 0.32rem; + font-weight: 500; } .prose pre { - background: #f8fafc; - color: #111827; - border-radius: 10px; - border: 1px solid #d1d5db; - padding: 0.9rem; + background: var(--code-bg); + color: var(--code-fg); + border-radius: 8px; + border: 1px solid var(--code-border); + padding: 1.1rem 1.2rem; overflow-x: auto; + margin: 1.25rem 0; } .prose pre code { border: 0; background: transparent; padding: 0; + color: inherit; + font-size: 0.9em; } -.doc-description { - margin-top: 0; +.prose table { + width: 100%; + border-collapse: collapse; + margin: 1.25rem 0; + font-size: 0.9rem; +} + +.prose thead th { + background: var(--surface-soft); + font-size: 0.72rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.07em; + padding: 0.52rem 0.75rem; + border: 1px solid var(--border); + text-align: left; color: var(--muted); } -.docs-index-header { - margin-top: 0.7rem; - max-width: 72ch; +.prose tbody td { + padding: 0.52rem 0.75rem; + border: 1px solid var(--border); + vertical-align: top; + line-height: 1.5; } -.docs-index-header h1 { - font-family: var(--font-heading); +.prose tbody tr:hover td { + background: var(--surface-soft); +} + +.prose blockquote { + border-left: 3px solid var(--accent); + margin: 1.5rem 0; + padding: 0.25rem 0 0.25rem 1.25rem; +} + +.prose blockquote p { + color: var(--muted); margin: 0; - text-wrap: balance; + font-style: italic; +} + +.doc-description { + margin: 0 0 1.5rem; + color: var(--muted); + font-size: 1rem; + line-height: 1.6; + padding-bottom: 1.25rem; + border-bottom: 1px solid var(--border); +} + +.docs-index-header { + margin-top: 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid var(--border); + max-width: 72ch; } .docs-index-header p { - margin-top: 0; + margin: 0.5rem 0 0; color: var(--muted); + font-size: 1rem; + line-height: 1.6; } .docs-index-grid { - margin-top: 0.8rem; + margin-top: 1.25rem; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: 0.65rem; + gap: 0; + border: 1px solid var(--border); + border-radius: 8px; + overflow: hidden; } .docs-index-card { - border: 1px solid var(--border); background: var(--surface); - border-radius: 8px; - padding: 0.85rem; + padding: 1rem 1rem 1.1rem; + border-right: 1px solid var(--border); + border-bottom: 1px solid var(--border); + border-radius: 0; +} + +.docs-index-card:nth-child(3n) { + border-right: none; } .docs-index-card h3 { + margin: 0 0 0.75rem; + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.12em; + color: var(--muted); font-family: var(--font-heading); - margin: 0; - font-size: 0.98rem; } .docs-index-card ul { list-style: none; - margin: 0.65rem 0 0; + margin: 0; padding: 0; } .docs-index-card li + li { - margin-top: 0.66rem; + margin-top: 0.55rem; + padding-top: 0.55rem; + border-top: 1px solid var(--border); } .docs-index-card a { font-weight: 500; + font-size: 0.9rem; text-decoration: none; + color: var(--text); } .docs-index-card a:hover { text-decoration: underline; + text-underline-offset: 2px; } .docs-index-card li p { - margin: 0.15rem 0 0; - font-size: 0.86rem; + margin: 0.18rem 0 0; + font-size: 0.82rem; color: var(--muted); + line-height: 1.45; } +/* ---- BENCHMARKS ---- */ + .benchmark-page { margin-top: 1.25rem; display: grid; @@ -859,6 +991,14 @@ button:focus-visible, .docs-index-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + + .docs-index-card:nth-child(3n) { + border-right: 1px solid var(--border); + } + + .docs-index-card:nth-child(2n) { + border-right: none; + } } @media (max-width: 760px) { @@ -889,20 +1029,36 @@ button:focus-visible, .quick-links-grid, .learning-path-grid, .docs-index-grid, - .docs-layout, .benchmark-highlight-grid { grid-template-columns: 1fr; } .docs-topbar { - padding: 0.8rem; + flex-direction: column; + align-items: flex-start; + padding: 0 0 0.85rem; } .docs-topbar-links { justify-content: flex-start; } + .docs-layout { + grid-template-columns: 1fr; + } + .sidebar { position: static; + border-right: none; + border-bottom: 1px solid var(--border); + padding: 1rem 0; + } + + .prose { + padding: 1.25rem 0 2rem; + } + + .docs-index-card:nth-child(2n) { + border-right: 1px solid var(--border); } } diff --git a/website/src/app/layout.js b/website/src/app/layout.js index 02c7df8..16fefa8 100644 --- a/website/src/app/layout.js +++ b/website/src/app/layout.js @@ -1,27 +1,5 @@ import './globals.css' import Link from 'next/link' -import { Roboto, IBM_Plex_Mono } from 'next/font/google' - -const headingFont = Roboto({ - subsets: ['latin'], - variable: '--font-heading', - display: 'swap', - weight: ['400', '500', '700'], -}) - -const bodyFont = Roboto({ - subsets: ['latin'], - variable: '--font-body', - display: 'swap', - weight: ['400', '500', '600', '700'], -}) - -const monoFont = IBM_Plex_Mono({ - subsets: ['latin'], - variable: '--font-mono', - weight: ['400', '500'], - display: 'swap', -}) export const metadata = { title: 'FrameX', @@ -30,7 +8,7 @@ export const metadata = { export default function RootLayout({ children }) { return ( - + Skip to content