import { useTheme } from 'next-themes' import { RiArrowRightUpLine, RiArrowUpDoubleLine, } from '@remixicon/react' import { useTranslation } from 'react-i18next' import type { useMarketplace } from './hooks' import List from '@/app/components/plugins/marketplace/list' import Loading from '@/app/components/base/loading' import { getLocaleOnClient } from '@/i18n-config' import { getMarketplaceUrl } from '@/utils/var' type MarketplaceProps = { searchPluginText: string filterPluginTags: string[] isMarketplaceArrowVisible: boolean showMarketplacePanel: () => void marketplaceContext: ReturnType } const Marketplace = ({ searchPluginText, filterPluginTags, isMarketplaceArrowVisible, showMarketplacePanel, marketplaceContext, }: MarketplaceProps) => { const locale = getLocaleOnClient() const { t } = useTranslation() const { theme } = useTheme() const { isLoading, marketplaceCollections, marketplaceCollectionPluginsMap, plugins, page, } = marketplaceContext return ( <>
{isMarketplaceArrowVisible && ( )}
{t('plugin.marketplace.moreFrom')}
{t('plugin.marketplace.discover')} {t('plugin.category.models')} , {t('plugin.category.tools')} , {t('plugin.category.datasources')} , {t('plugin.category.agents')} , {t('plugin.category.extensions')} {t('plugin.marketplace.and')} {t('plugin.category.bundles')} {t('common.operation.in')} {t('plugin.marketplace.difyMarketplace')}
{ isLoading && page === 1 && (
) } { (!isLoading || page > 1) && ( ) }
) } export default Marketplace