diff --git a/reactapp/package-lock.json b/reactapp/package-lock.json index f590360..6b5a09c 100644 --- a/reactapp/package-lock.json +++ b/reactapp/package-lock.json @@ -24,6 +24,9 @@ "scss": "^0.2.4", "typescript": "^5.3.3", "web-vitals": "^2.1.4" + }, + "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -652,9 +655,17 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, "engines": { "node": ">=6.9.0" }, @@ -1897,6 +1908,17 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", diff --git a/reactapp/package.json b/reactapp/package.json index 0596dde..56ac11b 100644 --- a/reactapp/package.json +++ b/reactapp/package.json @@ -43,5 +43,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11" } } diff --git a/reactapp/src/App.tsx b/reactapp/src/App.tsx index f1ac45f..eff2c8f 100644 --- a/reactapp/src/App.tsx +++ b/reactapp/src/App.tsx @@ -15,10 +15,10 @@ export default function App() {
}/> - }/> - }/> - }/> - }/> + }/> + }/> + }/> + }/>
diff --git a/reactapp/src/ProfileStyle.scss b/reactapp/src/ProfileStyle.scss index 82f38c1..d1f7371 100644 --- a/reactapp/src/ProfileStyle.scss +++ b/reactapp/src/ProfileStyle.scss @@ -8,4 +8,136 @@ $accent-color: #EB5E28; display: flex; flex-direction: column; align-items: center; + gap: 20px; + + .profile-section__nav { + width: 100%; + display: flex; + justify-content: space-between; + + .profile-link { + color: white; + font-size: 32px; + font-weight: 600; + line-height: 39px; + letter-spacing: 0%; + text-align: left; + } + + .active { + color: $accent-color; + } + } + + .profile-section__info-div { + display: flex; + max-width: 150px; + flex-direction: column; + + span { + color: white; + font-size: 24px; + font-weight: 600; + line-height: 29px; + letter-spacing: 0%; + text-align: left; + } + } + + .orders-section { + width: 100%; + min-height: 100%; + display: flex; + flex-direction: column; + gap: 20px; + + .orders-container { + width: 100%; + display: flex; + gap: 80px; + + .orders-div { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: flex-start; + gap: 40px; + + .order-article { + width: 352px; + height: 120px; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + padding: 0px 14px 0px 14px; + border-radius: 15px; + box-shadow: -4px -4px 10px 0px rgba(0, 0, 0, 0.25),4px 4px 10px 0px rgba(0, 0, 0, 0.25); + background: $background-color; + + .order-article__img { + min-width: 90px; + background-position: center; + background-size: cover; + background-repeat: no-repeat; + height: 90px; + border-radius: 8px; + background-image: url(../src/assets/img/product-image-1.webp); + } + + .order-article__info-div { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + + .order-article__status-span { + color: white; + font-size: 24px; + font-weight: 600; + line-height: 29px; + letter-spacing: 0%; + text-align: left; + } + + .order-article__info-span { + color: #808080; + font-size: 16px; + font-weight: 500; + line-height: 20px; + letter-spacing: 0%; + text-align: left; + } + + .order-article__date-span { + color: white; + font-size: 16px; + font-weight: 500; + line-height: 20px; + letter-spacing: 0%; + text-align: left; + } + } + } + } + } + } + + .purchases-section { + width: 100%; + min-height: 100%; + display: flex; + flex-direction: column; + gap: 20px; + + .purchases-container { + width: 100%; + display: flex; + gap: 80px; + + .purchases-div { + display: flex; + } + } + } } \ No newline at end of file diff --git a/reactapp/src/assets/img/profile-avatar.png b/reactapp/src/assets/img/profile-avatar.png new file mode 100644 index 0000000..ac55c7a Binary files /dev/null and b/reactapp/src/assets/img/profile-avatar.png differ diff --git a/reactapp/src/components/ProductCard.tsx b/reactapp/src/components/ProductCard.tsx index 9c3320d..e39d49f 100644 --- a/reactapp/src/components/ProductCard.tsx +++ b/reactapp/src/components/ProductCard.tsx @@ -7,11 +7,18 @@ type ProductTypes = { } export default function ProductCard({ProductName, ProductImg, Price}:ProductTypes) { + const PriceAsString = Price.toString(); + return(
-
{Price} ₽
-
{ProductName}
+
+ {PriceAsString} + +
+
+ {ProductName} +
) } \ No newline at end of file diff --git a/reactapp/src/components/ProfileInfo.tsx b/reactapp/src/components/ProfileInfo.tsx new file mode 100644 index 0000000..87b1555 --- /dev/null +++ b/reactapp/src/components/ProfileInfo.tsx @@ -0,0 +1,12 @@ +import React from "react"; +import ProfileAvatar from '../assets/img/profile-avatar.png'; +import '../ProfileStyle.scss'; + +export default function ProfileInfo() { + return( +
+ + Роман Константинов +
+ ) +} \ No newline at end of file diff --git a/reactapp/src/components/ProfileOrders.tsx b/reactapp/src/components/ProfileOrders.tsx index 73928f4..16dd6bb 100644 --- a/reactapp/src/components/ProfileOrders.tsx +++ b/reactapp/src/components/ProfileOrders.tsx @@ -1,8 +1,40 @@ import React from "react"; +import { Link } from "react-router-dom"; +import '../ProfileStyle.scss'; +import ProfileInfo from "./ProfileInfo"; export default function ProfileOrders() { return( - <> - +
+ +
+ +
+
+
+
+ В пути + Доставка в пункт выдачи + Ожидаем 9 декабря +
+
+
+
+
+ В пути + Доставка в пункт выдачи + Ожидаем 9 декабря +
+
+
+
+
) } \ No newline at end of file diff --git a/reactapp/src/components/ProfilePurchases.tsx b/reactapp/src/components/ProfilePurchases.tsx index ce31a98..bb59210 100644 --- a/reactapp/src/components/ProfilePurchases.tsx +++ b/reactapp/src/components/ProfilePurchases.tsx @@ -1,8 +1,29 @@ import React from "react"; +import { Link } from "react-router-dom"; +import '../ProfileStyle.scss'; +import ProfileInfo from "./ProfileInfo"; +import ProductCard from "./ProductCard"; +import ProductImage from "../assets/img/product-image-3.webp"; export default function ProfilePurchases() { return( - <> - +
+ +
+ +
+ + + +
+
+
) } \ No newline at end of file diff --git a/reactapp/src/index.scss b/reactapp/src/index.scss index d6dc515..a111bd0 100644 --- a/reactapp/src/index.scss +++ b/reactapp/src/index.scss @@ -1,7 +1,7 @@ $background-color: #252422; $main-color: #CCC5B9; $accent-color: #EB5E28; -@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600&display=swap'); body { background-color: $background-color; @@ -30,8 +30,18 @@ body { font-size: 32px; font-weight: 600; line-height: 39px; - letter-spacing: 0%; + height: 50px; text-align: left; + display: inline-block; + + span { + max-width: 186px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; + } + } .product-article__name-h6 { diff --git a/reactapp/src/index.tsx b/reactapp/src/index.tsx index b742b4d..bc6f0dc 100644 --- a/reactapp/src/index.tsx +++ b/reactapp/src/index.tsx @@ -2,7 +2,7 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import './index.scss'; -import './reset.css'; +import './utils/reset.css'; import App from './App'; const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); diff --git a/reactapp/src/pages/HomePage.tsx b/reactapp/src/pages/HomePage.tsx index 54c8950..bbe991c 100644 --- a/reactapp/src/pages/HomePage.tsx +++ b/reactapp/src/pages/HomePage.tsx @@ -24,7 +24,7 @@ export default function HomePage() { - + diff --git a/reactapp/src/pages/ProfilePage.tsx b/reactapp/src/pages/ProfilePage.tsx index dbb8eeb..9018076 100644 --- a/reactapp/src/pages/ProfilePage.tsx +++ b/reactapp/src/pages/ProfilePage.tsx @@ -1,17 +1,17 @@ import React from "react"; import Banner from "../components/AddBanner"; +import '../ProfileStyle.scss'; +import { Route, Routes } from "react-router-dom"; import ProfileOrders from "../components/ProfileOrders"; import ProfilePurchases from "../components/ProfilePurchases"; -import '../ProfileStyle.scss'; -import { Routes, Route, Link } from 'react-router-dom'; export default function ProfilePage() { return(
- } /> - } /> + }/> + }/>
) diff --git a/reactapp/src/custom.d.ts b/reactapp/src/utils/custom.d.ts similarity index 100% rename from reactapp/src/custom.d.ts rename to reactapp/src/utils/custom.d.ts diff --git a/reactapp/src/reset.css b/reactapp/src/utils/reset.css similarity index 100% rename from reactapp/src/reset.css rename to reactapp/src/utils/reset.css diff --git a/reactapp/tsconfig.json b/reactapp/tsconfig.json index ed3b361..6117b0e 100644 --- a/reactapp/tsconfig.json +++ b/reactapp/tsconfig.json @@ -20,6 +20,6 @@ "include": [ "src", "src/components", - "src/custom.d.ts" + "src/utils/custom.d.ts" ] }