import {Fragment} from 'react'; import styled from '@emotion/styled'; import emptyStateImg from 'sentry-images/spot/replays-empty-state.svg'; import Feature from 'sentry/components/acl/feature'; import {Button} from 'sentry/components/button'; import ButtonBar from 'sentry/components/buttonBar'; import HookOrDefault from 'sentry/components/hookOrDefault'; import OnboardingPanel from 'sentry/components/onboardingPanel'; import {t} from 'sentry/locale'; import PreferencesStore from 'sentry/stores/preferencesStore'; import {useLegacyStore} from 'sentry/stores/useLegacyStore'; import {useReplayOnboardingSidebarPanel} from 'sentry/utils/replays/hooks/useReplayOnboarding'; import useOrganization from 'sentry/utils/useOrganization'; type Breakpoints = { large: string; medium: string; small: string; xlarge: string; }; const OnboardingCTAHook = HookOrDefault({ hookName: 'component:replay-onboarding-cta', defaultComponent: ({children}) => {children}, }); export default function ReplayOnboardingPanel() { const preferences = useLegacyStore(PreferencesStore); const breakpoints = preferences.collapsed ? { small: '800px', medium: '992px', large: '1210px', xlarge: '1450px', } : { small: '800px', medium: '1175px', large: '1375px', xlarge: '1450px', }; const organization = useOrganization(); return ( }> } > ); } function SetupReplaysCTA() { const {activateSidebar} = useReplayOnboardingSidebarPanel(); return (

{t('Get to the root cause faster')}

{t( 'See a video-like reproduction of your user sessions so you can see what happened before, during, and after an error or latency issue occurred.' )}

); } const HeroImage = styled('img')<{breakpoints: Breakpoints}>` @media (min-width: ${p => p.breakpoints.small}) { user-select: none; position: absolute; top: 0; bottom: 0; width: 220px; margin-top: auto; margin-bottom: auto; transform: translateX(-50%); left: 50%; } @media (min-width: ${p => p.breakpoints.medium}) { transform: translateX(-55%); width: 300px; min-width: 300px; } @media (min-width: ${p => p.breakpoints.large}) { transform: translateX(-60%); width: 380px; min-width: 380px; } @media (min-width: ${p => p.breakpoints.xlarge}) { transform: translateX(-65%); width: 420px; min-width: 420px; } `; const ButtonList = styled(ButtonBar)` grid-template-columns: repeat(auto-fit, minmax(130px, max-content)); `;