From 062ba477908604d9a5f42a1cb9be3694546ebc5f Mon Sep 17 00:00:00 2001 From: gofnnp Date: Fri, 25 Aug 2023 03:57:54 +0400 Subject: [PATCH] feat: add price list page --- package-lock.json | 16 ++++++- package.json | 3 +- public/check-mark-1.png | Bin 0 -> 2619 bytes src/components/App/index.tsx | 11 ++++- src/components/PriceItem/index.tsx | 39 ++++++++++++++++ src/components/PriceItem/styles.module.css | 33 +++++++++++++ src/components/PriceList/index.tsx | 44 ++++++++++++++++++ src/components/PriceList/styles.module.css | 5 ++ src/components/PriceListPage/index.tsx | 38 +++++++++++++++ .../PriceListPage/styles.module.css | 31 ++++++++++++ src/index.css | 10 ++-- src/locales/dev.ts | 11 +++++ src/routes.ts | 13 ++++++ src/services/random-value/index.ts | 13 ++++++ src/types.ts | 3 +- 15 files changed, 261 insertions(+), 9 deletions(-) create mode 100644 public/check-mark-1.png create mode 100644 src/components/PriceItem/index.tsx create mode 100644 src/components/PriceItem/styles.module.css create mode 100644 src/components/PriceList/index.tsx create mode 100644 src/components/PriceList/styles.module.css create mode 100644 src/components/PriceListPage/index.tsx create mode 100644 src/components/PriceListPage/styles.module.css create mode 100644 src/services/random-value/index.ts diff --git a/package-lock.json b/package-lock.json index 5fd19c3..47a9bd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,8 @@ "react-dom": "^18.2.0", "react-i18next": "^12.3.1", "react-redux": "^8.0.5", - "react-router-dom": "^6.11.2" + "react-router-dom": "^6.11.2", + "unique-names-generator": "^4.7.1" }, "devDependencies": { "@chargebee/chargebee-js-types": "^1.0.1", @@ -3242,6 +3243,14 @@ "node": ">=12.20" } }, + "node_modules/unique-names-generator": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/unique-names-generator/-/unique-names-generator-4.7.1.tgz", + "integrity": "sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow==", + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -5566,6 +5575,11 @@ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true }, + "unique-names-generator": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/unique-names-generator/-/unique-names-generator-4.7.1.tgz", + "integrity": "sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow==" + }, "update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", diff --git a/package.json b/package.json index 6f05c1c..4c44719 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "react-dom": "^18.2.0", "react-i18next": "^12.3.1", "react-redux": "^8.0.5", - "react-router-dom": "^6.11.2" + "react-router-dom": "^6.11.2", + "unique-names-generator": "^4.7.1" }, "devDependencies": { "@chargebee/chargebee-js-types": "^1.0.1", diff --git a/public/check-mark-1.png b/public/check-mark-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ed2183dab226fe14db562d0cacddf789418a62 GIT binary patch literal 2619 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 @@ -46,6 +49,9 @@ function App(): JSX.Element { } /> } /> } /> + } /> + } /> + } /> }> } /> } /> @@ -65,11 +71,12 @@ function Layout({ setIsSpecialOfferOpen }: LayoutProps): JSX.Element { const location = useLocation() const showNavbar = hasNavigation(location.pathname) const showFooter = hasNoFooter(location.pathname) + const showHeader = hasNoHeader(location.pathname) const [isMenuOpen, setIsMenuOpen] = useState(false) const changeIsSpecialOfferOpen = () => setIsSpecialOfferOpen(true) return (
-
setIsMenuOpen(true)} clickCross={changeIsSpecialOfferOpen}/> + { showHeader ?
setIsMenuOpen(true)} clickCross={changeIsSpecialOfferOpen}/> : null }
{ showFooter ?