diff --git a/app/src/components/GatewayPanel.tsx b/app/src/components/GatewayPanel.tsx index 5cec834..4281e9d 100644 --- a/app/src/components/GatewayPanel.tsx +++ b/app/src/components/GatewayPanel.tsx @@ -1,8 +1,9 @@ import { useMemo, useState } from "react" import { Link } from "react-router-dom" -import { Globe, RefreshCw, FileText } from "lucide-react" +import { Globe, RefreshCw, FileText, ExternalLink } from "lucide-react" import type { GatewayInfo, HealthStatus } from "@/types" import { useGatewayReload, useCaddyfile } from "@/services/api/hooks" +import { subdomainUrl } from "@/lib/labels" import { HealthBadge } from "./HealthBadge" interface GatewayPanelProps { @@ -76,12 +77,28 @@ export function GatewayPanel({ gateway, statuses }: GatewayPanelProps) { // Health applies to proxy/remote targets (a running service); // static targets are files on disk. const health = route.kind !== "static" && route.name ? statusMap.get(route.name) : undefined + // The address is a subdomain label — link to its full https URL. + const url = subdomainUrl(route.address) return ( - {route.address} + + {url ? ( + + {route.address} + + + ) : ( + route.address + )} +