/*
* based on
* github.com/roylee0704/react-flexbox-grid/blob/master/src/components/Row.js
*/
import Column from '../column';
import { Baseline } from '../../shared/composers';
import { breakpoints, sizes } from '../../shared/constants';
import match from '../../shared/match';
import sizeMatch from './size-match';
import styled from 'styled-components';
import React from 'react';
const margin = sizes.gutterCompensation || '-0.5rem';
const direction = (size) => match(sizeMatch(size, {
reverse: 'row-reverse'
}), 'row');
const justify = (size) => match(sizeMatch(size, {
center: 'center',
end: 'flex-end',
around: 'space-around',
between: 'space-between'
}), 'flex-start');
const textAlign = (size) => match(sizeMatch(size, {
center: 'center',
end: 'end'
}), 'start');
const alignItems = (size) => match(sizeMatch(size, {
top: 'flex-start',
middle: 'center',
bottom: 'flex-end'
}), 'stretch');
// const order = (size) => match(sizeMatch(size, {
// first: -1,
// last: 1
// }), 0);
/**
* ```html
*
* ```
**/
const StyledRow = styled.div`
box-sizing: border-box;
display: flex;
flex: 0 1 auto;
flex-wrap: wrap;
margin-left: ${margin};
margin-right: ${margin};
min-width: 100%;
flex-direction: ${direction('xs')};
justify-content: ${justify('xs')};
text-align: ${textAlign('xs')};
align-items: ${alignItems('xs')};
${breakpoints.small`
flex-direction: ${direction('sm')};
justify-content: ${justify('sm')};
text-align: ${textAlign('sm')};
align-items: ${alignItems('sm')};
`}
${breakpoints.medium`
flex-direction: ${direction('md')};
justify-content: ${justify('md')};
text-align: ${textAlign('md')};
align-items: ${alignItems('md')};
`}
${breakpoints.large`
flex-direction: ${direction('lg')};
justify-content: ${justify('lg')};
text-align: ${textAlign('lg')};
align-items: ${alignItems('lg')};
`}
`;
const Row = ({
stretch = false,
children,
...rest
}) => {
return stretch ? (
{children}
) : (
{children}
);
};
Row.propTypes = {
children: React.PropTypes.node,
stretch: React.PropTypes.bool
};
export default Baseline(
Row
);