import {createContext, useContext, useRef, useState} from 'react'; import styled from '@emotion/styled'; import {CommitRow} from 'sentry/components/commitRow'; import {SuspectCommits} from 'sentry/components/events/suspectCommits'; import {DatePageFilter} from 'sentry/components/organizations/datePageFilter'; import {EnvironmentPageFilter} from 'sentry/components/organizations/environmentPageFilter'; import {space} from 'sentry/styles/space'; import usePageFilters from 'sentry/utils/usePageFilters'; import { DefaultGroupEventDetailsContent, type GroupEventDetailsContentProps, } from 'sentry/views/issueDetails/groupEventDetails/groupEventDetailsContent'; import {EventNavigation} from 'sentry/views/issueDetails/streamline/eventNavigation'; import {EventSearch} from 'sentry/views/issueDetails/streamline/eventSearch'; import {Section} from 'sentry/views/issueDetails/streamline/foldSection'; export interface EventDetailsContextType { searchQuery: string; } const EventDetailsContext = createContext({ searchQuery: '', }); export function useEventDetailsContext() { return useContext(EventDetailsContext); } export function EventDetails({ group, event, project, }: Required) { const navRef = useRef(null); const {selection} = usePageFilters(); const {environments} = selection; const [eventDetails, setEventDetails] = useState({ searchQuery: '', }); return ( { setEventDetails(details => ({...details, searchQuery})); }} environments={environments} query={eventDetails.searchQuery} /> ); } const FloatingEventNavigation = styled(EventNavigation)` position: sticky; top: 0; background: ${p => p.theme.background}; z-index: 100; border-radius: 6px 6px 0 0; `; const SearchFilter = styled(EventSearch)` border-radius: ${p => p.theme.borderRadius}; `; const GroupContent = styled('div')<{navHeight?: number}>` border: 1px solid ${p => p.theme.border}; background: ${p => p.theme.background}; border-radius: ${p => p.theme.borderRadius}; position: relative; & ${Section} { scroll-margin-top: ${p => p.navHeight ?? 0}px; } `; const GroupContentPadding = styled('div')` padding: ${space(1)} ${space(1.5)}; `; const FilterContainer = styled('div')` display: grid; grid-template-columns: auto 1fr auto; gap: ${space(1)}; `;