fix(frontend) make main page

This commit is contained in:
2026-06-05 23:04:37 +03:00
parent 4facd4fcc6
commit 59aea98eff
17 changed files with 66 additions and 36 deletions

Before

Width:  |  Height:  |  Size: 9.8 MiB

After

Width:  |  Height:  |  Size: 9.8 MiB

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Before

Width:  |  Height:  |  Size: 741 KiB

After

Width:  |  Height:  |  Size: 741 KiB

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Before

Width:  |  Height:  |  Size: 328 KiB

After

Width:  |  Height:  |  Size: 328 KiB

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Before

Width:  |  Height:  |  Size: 279 KiB

After

Width:  |  Height:  |  Size: 279 KiB

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

+42
View File
@@ -0,0 +1,42 @@
import { useNavigate } from "react-router-dom";
export default function Arrow({
link,
radius = "20",
cx = "64",
cy = "20",
width = "84",
height = "40",
colorCircle = "#B78A61",
}) {
const navigate = useNavigate();
return (
<button
onClick={() => navigate(link)}
className="group border-none bg-transparent cursor-pointer"
>
<svg
width={width}
height={height}
viewBox="0 0 84 40"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<circle
cx={cx}
cy={cy}
r={radius}
fill={colorCircle}
className="transition-colors duration-200 group-hover:fill-[#a85656]"
/>
<path d="M0 20.5H64" stroke="white" strokeWidth="2" />
<path
d="M54 9L64.0858 19.0858C64.8668 19.8668 64.8668 21.1332 64.0858 21.9142L54 32"
stroke="white"
strokeWidth="2"
/>
</svg>
</button>
);
}
+24 -36
View File
@@ -1,48 +1,36 @@
import { useEffect, useState } from "react";
import * as api from "../api"; // Импортируем все функции из api/index.js
import PageLayout from "../components/PageLayout"; import PageLayout from "../components/PageLayout";
import bgLayout from "../assets/Исходники/background.png";
import Arrow from "../components/Arrow";
import { useEffect, useState } from "react";
export default function Dashboard() { export default function Dashboard() {
const [items, setItems] = useState([]); const [isLoaded, setIsLoaded] = useState(false);
useEffect(() => { useEffect(() => {
api setIsLoaded(true);
.getAllItems()
.then((res) => {
setItems(res.data);
})
.catch((err) => {
console.error("Ошибка при получении товара с сервера", err);
});
}, []); }, []);
return ( return (
<PageLayout> <PageLayout>
<main className="p-16 grow w-full gap-4"> <main
{Array.isArray(items) && className="px-16 grow w-full gap-4 bg-cover bg-center bg-no-repeat h-screen overflow-hidden"
items.map((item) => ( style={{ backgroundImage: `url(${bgLayout})` }}
<div >
key={item.id} <div className="mt-37.5 leading-[1.3] text-6xl font-bold text-white flex flex-col">
className="bg-white flex flex-col justify-center items-start p-4 border border-slate-500 rounded-lg shadow-sm" <div
> className={`transition-all duration-1000 ease-out ${isLoaded
<div className="text-gray-500 text-xs">ID: ${item.id}</div> ? "translate-x-0 opacity-100"
<div className="text-xl font-black text-slate-800"> : "-transition-x-full opacity-0"
{item.name} }`}
</div> >
<div className="text-xl font-black text-slate-800"> <div>Свежие морепродукты</div>
{item.price} <div>На любой вкус</div>
</div> <div className="pl-10 py-6.5 font-normal text-2xl flex flex-row">
<div className="text-xl font-black text-slate-800"> <div className="mr-10">Смотреть товары</div>
{item.name} <Arrow link="/shop" />
</div>
<div className="text-xl font-black text-slate-800">
{item.category}
</div>
<div className="text-xl font-black text-slate-800">
{item.unit}
</div>
</div> </div>
))} </div>
</div>
</main> </main>
</PageLayout> </PageLayout>
); );
View File