From 4946dc2e8e8982619628fbcdff2c156298afb893 Mon Sep 17 00:00:00 2001 From: Mohamed Hassan Date: Fri, 18 Sep 2026 12:42:34 +0100 Subject: [PATCH 1/4] feat: tunnel concepts page --- src/components.ts | 3 + src/components/react/container/Transport.tsx | 12 +- src/components/react/diagram-weld/shapes.tsx | 16 +- src/components/react/diagram-weld/welding.ts | 28 +- .../react/tunnel/TunnelIdentity.tsx | 179 ++++++++++ src/components/react/tunnel/TunnelKit.tsx | 190 +++++++++++ .../react/tunnel/TunnelOutbound.tsx | 235 +++++++++++++ src/components/react/tunnel/TunnelTraffic.tsx | 312 ++++++++++++++++++ src/content/docs/tunnel/concepts/index.mdx | 103 +++++- src/styles/globals.css | 46 +++ 10 files changed, 1106 insertions(+), 18 deletions(-) create mode 100644 src/components/react/tunnel/TunnelIdentity.tsx create mode 100644 src/components/react/tunnel/TunnelKit.tsx create mode 100644 src/components/react/tunnel/TunnelOutbound.tsx create mode 100644 src/components/react/tunnel/TunnelTraffic.tsx diff --git a/src/components.ts b/src/components.ts index f439c2ed30f..ef8ae6e29c6 100644 --- a/src/components.ts +++ b/src/components.ts @@ -84,3 +84,6 @@ export { ContainerIsolation } from "./components/react/container/ContainerIsolat export { ContainerRequestPath } from "./components/react/container/ContainerRequestPath"; export { ContainerLifecycle } from "./components/react/container/ContainerLifecycle"; export { ContainerPlacement } from "./components/react/container/ContainerPlacement"; +export { TunnelOutbound } from "./components/react/tunnel/TunnelOutbound"; +export { TunnelIdentity } from "./components/react/tunnel/TunnelIdentity"; +export { TunnelTraffic } from "./components/react/tunnel/TunnelTraffic"; diff --git a/src/components/react/container/Transport.tsx b/src/components/react/container/Transport.tsx index 6d292e1f655..e6b28d1a7cc 100644 --- a/src/components/react/container/Transport.tsx +++ b/src/components/react/container/Transport.tsx @@ -175,21 +175,29 @@ export function LabeledButton({ ariaLabel, title, highlight, + disabled, + ariaDisabled, onClick, children, }: { ariaLabel: string; title?: string; highlight?: boolean; + disabled?: boolean; + /** Visually dims and blocks clicks like `disabled`, but stays + * focusable — for controls that disable themselves once used. */ + ariaDisabled?: boolean; onClick: () => void; children: ReactNode; }) { return (