sectionHeader.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import styled from '@emotion/styled';
  2. import {Tooltip} from 'sentry/components/tooltip';
  3. import {t} from 'sentry/locale';
  4. import {space} from 'sentry/styles/space';
  5. interface SectionHeaderProps {
  6. title: React.ReactNode;
  7. className?: string;
  8. optional?: boolean;
  9. tooltipText?: React.ReactNode;
  10. }
  11. export function SectionHeader({
  12. tooltipText,
  13. title,
  14. optional,
  15. className,
  16. }: SectionHeaderProps) {
  17. return (
  18. <HeaderWrapper>
  19. <Tooltip
  20. title={tooltipText}
  21. disabled={!tooltipText}
  22. position="right-end"
  23. delay={200}
  24. isHoverable
  25. showUnderline
  26. >
  27. <StyledHeader className={className}>{title}</StyledHeader>
  28. </Tooltip>
  29. {optional && <OptionalHeader>{t('(optional)')}</OptionalHeader>}
  30. </HeaderWrapper>
  31. );
  32. }
  33. const StyledHeader = styled('h6')`
  34. font-size: ${p => p.theme.fontSizeLarge};
  35. margin-bottom: ${space(1)};
  36. `;
  37. const OptionalHeader = styled('h6')`
  38. font-size: ${p => p.theme.fontSizeLarge};
  39. color: ${p => p.theme.subText};
  40. font-weight: ${p => p.theme.fontWeightNormal};
  41. margin-bottom: ${space(1)};
  42. `;
  43. const HeaderWrapper = styled('div')`
  44. display: flex;
  45. flex-direction: row;
  46. gap: ${space(0.5)};
  47. `;