1+ import type { ComponentPropsWithoutRef } from 'react' ;
12import styled from '@emotion/styled' ;
23
34import { InputGroup } from '@sentry/scraps/input' ;
@@ -6,6 +7,11 @@ import {Flex, type FlexProps} from '@sentry/scraps/layout';
67import { Breadcrumbs as NavigationBreadcrumbs } from 'sentry/components/breadcrumbs' ;
78import { DrawerBody , DrawerHeader } from 'sentry/components/globalDrawer/components' ;
89import { MIN_NAV_HEIGHT } from 'sentry/views/issueDetails/streamline/eventTitle' ;
10+ import {
11+ NAVIGATION_MOBILE_TOPBAR_HEIGHT_WITH_PAGE_FRAME ,
12+ PRIMARY_HEADER_HEIGHT ,
13+ } from 'sentry/views/navigation/constants' ;
14+ import { useHasPageFrameFeature } from 'sentry/views/navigation/useHasPageFrameFeature' ;
915
1016export const Header = styled ( 'h3' ) `
1117 display: block;
@@ -31,16 +37,45 @@ export const ShortId = styled('div')`
3137 line-height: 1;
3238` ;
3339
34- export const EventDrawerContainer = styled ( 'div' ) `
40+ const EventDrawerContainerRoot = styled ( 'div' ) < { hasPageFrameFeature : boolean } > `
3541 height: 100%;
3642 display: grid;
3743 grid-template-rows: max-content max-content auto;
44+
45+ ${ p =>
46+ p . hasPageFrameFeature &&
47+ `
48+ /* Responsive height that matches the TopBar (48px mobile, 53px desktop) */
49+ --event-drawer-header-height: ${ NAVIGATION_MOBILE_TOPBAR_HEIGHT_WITH_PAGE_FRAME } px;
50+ --event-navigator-box-shadow: none;
51+ --event-navigator-border-bottom: 1px solid ${ p . theme . tokens . border . primary } ;
52+
53+ @media (min-width: ${ p . theme . breakpoints . md } ) {
54+ --event-drawer-header-height: ${ PRIMARY_HEADER_HEIGHT } px;
55+ }
56+ ` }
3857` ;
3958
59+ export function EventDrawerContainer ( props : ComponentPropsWithoutRef < 'div' > ) {
60+ const hasPageFrameFeature = useHasPageFrameFeature ( ) ;
61+
62+ return (
63+ < EventDrawerContainerRoot { ...props } hasPageFrameFeature = { hasPageFrameFeature } />
64+ ) ;
65+ }
66+
4067export const EventDrawerHeader = styled ( DrawerHeader ) `
4168 position: unset;
42- max-height: var(--drawer-header-height, ${ MIN_NAV_HEIGHT } px);
43- min-height: var(--drawer-header-height, ${ MIN_NAV_HEIGHT } px);
69+ /* Height priority: container variable (responsive) → DrawerHeader height prop → default */
70+ height: var(--event-drawer-header-height, var(--drawer-header-height, auto));
71+ max-height: var(
72+ --event-drawer-header-height,
73+ var(--drawer-header-height, ${ MIN_NAV_HEIGHT } px)
74+ );
75+ min-height: var(
76+ --event-drawer-header-height,
77+ var(--drawer-header-height, ${ MIN_NAV_HEIGHT } px)
78+ );
4479 align-items: center;
4580 box-shadow: none;
4681 border-bottom: 1px solid ${ p => p . theme . tokens . border . primary } ;
@@ -54,12 +89,17 @@ export const EventNavigator = styled('div')`
5489 grid-template-columns: 1fr auto;
5590 align-items: center;
5691 column-gap: ${ p => p . theme . space . md } ;
57- padding: ${ p => p . theme . space . sm } 24px;
92+ padding: 0 24px;
5893 background: ${ p => p . theme . tokens . background . primary } ;
5994 z-index: 2; /* Just above EventStickyControls */
60- min-height: ${ MIN_NAV_HEIGHT } px;
95+ height: var(--event-drawer-header-height, auto);
96+ min-height: var(--event-drawer-header-height, ${ MIN_NAV_HEIGHT } px);
97+ border-bottom: var(--event-navigator-border-bottom, 0);
6198 /* eslint-disable-next-line @sentry/scraps/use-semantic-token */
62- box-shadow: ${ p => p . theme . tokens . border . primary } 0 1px;
99+ box-shadow: var(
100+ --event-navigator-box-shadow,
101+ ${ p => `${ p . theme . tokens . border . primary } 0 1px` }
102+ );
63103` ;
64104
65105export const EventStickyControls = styled ( 'div' ) `
0 commit comments