feat: middle save
This commit is contained in:
parent
039ea6fb52
commit
28e3a75593
3 changed files with 50 additions and 10 deletions
14
src/App.scss
14
src/App.scss
|
@ -30,9 +30,9 @@
|
||||||
.ka-menu {
|
.ka-menu {
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 300px;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
min-width: 300px;
|
||||||
transform: translateX(-100%);
|
transform: translateX(-100%);
|
||||||
background-color: var(--nav-color);
|
background-color: var(--nav-color);
|
||||||
transition: transform 0.3s ease-in-out;
|
transition: transform 0.3s ease-in-out;
|
||||||
|
@ -41,6 +41,18 @@
|
||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ka-menu-item {
|
||||||
|
width: 100%;
|
||||||
|
height: 55px;
|
||||||
|
padding: 5px 0.5rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
margin: 0 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 640px) {
|
@media (max-width: 640px) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
28
src/App.tsx
28
src/App.tsx
|
@ -4,7 +4,7 @@ import { useEffect, useState } from "react";
|
||||||
|
|
||||||
import "./App.scss";
|
import "./App.scss";
|
||||||
import kuma from "./assets/kuma.png";
|
import kuma from "./assets/kuma.png";
|
||||||
import { Menu, PanelLeftClose } from "lucide-react";
|
import { DynamicIcon, IconName } from "lucide-react/dynamic";
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
|
@ -55,7 +55,7 @@ function Header() {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
setOpen(!open);
|
setOpen(!open);
|
||||||
}}>
|
}}>
|
||||||
<Menu />
|
<DynamicIcon className="link" name="more-vertical" />
|
||||||
</a>
|
</a>
|
||||||
<MenuView open={open} setOpen={setOpen} />
|
<MenuView open={open} setOpen={setOpen} />
|
||||||
</nav>
|
</nav>
|
||||||
|
@ -66,15 +66,27 @@ function Header() {
|
||||||
function MenuView({ open, setOpen }: { open: boolean; setOpen: (value: boolean) => void }) {
|
function MenuView({ open, setOpen }: { open: boolean; setOpen: (value: boolean) => void }) {
|
||||||
return (
|
return (
|
||||||
<div className={`ka-menu ${open ? "open" : ""}`}>
|
<div className={`ka-menu ${open ? "open" : ""}`}>
|
||||||
<a onClick={ev => {
|
<MenuItem icon="panel-left-close" name="Close" block={() => {
|
||||||
ev.preventDefault();
|
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}>
|
}} />
|
||||||
<PanelLeftClose />
|
|
||||||
<span>Close</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function MenuItem({ icon, name, block }: { icon: IconName, name: string, block?: () => void }) {
|
||||||
|
return (
|
||||||
|
<a className={"ka-menu-item link"} onClick={ev => {
|
||||||
|
ev.preventDefault();
|
||||||
|
|
||||||
|
if (typeof block === "undefined")
|
||||||
|
return;
|
||||||
|
|
||||||
|
block();
|
||||||
|
}}>
|
||||||
|
<DynamicIcon name={icon} className="link" />
|
||||||
|
<span>{name}</span>
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|
|
@ -100,6 +100,22 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.link {
|
||||||
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
text-decoration: none;
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
color: var(--foreground);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
color: var(--focus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
background-color: var(--background);
|
background-color: var(--background);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue