keystone
Version:
Web Application Framework and Admin GUI / Content Management System built on Express.js and Mongoose
58 lines (53 loc) • 1.12 kB
JavaScript
import { css } from 'glamor';
import React, { PropTypes } from 'react';
import classes from './styles';
import colors from './colors';
function Chip ({
className,
children,
color,
inverted,
label,
onClear,
onClick,
...props
}) {
props.className = css(
classes.chip,
className
);
const labelClassName = css(
classes.button,
classes.label,
classes['button__' + color + (inverted ? '__inverted' : '')]
);
const clearClassName = css(
classes.button,
classes.clear,
classes['button__' + color + (inverted ? '__inverted' : '')]
);
return (
<div {...props}>
<button type="button" onClick={onClick} className={labelClassName}>
{label}
{children}
</button>
{!!onClear && (
<button type="button" onClick={onClear} className={clearClassName}>
×
</button>
)}
</div>
);
};
Chip.propTypes = {
color: PropTypes.oneOf(Object.keys(colors)).isRequired,
inverted: PropTypes.bool,
label: React.PropTypes.string.isRequired,
onClear: React.PropTypes.func,
onClick: React.PropTypes.func,
};
Chip.defaultProps = {
color: 'default',
};
module.exports = Chip;