import { ButtonItem, Dropdown, Focusable, PanelSectionRow, SingleDropdownOption, SuspensefulImage, } from 'decky-frontend-lib'; import { CSSProperties, FC, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { InstallType } from '../../plugin'; import { StorePlugin, StorePluginVersion, requestPluginInstall } from '../../store'; interface PluginCardProps { plugin: StorePlugin; } const PluginCard: FC = ({ plugin }) => { const [selectedOption, setSelectedOption] = useState(0); const root = plugin.tags.some((tag) => tag === 'root'); const { t } = useTranslation(); return (
{plugin.name} {plugin.author} {plugin.description ? ( plugin.description ) : ( {t('PluginCard.plugin_no_desc')} )} {root && (
{t('PluginCard.plugin_full_access')}{' '} deckbrew.xyz/root
)}
requestPluginInstall(plugin.name, plugin.versions[selectedOption], InstallType.INSTALL) } > {t('PluginCard.plugin_install')}
({ data: index, label: version.name, })) as SingleDropdownOption[] } menuLabel={t('PluginCard.plugin_version_label') as string} selectedOption={selectedOption} onChange={({ data }) => setSelectedOption(data)} />
); }; export default PluginCard;