added state for burger modal

This commit is contained in:
Batyr 2025-02-25 15:39:52 +05:00
parent be78dfe07d
commit f6974a6b83
3 changed files with 35 additions and 4 deletions

View File

@ -11,19 +11,22 @@ import { Button } from "../ui/button";
import { useTranslation } from "react-i18next";
import { Navigation } from "@/locales/types/nav.type";
import { Menu } from "../shared";
import { useUiStore } from "@/store/ui";
interface Props {
className?: string;
}
export const Burger: FC<Props> = () => {
const [open, setOpen] = useState(false);
const { t } = useTranslation("nav");
const sheet = useUiStore((state) => state.sheet);
const setSheet = useUiStore((state) => state.setSheet);
const nav = t("navigation", { returnObjects: true }) as Navigation[];
return (
<Sheet onOpenChange={() => setOpen(!open)} open={open}>
<Sheet onOpenChange={() => setSheet(!sheet)} open={sheet}>
<SheetTrigger>
<div className="flex flex-col gap-1 lg:hidden items-center justify-center size-10">
<div className="w-[18px] h-0.5 bg-white rounded-[2px]" />
@ -46,7 +49,7 @@ export const Burger: FC<Props> = () => {
</Button>
</Link>
<Link to="/B2B-B2G" onClick={() => setOpen(false)}>
<Link to="/B2B-B2G" onClick={() => setSheet(false)}>
<Button className="text-base w-full" size={"sm"}>
B2B | B2G встречи
</Button>
@ -62,6 +65,7 @@ export const Burger: FC<Props> = () => {
className="py-2"
key={item.title}
to={item.link || ""}
onClick={() => setSheet(false)}
>
{item.title}
</Link>

View File

@ -5,6 +5,7 @@ import { Link } from "react-router-dom";
import { Modal } from "./modal";
import { DropDownContent } from "@/locales/types/nav.type";
import { cn } from "@/lib/utils";
import { useUiStore } from "@/store/ui";
interface Props {
className?: string;
@ -22,6 +23,7 @@ export const Menu: FC<Props> = ({
triggerClassName,
}) => {
const [isOpen, setIsOpen] = useState(false);
const setSheet = useUiStore((state) => state.setSheet);
return (
<Popover open={isOpen} onOpenChange={() => setIsOpen(!isOpen)}>
@ -37,7 +39,10 @@ export const Menu: FC<Props> = ({
dropDownContent.map((item) =>
item.link ? (
<Link
onClick={() => setIsOpen(false)}
onClick={() => {
setIsOpen(false);
setSheet(false);
}}
className="h-14 px-3 flex gap-3 items-center hover:bg-slate-300/50 transition-all"
key={item.text}
target={item.blank ?? ""}
@ -54,6 +59,7 @@ export const Menu: FC<Props> = ({
className="h-14 px-3 flex items-center hover:bg-slate-300/50 transition-all"
onClick={() => {
setIsOpen(false);
setSheet(false);
}}
>
{item.text}

21
src/store/ui.ts Normal file
View File

@ -0,0 +1,21 @@
import { create } from "zustand";
interface UiType {
sheet: boolean;
popover: boolean;
modal: boolean;
setModal: (modalStat: boolean) => void;
setSheet: (sheetState: boolean) => void;
setPopover: (popoverState: boolean) => void;
}
export const useUiStore = create<UiType>()((set) => ({
sheet: false,
popover: false,
modal: false,
setModal: (modalState) => set({ modal: modalState }),
setSheet: (state) => set({ sheet: state }),
setPopover: (popoverState) => set({ popover: popoverState }),
}));