import {Fragment} from 'react';
import {Link} from 'react-router';
import styled from '@emotion/styled';
import Duration from 'sentry/components/duration';
import ProjectBadge from 'sentry/components/idBadge/projectBadge';
import Placeholder from 'sentry/components/placeholder';
import Tag, {Background} from 'sentry/components/tag';
import TimeSince from 'sentry/components/timeSince';
import {IconCalendar, IconClock} from 'sentry/icons';
import {tn} from 'sentry/locale';
import space from 'sentry/styles/space';
import {useLocation} from 'sentry/utils/useLocation';
import {useParams} from 'sentry/utils/useParams';
import useProjects from 'sentry/utils/useProjects';
import type {ReplayRecord} from 'sentry/views/replays/types';
type Props = {
replayRecord: ReplayRecord | undefined;
};
function ReplayMetaData({replayRecord}: Props) {
const {pathname, query} = useLocation();
const {replaySlug} = useParams();
const {projects} = useProjects();
const [slug] = replaySlug.split(':');
const errorsTabHref = {
pathname,
query: {
...query,
t_main: 'console',
f_c_logLevel: 'issue',
f_c_search: undefined,
},
};
return (
{replayRecord ? (
p.id === replayRecord.project_id) || {slug}}
avatarSize={16}
/>
) : (
)}
{replayRecord ? (
) : (
)}
{replayRecord ? (
) : (
)}
{replayRecord ? (
{replayRecord.count_errors}
{tn('Error', 'Errors', replayRecord.count_errors)}
) : (
)}
);
}
export const HeaderPlaceholder = styled(
(props: React.ComponentProps) => (
)
)`
background-color: ${p => p.theme.background};
`;
const KeyMetrics = styled('div')`
display: flex;
gap: ${space(3)};
align-items: center;
justify-content: end;
font-size: ${p => p.theme.fontSizeMedium};
@media (max-width: ${p => p.theme.breakpoints.medium}) {
justify-content: start;
}
`;
const KeyMetricData = styled('div')`
color: ${p => p.theme.textColor};
font-weight: normal;
display: flex;
align-items: center;
gap: ${space(1)};
line-height: ${p => p.theme.text.lineHeightBody};
`;
const StyledLink = styled(Link)`
display: flex;
gap: ${space(1)};
`;
const ErrorTag = styled(Tag)<{level: 'fatal' | 'default'}>`
${Background} {
background: ${p => p.theme.level[p.level]};
border-color: ${p => p.theme.level[p.level]};
padding: 0 ${space(0.75)};
span {
color: ${p => p.theme.buttonCountActive} !important;
}
}
`;
export default ReplayMetaData;