import { ShieldCheck } from 'lucide-react'; import { DialogButton, DialogFooter, DialogHeader, DialogShell, DialogTile, FooterSpacer, NEUTRAL_TINT, fs, } from '../../shared/DialogShell'; import type { T } from './pluginModel'; /** * How plugins are contained and where that ends, opened from the shield in the panel's * header. It used to sit under the list as a card of its own, which pushed a wall of * text into the page every admin scrolls past. */ export default function PluginSecurityDialog({ t, onClose }: { t: T; onClose: () => void }) { const sections: Array<[string, string]> = [ [t('admin.plugins.security.isolationTitle'), t('admin.plugins.security.isolationBody')], [t('admin.plugins.security.permsTitle'), t('admin.plugins.security.permsBody')], [t('admin.plugins.security.limitsTitle'), t('admin.plugins.security.limitsBody')], [t('admin.plugins.security.worstTitle'), t('admin.plugins.security.worstBody')], [t('admin.plugins.security.reviewedTitle'), t('admin.plugins.security.reviewedBody')], [t('admin.plugins.security.signedTitle'), t('admin.plugins.security.signedBody')], [t('admin.plugins.security.trustTitle'), t('admin.plugins.security.trustBody')], ]; return ( } tint={NEUTRAL_TINT} labelId="plugin-security-title" title={t('admin.plugins.security.short')} sub={t('admin.plugins.reviewedMeaning')} subWraps onClose={onClose} /> } footer={ {t('common.ok')} } >
{sections.map(([h, b]) => (

{h}

{b}

))}
); }