samplingPromo.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import styled from '@emotion/styled';
  2. import onboardingServerSideSampling from 'sentry-images/spot/onboarding-server-side-sampling.svg';
  3. import Button from 'sentry/components/button';
  4. import ButtonBar from 'sentry/components/buttonBar';
  5. import OnboardingPanel from 'sentry/components/onboardingPanel';
  6. import {t} from 'sentry/locale';
  7. import {SERVER_SIDE_SAMPLING_DOC_LINK} from './utils';
  8. type Props = {
  9. hasAccess: boolean;
  10. isProjectIncompatible: boolean;
  11. onGetStarted: () => void;
  12. onReadDocs: () => void;
  13. };
  14. export function SamplingPromo({
  15. onGetStarted,
  16. onReadDocs,
  17. hasAccess,
  18. isProjectIncompatible,
  19. }: Props) {
  20. return (
  21. <OnboardingPanel image={<img src={onboardingServerSideSampling} />}>
  22. <h3>{t('Sample for relevancy')}</h3>
  23. <Paragraph>
  24. {t(
  25. 'Create rules to sample transactions under specific conditions, keeping what you need and dropping what you don’t.'
  26. )}
  27. </Paragraph>
  28. <ButtonList gap={1}>
  29. <Button
  30. priority="primary"
  31. onClick={onGetStarted}
  32. disabled={!hasAccess || isProjectIncompatible}
  33. title={hasAccess ? undefined : t('You do not have permission to set up rules')}
  34. >
  35. {t('Start Setup')}
  36. </Button>
  37. <Button href={SERVER_SIDE_SAMPLING_DOC_LINK} onClick={onReadDocs} external>
  38. {t('Read Docs')}
  39. </Button>
  40. </ButtonList>
  41. </OnboardingPanel>
  42. );
  43. }
  44. const ButtonList = styled(ButtonBar)`
  45. grid-template-columns: repeat(auto-fit, minmax(130px, max-content));
  46. `;
  47. const Paragraph = styled('p')`
  48. font-size: ${p => p.theme.fontSizeLarge};
  49. `;