feat: middle save

This commit is contained in:
Project_IO 2025-03-15 18:29:36 +09:00
parent 039ea6fb52
commit 28e3a75593
3 changed files with 50 additions and 10 deletions

View file

@ -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%;
} }

View file

@ -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;

View file

@ -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);
} }