1
0
mirror of https://github.com/yldio/copilot.git synced 2024-11-10 21:30:06 +02:00
copilot/packages/ui-toolkit/src/card/card.js
Sérgio Ramos f3e531dbd8 feat(cp-frontend,ui-toolkit): style inheritance using .extend (#458)
styled-components@2 exposes a new `.extend`[1] API. It is less problematic than
styled(Parent).

[1]: https://www.styled-components.com/docs/basics#extending-styles
2017-05-25 09:59:58 -05:00

76 lines
1.7 KiB
JavaScript

import styled from 'styled-components';
import { Broadcast, Subscriber } from 'react-broadcast';
import Baseline from '../baseline';
import paperEffect from '../paper-effect';
import { bottomShaddow, bottomShaddowDarker } from '../boxes';
import remcalc from 'remcalc';
import is from 'styled-is';
import { Row } from 'react-styled-flexboxgrid';
import PropTypes from 'prop-types';
import React from 'react';
const StyledCard = Row.extend`
position: relative;
height: auto;
min-height: ${remcalc(126)};
margin-bottom: ${remcalc(10)};
border: ${remcalc(1)} solid ${props => props.theme.grey};
background-color: ${props => props.theme.white};
box-shadow: ${bottomShaddow};
${is('collapsed')`
min-height: auto;
height: ${remcalc(48)};
margin-bottom: ${remcalc(16)};
`};
${is('collapsed', 'headed')`
box-shadow: ${bottomShaddowDarker};
`};
${is('flat')`
box-shadow: none;
`};
${is('stacked')`
${paperEffect}
`};
`;
/**
* @example ./usage.md
*/
const Card = ({ children, collapsed = false, headed = false, ...rest }) => {
const render = value => {
const newValue = {
fromHeader: (value || {}).fromHeader,
headed,
collapsed
};
return (
<Broadcast channel="card" value={newValue}>
<StyledCard name="card" collapsed={collapsed} headed={headed} {...rest}>
{children}
</StyledCard>
</Broadcast>
);
};
return (
<Subscriber channel="card">
{render}
</Subscriber>
);
};
Card.propTypes = {
children: PropTypes.node,
collapsed: PropTypes.bool,
headed: PropTypes.bool,
flat: PropTypes.bool,
stacked: PropTypes.bool
};
export default Baseline(Card);