import {useState} from 'react'; import styled from '@emotion/styled'; import {openModal} from 'sentry/actionCreators/modal'; import {Button} from 'sentry/components/button'; import ProjectBadge from 'sentry/components/idBadge/projectBadge'; import ExternalLink from 'sentry/components/links/externalLink'; import ShortId from 'sentry/components/shortId'; import {Tooltip} from 'sentry/components/tooltip'; import {IconCopy, IconGlobe} from 'sentry/icons'; import {t, tct} from 'sentry/locale'; import {space} from 'sentry/styles/space'; import type {Group} from 'sentry/types/group'; import type {Project} from 'sentry/types/project'; import {trackAnalytics} from 'sentry/utils/analytics'; import {getAnalyticsDataForGroup} from 'sentry/utils/events'; import useCopyToClipboard from 'sentry/utils/useCopyToClipboard'; import useOrganization from 'sentry/utils/useOrganization'; import PublishIssueModal from 'sentry/views/issueDetails/actions/publishModal'; import {getShareUrl} from 'sentry/views/issueDetails/actions/shareModal'; interface ShortIdBreadcrumbProps { group: Group; project: Project; } export function IssueIdBreadcrumb({project, group}: ShortIdBreadcrumbProps) { const organization = useOrganization(); const [isHovered, setIsHovered] = useState(false); const shareUrl = group?.shareId ? getShareUrl(group) : null; const {onClick: handleCopyShortId} = useCopyToClipboard({ text: group.shortId, successMessage: t('Copied Short-ID to clipboard'), onCopy: () => { trackAnalytics('issue_details.copy_issue_short_id_clicked', { organization, ...getAnalyticsDataForGroup(group), streamline: true, }); }, }); if (!group.shortId) { return null; } return ( setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} > {isHovered && (