import { IconButton, MenuItem, styled, TextField, Tooltip, } from '@mui/material'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments'; import type { IEnvironment } from 'interfaces/environments'; import { useEffect, useMemo } from 'react'; import { type TimeSpanOption, timeSpanOptions } from '../useEventTimeline'; import CloseIcon from '@mui/icons-material/Close'; const StyledCol = styled('div')(({ theme }) => ({ display: 'flex', alignItems: 'center', gap: theme.spacing(1), })); const StyledFilter = styled(TextField)(({ theme }) => ({ '& > div': { background: 'transparent', color: theme.palette.text.secondary, '& > .MuiSelect-select': { padding: theme.spacing(0.5, 4, 0.5, 1), background: 'transparent', }, '& > fieldset': { borderColor: 'transparent' }, }, })); const StyledTimelineEventsCount = styled('span')(({ theme }) => ({ marginTop: theme.spacing(0.25), })); interface IEventTimelineHeaderProps { totalEvents: number; timeSpan: TimeSpanOption; setTimeSpan: (timeSpan: TimeSpanOption) => void; environment: IEnvironment | undefined; setEnvironment: (environment: IEnvironment) => void; setOpen: (open: boolean) => void; } export const EventTimelineHeader = ({ totalEvents, timeSpan, setTimeSpan, environment, setEnvironment, setOpen, }: IEventTimelineHeaderProps) => { const { environments } = useEnvironments(); const activeEnvironments = useMemo( () => environments.filter(({ enabled }) => enabled), [environments], ); useEffect(() => { if (activeEnvironments.length > 0 && !environment) { const defaultEnvironment = activeEnvironments.find(({ type }) => type === 'production') || activeEnvironments[0]; setEnvironment(defaultEnvironment); } }, [activeEnvironments]); return ( <> {totalEvents} event {totalEvents === 1 ? '' : 's'} setTimeSpan( timeSpanOptions.find( ({ key }) => key === e.target.value, ) || timeSpanOptions[0], ) } > {timeSpanOptions.map(({ key, label }) => ( {label} ))} ( setEnvironment( environments.find( ({ name }) => name === e.target.value, ) || environments[0], ) } > {environments.map(({ name }) => ( {name} ))} )} /> setOpen(false)} > ); };