import { Separator } from "@components/UI/Seperator.tsx"; import { Heading } from "@components/UI/Typography/Heading.tsx"; import { Subtle } from "@components/UI/Typography/Subtle.tsx"; import { formatQuantity } from "@core/utils/string.ts"; import { Avatar } from "@components/UI/Avatar.tsx"; import { Mono } from "@components/generic/Mono.tsx"; import { TimeAgo } from "@components/generic/TimeAgo.tsx"; import { Protobuf } from "@meshtastic/core"; import type { Protobuf as ProtobufType } from "@meshtastic/core"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; import { BatteryChargingIcon, BatteryFullIcon, BatteryLowIcon, BatteryMediumIcon, Dot, LockIcon, LockOpenIcon, MessageSquareIcon, MountainSnow, Star, } from "lucide-react"; import { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, } from "@radix-ui/react-tooltip"; import { useAppStore } from "@core/stores/appStore.ts"; import { useDevice } from "@core/stores/deviceStore.ts"; export interface NodeDetailProps { node: ProtobufType.Mesh.NodeInfo; } export const NodeDetail = ({ node }: NodeDetailProps) => { const { setChatType, setActiveChat } = useAppStore(); const { setActivePage } = useDevice(); const name = node.user?.longName || `!${numberToHexUnpadded(node.num)}`; const shortName = node.user?.shortName ?? "UNK"; const hwModel = node.user?.hwModel ?? 0; const hardwareType = Protobuf.Mesh.HardwareModel[hwModel]?.replaceAll("_", " ") ?? `${hwModel}`; function handleDirectMessage() { setChatType("direct"); setActiveChat(node.num); setActivePage("messages"); } return (