diff --git a/packages/app/src/pages/index.jsx b/packages/app/src/pages/index.jsx index 5ecff8be..3e8b2d7e 100755 --- a/packages/app/src/pages/index.jsx +++ b/packages/app/src/pages/index.jsx @@ -1,74 +1,33 @@ import React from "react" import * as antd from "antd" -import classnames from "classnames" import { Translation } from "react-i18next" -import { Icons, createIconRender } from "components/Icons" +import { PagePanelWithNavMenu } from "components/PagePanels" -import { HashtagTrendings, FeaturedEventsAnnouncements, ConnectedFriends, PostCard } from "components" +import { Icons } from "components/Icons" + +import { HashtagTrendings, FeaturedEventsAnnouncements, ConnectedFriends } from "components" import Tabs from "./posts/tabs" -import "./index.less" - -const defaultTab = "feed" - export default class Dashboard extends React.Component { - state = { - activeTab: this.props.query.type ?? defaultTab, - openPost: null, - } - - contentRef = React.createRef() - primaryPanelRef = React.createRef() - - renderActiveTab = () => { - const tab = Tabs[this.state.activeTab] - - if (!tab) { - this.setState({ activeTab: defaultTab }, () => this.replaceQueryTypeToCurrentTab()) - - return - } - - return React.createElement(tab.component, { - onOpenPost: this.onOpenPost, - ref: this.contentRef, - }) - } - - handleTabChange = (key) => { - if (this.state.activeTab === key) return - - // set to primary panel fade-opacity-leave class - this.primaryPanelRef.current.classList.add("fade-opacity-leave") - - setTimeout(() => { - this.setState({ activeTab: key }) - this.replaceQueryTypeToCurrentTab() - }, 200) - - // remove fade-opacity-leave class after animation - setTimeout(() => { - this.primaryPanelRef.current.classList.remove("fade-opacity-leave") - }, 300) - } - - replaceQueryTypeToCurrentTab = () => { - app.history.replace(`${window.location.pathname}?type=${this.state.activeTab}`) - } - - onOpenPost = (to, data) => { - console.log("onOpenPost", to, data) - - this.setState({ - openPost: to ? data : null, - }) - } - render() { - return
-
+ const navMenuHeader = <> +

+ + {(t) => t("Posts")} +

+ + + {(t) => t("Create")} + + + + const extraPanel = { + children: <>

@@ -92,53 +51,15 @@ export default class Dashboard extends React.Component {

+ + } -
- -
- {this.renderActiveTab()} -
- -
-
-
-

- - {(t) => t("Posts")} -

- - - {(t) => t("Create")} - -
- - this.handleTabChange(key)} - > - { - Object.keys(Tabs).map((key) => { - const tab = Tabs[key] - - return - {tab.title} - - }) - } - -
-
-
+ return } } \ No newline at end of file diff --git a/packages/app/src/pages/index.less b/packages/app/src/pages/index.less deleted file mode 100755 index 5624249e..00000000 --- a/packages/app/src/pages/index.less +++ /dev/null @@ -1,78 +0,0 @@ -.postingDashboard { - display: grid; - - grid-template-columns: 1fr 1fr 1fr; - grid-template-rows: 1fr; - grid-column-gap: 20px; - grid-row-gap: 0px; - - width: 100%; - - .panel { - position: sticky; - top: 0; - - height: fit-content; - - display: flex; - flex-direction: column; - - align-items: center; - - &.full { - height: 100%; - } - - &.left { - .card { - background-color: var(--background-color-accent); - - .ant-menu { - .ant-menu-item-selected { - background-color: var(--background-color-primary) !important; - } - } - } - } - - .card { - display: flex; - flex-direction: column; - - background-color: var(--background-color-accent); - border-radius: 12px; - padding: 20px; - - margin-bottom: 20px; - width: 20vw; - - h1, - h2 { - width: fit-content; - margin: 0; - } - - .header { - display: flex; - flex-direction: row; - - justify-content: space-between; - align-items: center; - - width: 100%; - - margin-bottom: 10px; - } - } - - &.card:last-child { - margin-bottom: 0; - } - } - - .ant-menu { - svg { - margin-right: 0 !important; - } - } -} \ No newline at end of file diff --git a/packages/app/src/pages/music/[type].jsx b/packages/app/src/pages/music/[type].jsx deleted file mode 100755 index 74feb53b..00000000 --- a/packages/app/src/pages/music/[type].jsx +++ /dev/null @@ -1,82 +0,0 @@ -import React from "react" -import * as antd from "antd" -import classnames from "classnames" - -import { Icons, createIconRender } from "components/Icons" - -import Tabs from "./tabs" - -import "./index.less" - -export default class MusicDashboard extends React.Component { - state = { - activeTab: this.props.params.type ?? "feed" - } - - primaryPanelRef = React.createRef() - - renderActiveTab() { - const tab = Tabs[this.state.activeTab] - - if (!tab) { - return - } - - return React.createElement(tab.component) - } - - handleTabChange = (key) => { - if (this.state.activeTab === key) return - - // set to primary panel fade-opacity-leave class - this.primaryPanelRef.current.classList.add("fade-opacity-leave") - - setTimeout(() => { - this.setState({ activeTab: key }) - // update location - app.history.replace(key) - }, 200) - - // remove fade-opacity-leave class after animation - setTimeout(() => { - this.primaryPanelRef.current.classList.remove("fade-opacity-leave") - }, 300) - } - - render() { - return
-
- {this.renderActiveTab()} -
- -
-
-

Music

- this.handleTabChange(key)} - items={Object.keys(Tabs).map((key) => { - const tab = Tabs[key] - - return { - key, - icon: createIconRender(tab.icon), - label: tab.label, - disabled: tab.disabled - } - })} - /> -
-
-
- } -} \ No newline at end of file diff --git a/packages/app/src/pages/music/index.jsx b/packages/app/src/pages/music/index.jsx index 6dcd7dc6..2215f4c2 100755 --- a/packages/app/src/pages/music/index.jsx +++ b/packages/app/src/pages/music/index.jsx @@ -1,7 +1,21 @@ import React from "react" -export default () => { - app.setLocation("/music/feed") +import { Icons } from "components/Icons" - return <> +import { PagePanelWithNavMenu } from "components/PagePanels" + +import Tabs from "./tabs" + +const NavMenuHeader =

+ + Music +

+ +export default () => { + return } \ No newline at end of file diff --git a/packages/app/src/pages/music/index.less b/packages/app/src/pages/music/index.less deleted file mode 100755 index 95102cf6..00000000 --- a/packages/app/src/pages/music/index.less +++ /dev/null @@ -1,47 +0,0 @@ -.musicDashboard { - display: grid; - - grid-template-columns: 3fr 1fr; - grid-template-rows: 1fr; - grid-column-gap: 10px; - grid-row-gap: 0px; - - width: 100%; - - padding-left: 30px; - - .panel { - position: sticky; - top: 0; - - height: fit-content; - - display: flex; - flex-direction: column; - - align-items: center; - - >div { - margin-bottom: 15px; - } - - .card { - background-color: var(--background-color-accent); - border-radius: 12px; - padding: 20px; - - min-width: 20vw; - - h1, - h2 { - font-family: "Space Grotesk", sans-serif; - } - } - } - - .ant-menu { - svg { - margin-right: 0 !important; - } - } -} \ No newline at end of file diff --git a/packages/app/src/pages/posts/tabs.jsx b/packages/app/src/pages/posts/tabs.jsx index 31d1bb38..a5d78608 100755 --- a/packages/app/src/pages/posts/tabs.jsx +++ b/packages/app/src/pages/posts/tabs.jsx @@ -4,17 +4,17 @@ import SavedPostsTab from "./components/savedPosts" export default { "feed": { - title: "Feed", + label: "Feed", icon: "Rss", component: FeedTab }, "explore": { - title: "Explore", + label: "Explore", icon: "Search", component: ExploreTab }, "savedPosts": { - title: "Saved posts", + label: "Saved posts", icon: "Bookmark", component: SavedPostsTab } diff --git a/packages/app/src/pages/tv/[type].jsx b/packages/app/src/pages/tv/[type].jsx deleted file mode 100755 index 5fccecd7..00000000 --- a/packages/app/src/pages/tv/[type].jsx +++ /dev/null @@ -1,87 +0,0 @@ -import React from "react" -import * as antd from "antd" -import classnames from "classnames" - -import { Icons, createIconRender } from "components/Icons" - -import Tabs from "./tabs" - -import "./index.less" - -export default class TVDashboard extends React.Component { - state = { - activeTab: this.props.params.type ?? "feed" - } - - primaryPanelRef = React.createRef() - - componentDidMount() { - app.cores.style.compactMode(false) - } - - renderActiveTab() { - const tab = Tabs[this.state.activeTab] - - if (!tab) { - return - } - - return React.createElement(tab.component) - } - - handleTabChange = (key) => { - if (this.state.activeTab === key) return - - // set to primary panel fade-opacity-leave class - this.primaryPanelRef.current.classList.add("fade-opacity-leave") - - setTimeout(() => { - this.setState({ activeTab: key }) - // update location - app.history.replace(key) - }, 200) - - // remove fade-opacity-leave class after animation - setTimeout(() => { - this.primaryPanelRef.current.classList.remove("fade-opacity-leave") - }, 300) - } - - render() { - return
-
- {this.renderActiveTab()} -
- -
-
-

TV

- this.handleTabChange(key)} - > - {Object.keys(Tabs).map((key) => { - const tab = Tabs[key] - - return - {tab.title} - - })} - -
-
-
- } -} \ No newline at end of file diff --git a/packages/app/src/pages/tv/index.jsx b/packages/app/src/pages/tv/index.jsx index 76411c7b..c85ceedc 100755 --- a/packages/app/src/pages/tv/index.jsx +++ b/packages/app/src/pages/tv/index.jsx @@ -1,7 +1,23 @@ import React from "react" -export default () => { - app.setLocation("/tv/feed") +import { Icons } from "components/Icons" - return <> +import { PagePanelWithNavMenu } from "components/PagePanels" + +import Tabs from "./tabs" + +const NavMenuHeader =

+ + TV +

+ +export default class TVDashboard extends React.Component { + render() { + return + } } \ No newline at end of file diff --git a/packages/app/src/pages/tv/index.less b/packages/app/src/pages/tv/index.less deleted file mode 100755 index 5889fc82..00000000 --- a/packages/app/src/pages/tv/index.less +++ /dev/null @@ -1,47 +0,0 @@ -.tvDashboard { - display: grid; - - grid-template-columns: 3fr 1fr; - grid-template-rows: 1fr; - grid-column-gap: 10px; - grid-row-gap: 0px; - - width: 100%; - - padding-left: 30px; - - .panel { - position: sticky; - top: 0; - - height: fit-content; - - display: flex; - flex-direction: column; - - align-items: center; - - >div { - margin-bottom: 15px; - } - - .card { - background-color: var(--background-color-accent); - border-radius: 12px; - padding: 20px; - - min-width: 20vw; - - h1, - h2 { - font-family: "Space Grotesk", sans-serif; - } - } - } - - .ant-menu { - svg { - margin-right: 0 !important; - } - } -} \ No newline at end of file diff --git a/packages/app/src/pages/tv/tabs.jsx b/packages/app/src/pages/tv/tabs.jsx index 9c2fb8d3..37f07ff7 100755 --- a/packages/app/src/pages/tv/tabs.jsx +++ b/packages/app/src/pages/tv/tabs.jsx @@ -4,17 +4,17 @@ import ControlPanelTab from "./components/controlPanel" export default { "feed": { - title: "Feed", + label: "Feed", icon: "Rss", component: FeedTab }, "explore": { - title: "Explore", + label: "Explore", icon: "Search", component: ExploreTab }, "controlPanel": { - title: "Control Panel", + label: "Control Panel", icon: "Settings", component: ControlPanelTab }