import { useTranslation } from "react-i18next"; import { useState } from "react"; import { FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { ArrowLeft } from "lucide-react"; import { Dialog, DialogContent, DialogTrigger, DialogClose, } from "@/components/ui/dialog"; import { ProviderIcon } from "@/components/ProviderIcon"; import { IconPicker } from "@/components/IconPicker"; import { getIconMetadata } from "@/icons/extracted/metadata"; import type { UseFormReturn } from "react-hook-form"; import type { ProviderFormData } from "@/lib/schemas/provider"; interface BasicFormFieldsProps { form: UseFormReturn; } export function BasicFormFields({ form }: BasicFormFieldsProps) { const { t } = useTranslation(); const [iconDialogOpen, setIconDialogOpen] = useState(false); const currentIcon = form.watch("icon"); const currentIconColor = form.watch("iconColor"); const providerName = form.watch("name") || "Provider"; const effectiveIconColor = currentIconColor || (currentIcon ? getIconMetadata(currentIcon)?.defaultColor : undefined); const handleIconSelect = (icon: string) => { const meta = getIconMetadata(icon); form.setValue("icon", icon); form.setValue("iconColor", meta?.defaultColor ?? ""); }; return ( <> ( {t("provider.name")} )} /> ( {t("provider.websiteUrl")} )} /> ( {t("provider.notes")} )} /> {/* 图标配置 */}
{t("providerIcon.label", { defaultValue: "图标" })} {/* 图标预览 */}

{providerName}

{currentIcon || t("providerIcon.noIcon", { defaultValue: "未选择图标" })}

{t("providerIcon.selectIcon", { defaultValue: "选择图标", })}

{t("providerIcon.selectDescription", { defaultValue: "为供应商选择一个图标", })}

{/* 图标选择器 */}
); }