diff --git a/db.json b/db.json index 462bdcf..ee88b11 100644 --- a/db.json +++ b/db.json @@ -3,12 +3,72 @@ { "id": "1a54", "name": "новый товар", - "price": 102 + "price": 102, + "image": "images/fork.jpg" }, { "id": "f4f8", - "name": " товарчик", - "price": 111 + "name": "товарчик", + "price": 111, + "image": "images/chery.jpg" + }, + { + "id": "0fda", + "name": "ложка", + "price": 48, + "image": "images/bananas.jpg" } - ] + ], + "basket": [ + { + "id": "0fda", + "name": "ложка", + "price": 48, + "image": "images/bananas.jpg" + } + ], + "favorites": [ + { + "id": "1a54", + "name": "новый товар", + "price": 102, + "image": "images/fork.jpg" + } + ], + "orders": [ + { + "id": "1", + "items": [ + { + "name": "Ложка", + "image": "images/spoon.jpg" + }, + { + "name": "Вилка", + "image": "images/fork.jpg" + } + ], + "status": "in-process" + }, + { + "id": "2", + "items": [ + { + "name": "Утюг", + "image": "images/iron.jpg" + }, + { + "name": "Бананы", + "image": "images/bananas.jpg" + } + ], + "status": "completed" + } + ], + "profile": { + "id": 1, + "firstName": "Иван", + "lastName": "Иванов", + "image": "images/бананы.jpg" + } } \ No newline at end of file diff --git a/images/bananas.jpg b/images/bananas.jpg new file mode 100644 index 0000000..72253b2 Binary files /dev/null and b/images/bananas.jpg differ diff --git a/images/chery.jpg b/images/chery.jpg new file mode 100644 index 0000000..eb56566 Binary files /dev/null and b/images/chery.jpg differ diff --git a/images/child.jpg b/images/child.jpg new file mode 100644 index 0000000..0b43417 Binary files /dev/null and b/images/child.jpg differ diff --git a/images/fork.jpg b/images/fork.jpg new file mode 100644 index 0000000..403ac08 Binary files /dev/null and b/images/fork.jpg differ diff --git a/images/glasses.jpg b/images/glasses.jpg new file mode 100644 index 0000000..79537ea Binary files /dev/null and b/images/glasses.jpg differ diff --git a/images/gmail.png b/images/gmail.png new file mode 100644 index 0000000..7bbfd84 Binary files /dev/null and b/images/gmail.png differ diff --git a/images/iron.jpg b/images/iron.jpg new file mode 100644 index 0000000..e89dc0d Binary files /dev/null and b/images/iron.jpg differ diff --git a/images/knife.jpg b/images/knife.jpg new file mode 100644 index 0000000..f6972ac Binary files /dev/null and b/images/knife.jpg differ diff --git a/images/logo.jpg b/images/logo.jpg new file mode 100644 index 0000000..0673796 Binary files /dev/null and b/images/logo.jpg differ diff --git a/images/masha.jpg b/images/masha.jpg new file mode 100644 index 0000000..c792e3b Binary files /dev/null and b/images/masha.jpg differ diff --git a/images/phone.png b/images/phone.png new file mode 100644 index 0000000..1bab06e Binary files /dev/null and b/images/phone.png differ diff --git a/images/screwdriver.jpg b/images/screwdriver.jpg new file mode 100644 index 0000000..e532741 Binary files /dev/null and b/images/screwdriver.jpg differ diff --git a/images/skateboard.jpg b/images/skateboard.jpg new file mode 100644 index 0000000..d2faa38 Binary files /dev/null and b/images/skateboard.jpg differ diff --git a/images/spoon.jpg b/images/spoon.jpg new file mode 100644 index 0000000..0872c47 Binary files /dev/null and b/images/spoon.jpg differ diff --git a/images/telegram.png b/images/telegram.png new file mode 100644 index 0000000..696e521 Binary files /dev/null and b/images/telegram.png differ diff --git a/images/vanadiy.jpg b/images/vanadiy.jpg new file mode 100644 index 0000000..4dca41c Binary files /dev/null and b/images/vanadiy.jpg differ diff --git a/images/vk.png b/images/vk.png new file mode 100644 index 0000000..6846e74 Binary files /dev/null and b/images/vk.png differ diff --git a/images/бананы.jpg b/images/бананы.jpg new file mode 100644 index 0000000..712ae29 Binary files /dev/null and b/images/бананы.jpg differ 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 && } - -
+ +
+ + } /> + } /> + } /> + } /> + } /> + +