activityList.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import {Fragment} from 'react';
  2. import styled from '@emotion/styled';
  3. import DateTime from 'sentry/components/dateTime';
  4. import {PanelTable} from 'sentry/components/panels';
  5. import {t} from 'sentry/locale';
  6. import {RelayActivity} from 'sentry/types';
  7. type Props = {
  8. activities: Array<RelayActivity>;
  9. };
  10. const ActivityList = ({activities}: Props) => (
  11. <StyledPanelTable headers={[t('Version'), t('First Used'), t('Last Used')]}>
  12. {activities.map(({relayId, version, firstSeen, lastSeen}) => {
  13. return (
  14. <Fragment key={relayId}>
  15. <Version>{version}</Version>
  16. <DateTime date={firstSeen} seconds={false} />
  17. <DateTime date={lastSeen} seconds={false} />
  18. </Fragment>
  19. );
  20. })}
  21. </StyledPanelTable>
  22. );
  23. export default ActivityList;
  24. const StyledPanelTable = styled(PanelTable)`
  25. grid-template-columns: repeat(3, 2fr);
  26. @media (min-width: ${p => p.theme.breakpoints.large}) {
  27. grid-template-columns: 2fr repeat(2, 1fr);
  28. }
  29. `;
  30. const Version = styled('div')`
  31. font-variant-numeric: tabular-nums;
  32. `;