pluginIcon.tsx 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import styled from '@emotion/styled';
  2. import asana from 'sentry-logos/logo-asana.svg';
  3. import aws from 'sentry-logos/logo-aws.svg';
  4. import vsts from 'sentry-logos/logo-azure.svg';
  5. import bitbucket from 'sentry-logos/logo-bitbucket.svg';
  6. import bitbucketserver from 'sentry-logos/logo-bitbucket-server.svg';
  7. import placeholder from 'sentry-logos/logo-default.svg';
  8. import discord from 'sentry-logos/logo-discord.svg';
  9. import github from 'sentry-logos/logo-github.svg';
  10. import githubEnterprise from 'sentry-logos/logo-github-enterprise.svg';
  11. import gitlab from 'sentry-logos/logo-gitlab.svg';
  12. import heroku from 'sentry-logos/logo-heroku.svg';
  13. import jira from 'sentry-logos/logo-jira.svg';
  14. import jiraserver from 'sentry-logos/logo-jira-server.svg';
  15. import jumpcloud from 'sentry-logos/logo-jumpcloud.svg';
  16. import msteams from 'sentry-logos/logo-msteams.svg';
  17. import opsgenie from 'sentry-logos/logo-opsgenie.svg';
  18. import pagerduty from 'sentry-logos/logo-pagerduty.svg';
  19. import pivotal from 'sentry-logos/logo-pivotaltracker.svg';
  20. import pushover from 'sentry-logos/logo-pushover.svg';
  21. import redmine from 'sentry-logos/logo-redmine.svg';
  22. import segment from 'sentry-logos/logo-segment.svg';
  23. import sentry from 'sentry-logos/logo-sentry.svg';
  24. import slack from 'sentry-logos/logo-slack.svg';
  25. import trello from 'sentry-logos/logo-trello.svg';
  26. import twilio from 'sentry-logos/logo-twilio.svg';
  27. import vercel from 'sentry-logos/logo-vercel.svg';
  28. import victorops from 'sentry-logos/logo-victorops.svg';
  29. import visualstudio from 'sentry-logos/logo-visualstudio.svg';
  30. // Map of plugin id -> logo filename
  31. export const DEFAULT_ICON = placeholder;
  32. export const ICON_PATHS = {
  33. _default: DEFAULT_ICON,
  34. sentry,
  35. browsers: sentry,
  36. device: sentry,
  37. interface_types: sentry,
  38. os: sentry,
  39. urls: sentry,
  40. webhooks: sentry,
  41. 'amazon-sqs': aws,
  42. aws_lambda: aws,
  43. asana,
  44. bitbucket,
  45. bitbucket_pipelines: bitbucket,
  46. bitbucket_server: bitbucketserver,
  47. discord,
  48. github,
  49. github_enterprise: githubEnterprise,
  50. gitlab,
  51. heroku,
  52. jira,
  53. jira_server: jiraserver,
  54. jumpcloud,
  55. msteams,
  56. opsgenie,
  57. pagerduty,
  58. pivotal,
  59. pushover,
  60. redmine,
  61. segment,
  62. slack,
  63. trello,
  64. twilio,
  65. visualstudio,
  66. vsts,
  67. vercel,
  68. victorops,
  69. };
  70. type Props = {
  71. /**
  72. * @default '_default'
  73. */
  74. pluginId?: string;
  75. /**
  76. * @default 20
  77. */
  78. size?: number;
  79. };
  80. const PluginIcon = styled('div')<Props>`
  81. position: relative;
  82. height: ${p => p.size ?? 20}px;
  83. width: ${p => p.size ?? 20}px;
  84. min-width: ${p => p.size ?? 20}px;
  85. border-radius: 2px;
  86. border: 0;
  87. display: inline-block;
  88. background-size: contain;
  89. background-position: center center;
  90. background-repeat: no-repeat;
  91. background-image: url(${({pluginId = '_default'}) =>
  92. // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message
  93. (pluginId !== undefined && ICON_PATHS[pluginId]) || DEFAULT_ICON});
  94. `;
  95. export default PluginIcon;