react-toolbox/components/navigation/Navigation.js

48 lines
1.3 KiB
JavaScript
Raw Normal View History

import React from 'react';
2016-05-22 22:39:40 +03:00
import classnames from 'classnames';
import { themr } from 'react-css-themr';
import Button from '../button';
import Link from '../link';
2016-05-22 22:39:40 +03:00
const Navigation = ({ actions, children, className, routes, theme, type }) => {
const _className = classnames(theme[type], className);
const buttons = actions.map((action, index) => {
return <Button className={theme.button} key={index} {...action} />;
});
2016-05-22 22:39:40 +03:00
const links = routes.map((route, index) => {
return <Link className={theme.link} key={index} {...route} />;
});
return (
2016-05-22 22:39:40 +03:00
<nav data-react-toolbox='navigation' className={_className}>
{links}
{buttons}
2016-05-22 22:39:40 +03:00
{children}
</nav>
);
};
Navigation.propTypes = {
actions: React.PropTypes.array,
children: React.PropTypes.node,
className: React.PropTypes.string,
routes: React.PropTypes.array,
2016-05-22 22:39:40 +03:00
theme: React.PropTypes.shape({
button: React.PropTypes.string.isRequired,
horizontal: React.PropTypes.string.isRequired,
link: React.PropTypes.string.isRequired,
vertical: React.PropTypes.string.isRequired
}),
type: React.PropTypes.oneOf(['vertical', 'horizontal'])
};
Navigation.defaultProps = {
actions: [],
className: '',
type: 'horizontal',
routes: []
};
2016-05-22 22:39:40 +03:00
export default themr('ToolboxNavigation')(Navigation);