"use client"; import React, { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Maximize2, SwatchBookIcon, X } from "lucide-react"; import { ModelId, MODELS } from "@common/models-list"; import { useAtom, useAtomValue } from "jotai"; import { selectedModelIdAtom } from "@/atoms/user-settings-atom"; import { customModelIdsAtom } from "@/atoms/models-list-atom"; import useTranslation from "@/components/hooks/use-translation"; import posthog from "posthog-js"; const SelectModelDialog = () => { const t = useTranslation(); const [selectedModelId, setSelectedModelId] = useAtom(selectedModelIdAtom); const customModelIds = useAtomValue(customModelIdsAtom); const [open, setOpen] = useState(false); const [zoomedModel, setZoomedModel] = useState(null); const handleModelSelect = (model: ModelId | string) => { setSelectedModelId(model); setOpen(false); posthog.capture("model_selected", { $ip: "0.0.0.0", $geoip_disable: true, model, }); }; const handleZoom = (event: React.MouseEvent, model: ModelId) => { event.stopPropagation(); setZoomedModel(model); }; return (
{t("APP.MODEL_SELECTION.DESCRIPTION")}
{Object.entries(MODELS).map((modelData) => { const modelId = modelData[0] as ModelId; const model = modelData[1]; return (
); })} {customModelIds.length > 0 && (

{t("APP.MODEL_SELECTION.IMPORTED_CUSTOM_MODELS")}

)} {customModelIds.map((customModel) => { return ( ); })}
!open && setZoomedModel(null)} >
{`Zoomed
Before
{`Zoomed
After
); }; export default SelectModelDialog;