import { Docked, OverlappingPanels, ShowIf } from "react-overlapping-panels";
import { Switch, Route, useLocation, Link } from "react-router-dom";
import styled, { css } from "styled-components/macro";
import { useState } from "preact/hooks";
import ContextMenus from "../lib/ContextMenus";
import { isTouchscreenDevice } from "../lib/isTouchscreenDevice";
import { useApplicationState } from "../mobx/State";
import { SIDEBAR_CHANNELS } from "../mobx/stores/Layout";
import Popovers from "../context/intermediate/Popovers";
import Notifications from "../context/revoltjs/Notifications";
import StateMonitor from "../context/revoltjs/StateMonitor";
import { Titlebar } from "../components/native/Titlebar";
import BottomNavigation from "../components/navigation/BottomNavigation";
import LeftSidebar from "../components/navigation/LeftSidebar";
import RightSidebar from "../components/navigation/RightSidebar";
import Open from "./Open";
import Channel from "./channels/Channel";
import Developer from "./developer/Developer";
import Discover from "./discover/Discover";
import Friends from "./friends/Friends";
import Home from "./home/Home";
import InviteBot from "./invite/InviteBot";
import ChannelSettings from "./settings/ChannelSettings";
import ServerSettings from "./settings/ServerSettings";
import Settings from "./settings/Settings";
const AppContainer = styled.div`
background-size: cover !important;
background-position: center center !important;
`;
const StatusBar = styled.div`
height: 40px;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
//gap: 14px;
gap: 8px;
user-select: none;
.button {
padding: 5px;
border: 1px solid white;
border-radius: var(--border-radius);
}
a {
cursor: pointer;
color: var(--foreground);
}
.title {
flex-grow: 1;
text-align: center;
}
.actions {
gap: 12px;
display: flex;
padding-right: 4px;
}
`;
const Routes = styled.div.attrs({ "data-component": "routes" })<{
borders: boolean;
}>`
min-width: 0;
display: flex;
position: relative;
flex-direction: column;
background: var(--primary-background);
/*background-color: rgba(
var(--primary-background-rgb),
max(var(--min-opacity), 0.75)
);*/
//backdrop-filter: blur(10px);
${() =>
isTouchscreenDevice &&
css`
overflow: hidden;
`}
${(props) =>
props.borders &&
css`
border-start-start-radius: 8px;
`}
`;
export default function App() {
const path = useLocation().pathname;
const fixedBottomNav =
path === "/" ||
path === "/settings" ||
path.startsWith("/friends") ||
path.startsWith("/discover");
const inChannel = path.includes("/channel");
const inServer = path.includes("/server");
const inSpecial =
(path.startsWith("/friends") && isTouchscreenDevice) ||
path.startsWith("/invite") ||
path.includes("/settings");
const [statusBar, setStatusBar] = useState(true);
return (
<>
{statusBar && (
Partial outage: CDN
)}
{window.isNative && !window.native.getConfig().frame && (
)}
}
}
rightPanel={
!inSpecial && inChannel
? { width: 236, component: }
: undefined
}
bottomNav={{
component: ,
showIf: fixedBottomNav ? ShowIf.Always : ShowIf.Left,
height: 50,
}}
docked={isTouchscreenDevice ? Docked.None : Docked.Left}>
>
);
}