import styled from '@emotion/styled'; import emptyStateImg from 'sentry-images/spot/performance-empty-state.svg'; import tourAlert from 'sentry-images/spot/performance-tour-alert.svg'; import tourCorrelate from 'sentry-images/spot/performance-tour-correlate.svg'; import tourMetrics from 'sentry-images/spot/performance-tour-metrics.svg'; import tourTrace from 'sentry-images/spot/performance-tour-trace.svg'; import Button from 'app/components/button'; import ButtonBar from 'app/components/buttonBar'; import FeatureTourModal, { TourImage, TourStep, TourText, } from 'app/components/modals/featureTourModal'; import OnboardingPanel from 'app/components/onboardingPanel'; import {t} from 'app/locale'; import {Organization} from 'app/types'; import {trackAnalyticsEvent} from 'app/utils/analytics'; const performanceSetupUrl = 'https://docs.sentry.io/performance-monitoring/getting-started/'; const docsLink = ( ); export const PERFORMANCE_TOUR_STEPS: TourStep[] = [ { title: t('Track Application Metrics'), image: , body: ( {t( 'Monitor your slowest pageloads and APIs to see which users are having the worst time.' )} ), actions: docsLink, }, { title: t('Correlate Errors and Performance'), image: , body: ( {t( 'See what errors occurred within a transaction and the impact of those errors.' )} ), actions: docsLink, }, { title: t('Watch and Alert'), image: , body: ( {t( 'Highlight mission-critical pages and APIs and set latency alerts to notify you before things go wrong.' )} ), actions: docsLink, }, { title: t('Trace Across Systems'), image: , body: ( {t( "Follow a trace from a user's session and drill down to identify any bottlenecks that occur." )} ), }, ]; type Props = { organization: Organization; }; function Onboarding({organization}: Props) { function handleAdvance(step: number, duration: number) { trackAnalyticsEvent({ eventKey: 'performance_views.tour.advance', eventName: 'Performance Views: Tour Advance', organization_id: parseInt(organization.id, 10), step, duration, }); } function handleClose(step: number, duration: number) { trackAnalyticsEvent({ eventKey: 'performance_views.tour.close', eventName: 'Performance Views: Tour Close', organization_id: parseInt(organization.id, 10), step, duration, }); } return ( }>

{t('Pinpoint problems')}

{t( 'Something seem slow? Track down transactions to connect the dots between 10-second page loads and poor-performing API calls or slow database queries.' )}

{({showModal}) => ( )}
); } const PerfImage = styled('img')` @media (min-width: ${p => p.theme.breakpoints[0]}) { max-width: unset; user-select: none; position: absolute; top: 50px; bottom: 0; width: 450px; margin-top: auto; margin-bottom: auto; } @media (min-width: ${p => p.theme.breakpoints[1]}) { width: 480px; } @media (min-width: ${p => p.theme.breakpoints[2]}) { width: 600px; } `; const ButtonList = styled(ButtonBar)` grid-template-columns: repeat(auto-fit, minmax(130px, max-content)); `; export default Onboarding;