import { useTranslation } from "react-i18next"; import type { PluginSpec } from "#/api/conversation-service/agent-server-conversation-service.types"; import { ModalBackdrop } from "#/components/shared/modals/modal-backdrop"; import { MODAL_MAX_WIDTH_VIEWPORT, modalWidthClassName, } from "#/components/shared/modals/modal-body"; import { ModalCloseButton } from "#/components/shared/modals/modal-close-button"; import { BrandButton } from "#/components/features/settings/brand-button"; import { I18nKey } from "#/i18n/declaration"; import { Typography } from "#/ui/typography"; import { cn } from "#/utils/utils"; import { PluginPicker } from "./plugin-picker"; interface PluginPickerModalProps { selected: PluginSpec[]; onChange: (next: PluginSpec[]) => void; onClose: () => void; } /** Modal shell around the reusable {@link PluginPicker} for the launcher flow. */ export function PluginPickerModal({ selected, onChange, onClose, }: PluginPickerModalProps) { const { t } = useTranslation("openhands"); return (
{t(I18nKey.PLUGINS$PICKER_TITLE)} {t(I18nKey.PLUGINS$PICKER_SUBTITLE)}
{t(I18nKey.PLUGINS$PICKER_SELECTED_COUNT, { count: selected.length, })} {t(I18nKey.PLUGINS$PICKER_DONE)}
); }