12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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;
- `;
|