"use client";
import { InfoIcon } from "lucide-react";
import { useSyncExternalStore, type ReactNode } from "react";
import {
Drawer,
DrawerContent,
DrawerDescription,
DrawerHeader,
DrawerTitle,
DrawerTrigger,
} from "@/components/ui/drawer";
import {
HoverCard,
HoverCardContent,
HoverCardTrigger,
} from "@/components/ui/hover-card";
const finePointerQuery = "(hover: hover) and (pointer: fine)";
function subscribe(callback: () => void) {
const query = window.matchMedia(finePointerQuery);
query.addEventListener("change", callback);
return () => query.removeEventListener("change", callback);
}
function getSnapshot() {
return window.matchMedia(finePointerQuery).matches;
}
function Trigger({ label, showIcon }: { label: ReactNode; showIcon: boolean }) {
return (
{label}
{showIcon ? : null}
);
}
export function TermDetail({
label,
title,
detail,
showIcon = true,
interactive = false,
}: {
label: ReactNode;
title: string;
detail: string;
showIcon?: boolean;
interactive?: boolean;
}) {
const finePointer = useSyncExternalStore(subscribe, getSnapshot, () => false);
if (finePointer && !interactive) {
return (
{title}
{detail}
);
}
return (
{title}
{detail}
);
}