103 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as React from 'react';
 | 
						|
import styled from 'styled-components';
 | 
						|
 | 
						|
import { Button } from 'ts/components/button';
 | 
						|
import { Heading, Paragraph } from 'ts/components/text';
 | 
						|
 | 
						|
export interface Action {
 | 
						|
    label: string;
 | 
						|
    url?: string;
 | 
						|
    onClick?: () => void;
 | 
						|
    shouldUseAnchorTag?: boolean;
 | 
						|
}
 | 
						|
 | 
						|
interface Props {
 | 
						|
    isInline?: boolean;
 | 
						|
    isCentered?: boolean;
 | 
						|
    isWithMargin?: boolean;
 | 
						|
    fontSize?: 'default' | 'medium' | number;
 | 
						|
    title: string;
 | 
						|
    titleSize?: 'small' | 'default' | number;
 | 
						|
    description: React.ReactNode | string;
 | 
						|
    actions?: Action[];
 | 
						|
}
 | 
						|
 | 
						|
export const SimpleDefinition = (props: Props) => (
 | 
						|
    <Wrap {...props}>
 | 
						|
        <Heading
 | 
						|
            asElement="h2"
 | 
						|
            fontWeight="400"
 | 
						|
            marginBottom={props.titleSize === 'small' ? '7px' : '15px'}
 | 
						|
            size={props.titleSize || 'default'}
 | 
						|
        >
 | 
						|
            {props.title}
 | 
						|
        </Heading>
 | 
						|
 | 
						|
        {typeof props.description === 'string' ? (
 | 
						|
            <Paragraph isMuted={true} size={props.fontSize || 'default'}>
 | 
						|
                {props.description}
 | 
						|
            </Paragraph>
 | 
						|
        ) : (
 | 
						|
            <>{props.description}</>
 | 
						|
        )}
 | 
						|
 | 
						|
        {props.actions && (
 | 
						|
            <LinkWrap>
 | 
						|
                {props.actions.map((item, index) => (
 | 
						|
                    <Button
 | 
						|
                        key={`dlink-${index}`}
 | 
						|
                        href={item.url}
 | 
						|
                        onClick={item.onClick}
 | 
						|
                        isWithArrow={true}
 | 
						|
                        isAccentColor={true}
 | 
						|
                        shouldUseAnchorTag={item.shouldUseAnchorTag}
 | 
						|
                        target="_blank"
 | 
						|
                    >
 | 
						|
                        {item.label}
 | 
						|
                    </Button>
 | 
						|
                ))}
 | 
						|
            </LinkWrap>
 | 
						|
        )}
 | 
						|
    </Wrap>
 | 
						|
);
 | 
						|
 | 
						|
const Wrap = styled.div<Props>`
 | 
						|
    width: 100%;
 | 
						|
    max-width: 560px;
 | 
						|
 | 
						|
    ul {
 | 
						|
        padding-top: 10px;
 | 
						|
        padding-left: 1rem;
 | 
						|
    }
 | 
						|
 | 
						|
    li {
 | 
						|
        color: ${props => props.theme.paragraphColor};
 | 
						|
        font-size: ${props => `var(--${props.fontSize || 'default'}Paragraph)`};
 | 
						|
        font-weight: 300;
 | 
						|
        list-style: disc;
 | 
						|
        opacity: 0.75;
 | 
						|
        line-height: 1.444444444;
 | 
						|
        margin-bottom: 1rem;
 | 
						|
    }
 | 
						|
`;
 | 
						|
 | 
						|
const LinkWrap = styled.div`
 | 
						|
    margin-top: 60px;
 | 
						|
 | 
						|
    @media (min-width: 768px) {
 | 
						|
        display: inline-flex;
 | 
						|
 | 
						|
        a + a {
 | 
						|
            margin-left: 60px;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    @media (max-width: 768px) {
 | 
						|
        max-width: 250px;
 | 
						|
 | 
						|
        a + a {
 | 
						|
            margin-top: 15px;
 | 
						|
        }
 | 
						|
    }
 | 
						|
`;
 |