From 038f60d61e174de1b4bc6e8302fa2c387b7de516 Mon Sep 17 00:00:00 2001 From: qkrlnt Date: Fri, 23 May 2025 21:47:29 +0200 Subject: [PATCH] lab_6_start --- index.html | 15 ++++++++++ newSite.html | 15 ---------- package-lock.json | 56 +++++++++++++++++++++++++++++++++++- package.json | 3 +- src/App.jsx | 40 +++++++++++++------------- src/components/Footer.jsx | 32 +++++++++++++++++++++ src/components/Header.jsx | 28 ++++++++++++++++++ src/index.jsx | 13 +++++---- src/pages/AccountPage.jsx | 28 ++++++++++++++++++ src/pages/BasketPage.jsx | 36 +++++++++++++++++++++++ src/pages/FavoritesPage.jsx | 32 +++++++++++++++++++++ src/pages/MainPage.jsx | 28 ++++++++++++++++++ src/pages/OrderPage.jsx | 57 +++++++++++++++++++++++++++++++++++++ 13 files changed, 339 insertions(+), 44 deletions(-) create mode 100644 index.html delete mode 100644 newSite.html create mode 100644 src/components/Footer.jsx create mode 100644 src/components/Header.jsx create mode 100644 src/pages/AccountPage.jsx create mode 100644 src/pages/BasketPage.jsx create mode 100644 src/pages/FavoritesPage.jsx create mode 100644 src/pages/MainPage.jsx create mode 100644 src/pages/OrderPage.jsx diff --git a/index.html b/index.html new file mode 100644 index 0000000..b22de0c --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + + Интернет-магазин + + + +
+ + + + \ No newline at end of file diff --git a/newSite.html b/newSite.html deleted file mode 100644 index a167e83..0000000 --- a/newSite.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - Интернет-магазин - - -
-

Рекомендуемые товары:

-
-
- - - \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6bf09e2..940f73c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,8 @@ "bootstrap": "5.3.3", "bootstrap-icons": "1.11.3", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.0" }, "devDependencies": { "@vitejs/plugin-react": "^4.4.1", @@ -2152,6 +2153,15 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/corser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", @@ -5107,6 +5117,44 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.0.tgz", + "integrity": "sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.0.tgz", + "integrity": "sha512-DYgm6RDEuKdopSyGOWZGtDfSm7Aofb8CCzgkliTjtu/eDuB0gcsv6qdFhhi8HdtmA+KHkt5MfZ5K2PdzjugYsA==", + "license": "MIT", + "dependencies": { + "react-router": "7.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -5411,6 +5459,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", diff --git a/package.json b/package.json index 1913939..22bdb7b 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "bootstrap": "5.3.3", "bootstrap-icons": "1.11.3", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "react-router-dom": "^7.6.0" }, "devDependencies": { "@vitejs/plugin-react": "^4.4.1", diff --git a/src/App.jsx b/src/App.jsx index 46a7e57..7ffacab 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,28 +1,26 @@ import React, { useState } from 'react'; -import useProducts from './hooks/useProducts'; -import ProductList from './components/ProductList'; -import ProductForm from './components/ProductForm'; +import { BrowserRouter, Routes, Route } from "react-router-dom"; +import Header from "./components/Header"; +import Footer from "./components/Footer"; +import MainPage from "./pages/MainPage"; +import BasketPage from "./pages/BasketPage"; +import FavoritesPage from "./pages/FavoritesPage"; +import OrderPage from "./pages/OrderPage"; +import AccountPage from "./pages/AccountPage"; export default function App() { - const { products, add, update, remove } = useProducts(); - const [editing, setEditing] = useState(null); - const [showForm, setShowForm] = useState(false); - - const handleAdd = () => { setEditing(null); setShowForm(true); }; - const handleEdit = prod => { setEditing(prod); setShowForm(true); }; - const handleDelete = id => remove(id); - const handleSave = prod => { - editing ? update({ ...prod, id: editing.id }) : add(prod); - setShowForm(false); - }; - const handleCancel = () => setShowForm(false); return ( -
- {/*

Каталог товаров

*/} - - {showForm && } - -
+ +
+ + } /> + } /> + } /> + } /> + } /> + +