diff --git a/src/components/settings/web-service-settings.tsx b/src/components/settings/web-service-settings.tsx index e50da91..a8e615b 100644 --- a/src/components/settings/web-service-settings.tsx +++ b/src/components/settings/web-service-settings.tsx @@ -1,23 +1,49 @@ "use client" import { useCallback, useEffect, useState } from "react" -import { Check, Copy, Eye, EyeOff } from "lucide-react" +import { Check, Copy, ExternalLink, Eye, EyeOff } from "lucide-react" import { startWebServer, stopWebServer, getWebServerStatus, type WebServerInfo, } from "@/lib/api" +import { openUrl } from "@/lib/platform" -function CopyableCard({ - label, - value, - masked, -}: { - label: string - value: string - masked?: boolean -}) { +function AddressCard({ label, value }: { label: string; value: string }) { + const [hovered, setHovered] = useState(false) + + return ( +
+
{label}
+
setHovered(true)} + onMouseLeave={() => setHovered(false)} + > + + {value} + +
+ +
+
+
+ ) +} + +function TokenCard({ label, value }: { label: string; value: string }) { const [hovered, setHovered] = useState(false) const [copied, setCopied] = useState(false) const [revealed, setRevealed] = useState(false) @@ -28,10 +54,9 @@ function CopyableCard({ setTimeout(() => setCopied(false), 1500) } - const displayValue = - masked && !revealed - ? value.slice(0, 4) + "\u2022".repeat(Math.max(value.length - 4, 8)) - : value + const displayValue = revealed + ? value + : "\u2022".repeat(Math.max(value.length, 12)) return (
@@ -49,20 +74,18 @@ function CopyableCard({ hovered ? "opacity-100" : "opacity-0" }`} > - {masked && ( - - )} +