seperate styles

This commit is contained in:
AykutSarac 2022-04-06 21:55:29 +03:00
parent 53997c7568
commit 08c9553119
2 changed files with 100 additions and 134 deletions

View File

@ -1,14 +1,11 @@
import React from "react";
import Head from "next/head";
import { useRouter } from "next/router";
import styled from "styled-components";
import SplitPane from "react-split-pane";
import { Button } from "src/components/Button";
import { defaultJson } from "src/constants/data";
import dynamic from "next/dynamic";
import { LiveEditor } from "src/containers/LiveEditor";
import { Loading } from "src/components/Loading";
import { Incompatible } from "src/containers/Incompatible";
import * as Styles from "src/pages/editor/styles";
const JsonEditor = dynamic(() => import("src/containers/JsonEditor"), {
ssr: false,
@ -20,116 +17,8 @@ const Sidebar = dynamic(() => import("src/components/Sidebar"), {
loading: () => <Loading message="Loading Sidebar..." />,
});
const StyledPageWrapper = styled.div`
display: flex;
`;
const StyledIncompatible = styled.div`
display: none;
@media only screen and (max-width: 568px) {
position: fixed;
top: 0;
left: 0;
display: flex;
flex-direction: column;
background: ${({ theme }) => theme.BLACK_LIGHT};
color: ${({ theme }) => theme.SILVER};
width: 100%;
height: 100vh;
justify-content: center;
align-items: center;
button {
margin-top: 60px;
}
&::before {
content: "Uh, oh!";
font-weight: 700;
font-size: 60px;
opacity: 0.6;
}
}
`;
const StyledEditorWrapper = styled.div`
width: 100%;
overflow: hidden;
@media only screen and (max-width: 568px) {
display: none;
}
`;
const StyledTools = styled.div`
display: flex;
align-items: center;
height: 15px;
border-bottom: 1px solid ${({ theme }) => theme.BLACK};
padding: 4px 16px;
background: ${({ theme }) => theme.BLACK_SECONDARY};
color: ${({ theme }) => theme.SILVER};
`;
const StyledEditor = styled(SplitPane)`
position: relative !important;
display: flex;
background: ${({ theme }) => theme.BLACK_LIGHT};
height: calc(100vh - 26px) !important;
.Resizer {
background: #000;
opacity: 0.2;
box-sizing: border-box;
background-clip: padding-box;
z-index: 1;
}
.Resizer:hover {
transition: all 2s ease;
}
.Resizer.horizontal {
height: 11px;
margin: -5px 0;
border-top: 5px solid rgba(255, 255, 255, 0);
border-bottom: 5px solid rgba(255, 255, 255, 0);
cursor: row-resize;
width: 100%;
}
.Resizer.horizontal:hover {
border-top: 5px solid rgba(0, 0, 0, 0.5);
border-bottom: 5px solid rgba(0, 0, 0, 0.5);
}
.Resizer.vertical {
width: 16px;
margin: 0 -5px;
border-left: 5px solid rgba(255, 255, 255, 0);
border-right: 5px solid rgba(255, 255, 255, 0);
cursor: col-resize;
z-index: 0 !important;
}
.Resizer.vertical:hover {
border-left: 5px solid rgba(0, 0, 0, 0.5);
border-right: 5px solid rgba(0, 0, 0, 0.5);
}
.Resizer.disabled {
cursor: not-allowed;
}
.Resizer.disabled:hover {
border-color: transparent;
}
`;
const Editor: React.FC = () => {
const [json, setJson] = React.useState(JSON.stringify(defaultJson));
const route = useRouter();
React.useEffect(() => {
const jsonStored = localStorage.getItem("json");
@ -137,30 +26,27 @@ const Editor: React.FC = () => {
}, []);
return (
<StyledPageWrapper>
<>
<Head>
<title>Editor | JSON Visio</title>
</Head>
<Sidebar setJson={setJson} />
<StyledEditorWrapper>
<StyledTools></StyledTools>
<StyledEditor
maxSize={800}
minSize={300}
defaultSize={450}
split="vertical"
>
<JsonEditor json={json} setJson={setJson} />
<LiveEditor json={json} setJson={setJson} />
</StyledEditor>
</StyledEditorWrapper>
<StyledIncompatible>
This app is not compatible with your device!
<Button className="incompatible" onClick={() => route.push("/")}>
Go Back
</Button>
</StyledIncompatible>
</StyledPageWrapper>
<Styles.StyledPageWrapper>
<Sidebar setJson={setJson} />
<Styles.StyledEditorWrapper>
<Styles.StyledTools></Styles.StyledTools>
<Styles.StyledEditor
maxSize={800}
minSize={300}
defaultSize={450}
split="vertical"
>
<JsonEditor json={json} setJson={setJson} />
<LiveEditor json={json} setJson={setJson} />
</Styles.StyledEditor>
</Styles.StyledEditorWrapper>
<Incompatible />
</Styles.StyledPageWrapper>
</>
);
};

View File

@ -0,0 +1,80 @@
import SplitPane from "react-split-pane";
import styled from "styled-components";
export const StyledPageWrapper = styled.div`
display: flex;
`;
export const StyledEditorWrapper = styled.div`
width: 100%;
overflow: hidden;
@media only screen and (max-width: 568px) {
display: none;
}
`;
export const StyledTools = styled.div`
display: flex;
align-items: center;
height: 15px;
border-bottom: 1px solid ${({ theme }) => theme.BLACK};
padding: 4px 16px;
background: ${({ theme }) => theme.BLACK_SECONDARY};
color: ${({ theme }) => theme.SILVER};
`;
export const StyledEditor = styled(SplitPane)`
position: relative !important;
display: flex;
background: ${({ theme }) => theme.BLACK_LIGHT};
height: calc(100vh - 26px) !important;
.Resizer {
background: #000;
opacity: 0.2;
box-sizing: border-box;
background-clip: padding-box;
z-index: 1;
}
.Resizer:hover {
transition: all 2s ease;
}
.Resizer.horizontal {
height: 11px;
margin: -5px 0;
border-top: 5px solid rgba(255, 255, 255, 0);
border-bottom: 5px solid rgba(255, 255, 255, 0);
cursor: row-resize;
width: 100%;
}
.Resizer.horizontal:hover {
border-top: 5px solid rgba(0, 0, 0, 0.5);
border-bottom: 5px solid rgba(0, 0, 0, 0.5);
}
.Resizer.vertical {
width: 16px;
margin: 0 -5px;
border-left: 5px solid rgba(255, 255, 255, 0);
border-right: 5px solid rgba(255, 255, 255, 0);
cursor: col-resize;
z-index: 0 !important;
}
.Resizer.vertical:hover {
border-left: 5px solid rgba(0, 0, 0, 0.5);
border-right: 5px solid rgba(0, 0, 0, 0.5);
}
.Resizer.disabled {
cursor: not-allowed;
}
.Resizer.disabled:hover {
border-color: transparent;
}
`;