import { memo, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Avatar, Select, type SelectProps, Space, Typography, theme } from "antd"; import { type ACMEDns01Provider, acmeDns01ProvidersMap } from "@/domain/provider"; export type ACMEDns01ProviderSelectProps = Omit< SelectProps, "filterOption" | "filterSort" | "labelRender" | "options" | "optionFilterProp" | "optionLabelProp" | "optionRender" > & { filter?: (record: ACMEDns01Provider) => boolean; }; const ACMEDns01ProviderSelect = ({ filter, ...props }: ACMEDns01ProviderSelectProps) => { const { t } = useTranslation(); const { token: themeToken } = theme.useToken(); const [options, setOptions] = useState>([]); useEffect(() => { const allItems = Array.from(acmeDns01ProvidersMap.values()); const filteredItems = filter != null ? allItems.filter(filter) : allItems; setOptions( filteredItems.map((item) => ({ key: item.type, value: item.type, label: t(item.name), data: item, })) ); }, [filter]); const renderOption = (key: string) => { const provider = acmeDns01ProvidersMap.get(key); return ( {t(provider?.name ?? "")} ); }; return (