detailsPageBreadcrumbs.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {ComponentProps, Fragment} from 'react';
  2. import styled from '@emotion/styled';
  3. import Breadcrumbs from 'sentry/components/breadcrumbs';
  4. import Placeholder from 'sentry/components/placeholder';
  5. import ReplaysFeatureBadge from 'sentry/components/replays/replaysFeatureBadge';
  6. import {t} from 'sentry/locale';
  7. import type {ReplayRecord} from 'sentry/views/replays/types';
  8. type Props = {
  9. orgId: string;
  10. replayRecord: ReplayRecord | undefined;
  11. };
  12. function DetailsPageBreadcrumbs({orgId, replayRecord}: Props) {
  13. const labelTitle =
  14. replayRecord?.user.name ||
  15. replayRecord?.user.email ||
  16. replayRecord?.user.ipAddress ||
  17. replayRecord?.user.id;
  18. return (
  19. <Breadcrumbs
  20. crumbs={[
  21. {
  22. to: `/organizations/${orgId}/replays/`,
  23. label: t('Replays'),
  24. },
  25. {
  26. label: labelTitle ? (
  27. <Fragment>
  28. {labelTitle} <ReplaysFeatureBadge />
  29. </Fragment>
  30. ) : (
  31. <HeaderPlaceholder width="500px" height="24px" />
  32. ),
  33. },
  34. ]}
  35. />
  36. );
  37. }
  38. const HeaderPlaceholder = styled((props: ComponentProps<typeof Placeholder>) => (
  39. <Placeholder width="100%" height="19px" {...props} />
  40. ))`
  41. background-color: ${p => p.theme.background};
  42. `;
  43. export default DetailsPageBreadcrumbs;