// Copyright (c) Tailscale Inc & AUTHORS // SPDX-License-Identifier: BSD-3-Clause import * as Primitive from "@radix-ui/react-popover" import cx from "classnames" import React, { useCallback } from "react" import ChevronDown from "src/assets/icons/chevron-down.svg?react" import Copy from "src/assets/icons/copy.svg?react" import NiceIP from "src/components/nice-ip" import useToaster from "src/hooks/toaster" import Button from "src/ui/button" import { copyText } from "src/utils/clipboard" /** * AddressCard renders a clickable IP address text that opens a * dialog with a copyable list of all addresses (IPv4, IPv6, DNS) * for the machine. */ export default function AddressCard({ v4Address, v6Address, shortDomain, fullDomain, className, triggerClassName, }: { v4Address: string v6Address: string shortDomain?: string fullDomain?: string className?: string triggerClassName?: string }) { const children = ( ) return ( {children} ) } function AddressRow({ label, value, ip, }: { label: string value: string ip?: boolean }) { const toaster = useToaster() const onCopyClick = useCallback(() => { copyText(value) .then(() => toaster.show({ message: `Copied ${label} to clipboard` })) .catch(() => toaster.show({ message: `Failed to copy ${label} to clipboard`, variant: "danger", }) ) }, [label, toaster, value]) return (
  • ) }