import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/tooltip"; import { isDesktop, isMobile } from "react-device-detect"; import { useTranslation } from "react-i18next"; import { cn } from "@/lib/utils"; import React, { ReactNode, useMemo, useState } from "react"; import TextEntryDialog from "./dialog/TextEntryDialog"; import { Button } from "../ui/button"; type FaceSelectionDialogProps = { className?: string; faceNames: string[]; onTrainAttempt: (name: string) => void; children: ReactNode; }; export default function FaceSelectionDialog({ className, faceNames, onTrainAttempt, children, }: FaceSelectionDialogProps) { const { t } = useTranslation(["views/faceLibrary"]); const isChildButton = useMemo( () => React.isValidElement(children) && children.type === Button, [children], ); // control const [newFace, setNewFace] = useState(false); // components const Selector = isDesktop ? DropdownMenu : Drawer; const SelectorTrigger = isDesktop ? DropdownMenuTrigger : DrawerTrigger; const SelectorContent = isDesktop ? DropdownMenuContent : DrawerContent; const SelectorItem = isDesktop ? DropdownMenuItem : (props: React.HTMLAttributes) => (
); return (
{newFace && ( onTrainAttempt(newName)} /> )} {children} {isMobile && ( Details Details )} {t("trainFaceAs")}
{faceNames.sort().map((faceName) => ( onTrainAttempt(faceName)} > {faceName} ))} setNewFace(true)} > {t("createFaceLibrary.new")}
{t("trainFace")}
); }