index.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import {Fragment} from 'react';
  2. import styled from '@emotion/styled';
  3. import {Button, LinkButton} from 'sentry/components/button';
  4. import {useFeatureFlagOnboarding} from 'sentry/components/events/featureFlags/useFeatureFlagOnboarding';
  5. import FieldGroup from 'sentry/components/forms/fieldGroup';
  6. import ExternalLink from 'sentry/components/links/externalLink';
  7. import Panel from 'sentry/components/panels/panel';
  8. import PanelBody from 'sentry/components/panels/panelBody';
  9. import PanelHeader from 'sentry/components/panels/panelHeader';
  10. import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
  11. import {t, tct} from 'sentry/locale';
  12. import useOrganization from 'sentry/utils/useOrganization';
  13. import SettingsPageHeader from 'sentry/views/settings/components/settingsPageHeader';
  14. import TextBlock from 'sentry/views/settings/components/text/textBlock';
  15. export default function OrganizationFeatureFlagsIndex() {
  16. const organization = useOrganization();
  17. const {activateSidebar} = useFeatureFlagOnboarding();
  18. return (
  19. <Fragment>
  20. <SentryDocumentTitle title={t('Feature Flags')} orgSlug={organization.slug} />
  21. <SettingsPageHeader title={t('Feature Flags')} />
  22. <TextBlock>
  23. {tct(
  24. 'Integrating Sentry with your feature flag provider enables Sentry to correlate feature flag changes with new error events and mark certain changes as suspicious. To learn more about our feature flag features, [link:read our docs].',
  25. {
  26. link: (
  27. <ExternalLink href="https://docs.sentry.io/product/issues/issue-details/feature-flags/" />
  28. ),
  29. }
  30. )}
  31. </TextBlock>
  32. <Panel>
  33. <PanelHeader>{t('Features')}</PanelHeader>
  34. <PanelBody>
  35. <FieldGroup
  36. alignRight
  37. flexibleControlStateSize
  38. label={<Large>{t('Evaluation Tracking')}</Large>}
  39. help={t(
  40. 'Evaluation tracking enables Sentry to capture flag values on your error events. Flag evaluations will appear in the "Feature Flags" section of the Issue Details page.'
  41. )}
  42. >
  43. <Button
  44. aria-label={t('Set Up Evaluation Tracking')}
  45. onClick={mouseEvent => {
  46. activateSidebar(mouseEvent);
  47. }}
  48. >
  49. {t('Set Up Project')}
  50. </Button>
  51. </FieldGroup>
  52. <FieldGroup
  53. alignRight
  54. flexibleControlStateSize
  55. label={<Large>{t('Change Tracking')}</Large>}
  56. help={t(
  57. 'Change tracking enables Sentry to listen for additions, removals, and modifications to your feature flags.'
  58. )}
  59. >
  60. <LinkButton
  61. to={`/settings/${organization.slug}/feature-flags/change-tracking/`}
  62. >
  63. {t('Manage Providers')}
  64. </LinkButton>
  65. </FieldGroup>
  66. </PanelBody>
  67. </Panel>
  68. </Fragment>
  69. );
  70. }
  71. const Large = styled('span')`
  72. font-size: ${p => p.theme.fontSizeLarge};
  73. `;