'use client' import type { FC } from 'react' import React from 'react' import type { PluginDeclaration } from '../../../types' import Card from '../../../card' import Button from '@/app/components/base/button' import { RiLoader2Line } from '@remixicon/react' import Badge, { BadgeState } from '@/app/components/base/badge/index' import { pluginManifestToCardPluginProps } from '../../utils' import { useTranslation } from 'react-i18next' import Checkbox from '@/app/components/base/checkbox' const i18nPrefix = 'plugin.installModal' type Props = { plugins: PluginDeclaration[], onCancel: () => void } const Install: FC = ({ plugins, onCancel, }) => { const { t } = useTranslation() const [selectedPlugins, setSelectedPlugins] = React.useState([]) const selectedPluginsNum = selectedPlugins.length const handleSelect = (plugin: PluginDeclaration) => { return () => { const isSelected = !!selectedPlugins.find(p => p.plugin_unique_identifier === plugin.plugin_unique_identifier) let nextSelectedPlugins if (isSelected) nextSelectedPlugins = selectedPlugins.filter(p => p.plugin_unique_identifier !== plugin.plugin_unique_identifier) else nextSelectedPlugins = [...selectedPlugins, plugin] setSelectedPlugins(nextSelectedPlugins) } } const [isInstalling, setIsInstalling] = React.useState(false) const handleInstall = () => { } return ( <>

{t(`${i18nPrefix}.${selectedPluginsNum > 1 ? 'readyToInstallPackages' : 'readyToInstallPackage'}`, { num: selectedPluginsNum })}

{plugins.map(plugin => (
p.plugin_unique_identifier === plugin.plugin_unique_identifier)} onCheck={handleSelect(plugin)} /> {plugin.version}} />
))}
{/* Action Buttons */}
{!isInstalling && ( )}
) } export default React.memo(Install)