From a2ef02e512e44e2ab147f84f8e34254fe8645944 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 13 May 2026 22:38:06 +0100 Subject: [PATCH] Landing page tiles --- .../docs/components/landing-page.tsx | 131 ++++++++++++------ documentation/docs/pages/styles.css | 5 + 2 files changed, 95 insertions(+), 41 deletions(-) diff --git a/documentation/docs/components/landing-page.tsx b/documentation/docs/components/landing-page.tsx index c1013c6618..1c1c9245be 100644 --- a/documentation/docs/components/landing-page.tsx +++ b/documentation/docs/components/landing-page.tsx @@ -285,7 +285,14 @@ const AnimationBlock = ({ type }: { type: string }) => { } }; -const sdks = [ +type Sdk = { + name: string; + description: string; + href: string; + children?: { name: string; href: string }[]; +}; + +const sdks: Sdk[] = [ { name: "Rust SDK", description: @@ -293,10 +300,17 @@ const sdks = [ href: "/developers/rust", }, { - name: "smolmix", + name: "smolmix & connectors", description: - "TCP/UDP tunnel over the Mixnet. Userspace smoltcp stack exposing AsyncRead/AsyncWrite TcpStream and UdpSocket types.", + "Rust crate family for routing networking through the Mixnet: TCP/UDP tunnels, DNS, TLS, and HTTP. Pick the layer you need.", href: "/developers/smolmix", + children: [ + { name: "smolmix-tunnel", href: "/developers/smolmix/tunnel" }, + { name: "smolmix-dns", href: "/developers/smolmix/dns" }, + { name: "smolmix-tls", href: "/developers/smolmix/tls" }, + { name: "smolmix-hyper", href: "/developers/smolmix/hyper" }, + { name: "Building on smolmix", href: "/developers/smolmix/extending" }, + ], }, { name: "TypeScript SDK", @@ -427,46 +441,81 @@ export const LandingPage = () => {
{sdks.map((sdk, i) => ( - -
0 ? "-1px" : undefined, - display: "flex", - alignItems: "center", - justifyContent: "space-between", - transition: "background-color 0.15s", - cursor: "pointer", - }} - > -
- - {sdk.name} +
0 ? "-1px" : undefined, + }} + > + +
+
+ + {sdk.name} + +

+ {sdk.description} +

+
+ + › -

- {sdk.description} -

- - › - -
- + + {sdk.children && ( +
+ {sdk.children.map((c) => ( + + {c.name} + + ))} +
+ )} +
))}
diff --git a/documentation/docs/pages/styles.css b/documentation/docs/pages/styles.css index 35664541ac..5f02fa6aaf 100644 --- a/documentation/docs/pages/styles.css +++ b/documentation/docs/pages/styles.css @@ -351,6 +351,11 @@ input:focus-visible { background-color: rgba(255, 255, 255, 0.03) !important; } +.landing-chip:hover { + background-color: rgba(255, 255, 255, 0.05) !important; + color: var(--colorPrimary) !important; +} + /* ── Invert diagrams in dark mode ── */ html.dark .nextra-content img:not([src*="landing"]) {