import styled from '@emotion/styled'; import {ReplaySideBySideImageDiff} from 'sentry/components/replays/diff/replaySideBySideImageDiff'; import {ReplaySliderDiff} from 'sentry/components/replays/diff/replaySliderDiff'; import {ReplayTextDiff} from 'sentry/components/replays/diff/replayTextDiff'; import {TabList, TabPanels, TabStateProvider} from 'sentry/components/tabs'; import {t} from 'sentry/locale'; import {trackAnalytics} from 'sentry/utils/analytics'; import type ReplayReader from 'sentry/utils/replays/replayReader'; import useOrganization from 'sentry/utils/useOrganization'; interface Props { leftOffsetMs: number; replay: null | ReplayReader; rightOffsetMs: number; defaultTab?: DiffType; } export const enum DiffType { HTML = 'html', SLIDER = 'slider', VISUAL = 'visual', } export default function ReplayDiffChooser({ defaultTab = DiffType.SLIDER, leftOffsetMs, replay, rightOffsetMs, }: Props) { const organization = useOrganization(); const onTabChange = (tabKey: DiffType) => { trackAnalytics('replay.hydration-modal.tab-change', {tabKey, organization}); }; return ( defaultValue={defaultTab} onChange={onTabChange}> {t('Slider Diff')} {t('Side By Side Diff')} {t('Html Diff')} ); } const Grid = styled('div')` display: grid; grid-template-rows: max-content 1fr; height: 100%; `;