import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' import Link from 'next/link' import { RiArrowDownSLine, RiArrowRightUpLine, } from '@remixicon/react' import type { ModelProvider, } from './declarations' import { useMarketplaceAllPlugins, } from './hooks' import Divider from '@/app/components/base/divider' import Loading from '@/app/components/base/loading' import ProviderCard from '@/app/components/plugins/provider-card' import List from '@/app/components/plugins/marketplace/list' import type { Plugin } from '@/app/components/plugins/types' import { MARKETPLACE_URL_PREFIX } from '@/config' import cn from '@/utils/classnames' import { getLocaleOnClient } from '@/i18n' type InstallFromMarketplaceProps = { providers: ModelProvider[] searchText: string } const InstallFromMarketplace = ({ providers, searchText, }: InstallFromMarketplaceProps) => { const { t } = useTranslation() const [collapse, setCollapse] = useState(false) const locale = getLocaleOnClient() const { plugins: allPlugins, isLoading: isAllPluginsLoading, } = useMarketplaceAllPlugins(providers, searchText) const cardRender = useCallback((plugin: Plugin) => { if (plugin.type === 'bundle') return null return }, []) return (
setCollapse(!collapse)}> {t('common.modelProvider.installProvider')}
{t('common.modelProvider.discoverMore')} {t('plugin.marketplace.difyMarketplace')}
{!collapse && isAllPluginsLoading && } { !isAllPluginsLoading && !collapse && ( ) }
) } export default InstallFromMarketplace