UNPKG

@grafana/ui

Version:
1 lines 3.04 kB
{"version":3,"file":"PluginSignatureBadge.mjs","sources":["../../../../src/components/PluginSignatureBadge/PluginSignatureBadge.tsx"],"sourcesContent":["import { HTMLAttributes } from 'react';\n\nimport { PluginSignatureStatus, PluginSignatureType } from '@grafana/data';\n\nimport { IconName } from '../../types';\nimport { Badge, BadgeProps } from '../Badge/Badge';\n\nconst SIGNATURE_ICONS: Record<string, IconName> = {\n [PluginSignatureType.grafana]: 'grafana',\n [PluginSignatureType.commercial]: 'shield',\n [PluginSignatureType.community]: 'shield',\n DEFAULT: 'shield-exclamation',\n};\n\n/**\n * @public\n */\nexport interface PluginSignatureBadgeProps extends HTMLAttributes<HTMLDivElement> {\n status?: PluginSignatureStatus;\n signatureType?: PluginSignatureType;\n signatureOrg?: string;\n}\n\n/**\n * @public\n */\nexport const PluginSignatureBadge = ({\n status,\n color,\n signatureType,\n signatureOrg,\n ...otherProps\n}: PluginSignatureBadgeProps) => {\n const display = getSignatureDisplayModel(status, signatureType, signatureOrg);\n return (\n <Badge text={display.text} color={display.color} icon={display.icon} tooltip={display.tooltip} {...otherProps} />\n );\n};\n\nPluginSignatureBadge.displayName = 'PluginSignatureBadge';\n\nfunction getSignatureDisplayModel(\n signature?: PluginSignatureStatus,\n signatureType?: PluginSignatureType,\n signatureOrg?: string\n): BadgeProps {\n if (!signature) {\n signature = PluginSignatureStatus.invalid;\n }\n\n const signatureIcon = SIGNATURE_ICONS[signatureType || ''] || SIGNATURE_ICONS.DEFAULT;\n\n switch (signature) {\n case PluginSignatureStatus.internal:\n return { text: 'Core', color: 'blue', tooltip: 'Core plugin that is bundled with Grafana' };\n case PluginSignatureStatus.valid:\n return {\n text: signatureType ? signatureType : 'Signed',\n icon: signatureType ? signatureIcon : 'lock',\n color: 'green',\n tooltip: 'Signed and verified plugin',\n };\n case PluginSignatureStatus.invalid:\n return {\n text: 'Invalid signature',\n icon: 'exclamation-triangle',\n color: 'red',\n tooltip: 'Invalid plugin signature',\n };\n case PluginSignatureStatus.modified:\n return {\n text: 'Modified signature',\n icon: 'exclamation-triangle',\n color: 'red',\n tooltip: 'Valid signature but content has been modified',\n };\n case PluginSignatureStatus.missing:\n return {\n text: 'Missing signature',\n icon: 'exclamation-triangle',\n color: 'red',\n tooltip: 'Missing plugin signature',\n };\n default:\n return {\n text: 'Unsigned',\n icon: 'exclamation-triangle',\n color: 'red',\n tooltip: 'Unsigned external plugin',\n };\n }\n}\n"],"names":[],"mappings":";;;;CAOkD;AAAA,EAChD,CAAC,mBAAoB,CAAA,OAAO,GAAG,SAAA;AAAA,EAC/B,CAAC,mBAAoB,CAAA,UAAU,GAAG,QAAA;AAAA,EAClC,CAAC,mBAAoB,CAAA,SAAS,GAAG,QAAA;AAAA,EACjC,OAAS,EAAA;AACX"}