12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import styled from '@emotion/styled';
- import {Button} from 'sentry/components/button';
- import Card from 'sentry/components/card';
- import {IconAdd, IconGeneric} from 'sentry/icons';
- import {t} from 'sentry/locale';
- import space from 'sentry/styles/space';
- type Props = {
- description: string;
- onAdd: () => void;
- onPreview: () => void;
- title: string;
- };
- function TemplateCard({title, description, onPreview, onAdd}: Props) {
- return (
- <StyledCard>
- <Header>
- <IconGeneric legacySize="48px" />
- <Title>
- {title}
- <Detail>{description}</Detail>
- </Title>
- </Header>
- <ButtonContainer>
- <StyledButton onClick={onAdd} icon={<IconAdd isCircled />}>
- {t('Add Dashboard')}
- </StyledButton>
- <StyledButton priority="primary" onClick={onPreview}>
- {t('Preview')}
- </StyledButton>
- </ButtonContainer>
- </StyledCard>
- );
- }
- const StyledCard = styled(Card)`
- gap: ${space(1)};
- padding: ${space(2)};
- `;
- const Header = styled('div')`
- display: flex;
- gap: ${space(2)};
- `;
- const Title = styled('div')`
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- `;
- const Detail = styled(Title)`
- font-family: ${p => p.theme.text.familyMono};
- font-size: ${p => p.theme.fontSizeSmall};
- color: ${p => p.theme.gray300};
- `;
- const ButtonContainer = styled('div')`
- display: flex;
- flex-wrap: wrap;
- gap: ${space(1)};
- `;
- const StyledButton = styled(Button)`
- flex-grow: 1;
- `;
- export default TemplateCard;
|