continuousProfileHeader.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import {useMemo} from 'react';
  2. import styled from '@emotion/styled';
  3. import FeedbackWidgetButton from 'sentry/components/feedback/widget/feedbackWidgetButton';
  4. import * as Layout from 'sentry/components/layouts/thirds';
  5. import type {ProfilingBreadcrumbsProps} from 'sentry/components/profiling/profilingBreadcrumbs';
  6. import {ProfilingBreadcrumbs} from 'sentry/components/profiling/profilingBreadcrumbs';
  7. import {space} from 'sentry/styles/space';
  8. import useOrganization from 'sentry/utils/useOrganization';
  9. export function ContinuousProfileHeader() {
  10. const organization = useOrganization();
  11. // @TODO add breadcrumbs when other views are implemented
  12. const breadCrumbs = useMemo((): ProfilingBreadcrumbsProps['trails'] => {
  13. return [{type: 'landing', payload: {query: {}}}];
  14. }, []);
  15. return (
  16. <SmallerLayoutHeader>
  17. <SmallerHeaderContent>
  18. <SmallerProfilingBreadcrumbsWrapper>
  19. <ProfilingBreadcrumbs organization={organization} trails={breadCrumbs} />
  20. </SmallerProfilingBreadcrumbsWrapper>
  21. </SmallerHeaderContent>
  22. <StyledHeaderActions>
  23. <FeedbackWidgetButton />
  24. </StyledHeaderActions>
  25. </SmallerLayoutHeader>
  26. );
  27. }
  28. const StyledHeaderActions = styled(Layout.HeaderActions)`
  29. display: flex;
  30. flex-direction: row;
  31. gap: ${space(1)};
  32. `;
  33. const SmallerHeaderContent = styled(Layout.HeaderContent)`
  34. margin-bottom: ${space(1.5)};
  35. `;
  36. const SmallerProfilingBreadcrumbsWrapper = styled('div')`
  37. nav {
  38. padding-bottom: ${space(1)};
  39. }
  40. `;
  41. const SmallerLayoutHeader = styled(Layout.Header)`
  42. padding: ${space(1)} ${space(2)} ${space(0)} ${space(2)} !important;
  43. `;