Files
2024-02-15 17:01:50 +00:00

59 lines
1.3 KiB
TypeScript

import styled from '@emotion/styled';
import Panel from 'sentry/components/panels/panel';
import {space} from 'sentry/styles/space';
import textStyles from 'sentry/styles/text';
type Props = {
children: React.ReactNode;
button?: JSX.Element;
subtitle?: string;
title?: string;
};
export default function MiniChartPanel({title, children, button, subtitle}: Props) {
return (
<Panel>
<PanelBody>
{(title || button || subtitle) && (
<HeaderContainer>
<Header>
{title && <ChartLabel>{title}</ChartLabel>}
{button}
</Header>
{subtitle && <Subtitle>{subtitle}</Subtitle>}
</HeaderContainer>
)}
{children}
</PanelBody>
</Panel>
);
}
const ChartLabel = styled('p')`
${p => p.theme.text.cardTitle}
`;
const HeaderContainer = styled('div')`
padding: 0 ${space(1)} 0 0;
`;
const Header = styled('div')`
min-height: 24px;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
`;
const PanelBody = styled('div')`
padding: ${space(1.5)} ${space(2)};
${textStyles};
`;
const Subtitle = styled('span')`
color: ${p => p.theme.gray300};
font-size: ${p => p.theme.fontSizeSmall};
display: inline-block;
`;