lbry-desktop/src/ui/component/sideBar/view.jsx

74 lines
2.1 KiB
React
Raw Normal View History

2018-03-26 23:32:43 +02:00
// @flow
2019-03-28 17:53:13 +01:00
import * as PAGES from 'constants/pages';
import * as ICONS from 'constants/icons';
2019-07-17 22:49:06 +02:00
import React from 'react';
2018-03-26 23:32:43 +02:00
import Button from 'component/button';
2019-06-11 20:10:58 +02:00
import Tag from 'component/tag';
2019-07-17 22:49:06 +02:00
import StickyBox from 'react-sticky-box/dist/esnext';
2018-03-26 23:32:43 +02:00
type Props = {
2019-06-11 20:10:58 +02:00
subscriptions: Array<Subscription>,
followedTags: Array<Tag>,
2018-03-26 23:32:43 +02:00
};
2019-06-11 20:10:58 +02:00
function SideBar(props: Props) {
const { subscriptions, followedTags } = props;
2019-07-17 22:49:06 +02:00
function buildLink(path, label, icon, guide) {
return {
navigate: path ? `$/${path}` : '/',
label,
icon,
guide,
};
}
2019-04-19 23:15:41 +02:00
2019-06-11 20:10:58 +02:00
return (
2019-07-21 23:31:22 +02:00
<StickyBox offsetBottom={40} offsetTop={90}>
<nav className="navigation">
2019-07-21 23:31:22 +02:00
<ul className="navigation-links">
2019-03-28 17:53:13 +01:00
{[
{
2019-06-11 20:10:58 +02:00
...buildLink(null, __('Home'), ICONS.HOME),
2019-03-28 17:53:13 +01:00
},
2019-04-01 01:04:01 +02:00
{
...buildLink(PAGES.LIBRARY, __('Library'), ICONS.LIBRARY),
2019-04-01 01:04:01 +02:00
},
{
2019-06-28 09:33:07 +02:00
...buildLink(PAGES.PUBLISHED, __('Publishes'), ICONS.PUBLISH),
2019-04-01 01:04:01 +02:00
},
2019-07-17 22:49:06 +02:00
{
...buildLink(PAGES.FOLLOWING, __('Customize'), ICONS.EDIT),
},
].map(linkProps => (
<li key={linkProps.label}>
2019-07-21 23:31:22 +02:00
<Button {...linkProps} className="navigation-link" activeClass="navigation-link--active" />
2019-07-17 22:49:06 +02:00
</li>
))}
2019-06-17 22:32:38 +02:00
</ul>
2019-07-21 23:31:22 +02:00
<ul className="navigation-links tags--vertical">
2019-06-11 20:10:58 +02:00
{followedTags.map(({ name }, key) => (
2019-07-21 23:31:22 +02:00
<li className="navigation-link__wrapper" key={name}>
2019-06-11 20:10:58 +02:00
<Tag navigate={`/$/tags?t${name}`} name={name} />
</li>
))}
2019-03-28 17:53:13 +01:00
</ul>
2019-07-21 23:31:22 +02:00
<ul className="navigation-links--small">
2019-06-17 22:32:38 +02:00
{subscriptions.map(({ uri, channelName }, index) => (
2019-07-21 23:31:22 +02:00
<li key={uri} className="navigation-link__wrapper">
2019-06-17 22:32:38 +02:00
<Button
navigate={uri}
label={channelName}
2019-07-21 23:31:22 +02:00
className="navigation-link"
activeClass="navigation-link--active"
2019-06-17 22:32:38 +02:00
/>
</li>
2019-06-11 20:10:58 +02:00
))}
2019-03-28 17:53:13 +01:00
</ul>
</nav>
2019-07-17 22:49:06 +02:00
</StickyBox>
2019-06-11 20:10:58 +02:00
);
}
2018-03-26 23:32:43 +02:00
export default SideBar;