redoc/src/common-elements/shelfs.tsx

61 lines
1.5 KiB
TypeScript
Raw Normal View History

2017-10-12 00:01:37 +03:00
import * as React from 'react';
import styled from '../styled-components';
2017-10-12 00:01:37 +03:00
const directionMap = {
left: '90deg',
right: '-90deg',
up: '-180deg',
down: '0',
};
2018-01-22 21:30:53 +03:00
class IntShelfIcon extends React.PureComponent<{
2017-10-12 00:01:37 +03:00
className?: string;
float?: 'left' | 'right';
size?: string;
color?: string;
direction: 'left' | 'right' | 'up' | 'down';
style?: React.CSSProperties;
}> {
render() {
return (
<svg
className={this.props.className}
style={this.props.style}
version="1.1"
viewBox="0 0 24 24"
x="0"
xmlns="http://www.w3.org/2000/svg"
y="0"
2020-06-02 16:30:14 +03:00
aria-hidden="true"
2017-10-12 00:01:37 +03:00
>
<polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 " />
</svg>
);
}
}
2018-01-22 21:30:53 +03:00
export const ShelfIcon = styled(IntShelfIcon)`
2017-10-12 00:01:37 +03:00
height: ${props => props.size || '18px'};
width: ${props => props.size || '18px'};
vertical-align: middle;
float: ${props => props.float || ''};
transition: transform 0.2s ease-out;
transform: rotateZ(${props => directionMap[props.direction || 'down']});
polygon {
2018-07-19 13:05:53 +03:00
fill: ${props =>
(props.color && props.theme.colors[props.color] && props.theme.colors[props.color].main) ||
props.color};
2017-10-12 00:01:37 +03:00
}
`;
export const Badge = styled.span<{ type: string }>`
2017-10-12 00:01:37 +03:00
display: inline-block;
padding: 0 5px;
margin: 0;
2018-07-19 13:05:53 +03:00
background-color: ${props => props.theme.colors[props.type].main};
color: ${props => props.theme.colors[props.type].contrastText};
2018-07-19 13:05:53 +03:00
font-size: ${props => props.theme.typography.code.fontSize};
2017-10-12 00:01:37 +03:00
vertical-align: text-top;
`;