Files
cstb-next/src/components/window/SideBar.tsx

84 lines
2.2 KiB
TypeScript
Raw Normal View History

2024-09-20 23:15:42 +08:00
"use client"
2024-09-26 16:58:40 +08:00
import { ReactNode } from "react"
import clsx from "clsx"
import { Home, MonitorOne, Movie, Setting, Terminal, Toolkit } from "@icon-park/react"
import { useRouter } from "next/navigation"
import useAppStore from "@/store/app"
2024-09-20 23:15:42 +08:00
interface SideButtonProps {
2024-09-26 16:58:40 +08:00
className?: string
children?: ReactNode
2024-09-20 23:15:42 +08:00
}
2024-09-26 16:58:40 +08:00
const SideButton = ({
className,
children,
...rest
}: SideButtonProps & React.ButtonHTMLAttributes<HTMLButtonElement>) => {
2024-09-20 23:15:42 +08:00
return (
2024-09-26 16:58:40 +08:00
<button className={clsx(className, "p-2.5 hover:bg-black/5 rounded-lg transition")} {...rest}>
2024-09-20 23:15:42 +08:00
{children}
</button>
2024-09-26 16:58:40 +08:00
)
}
2024-09-20 23:15:42 +08:00
const Avatar = () => {
2024-09-26 16:58:40 +08:00
const router = useRouter()
2024-09-20 23:15:42 +08:00
return (
2024-09-26 16:58:40 +08:00
<div
onClick={() => router.push("/users")}
className="w-12 h-12 bg-gray-700 rounded-full cursor-pointer"
>
2024-09-20 23:15:42 +08:00
<img src="favicon.ico" alt="avatar" draggable={false} />
</div>
2024-09-26 16:58:40 +08:00
)
}
2024-09-20 23:15:42 +08:00
const SideBar = () => {
2024-09-26 16:58:40 +08:00
const router = useRouter()
const { version, setVersion } = useAppStore()
2024-09-20 23:15:42 +08:00
return (
<div
className="absolute left-0 flex flex-col w-20 h-full select-none py-7"
data-tauri-drag-region
>
<section className="mx-auto">
<Avatar />
</section>
<section
className="flex flex-col items-center justify-center h-full gap-5"
data-tauri-drag-region
>
<SideButton onClick={() => router.push("/home")}>
<Home size={24} />
</SideButton>
<SideButton onClick={() => router.push("/tool")}>
<Toolkit size={24} />
</SideButton>
<SideButton onClick={() => router.push("/console")}>
<Terminal size={24} />
</SideButton>
<SideButton onClick={() => router.push("/gear")}>
<MonitorOne size={24} />
</SideButton>
<SideButton onClick={() => router.push("/movie")}>
<Movie size={24} />
</SideButton>
<SideButton onClick={() => router.push("/preference")}>
<Setting size={24} />
</SideButton>
</section>
2024-09-26 16:58:40 +08:00
<div className="mx-auto text-sm text-center text-zinc-500" data-tauri-drag-region>
2024-09-20 23:15:42 +08:00
<p></p>
2024-09-26 16:58:40 +08:00
<p onClick={()=> setVersion("x.y.z")}>{version}</p>
2024-09-20 23:15:42 +08:00
</div>
</div>
2024-09-26 16:58:40 +08:00
)
}
2024-09-20 23:15:42 +08:00
2024-09-26 16:58:40 +08:00
export default SideBar