Почти готовый проект

This commit is contained in:
иосиф брыков 2024-03-12 10:57:01 +05:00
commit c41ed37b33
67 changed files with 4799 additions and 0 deletions

36
.gitignore vendored Normal file
View File

@ -0,0 +1,36 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts

36
README.md Normal file
View File

@ -0,0 +1,36 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.

8
next.config.mjs Normal file
View File

@ -0,0 +1,8 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
compiler: {
styledComponents: true
}
}
export default nextConfig

868
package-lock.json generated Normal file
View File

@ -0,0 +1,868 @@
{
"name": "memorial",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "memorial",
"version": "0.1.0",
"dependencies": {
"@pbe/react-yandex-maps": "^1.2.5",
"next": "14.1.0",
"react": "^18",
"react-dom": "^18",
"react-slick": "^0.30.2",
"slick-carousel": "^1.8.1",
"styled-components": "^6.1.8"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"@types/react-slick": "^0.23.13",
"typescript": "^5"
}
},
"node_modules/@emotion/is-prop-valid": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
"integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
"dependencies": {
"@emotion/memoize": "^0.8.1"
}
},
"node_modules/@emotion/memoize": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
"integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
},
"node_modules/@emotion/unitless": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
"integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
},
"node_modules/@next/swc-darwin-arm64": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz",
"integrity": "sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-darwin-x64": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz",
"integrity": "sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz",
"integrity": "sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-musl": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz",
"integrity": "sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-gnu": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz",
"integrity": "sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-musl": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz",
"integrity": "sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz",
"integrity": "sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz",
"integrity": "sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@opentelemetry/api": {
"version": "1.8.0",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/@pbe/react-yandex-maps": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/@pbe/react-yandex-maps/-/react-yandex-maps-1.2.5.tgz",
"integrity": "sha512-cBojin5e1fPx9XVCAqHQJsCnHGMeBNsP0TrNfpWCrPFfxb30ye+JgcGr2mn767Gbr1d+RufBLRiUcX2kaiAwjQ==",
"dependencies": {
"@types/yandex-maps": "2.1.29"
},
"engines": {
"node": ">=16"
},
"peerDependencies": {
"react": "^16.x || ^17.x || ^18.x"
}
},
"node_modules/@types/node": {
"version": "20.11.24",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
"integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
"dev": true,
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@types/prop-types": {
"version": "15.7.11",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
"integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==",
"dev": true
},
"node_modules/@types/react": {
"version": "18.2.61",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.61.tgz",
"integrity": "sha512-NURTN0qNnJa7O/k4XUkEW2yfygA+NxS0V5h1+kp9jPwhzZy95q3ADoGMP0+JypMhrZBTTgjKAUlTctde1zzeQA==",
"dev": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"node_modules/@types/react-dom": {
"version": "18.2.19",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz",
"integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==",
"dev": true,
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/react-slick": {
"version": "0.23.13",
"resolved": "https://registry.npmjs.org/@types/react-slick/-/react-slick-0.23.13.tgz",
"integrity": "sha512-bNZfDhe/L8t5OQzIyhrRhBr/61pfBcWaYJoq6UDqFtv5LMwfg4NsVDD2J8N01JqdAdxLjOt66OZEp6PX+dGs/A==",
"dev": true,
"dependencies": {
"@types/react": "*"
}
},
"node_modules/@types/scheduler": {
"version": "0.16.8",
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
"integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
"dev": true
},
"node_modules/@types/stylis": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz",
"integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw=="
},
"node_modules/@types/yandex-maps": {
"version": "2.1.29",
"resolved": "https://registry.npmjs.org/@types/yandex-maps/-/yandex-maps-2.1.29.tgz",
"integrity": "sha512-nuibRWj3RU/9KXlCzTrRtDE+n6V9l7NbT9JakicqZ5OXIdwyb6blvV2Uwn6lB58WYm3DSUDP2I2AWlnWMc8z2w=="
},
"node_modules/camelize": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
"integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001591",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001591.tgz",
"integrity": "sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
]
},
"node_modules/classnames": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
"integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
},
"node_modules/css-color-keywords": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
"integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
"engines": {
"node": ">=4"
}
},
"node_modules/css-to-react-native": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
"integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
"dependencies": {
"camelize": "^1.0.0",
"css-color-keywords": "^1.0.0",
"postcss-value-parser": "^4.0.2"
}
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"dev": true
},
"node_modules/enquire.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz",
"integrity": "sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw=="
},
"node_modules/jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"peer": true
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/json2mq": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz",
"integrity": "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==",
"dependencies": {
"string-convert": "^0.2.0"
}
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/next": {
"version": "14.1.0",
"license": "MIT",
"dependencies": {
"@next/env": "14.1.0",
"@swc/helpers": "0.5.2",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001579",
"graceful-fs": "^4.2.11",
"postcss": "8.4.31",
"styled-jsx": "5.1.1"
},
"bin": {
"next": "dist/bin/next"
},
"engines": {
"node": ">=18.17.0"
},
"optionalDependencies": {
"@next/swc-darwin-arm64": "14.1.0",
"@next/swc-darwin-x64": "14.1.0",
"@next/swc-linux-arm64-gnu": "14.1.0",
"@next/swc-linux-arm64-musl": "14.1.0",
"@next/swc-linux-x64-gnu": "14.1.0",
"@next/swc-linux-x64-musl": "14.1.0",
"@next/swc-win32-arm64-msvc": "14.1.0",
"@next/swc-win32-ia32-msvc": "14.1.0",
"@next/swc-win32-x64-msvc": "14.1.0"
},
"peerDependencies": {
"@opentelemetry/api": "^1.1.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.3.0"
},
"peerDependenciesMeta": {
"@opentelemetry/api": {
"optional": true
},
"sass": {
"optional": true
}
}
},
"node_modules/next/node_modules/@next/env": {
"version": "14.1.0",
"license": "MIT"
},
"node_modules/next/node_modules/@next/swc-win32-x64-msvc": {
"version": "14.1.0",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/next/node_modules/@swc/helpers": {
"version": "0.5.2",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.4.0"
}
},
"node_modules/next/node_modules/@swc/helpers/node_modules/tslib": {
"version": "2.6.2",
"license": "0BSD"
},
"node_modules/next/node_modules/busboy": {
"version": "1.6.0",
"dependencies": {
"streamsearch": "^1.1.0"
},
"engines": {
"node": ">=10.16.0"
}
},
"node_modules/next/node_modules/busboy/node_modules/streamsearch": {
"version": "1.1.0",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/next/node_modules/graceful-fs": {
"version": "4.2.11",
"license": "ISC"
},
"node_modules/next/node_modules/styled-jsx": {
"version": "5.1.1",
"license": "MIT",
"dependencies": {
"client-only": "0.0.1"
},
"engines": {
"node": ">= 12.0.0"
},
"peerDependencies": {
"react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
},
"peerDependenciesMeta": {
"@babel/core": {
"optional": true
},
"babel-plugin-macros": {
"optional": true
}
}
},
"node_modules/next/node_modules/styled-jsx/node_modules/client-only": {
"version": "0.0.1",
"license": "MIT"
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"optional": true,
"peer": true,
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postcss": {
"version": "8.4.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/postcss-value-parser": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
},
"node_modules/react": {
"version": "18.2.0",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
"version": "18.2.0",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.0"
},
"peerDependencies": {
"react": "^18.2.0"
}
},
"node_modules/react-dom/node_modules/loose-envify": {
"version": "1.4.0",
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
"bin": {
"loose-envify": "cli.js"
}
},
"node_modules/react-dom/node_modules/scheduler": {
"version": "0.23.0",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
}
},
"node_modules/react-slick": {
"version": "0.30.2",
"resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.30.2.tgz",
"integrity": "sha512-XvQJi7mRHuiU3b9irsqS9SGIgftIfdV5/tNcURTb5LdIokRA5kIIx3l4rlq2XYHfxcSntXapoRg/GxaVOM1yfg==",
"dependencies": {
"classnames": "^2.2.5",
"enquire.js": "^2.1.6",
"json2mq": "^0.2.0",
"lodash.debounce": "^4.0.8",
"resize-observer-polyfill": "^1.5.0"
},
"peerDependencies": {
"react": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/react/node_modules/loose-envify": {
"version": "1.4.0",
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
"bin": {
"loose-envify": "cli.js"
}
},
"node_modules/resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
},
"node_modules/sass": {
"version": "1.71.1",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/sass/node_modules/chokidar": {
"version": "3.6.0",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/anymatch": {
"version": "3.1.3",
"license": "ISC",
"optional": true,
"peer": true,
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/braces": {
"version": "3.0.2",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/braces/node_modules/fill-range": {
"version": "7.0.1",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/braces/node_modules/fill-range/node_modules/to-regex-range": {
"version": "5.0.1",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/braces/node_modules/fill-range/node_modules/to-regex-range/node_modules/is-number": {
"version": "7.0.0",
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/glob-parent": {
"version": "5.1.2",
"license": "ISC",
"optional": true,
"peer": true,
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/is-binary-path": {
"version": "2.1.0",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"binary-extensions": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/is-binary-path/node_modules/binary-extensions": {
"version": "2.2.0",
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
"node": ">=8"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/is-glob": {
"version": "4.0.3",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/is-glob/node_modules/is-extglob": {
"version": "2.1.1",
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/normalize-path": {
"version": "3.0.0",
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sass/node_modules/chokidar/node_modules/readdirp": {
"version": "3.6.0",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/sass/node_modules/immutable": {
"version": "4.3.5",
"license": "MIT",
"optional": true,
"peer": true
},
"node_modules/shallowequal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
},
"node_modules/slick-carousel": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz",
"integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==",
"peerDependencies": {
"jquery": ">=1.8.0"
}
},
"node_modules/source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/string-convert": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz",
"integrity": "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="
},
"node_modules/styled-components": {
"version": "6.1.8",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz",
"integrity": "sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==",
"dependencies": {
"@emotion/is-prop-valid": "1.2.1",
"@emotion/unitless": "0.8.0",
"@types/stylis": "4.2.0",
"css-to-react-native": "3.2.0",
"csstype": "3.1.2",
"postcss": "8.4.31",
"shallowequal": "1.1.0",
"stylis": "4.3.1",
"tslib": "2.5.0"
},
"engines": {
"node": ">= 16"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/styled-components"
},
"peerDependencies": {
"react": ">= 16.8.0",
"react-dom": ">= 16.8.0"
}
},
"node_modules/styled-components/node_modules/csstype": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
},
"node_modules/stylis": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
"integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ=="
},
"node_modules/tslib": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"node_modules/typescript": {
"version": "5.3.3",
"dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
"node_modules/@next/swc-win32-x64-msvc": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz",
"integrity": "sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
}
}
}

27
package.json Normal file
View File

@ -0,0 +1,27 @@
{
"name": "memorial",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@pbe/react-yandex-maps": "^1.2.5",
"next": "14.1.0",
"react": "^18",
"react-dom": "^18",
"react-slick": "^0.30.2",
"slick-carousel": "^1.8.1",
"styled-components": "^6.1.8"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"@types/react-slick": "^0.23.13",
"typescript": "^5"
}
}

17
public/agreement.svg Normal file
View File

@ -0,0 +1,17 @@
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M81.25 6.25H65.6248L65.6209 6.2502C64.1941 4.35391 61.9256 3.125 59.375 3.125H55.3926C54.2902 1.21914 52.2424 0 50 0C47.7576 0 45.7098 1.21914 44.6074 3.125H40.625C38.0744 3.125 35.8059 4.35391 34.3791 6.2502L34.375 6.25H18.75C14.4422 6.25 10.9375 9.75469 10.9375 14.0625V92.1875C10.9375 96.4953 14.4422 100 18.75 100H81.25C85.5578 100 89.0625 96.4953 89.0625 92.1875V14.0625C89.0625 9.75469 85.5578 6.25 81.25 6.25ZM35.9375 10.9375C35.9375 8.35293 38.0404 6.25 40.625 6.25H45.5996C46.2607 6.25 46.8504 5.83379 47.0719 5.21094C47.5152 3.96328 48.692 3.125 50 3.125C51.308 3.125 52.4848 3.96328 52.9281 5.21094C53.1496 5.83379 53.7393 6.25 54.4004 6.25H59.375C61.9596 6.25 64.0625 8.35293 64.0625 10.9375V15.625H35.9375V10.9375ZM85.9375 92.1875C85.9375 94.7721 83.8346 96.875 81.25 96.875H18.75C16.1654 96.875 14.0625 94.7721 14.0625 92.1875V14.0625C14.0625 11.4779 16.1654 9.375 18.75 9.375H32.9697C32.8668 9.88008 32.8125 10.4025 32.8125 10.9375V17.1875C32.8125 18.0504 33.5121 18.75 34.375 18.75H65.625C66.4879 18.75 67.1875 18.0504 67.1875 17.1875V10.9375C67.1875 10.4025 67.1332 9.88008 67.0303 9.375H81.25C83.8346 9.375 85.9375 11.4779 85.9375 14.0625V92.1875Z" fill="#353535"/>
<path d="M81.25 12.5H71.875C71.0121 12.5 70.3125 13.1996 70.3125 14.0625C70.3125 14.9254 71.0121 15.625 71.875 15.625H79.6875V70.3125H64.0625C61.4779 70.3125 59.375 72.4154 59.375 75V84.3748C59.375 85.2377 60.0746 85.9373 60.9375 85.9373C61.8004 85.9373 62.5 85.2377 62.5 84.3748V75C62.5 74.1385 63.201 73.4375 64.0625 73.4375H77.4777L60.2902 90.625H20.3125V15.625H28.125C28.9879 15.625 29.6875 14.9254 29.6875 14.0625C29.6875 13.1996 28.9879 12.5 28.125 12.5H18.75C17.8871 12.5 17.1875 13.1996 17.1875 14.0625V92.1875C17.1875 93.0504 17.8871 93.75 18.75 93.75H60.9377L60.9426 93.7498C60.9922 93.7496 61.0418 93.7473 61.0914 93.7424C61.1166 93.7398 61.1412 93.7354 61.166 93.7316C61.1914 93.7279 61.217 93.725 61.2422 93.7201C61.2711 93.7144 61.299 93.7066 61.3273 93.6992C61.3482 93.6939 61.3693 93.6895 61.3898 93.6832C61.4184 93.6746 61.4457 93.6641 61.4734 93.6539C61.4935 93.6465 61.5139 93.64 61.5338 93.6318C61.5607 93.6207 61.5865 93.6078 61.6125 93.5953C61.6324 93.5857 61.6525 93.5771 61.6721 93.5666C61.699 93.5523 61.7246 93.5361 61.7504 93.5203C61.768 93.5096 61.7857 93.4998 61.8029 93.4885C61.8342 93.4676 61.8641 93.4447 61.8936 93.4219C61.9041 93.4137 61.9152 93.4064 61.9258 93.3979C61.9678 93.3637 62.0078 93.3273 62.0459 93.2889L82.3545 72.9803C82.3568 72.9779 82.3586 72.9752 82.3609 72.9727C82.4068 72.9262 82.4486 72.8762 82.4885 72.8244C82.4992 72.8103 82.51 72.7963 82.5201 72.782C82.559 72.7275 82.5953 72.6713 82.6271 72.6119C82.6305 72.6059 82.633 72.5994 82.6361 72.5932C82.6648 72.5379 82.6896 72.4805 82.7117 72.4217C82.7168 72.408 82.7221 72.3945 82.7268 72.3807C82.7488 72.3162 82.7678 72.2504 82.7814 72.1824C82.7822 72.1787 82.7824 72.1748 82.7832 72.1711C82.7949 72.1096 82.8023 72.0467 82.8066 71.9828C82.808 71.9641 82.8088 71.9455 82.8096 71.9268C82.8102 71.9094 82.8121 71.8926 82.8121 71.875V14.0625C82.8125 13.1996 82.1129 12.5 81.25 12.5Z" fill="#353535"/>
<path d="M50 6.25C49.5879 6.25 49.1855 6.41602 48.8945 6.70703C48.6035 6.99805 48.4375 7.40039 48.4375 7.8125C48.4375 8.22461 48.6035 8.62695 48.8945 8.91797C49.1855 9.20898 49.5879 9.375 50 9.375C50.4102 9.375 50.8145 9.20898 51.1055 8.91797C51.3965 8.62695 51.5625 8.22461 51.5625 7.8125C51.5625 7.40039 51.3965 6.99805 51.1055 6.70703C50.8145 6.41602 50.4102 6.25 50 6.25Z" fill="#353535"/>
<path d="M56.25 29.6875H71.875C72.7379 29.6875 73.4375 28.9879 73.4375 28.125C73.4375 27.2621 72.7379 26.5625 71.875 26.5625H56.25C55.3871 26.5625 54.6875 27.2621 54.6875 28.125C54.6875 28.9879 55.3871 29.6875 56.25 29.6875Z" fill="#353535"/>
<path d="M43.75 35.9375H71.875C72.7379 35.9375 73.4375 35.2379 73.4375 34.375C73.4375 33.5121 72.7379 32.8125 71.875 32.8125H43.75C42.8871 32.8125 42.1875 33.5121 42.1875 34.375C42.1875 35.2379 42.8871 35.9375 43.75 35.9375Z" fill="#353535"/>
<path d="M71.875 45.3125H28.125C27.2621 45.3125 26.5625 46.0121 26.5625 46.875C26.5625 47.7379 27.2621 48.4375 28.125 48.4375H71.875C72.7379 48.4375 73.4375 47.7379 73.4375 46.875C73.4375 46.0121 72.7379 45.3125 71.875 45.3125Z" fill="#353535"/>
<path d="M71.875 51.5625H28.125C27.2621 51.5625 26.5625 52.2621 26.5625 53.125C26.5625 53.9879 27.2621 54.6875 28.125 54.6875H71.875C72.7379 54.6875 73.4375 53.9879 73.4375 53.125C73.4375 52.2621 72.7379 51.5625 71.875 51.5625Z" fill="#353535"/>
<path d="M71.875 57.8125H28.125C27.2621 57.8125 26.5625 58.5121 26.5625 59.375C26.5625 60.2379 27.2621 60.9375 28.125 60.9375H71.875C72.7379 60.9375 73.4375 60.2379 73.4375 59.375C73.4375 58.5121 72.7379 57.8125 71.875 57.8125Z" fill="#353535"/>
<path d="M73.4375 65.625C73.4375 64.7621 72.7379 64.0625 71.875 64.0625H28.125C27.2621 64.0625 26.5625 64.7621 26.5625 65.625C26.5625 66.4879 27.2621 67.1875 28.125 67.1875H71.875C72.7379 67.1875 73.4375 66.4879 73.4375 65.625Z" fill="#353535"/>
<path d="M54.6875 70.3125H42.1875C41.3246 70.3125 40.625 71.0121 40.625 71.875C40.625 72.7379 41.3246 73.4375 42.1875 73.4375H54.6875C55.5504 73.4375 56.25 72.7379 56.25 71.875C56.25 71.0121 55.5504 70.3125 54.6875 70.3125Z" fill="#353535"/>
<path d="M54.6875 76.5625H42.1875C41.3246 76.5625 40.625 77.2621 40.625 78.125C40.625 78.9879 41.3246 79.6875 42.1875 79.6875H54.6875C55.5504 79.6875 56.25 78.9879 56.25 78.125C56.25 77.2621 55.5504 76.5625 54.6875 76.5625Z" fill="#353535"/>
<path d="M26.5625 28.125C26.5625 28.9879 27.2621 29.6875 28.125 29.6875H35.9375C36.8004 29.6875 37.5 28.9879 37.5 28.125C37.5 27.2621 36.8004 26.5625 35.9375 26.5625H28.125C27.2621 26.5625 26.5625 27.2621 26.5625 28.125Z" fill="#353535"/>
<path d="M23.4375 77.3438C23.4375 81.2209 26.5916 84.375 30.4688 84.375C34.3459 84.375 37.5 81.2209 37.5 77.3438C37.5 73.4666 34.3459 70.3125 30.4688 70.3125C26.5916 70.3125 23.4375 73.4666 23.4375 77.3438ZM34.375 77.3438C34.375 79.4977 32.6227 81.25 30.4688 81.25C28.3148 81.25 26.5625 79.4977 26.5625 77.3438C26.5625 75.1898 28.3148 73.4375 30.4688 73.4375C32.6227 73.4375 34.375 75.1898 34.375 77.3438Z" fill="#353535"/>
<path d="M29.2442 80.9446C27.3046 80.2227 26.259 78.1396 26.8487 76.1716C27.088 75.3727 28.0521 74.2934 28.8876 73.889C31.3384 72.7025 34.2739 74.6538 34.2598 77.4598C34.2558 78.2564 33.7973 79.3528 33.2076 79.9754C32.2665 80.9691 30.4823 81.4054 29.2442 80.9446Z" fill="#2F524E" stroke="#353535" stroke-width="0.155039"/>
<path d="M35.998 12.752C36.0654 9.49723 36.2483 8.84455 37.4121 7.70529C38.6368 6.50648 39.1493 6.37529 42.9688 6.28282C46.6726 6.19316 46.772 6.16582 47.2173 5.11467C47.6483 4.09724 48.9637 3.18512 50 3.18512C51.0363 3.18512 52.3518 4.09724 52.7828 5.11467C53.2281 6.16582 53.3275 6.19316 57.0312 6.28282C60.8508 6.37529 61.3632 6.50648 62.5879 7.70529C63.7518 8.84455 63.9347 9.49723 64.002 12.752L64.0606 15.5814H50H35.9395L35.998 12.752ZM51.0862 9.03078C51.6222 8.56981 51.7801 7.54208 51.4033 6.96708C51.0614 6.4453 50.2341 6.1005 49.619 6.2235C49.3563 6.27606 48.9607 6.5336 48.7401 6.79581C48.4005 7.19945 48.351 7.37987 48.4178 7.97226C48.523 8.90575 49.0559 9.37986 50 9.37986C50.4822 9.37986 50.7986 9.27818 51.0862 9.03078Z" fill="#2F524E" stroke="#353535" stroke-width="0.155039"/>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

24
public/ambulance.svg Normal file
View File

@ -0,0 +1,24 @@
<svg width="150" height="150" viewBox="0 0 150 150" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_162_240)">
<path d="M70.0123 15V20.0063H60.0186V15C60.0186 12.2438 62.2686 9.99375 65.0248 9.99375C67.8748 9.99375 70.0123 12.15 70.0123 15Z" fill="#2F524E"/>
<path d="M75.0184 15V22.5C75.0184 23.8875 73.8934 24.9937 72.5246 24.9937H12.5246C8.38086 24.9937 5.02461 28.35 5.02461 32.4937V54.9937H17.5309C18.9184 54.9937 20.0246 56.1187 20.0246 57.4875C20.0246 58.875 18.8996 59.9812 17.5309 59.9812H5.04336V94.9875H7.53711C8.92461 94.9875 10.0309 96.1125 10.0309 97.4813C10.0309 98.85 8.90586 99.975 7.53711 99.975H5.04336V107.475C5.04336 111.675 8.34336 114.975 12.5434 114.975C13.9309 114.975 15.0371 116.1 15.0371 117.469C15.0371 118.856 13.9121 119.962 12.5434 119.962C5.51211 120 0.0371094 114.506 0.0371094 107.494V32.4937C0.0371094 25.5938 5.64336 19.9875 12.5434 19.9875H55.0496V15C55.0496 9.4875 59.5309 5.00625 65.0434 5.00625C70.6496 5.00625 75.0184 9.39375 75.0184 15ZM70.0121 20.0062V15C70.0121 12.15 67.8746 9.99375 65.0059 9.99375C62.2684 9.99375 60.0184 12.2437 60.0184 15V20.0062H70.0121Z" fill="black"/>
<path d="M55.0123 54.9937V60H47.5123C46.1248 60 45.0186 61.125 45.0186 62.4937V69.9937H40.0123V62.4937C40.0123 61.1062 38.8873 60 37.5186 60H30.0186V54.9937H37.5186C38.9061 54.9937 40.0123 53.8687 40.0123 52.5V45H45.0186V52.5C45.0186 53.8875 46.1436 54.9937 47.5123 54.9937H55.0123Z" fill="#2F524E"/>
<path d="M60.0188 52.5V62.4937C60.0188 63.8812 58.8938 64.9875 57.525 64.9875H50.025V72.4875C50.025 73.875 48.9 74.9812 47.5313 74.9812H37.5188C36.1313 74.9812 35.025 73.8563 35.025 72.4875V64.9875H27.525C26.1375 64.9875 25.0312 63.8625 25.0312 62.4937V52.5C25.0312 51.1125 26.1563 50.0063 27.525 50.0063H35.025V42.5062C35.025 41.1187 36.15 40.0125 37.5188 40.0125H47.5125C48.9 40.0125 50.0063 41.1375 50.0063 42.5062V50.0063H57.5063C58.8938 50.0063 60.0188 51.1125 60.0188 52.5ZM55.0125 60V54.9937H47.5125C46.125 54.9937 45.0188 53.8687 45.0188 52.5V45H40.0125V52.5C40.0125 53.8875 38.8875 54.9937 37.5188 54.9937H30.0188V60H37.5188C38.9063 60 40.0125 61.125 40.0125 62.4937V69.9937H45.0188V62.4937C45.0188 61.1062 46.1438 60 47.5125 60H55.0125Z" fill="black"/>
<path d="M150.037 87.5062V117.506C150.037 118.894 148.912 120 147.543 120H139.837C138.618 128.475 131.343 135 122.53 135C112.874 135 105.037 127.144 105.037 117.506C105.037 107.85 112.893 100.013 122.53 100.013C131.324 100.013 138.618 106.537 139.837 115.013H145.03V100.013H142.537C141.149 100.013 140.043 98.8875 140.043 97.5187C140.043 96.15 141.168 95.025 142.537 95.025H145.03V87.525C145.03 86.4937 144.693 83.2125 143.268 81.7875L136.499 75H87.543C83.0617 75 80.043 71.9813 80.043 67.5V60H67.5367C66.1492 60 65.043 58.875 65.043 57.5063C65.043 56.1188 66.168 55.0125 67.5367 55.0125H80.043V22.5C80.043 21.1125 81.168 20.0062 82.5367 20.0062H120.037C126.843 20.0062 132.412 25.4812 132.543 32.2688L139.855 71.2875L146.812 78.2437C149.943 81.375 150.037 86.8875 150.037 87.5062ZM134.53 69.9937L127.593 32.9625C127.555 32.8125 127.555 32.6625 127.555 32.4937C127.555 28.425 124.124 24.9937 120.055 24.9937H85.0117V67.5C85.0117 69.1875 85.8367 69.9937 87.5055 69.9937H115.968L120.28 61.3687C120.899 60.1312 122.399 59.625 123.637 60.2437C124.874 60.8625 125.38 62.3625 124.762 63.6L121.574 69.975H134.512V69.9937H134.53ZM135.037 117.506C135.037 110.606 129.43 105 122.53 105C115.63 105 110.024 110.606 110.024 117.506C110.024 124.406 115.63 130.013 122.53 130.013C129.43 130.013 135.037 124.387 135.037 117.506Z" fill="black"/>
<path d="M127.574 32.9625L134.511 69.9937H121.574L124.761 63.6187C125.38 62.3812 124.874 60.8812 123.636 60.2625C122.399 59.6437 120.899 60.15 120.28 61.3875L115.968 70.0125H87.5426C85.8551 70.0125 85.0488 69.1875 85.0488 67.5188V24.9938H120.036C124.105 24.9938 127.536 28.425 127.536 32.4938C127.536 32.6625 127.536 32.8125 127.574 32.9625Z" fill="#2F524E"/>
<path d="M122.531 110.006C118.388 110.006 115.031 113.362 115.031 117.506C115.031 121.65 118.388 125.006 122.531 125.006C126.675 125.006 130.031 121.65 130.031 117.506C130.031 113.362 126.675 110.006 122.531 110.006ZM122.531 120C121.144 120 120.038 118.875 120.038 117.506C120.038 116.137 121.163 115.013 122.531 115.013C123.919 115.013 125.025 116.137 125.025 117.506C125.044 118.875 123.919 120 122.531 120Z" fill="black"/>
<path d="M37.518 105C44.418 105 50.0242 110.606 50.0242 117.506C50.0242 124.406 44.418 130.013 37.518 130.013C30.618 130.013 25.0117 124.406 25.0117 117.506C25.0117 110.606 30.618 105 37.518 105ZM45.018 117.506C45.018 113.362 41.6617 110.006 37.518 110.006C33.3742 110.006 30.018 113.362 30.018 117.506C30.018 121.631 33.3742 125.006 37.518 125.006C41.6617 125.006 45.018 121.631 45.018 117.506Z" fill="#2F524E"/>
<path d="M37.5182 114.994C38.9057 114.994 40.0119 116.119 40.0119 117.487C40.0119 118.856 38.8869 119.981 37.5182 119.981C36.1494 119.981 35.0244 118.856 35.0244 117.487C35.0244 116.119 36.1494 114.994 37.5182 114.994Z" fill="white"/>
<path d="M100.031 82.5V117.506C100.031 118.894 98.9057 120 97.5369 120H54.8244C53.6057 128.475 46.3307 135 37.5182 135C27.8807 135 20.0244 127.144 20.0244 117.506C20.0244 107.85 27.8807 100.013 37.5182 100.013C46.3119 100.013 53.6057 106.538 54.8244 115.013H95.0244V82.5C95.0244 81.1125 96.1494 80.0062 97.5182 80.0062C98.8869 80.0062 100.031 81.1125 100.031 82.5ZM50.0432 117.506C50.0432 110.606 44.4369 105 37.5369 105C30.6369 105 25.0307 110.606 25.0307 117.506C25.0307 124.406 30.6369 130.013 37.5369 130.013C44.4369 130.013 50.0432 124.387 50.0432 117.506Z" fill="black"/>
<path d="M37.5186 110.006C41.6623 110.006 45.0186 113.363 45.0186 117.506C45.0186 121.631 41.6623 125.006 37.5186 125.006C33.3748 125.006 30.0186 121.631 30.0186 117.506C30.0186 113.363 33.3748 110.006 37.5186 110.006ZM40.0123 117.506C40.0123 116.138 38.8873 115.013 37.5186 115.013C36.1498 115.013 35.0248 116.138 35.0248 117.506C35.0248 118.875 36.1498 120 37.5186 120C38.8873 120 40.0123 118.875 40.0123 117.506Z" fill="black"/>
<path d="M122.494 105C129.394 105 135 110.606 135 117.506C135 124.406 129.394 130.013 122.494 130.013C115.594 130.013 109.987 124.406 109.987 117.506C109.987 110.606 115.594 105 122.494 105ZM129.994 117.506C129.994 113.363 126.637 110.006 122.494 110.006C118.35 110.006 114.994 113.363 114.994 117.506C114.994 121.631 118.35 125.006 122.494 125.006C126.637 125.006 129.994 121.631 129.994 117.506Z" fill="#2F524E"/>
<path d="M20.1936 114.975H12.2998V119.963H20.1936V114.975Z" fill="black"/>
<path d="M105.431 115.013H97.5371V120H105.431V115.013Z" fill="black"/>
<path d="M82.8375 20.0062H70.4062V24.9937H82.8375V20.0062Z" fill="black"/>
</g>
<defs>
<clipPath id="clip0_162_240">
<rect width="150" height="150" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

7
public/applications.svg Normal file
View File

@ -0,0 +1,7 @@
<svg width="22" height="23" viewBox="0 0 22 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.14286 16.7426L5.28571 19.1236V14.8379H2.39194C2.02277 14.8379 1.66873 14.6912 1.40769 14.4301C1.14665 14.1691 1 13.8151 1 13.446V2.42026C1 2.05109 1.14665 1.69705 1.40769 1.43601C1.66873 1.17497 2.02277 1.02832 2.39194 1.02832H17.7033C18.0725 1.02832 18.4265 1.17497 18.6875 1.43601C18.9486 1.69705 19.0952 2.05109 19.0952 2.42026V6.56347" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.80859 4.83789H15.2848" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.80859 8.64734H9.5705" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.2373 18.1712C18.3412 18.1712 20.0468 16.4656 20.0468 14.3617C20.0468 12.2577 18.3412 10.5521 16.2373 10.5521C14.1334 10.5521 12.4277 12.2577 12.4277 14.3617C12.4277 16.4656 14.1334 18.1712 16.2373 18.1712Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21.0004 21.0283C20.5401 20.453 19.8539 19.9717 19.0151 19.6363C18.1764 19.3008 17.2166 19.1235 16.2385 19.1235C15.2604 19.1235 14.3006 19.3008 13.4618 19.6363C12.623 19.9717 11.9368 20.453 11.4766 21.0283" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

5
public/burger-menu.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="32" height="24" viewBox="0 0 32 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 2.375C1 1.6156 1.61053 1 2.36364 1H29.6364C30.3895 1 31 1.6156 31 2.375C31 3.1344 30.3895 3.75 29.6364 3.75H2.36364C1.61053 3.75 1 3.1344 1 2.375Z" fill="white" stroke="white"/>
<path d="M1 12C1 11.2406 1.61053 10.625 2.36364 10.625H29.6364C30.3895 10.625 31 11.2406 31 12C31 12.7594 30.3895 13.375 29.6364 13.375H2.36364C1.61053 13.375 1 12.7594 1 12Z" fill="white" stroke="white"/>
<path d="M2.36364 20.25C1.61053 20.25 1 20.8656 1 21.625C1 22.3844 1.61053 23 2.36364 23H29.6364C30.3895 23 31 22.3844 31 21.625C31 20.8656 30.3895 20.25 29.6364 20.25H2.36364Z" fill="white" stroke="white"/>
</svg>

After

Width:  |  Height:  |  Size: 707 B

23
public/cemetery.svg Normal file
View File

@ -0,0 +1,23 @@
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M51.5625 18.2344C53.23 13.857 56.171 10.0798 60.0059 7.38988C63.8408 4.70002 68.3938 3.22098 73.0773 3.14358C77.7609 3.06618 82.3602 4.39397 86.2819 6.95565C90.2036 9.51732 93.2678 13.1954 95.079 17.5152C96.8903 21.8351 97.3656 26.5986 96.4436 31.1912C95.5216 35.7838 93.2446 39.9947 89.9063 43.2808C86.5681 46.5668 82.3218 48.7772 77.7153 49.6267C73.1087 50.4763 68.3533 49.926 64.0625 48.0469" fill="white"/>
<path d="M51.5625 18.2344C53.23 13.857 56.171 10.0798 60.0059 7.38988C63.8408 4.70002 68.3938 3.22098 73.0773 3.14358C77.7609 3.06618 82.3602 4.39397 86.2819 6.95565C90.2036 9.51732 93.2678 13.1954 95.079 17.5152C96.8903 21.8351 97.3656 26.5986 96.4436 31.1912C95.5216 35.7838 93.2446 39.9947 89.9063 43.2808C86.5681 46.5668 82.3218 48.7772 77.7153 49.6267C73.1087 50.4763 68.3533 49.926 64.0625 48.0469" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M57 24.8436C57.4836 23.6664 58.2475 22.6252 59.2252 21.8106C60.2029 20.9959 61.3648 20.4324 62.6098 20.1691C63.8549 19.9057 65.1455 19.9506 66.3693 20.2996C67.5931 20.6487 68.7131 21.2914 69.6319 22.172C70.5507 23.0525 71.2405 24.1442 71.6413 25.352C72.0421 26.5599 72.1418 27.8473 71.9316 29.1025C71.7215 30.3576 71.2079 31.5424 70.4356 32.5539C69.6632 33.5653 68.6555 34.3728 67.5 34.9061" fill="white"/>
<path d="M57 24.8436C57.4836 23.6664 58.2475 22.6252 59.2252 21.8106C60.2029 20.9959 61.3648 20.4324 62.6098 20.1691C63.8549 19.9057 65.1455 19.9506 66.3693 20.2996C67.5931 20.6487 68.7131 21.2914 69.6319 22.172C70.5507 23.0525 71.2405 24.1442 71.6413 25.352C72.0421 26.5599 72.1418 27.8473 71.9316 29.1025C71.7215 30.3576 71.2079 31.5424 70.4356 32.5539C69.6632 33.5653 68.6555 34.3728 67.5 34.9061" fill="#2F524E"/>
<path d="M57 24.8436C57.4836 23.6664 58.2475 22.6252 59.2252 21.8106C60.2029 20.9959 61.3648 20.4324 62.6098 20.1691C63.8549 19.9057 65.1455 19.9506 66.3693 20.2996C67.5931 20.6487 68.7131 21.2914 69.6319 22.172C70.5507 23.0525 71.2405 24.1442 71.6413 25.352C72.0421 26.5599 72.1418 27.8473 71.9316 29.1025C71.7215 30.3576 71.2079 31.5424 70.4356 32.5539C69.6632 33.5653 68.6555 34.3728 67.5 34.9061" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M57.8125 28.125C57.8079 25.935 57.1459 23.7968 55.9124 21.9873C54.6788 20.1778 52.9304 18.7802 50.8936 17.9756C48.8568 17.1709 46.6253 16.9963 44.4881 17.4742C42.3509 17.9522 40.4063 19.0607 38.9063 20.6563C37.3137 18.7526 35.2457 17.3044 32.9122 16.4587C30.5788 15.6129 28.0631 15.3998 25.6207 15.841C23.1783 16.2822 20.8961 17.362 19.006 18.9706C17.116 20.5793 15.6853 22.6595 14.8594 25C13.2179 25.0503 11.6023 25.4234 10.105 26.098C8.60765 26.7726 7.25786 27.7356 6.13267 28.9319C3.86026 31.3479 2.64067 34.5676 2.7422 37.8828C2.84372 41.198 4.25805 44.3371 6.67405 46.6095C9.09004 48.8819 12.3098 50.1015 15.625 50C16.1475 49.9934 16.6692 49.9569 17.1875 49.8906C18.1317 51.5641 19.4489 52.9974 21.0369 54.0791C22.6248 55.1609 24.4408 55.862 26.3437 56.128C28.2466 56.394 30.1853 56.2178 32.009 55.6129C33.8327 55.0081 35.4925 53.991 36.8594 52.6406C39.5895 54.4469 42.9192 55.1102 46.133 54.4879C49.3469 53.8656 52.1884 52.0073 54.0469 49.3125C55.5488 49.8717 57.1553 50.094 58.7526 49.9637C60.35 49.8333 61.8992 49.3535 63.2906 48.5583C64.682 47.763 65.8817 46.6716 66.8047 45.3615C67.7277 44.0513 68.3515 42.5542 68.6319 40.9763C68.9123 39.3984 68.8426 37.7781 68.4276 36.2301C68.0126 34.6821 67.2624 33.2442 66.2303 32.0182C65.1981 30.7922 63.9091 29.808 62.4545 29.1352C60.9998 28.4625 59.4151 28.1176 57.8125 28.125Z" fill="white" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M77.6094 50C76.5423 47.752 76.2737 45.2074 76.8479 42.7862C77.4221 40.3649 78.8047 38.2119 80.7675 36.6824C82.7303 35.1529 85.156 34.3385 87.6442 34.3735C90.1323 34.4085 92.5341 35.2909 94.4531 36.875" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M79.6876 3.95312C79.5011 5.46697 78.7675 6.86039 77.625 7.87086C76.4824 8.88133 75.0098 9.43911 73.4845 9.43911C71.9592 9.43911 70.4865 8.88133 69.344 7.87086C68.2014 6.86039 67.4677 5.46697 67.2812 3.95312" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M84.375 23.4375C86.1009 23.4375 87.5 22.0384 87.5 20.3125C87.5 18.5866 86.1009 17.1875 84.375 17.1875C82.6491 17.1875 81.25 18.5866 81.25 20.3125C81.25 22.0384 82.6491 23.4375 84.375 23.4375Z" fill="#2F524E" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M15.625 43.75C13.9674 43.75 12.3777 43.0915 11.2056 41.9194C10.0335 40.7473 9.375 39.1576 9.375 37.5C9.375 35.8424 10.0335 34.2527 11.2056 33.0806C12.3777 31.9085 13.9674 31.25 15.625 31.25" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M18.75 87.5V79.6875H12.5V73.4375H18.75V64.0625H25V73.4375H31.25V79.6875H25V88.0938" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M46.875 87.5V79.6875H40.625V73.4375H46.875V64.0625H53.125V73.4375H59.375V79.6875H53.125V87.5" fill="white"/>
<path d="M46.875 87.5V79.6875H40.625V73.4375H46.875V64.0625H53.125V73.4375H59.375V79.6875H53.125V87.5" fill="#2F524E"/>
<path d="M46.875 87.5V79.6875H40.625V73.4375H46.875V64.0625H53.125V73.4375H59.375V79.6875H53.125V87.5" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M75 87.9062V79.6875H68.75V73.4375H75V64.0625H81.25V73.4375H87.5V79.6875H81.25V87.5" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M37.5 96.875L33.6563 93.0313C31.9046 91.2777 29.8245 89.8866 27.5349 88.9375C25.2453 87.9884 22.791 87.4999 20.3125 87.5C17.834 87.4999 15.3797 87.9884 13.0901 88.9375C10.8005 89.8866 8.72036 91.2777 6.96875 93.0313L3.125 96.875H96.875L93.0312 93.0313C91.2796 91.2777 89.1995 89.8866 86.9099 88.9375C84.6203 87.9884 82.166 87.4999 79.6875 87.5C77.209 87.4999 74.7547 87.9884 72.4651 88.9375C70.1755 89.8866 68.0954 91.2777 66.3438 93.0313L63 97" fill="white"/>
<path d="M37.5 96.875L33.6563 93.0313C31.9046 91.2777 29.8245 89.8866 27.5349 88.9375C25.2453 87.9884 22.791 87.4999 20.3125 87.5C17.834 87.4999 15.3797 87.9884 13.0901 88.9375C10.8005 89.8866 8.72036 91.2777 6.96875 93.0313L3.125 96.875H96.875L93.0312 93.0313C91.2796 91.2777 89.1995 89.8866 86.9099 88.9375C84.6203 87.9884 82.166 87.4999 79.6875 87.5C77.209 87.4999 74.7547 87.9884 72.4651 88.9375C70.1755 89.8866 68.0954 91.2777 66.3438 93.0313L63 97" fill="#2F524E"/>
<path d="M37.5 96.875L33.6563 93.0313C31.9046 91.2777 29.8245 89.8866 27.5349 88.9375C25.2453 87.9884 22.791 87.4999 20.3125 87.5C17.834 87.4999 15.3797 87.9884 13.0901 88.9375C10.8005 89.8866 8.72036 91.2777 6.96875 93.0313L3.125 96.875H96.875L93.0312 93.0313C91.2796 91.2777 89.1995 89.8866 86.9099 88.9375C84.6203 87.9884 82.166 87.4999 79.6875 87.5C77.209 87.4999 74.7547 87.9884 72.4651 88.9375C70.1755 89.8866 68.0954 91.2777 66.3438 93.0313L63 97" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M34.5 95.5L36.7188 92.9688C40.2512 89.4654 45.0249 87.4998 50 87.5C52.4785 87.4999 54.9329 87.9884 57.2225 88.9375C59.5121 89.8866 61.5921 91.2777 63.3438 93.0313L67.1875 96.875" stroke="#353535" stroke-width="3" stroke-linejoin="round"/>
<path d="M78.4007 47.7593C78.0109 46.3776 77.9869 44.555 78.3397 43.115C78.683 41.7136 79.391 40.3157 80.2994 39.2457C83.077 35.9739 87.6723 34.979 91.5194 36.8164C91.7954 36.9482 92.1373 37.1266 92.2793 37.2128L92.5374 37.3696L92.3785 37.6441C92.0924 38.1381 91.3292 39.2785 90.9526 39.7747C88.9313 42.4382 86.3759 44.5807 83.4161 46.0933C82.0938 46.769 80.4464 47.3984 79.031 47.7687L78.4465 47.9216L78.4007 47.7593Z" fill="#2F524E"/>
<path d="M72.9581 7.88952C71.839 7.74895 70.7237 7.1685 69.9735 6.3362C69.5575 5.87468 69.1036 5.12203 69.2182 5.08366C69.3458 5.04091 70.0685 4.92407 70.711 4.84234C72.8166 4.57445 74.9703 4.61589 77.0546 4.96439C77.6595 5.06553 77.759 5.09335 77.7538 5.15984C77.7428 5.29689 77.3842 5.877 77.1029 6.21266C76.2444 7.23684 75.0319 7.83487 73.672 7.90484C73.441 7.91672 73.1198 7.90982 72.9581 7.88952Z" fill="#2F524E"/>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

4
public/close-black.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.972064 0.972272C1.50904 0.435296 2.37604 0.431708 2.90857 0.964237L22.1933 20.249C22.7259 20.7815 22.7222 21.6485 22.1853 22.1855C21.6483 22.7225 20.7813 22.7261 20.2488 22.1935L0.964029 2.90878C0.4315 2.37625 0.435088 1.50925 0.972064 0.972272Z" fill="#353535" stroke="#353535"/>
<path d="M22.1859 0.972308C22.7229 1.50928 22.7265 2.37629 22.194 2.90882L2.90924 22.1935C2.37669 22.7261 1.5097 22.7225 0.972728 22.1855C0.435752 21.6485 0.432145 20.7816 0.964693 20.249L20.2494 0.964273C20.782 0.431744 21.649 0.435332 22.1859 0.972308Z" fill="#353535" stroke="#353535"/>
</svg>

After

Width:  |  Height:  |  Size: 686 B

4
public/close-menu.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39296 1.39341C1.92994 0.856438 2.79694 0.852851 3.32947 1.38538L22.6142 20.6701C23.1467 21.2027 23.1431 22.0696 22.6062 22.6066C22.0692 23.1436 21.2022 23.1472 20.6697 22.6147L1.38493 3.32992C0.852399 2.79739 0.855987 1.93039 1.39296 1.39341Z" fill="white" stroke="white"/>
<path d="M22.6068 1.39345C23.1438 1.93043 23.1474 2.79743 22.6149 3.32996L3.33013 22.6147C2.79759 23.1472 1.9306 23.1436 1.39363 22.6067C0.856651 22.0697 0.853044 21.2027 1.38559 20.6701L20.6703 1.38542C21.2028 0.852887 22.0699 0.856475 22.6068 1.39345Z" fill="white" stroke="white"/>
</svg>

After

Width:  |  Height:  |  Size: 674 B

28
public/deal.svg Normal file
View File

@ -0,0 +1,28 @@
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_104_1419)">
<mask id="mask0_104_1419" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="100" height="100">
<path d="M100 0H0V100H100V0Z" fill="white"/>
</mask>
<g mask="url(#mask0_104_1419)">
<path d="M63.8698 79.8222C62.6434 80.3733 61.3708 80.852 60.087 81.2458C58.9917 81.5817 58.376 82.7417 58.7118 83.8372C58.9854 84.73 59.8067 85.304 60.6946 85.304C60.8959 85.304 61.1008 85.2745 61.3034 85.2124C62.7512 84.7684 64.1868 84.2282 65.5703 83.6065C66.6153 83.1368 67.0819 81.9091 66.6121 80.8641C66.1426 79.8192 64.9145 79.3528 63.8698 79.8222Z" fill="#353535"/>
<path d="M43.2642 18.0904C43.4076 18.0904 43.5535 18.0756 43.6992 18.0443C45.0111 17.7642 46.3561 17.564 47.6967 17.4486C48.8382 17.3504 49.6839 16.3455 49.5856 15.2039C49.4874 14.0625 48.4838 13.2174 47.3412 13.3148C45.8297 13.4449 44.3128 13.6711 42.8333 13.9867C41.7128 14.2258 40.9986 15.3279 41.2375 16.4484C41.4455 17.423 42.3062 18.0904 43.2642 18.0904Z" fill="#353535"/>
<path d="M57.2795 18.0292C58.5949 18.3068 59.9061 18.6702 61.1764 19.1095C61.401 19.1872 61.6297 19.2239 61.8547 19.2239C62.7143 19.2239 63.5184 18.6851 63.815 17.8271C64.1895 16.7443 63.6152 15.563 62.5324 15.1886C61.0992 14.6927 59.6201 14.2829 58.136 13.9697C57.0141 13.7329 55.9145 14.4503 55.6779 15.5712C55.4414 16.6919 56.1584 17.7925 57.2795 18.0292Z" fill="#353535"/>
<path d="M30.0883 23.9896C30.5123 23.9896 30.9405 23.8599 31.3094 23.591C32.3957 22.7982 33.5422 22.0654 34.7158 21.4135C35.7174 20.857 36.0783 19.5941 35.5219 18.5926C34.9654 17.591 33.703 17.2299 32.701 17.7865C31.3785 18.5211 30.0873 19.3465 28.8635 20.2393C27.9381 20.9144 27.7352 22.2123 28.4104 23.1379C28.8168 23.6945 29.4481 23.9896 30.0883 23.9896Z" fill="#353535"/>
<path d="M50.6018 82.6723C50.5989 82.6723 50.5961 82.6723 50.5932 82.6723H50.5254C49.1768 82.6723 47.8186 82.5889 46.4883 82.4244C45.3508 82.283 44.3155 83.0916 44.1751 84.2285C44.0344 85.3654 44.8422 86.4014 45.9792 86.5418C47.4778 86.727 49.0073 86.8211 50.5252 86.8211H50.6096C51.7551 86.8166 52.6803 85.884 52.6758 84.7383C52.6713 83.5955 51.7436 82.6723 50.6018 82.6723Z" fill="#353535"/>
<path d="M37.2467 79.8513C36.0201 79.3035 34.8146 78.6724 33.6635 77.9755C32.6832 77.3824 31.408 77.6959 30.8147 78.6761C30.2215 79.6564 30.5352 80.9318 31.5152 81.525C32.8129 82.3103 34.1721 83.0216 35.5547 83.6392C35.8295 83.7621 36.1168 83.8201 36.3996 83.8201C37.1932 83.8201 37.9504 83.3623 38.2947 82.5912C38.7619 81.5455 38.2928 80.3185 37.2467 79.8513Z" fill="#353535"/>
<path d="M84.2333 58.7026C83.1433 58.3499 81.9736 58.9475 81.6208 60.0375C81.2074 61.3157 80.7087 62.5815 80.1384 63.8C79.6529 64.8377 80.1005 66.0725 81.138 66.5582C81.4224 66.6912 81.7214 66.7543 82.0158 66.7543C82.7962 66.7543 83.5437 66.3121 83.896 65.5586C84.5392 64.1846 85.1017 62.7569 85.5683 61.3153C85.921 60.225 85.3234 59.0555 84.2333 58.7026Z" fill="#353535"/>
<path d="M23.7417 68.6919C23.0844 67.7534 21.7911 67.5253 20.8526 68.1821C19.9141 68.8391 19.686 70.1327 20.3428 71.0712C21.2108 72.3106 22.1651 73.5094 23.1794 74.6344C23.5891 75.0887 24.1536 75.3196 24.7206 75.3196C25.2157 75.3196 25.7126 75.1432 26.1092 74.7856C26.9602 74.0184 27.0278 72.7069 26.2604 71.8559C25.36 70.8573 24.5124 69.7924 23.7417 68.6919Z" fill="#353535"/>
<path d="M77.7653 71.6474C76.9132 70.8823 75.6015 70.9524 74.836 71.805C73.9376 72.8056 72.9679 73.7608 71.9534 74.644C71.0894 75.3964 70.9989 76.7069 71.7513 77.5708C72.1614 78.0419 72.7374 78.2829 73.3165 78.2829C73.7997 78.2829 74.2851 78.1151 74.678 77.7729C75.82 76.7784 76.9118 75.703 77.9231 74.5769C78.6884 73.7241 78.6177 72.4128 77.7653 71.6474Z" fill="#353535"/>
<path d="M99.7217 45.0075L82.7186 15.5572C82.4339 15.0636 81.9583 14.7092 81.404 14.5765C80.8499 14.4443 80.2653 14.5457 79.788 14.8572L79.2542 15.2056C71.1862 8.51988 61.1357 4.88043 50.5252 4.88043C38.4732 4.88043 27.1428 9.57359 18.6209 18.0955C16.6512 20.0652 14.8912 22.1878 13.3418 24.4326L11.4088 23.9185C10.3032 23.6244 9.16801 24.2814 8.87192 25.3865L0.0707621 58.2343C-0.072011 58.7663 0.0031842 59.3333 0.278965 59.8102C0.554941 60.287 1.00904 60.6346 1.54127 60.7761L7.07915 62.2485C9.14203 69.6077 13.069 76.3518 18.6209 81.9041C27.143 90.426 38.4734 95.1191 50.5252 95.1191C62.5769 95.1191 73.9073 90.426 82.4294 81.9041C90.9485 73.3848 95.6413 62.0587 95.6442 50.0112L99.0592 47.7821C99.9817 47.1798 100.273 45.9614 99.7217 45.0075ZM50.5253 9.02964C59.9536 9.02964 68.6464 12.2332 75.5776 17.606L68.7402 22.0699C67.8179 22.672 67.5269 23.8902 68.0779 24.8443L68.6564 25.8464L65.0954 27.9025C63.8269 28.6349 62.4105 28.8845 60.647 28.6847L44.623 24.4279C41.9384 23.7082 39.156 25.2408 38.1519 27.9921C38.1174 28.0876 38.0892 28.1855 38.0689 28.2851C37.8078 29.5529 37.8506 30.8136 38.1451 31.9876L37.9502 31.9353C35.9146 31.3898 33.7418 31.2933 31.6664 31.6556C30.1814 31.9154 28.6268 31.8458 27.1703 31.4556L23.1985 30.3911L23.4953 29.283C23.6381 28.7509 23.5629 28.1839 23.2871 27.707C23.0111 27.2302 22.557 26.8826 22.0248 26.7412L17.6555 25.5792C25.1291 15.5441 37.0789 9.02964 50.5253 9.02964ZM76.578 44.1437C75.7595 42.7263 74.4419 41.713 72.8681 41.2915L44.7896 33.74C42.9222 33.2396 41.7662 31.3031 42.1013 29.2855C42.3513 28.7318 42.8847 28.2576 43.5529 28.4363C43.5529 28.4363 59.9052 32.7738 59.9978 32.7853C62.7292 33.1267 65.0747 32.7046 67.1691 31.4952L70.73 29.4392L82.4462 49.7323L77.6604 52.038C77.254 51.5589 76.7731 51.1386 76.2276 50.7997C76.6603 50.2097 76.9925 49.5313 77.1931 48.7825C77.6151 47.2087 77.3964 45.5612 76.578 44.1437ZM49.5584 56.0792L68.0775 61.0415C68.8443 61.4667 69.2554 62.378 69.0169 63.2684C68.7403 64.3005 67.6759 64.9147 66.6437 64.6385L46.3002 59.2493C45.1935 58.9526 44.056 59.6095 43.7593 60.7161C43.4627 61.8227 44.1195 62.9602 45.2261 63.2569L62.7075 67.9411C63.4745 68.3663 63.8861 69.2776 63.6476 70.1682C63.5136 70.6682 63.1931 71.086 62.7447 71.3448C62.2966 71.6034 61.7747 71.6723 61.2743 71.5383L29.4232 63.0038C28.0502 62.6358 26.7875 62.0034 25.6703 61.1243L25.4219 60.929C23.8609 59.7005 22.0963 58.8167 20.1776 58.3028L16.0176 57.1882L22.124 34.399L26.0957 35.4632C28.1309 36.0083 30.3039 36.1052 32.3795 35.7429C33.8648 35.4835 35.4195 35.5527 36.8756 35.9429L71.7944 45.2995C72.8425 45.5804 73.4667 46.6614 73.1817 47.7235C72.9026 48.7636 71.8579 49.3569 70.8027 49.0767L70.7982 49.0755C70.6358 49.0319 54.2724 44.7091 54.2724 44.7091C53.1652 44.4124 52.0285 45.0694 51.7318 46.1759C51.4351 47.2825 52.0919 48.42 53.1986 48.7167L73.513 54.0981C74.5612 54.379 75.1854 55.46 74.9046 56.5079C74.6284 57.5397 73.5628 58.1548 72.5315 57.8778L50.632 52.0716C49.5242 51.7743 48.3879 52.4319 48.0914 53.5384C47.7949 54.645 48.4517 55.7825 49.5584 56.0792ZM4.61607 57.3005L12.3438 28.4603L18.949 30.2165L11.2215 59.0567L4.61607 57.3005ZM50.5253 90.9703C32.668 90.9703 17.443 79.4864 11.8463 63.5161L12.1565 63.5987C12.335 63.6462 12.5143 63.6688 12.6909 63.6688C13.6069 63.6688 14.445 63.0573 14.6934 62.1307L14.944 61.1956L19.1039 62.3102C20.4768 62.678 21.7393 63.3102 22.8567 64.1897L23.1051 64.385C24.6658 65.6133 26.4305 66.4969 28.3494 67.0112L60.2007 75.5457C60.7249 75.6862 61.2572 75.7559 61.7861 75.7559C62.8408 75.7559 63.8816 75.4793 64.8193 74.9377C66.2273 74.125 67.2345 72.8122 67.6552 71.2419C67.8736 70.4266 67.9163 69.6051 67.8064 68.8178C70.2275 68.5501 72.3571 66.8333 73.0243 64.3423C73.2269 63.5868 73.2782 62.8257 73.1974 62.0915C75.8196 62.019 78.1997 60.2417 78.9124 57.5815C79.0593 57.0337 79.1224 56.4833 79.1169 55.9419L84.5266 53.3352L85.0806 54.2944C85.8286 55.6454 87.671 55.2163 88.0112 54.9944L91.3965 52.7845C89.9598 74.0813 72.1802 90.9703 50.5253 90.9703ZM87.5782 50.3222L72.6526 24.4703L80.2212 19.5293L95.1467 45.3812L87.5782 50.3222Z" fill="#353535"/>
</g>
<path d="M7.92896 58.1314C6.20411 57.67 4.77277 57.278 4.74821 57.2603C4.70696 57.2307 12.3088 28.6962 12.3854 28.5929C12.4251 28.5394 18.6998 30.1988 18.7867 30.2857C18.8566 30.3556 11.2088 58.9958 11.1242 58.9808C11.0917 58.9751 9.65382 58.5928 7.92896 58.1314Z" fill="#2F524E" stroke="#353535" stroke-width="0.118343"/>
<path d="M80.1838 37.3696C76.1045 30.3041 72.8101 24.4844 72.8629 24.437C72.9157 24.3895 74.587 23.2877 76.5769 21.9885L80.1949 19.6263L87.544 32.3575C91.586 39.3597 94.9106 45.1581 94.9319 45.2428C94.9662 45.379 93.3212 46.5038 88.7413 49.4757L87.6007 50.2159L80.1838 37.3696Z" fill="#2F524E" stroke="#353535" stroke-width="0.118343"/>
<path d="M48.5795 90.8756C40.503 90.3789 33.2754 87.8678 26.887 83.3389C20.2267 78.6173 14.8084 71.5425 12.1264 64.0658L11.9717 63.6346L12.4363 63.6969C13.4788 63.8367 14.5158 63.0769 14.801 61.9644C14.9046 61.5601 15.0171 61.3609 15.1417 61.3609C15.4182 61.3609 19.4825 62.4835 20.2435 62.7701C21.071 63.0818 21.9867 63.6314 23.1946 64.5416C24.3039 65.3775 25.296 65.949 26.5145 66.4539C26.9994 66.6549 34.8517 68.8208 43.9642 71.267C61.9642 76.0992 61.6424 76.0261 63.1986 75.6317C64.436 75.3181 65.1918 74.8857 66.0969 73.9735C67.3159 72.745 67.9228 71.2846 67.9269 69.5696L67.9286 68.8434L68.4623 68.7634C68.7558 68.7194 69.4158 68.4732 69.929 68.2164C71.9414 67.2091 73.254 65.1246 73.254 62.9359C73.254 62.2604 73.2779 62.1892 73.5203 62.1425C74.8299 61.8902 75.236 61.7712 75.8713 61.4537C76.7983 60.9905 77.9402 59.8625 78.4323 58.9239C78.8195 58.1853 79.1663 56.9649 79.1695 56.3303C79.1711 55.9991 79.2435 55.9402 80.2067 55.4876C80.7762 55.22 81.9725 54.6511 82.8651 54.2234L84.488 53.4458L84.8978 54.1194C85.3592 54.8778 85.7795 55.1766 86.5295 55.2794C87.3328 55.3895 87.866 55.1735 89.6227 54.0262C90.5219 53.439 91.2742 52.9586 91.2946 52.9586C91.4018 52.9586 90.9428 56.4639 90.636 57.9881C88.2794 69.6946 80.8487 79.8721 70.3828 85.7282C65.5802 88.4154 60.2661 90.0976 54.6742 90.7009C53.4227 90.8359 49.6787 90.9432 48.5795 90.8756ZM51.1804 86.7911C51.7971 86.6199 52.4856 85.9227 52.6534 85.2996C52.8848 84.4403 52.5537 83.5373 51.8014 82.9756C51.551 82.7887 51.1939 82.7214 50.0336 82.6425C49.2339 82.5881 48.0144 82.4928 47.3238 82.4307C45.8959 82.3022 45.4111 82.3877 44.8393 82.8688C43.8714 83.6833 43.9052 85.3948 44.9042 86.1567C45.3954 86.5314 46.0979 86.6703 48.1062 86.7899C50.5286 86.9341 50.6649 86.9342 51.1804 86.7911ZM62.3665 84.9223C64.0374 84.359 65.8548 83.5826 66.1807 83.2928C66.5218 82.9896 66.8584 82.2065 66.8584 81.716C66.8584 81.2337 66.5234 80.4436 66.1955 80.1524C65.854 79.8492 65.1492 79.5858 64.6794 79.5858C64.4503 79.5858 63.7962 79.7795 63.2259 80.0163C62.6556 80.2531 61.6032 80.656 60.8872 80.9117C59.1214 81.5421 58.5795 82.0924 58.5795 83.2553C58.5795 84.0994 59.0839 84.8498 59.8848 85.1972C60.5032 85.4654 60.879 85.4238 62.3665 84.9223ZM37.6779 83.4507C38.6872 82.6809 38.8148 81.3149 37.9675 80.35C37.7517 80.1042 37.233 79.7633 36.7003 79.5172C36.2043 79.2881 35.2393 78.7889 34.5559 78.4079C33.8724 78.0269 33.1446 77.6801 32.9386 77.6373C31.6252 77.3645 30.2292 78.7769 30.4817 80.1229C30.6667 81.1089 31.1742 81.5194 33.9551 82.9326C35.7545 83.8471 35.8158 83.8683 36.5239 83.8235C37.0893 83.7877 37.3439 83.7054 37.6779 83.4507ZM74.4106 78.047C74.9967 77.6896 77.7408 74.9838 78.1242 74.3851C79.2523 72.6238 77.4893 70.4296 75.5854 71.2251C75.186 71.392 71.6203 74.8369 71.38 75.2881C71.3042 75.4302 71.2423 75.8617 71.2423 76.2469C71.2423 77.0501 71.517 77.5683 72.1797 78.0149C72.7145 78.3753 73.8455 78.3915 74.4106 78.047ZM25.6684 75.154C26.2388 74.859 26.7214 74.2041 26.8116 73.6027C26.9299 72.8136 26.7264 72.2861 25.9673 71.4139C25.602 70.9942 24.9408 70.1716 24.4978 69.5858C24.0549 69 23.5672 68.4044 23.4141 68.2623C22.7993 67.6916 21.8932 67.5974 21.0612 68.0177C20.162 68.472 19.726 69.457 19.99 70.4375C20.2061 71.2401 22.9436 74.7049 23.6683 75.0931C24.1724 75.3631 25.2033 75.3945 25.6684 75.154ZM82.8881 66.6394C83.4505 66.4044 83.869 65.8213 84.4481 64.4659C85.8897 61.0914 86.0135 60.03 85.0685 59.1476C84.7342 58.8355 84.0168 58.5204 83.6425 58.5214C83.0931 58.5227 82.4686 58.7809 82.1144 59.1531C81.8696 59.4104 81.5438 60.0781 81.1213 61.1881C80.7756 62.0968 80.3564 63.1597 80.1898 63.5503C79.8309 64.3916 79.8084 64.9187 80.1039 65.5621C80.5958 66.6333 81.7935 67.0968 82.8881 66.6394Z" fill="#2F524E" stroke="#353535" stroke-width="0.118343"/>
<path d="M37.1601 31.6971C36.037 31.4034 33.4633 31.3582 31.5479 31.5985C30.1252 31.777 29.691 31.7891 28.8047 31.675C27.8835 31.5563 23.5095 30.4718 23.3635 30.3258C23.3337 30.2959 23.3917 29.9157 23.4926 29.4809C23.7081 28.5518 23.6046 27.9745 23.1192 27.3976C22.6802 26.8759 22.4364 26.7768 20.0299 26.1418C18.842 25.8284 17.8701 25.5333 17.8701 25.4861C17.8701 25.163 21.0508 21.5906 22.6172 20.1544C29.3759 13.9575 37.0539 10.4106 46.0358 9.33594C48.3595 9.05793 52.691 9.05689 55.0299 9.33378C61.6526 10.1178 67.6531 12.322 73.1364 15.985C75.3763 17.4813 75.4617 17.5474 75.3194 17.6762C75.2578 17.7319 73.7429 18.7262 71.953 19.8856C70.163 21.0451 68.5736 22.1043 68.421 22.2395C67.6791 22.8964 67.5592 23.987 68.1141 25.0296C68.3046 25.3876 68.4767 25.7149 68.4965 25.757C68.5392 25.8476 65.5163 27.6154 64.4833 28.104C63.5942 28.5245 62.3346 28.7469 61.31 28.6643C60.853 28.6275 57.218 27.7151 52.4855 26.4493C47.7747 25.1893 44.1181 24.2713 43.6663 24.2351C41.4716 24.0593 39.4052 25.2847 38.3733 27.3739L37.9293 28.2728V30.0832C37.9293 31.0789 37.9027 31.8876 37.8701 31.8804C37.8376 31.8732 37.518 31.7907 37.1601 31.6971ZM30.7695 23.9185C30.9973 23.8338 31.7768 23.3701 32.5017 22.8882C33.2266 22.4062 34.1442 21.8151 34.5409 21.5745C35.5641 20.9542 35.9906 20.1507 35.8094 19.1848C35.6352 18.2564 34.6628 17.4556 33.7094 17.4556C33.1697 17.4556 31.9299 18.0782 30.2734 19.181C28.6978 20.2299 28.3378 20.562 28.0991 21.1872C27.7717 22.0443 28.115 23.2495 28.7979 23.6406C29.5767 24.0866 30.1137 24.1623 30.7695 23.9185ZM62.9681 18.9617C64.151 18.1646 64.3174 16.6561 63.3312 15.6699C62.9958 15.3345 62.6427 15.1549 61.769 14.875C59.6665 14.2015 58.2132 13.8803 57.4971 13.9308C56.3155 14.0141 55.6216 14.804 55.6216 16.0655C55.6216 17.2642 56.276 17.868 58.0117 18.2707C58.6173 18.4112 59.592 18.6797 60.1778 18.8674C61.5368 19.3028 62.4178 19.3326 62.9681 18.9617ZM45.0864 17.8734C46.0967 17.7126 47.2269 17.5493 47.5979 17.5106C49.6754 17.2935 50.3909 14.8702 48.7412 13.6385C48.1118 13.1686 47.1226 13.1773 44.1456 13.6787C42.5001 13.9559 41.9242 14.1924 41.5232 14.7556C41.1729 15.2476 41.0727 16.4259 41.3381 16.9342C41.6727 17.5752 42.4511 18.123 43.0746 18.1563C43.1708 18.1614 44.0761 18.0341 45.0864 17.8734Z" fill="#2F524E" stroke="#353535" stroke-width="0.118343"/>
</g>
<defs>
<clipPath id="clip0_104_1419">
<rect width="100" height="100" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

11
public/grave.svg Normal file
View File

@ -0,0 +1,11 @@
<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_180_175)">
<path d="M18.167 16.6057H1.83203V20.0283H18.167V16.6057Z" fill="white"/>
<path d="M10.3094 0.0283203H9.68766C6.25086 0.0283203 3.46484 2.81434 3.46484 6.25117V15.5848H16.5322V6.25117C16.5322 2.81434 13.7463 0.0283203 10.3094 0.0283203ZM13.2394 8.82477H10.8414V12.5712H9.15566V8.82477H6.75766V7.1332H9.15566V4.79266H10.8414V7.1332H13.2394V8.82477Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_180_175">
<rect width="20" height="20" fill="white" transform="translate(0 0.0283203)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 643 B

12
public/hospital.svg Normal file
View File

@ -0,0 +1,12 @@
<svg width="116" height="125" viewBox="0 0 116 125" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M115.798 118.744V124.987H0.202148V118.744H12.3749V40.6125C12.3749 35.4375 16.4629 31.2375 21.4999 31.2375H36.7021V9.375C36.7021 4.2 40.7901 0 45.8271 0H70.1544C75.1914 0 79.2794 4.2 79.2794 9.375V31.2562H94.4999C99.5369 31.2562 103.625 35.4562 103.625 40.6312V118.744H115.798ZM97.5477 118.744V40.6125C97.5477 38.8875 96.1789 37.4813 94.4999 37.4813H78.7684C77.5091 41.1188 74.1329 43.725 70.1727 43.725H45.8271C41.8486 43.725 38.4724 41.1188 37.2314 37.4813H21.4999C19.8209 37.4813 18.4521 38.8875 18.4521 40.6125V118.744H45.8271V100.2C45.8271 93.1687 51.3934 87.3562 58.2371 87.4875C64.8437 87.6187 70.1544 93.1687 70.1544 99.9937V118.744H97.5477ZM73.2021 34.3688V9.375C73.2021 7.65 71.8334 6.24375 70.1544 6.24375H45.8271C44.1481 6.24375 42.7794 7.65 42.7794 9.375V34.3688C42.7794 36.0938 44.1481 37.5 45.8271 37.5H70.1544C71.8516 37.5 73.2021 36.0938 73.2021 34.3688ZM64.0771 118.744V99.9937C64.0771 96.675 61.5587 93.975 58.4014 93.75C54.8427 93.5062 51.9227 96.4688 51.9227 100.125V118.744H64.0771Z" fill="black"/>
<path d="M97.548 40.6125V118.744H70.173V99.9937C70.173 93.1688 64.8622 87.6375 58.2557 87.4875C51.412 87.3375 45.8457 93.15 45.8457 100.2V118.744H18.4707V40.6125C18.4707 38.8875 19.8395 37.4813 21.5185 37.4813H37.25C38.5092 41.1188 41.8855 43.725 45.8457 43.725H70.173C74.1515 43.725 77.5277 41.1188 78.7687 37.4813H94.5002C96.1792 37.5 97.548 38.8875 97.548 40.6125Z" fill="#2F524E"/>
<path d="M73.202 9.375V34.3688C73.202 36.0938 71.8333 37.5 70.1543 37.5H45.827C44.148 37.5 42.7793 36.0938 42.7793 34.3688V9.375C42.7793 7.65 44.148 6.24375 45.827 6.24375H70.1543C71.8515 6.24375 73.202 7.65 73.202 9.375Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48.8749 24.9937H54.9521V31.2375C54.9521 32.9625 56.3209 34.3687 57.9999 34.3687C59.6789 34.3687 61.0477 32.9625 61.0477 31.2375V24.9937H67.1249C68.8039 24.9937 70.1727 23.5875 70.1727 21.8625C70.1727 20.1375 68.8039 18.7312 67.1249 18.7312H61.0477V12.4875C61.0477 10.7625 59.6789 9.35625 57.9999 9.35625C56.3209 9.35625 54.9521 10.7625 54.9521 12.4875V18.7312H48.8749C47.1959 18.7312 45.8271 20.1375 45.8271 21.8625C45.8271 23.5875 47.1959 24.9937 48.8749 24.9937Z" fill="white"/>
<path d="M39.7499 49.9875H27.5771V62.4937H39.7499V49.9875Z" fill="white"/>
<path d="M39.7499 68.7375H27.5771V81.2437H39.7499V68.7375Z" fill="white"/>
<path d="M64.0956 49.9875H51.9229V62.4937H64.0956V49.9875Z" fill="white"/>
<path d="M64.0956 68.7375H51.9229V81.2437H64.0956V68.7375Z" fill="white"/>
<path d="M88.4228 49.9875H76.25V62.4937H88.4228V49.9875Z" fill="white"/>
<path d="M88.4228 68.7375H76.25V81.2437H88.4228V68.7375Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
public/image 1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 KiB

BIN
public/image 11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

BIN
public/image 12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

BIN
public/image 3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
public/image 4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
public/image 6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

BIN
public/image 7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

BIN
public/image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 KiB

10
public/left arrow.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_104_1358)">
<path d="M17.4217 0.0641301C16.9663 -0.0956417 16.4597 0.0497363 16.1582 0.426552L7.06733 11.7904C6.73536 12.2054 6.73536 12.7952 7.0674 13.2102L16.1583 24.5735C16.3781 24.8483 16.7071 25 17.0458 25C17.1714 25 17.2986 24.9791 17.4217 24.9358C17.8772 24.7761 18.182 24.3461 18.182 23.8635V1.1364C18.1819 0.653748 17.8771 0.223826 17.4217 0.0641301Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_104_1358">
<path d="M0 0H13C19.6274 0 25 5.37258 25 12V13C25 19.6274 19.6274 25 13 25H0V0Z" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 663 B

10
public/left-arrow.svg Normal file
View File

@ -0,0 +1,10 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_247_171)">
<path d="M12.1099 15.0063L23.3329 3.78293C23.6419 3.47463 23.8119 3.06244 23.8119 2.62293C23.8119 2.18317 23.6419 1.77122 23.3329 1.46244L22.3495 0.479512C22.0409 0.170244 21.6285 0 21.189 0C20.7495 0 20.3375 0.170244 20.0287 0.479512L6.66604 13.842C6.35604 14.1517 6.18629 14.5656 6.18751 15.0056C6.18629 15.4476 6.3558 15.861 6.66604 16.171L20.0163 29.5205C20.3251 29.8298 20.737 30 21.1768 30C21.6163 30 22.0282 29.8298 22.3373 29.5205L23.3204 28.5376C23.9602 27.8978 23.9602 26.8563 23.3204 26.2168L12.1099 15.0063Z" fill="#353535"/>
</g>
<defs>
<clipPath id="clip0_247_171">
<rect width="30" height="30" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 783 B

11
public/log-out.svg Normal file
View File

@ -0,0 +1,11 @@
<svg width="20" height="18" viewBox="0 0 20 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_288_177)">
<path d="M13.7032 10.0171V8.16523H5.36986V5.38745L0.740234 9.09115L5.36986 12.7949V10.0171H13.7032Z" fill="white"/>
<path d="M17.4078 0.757935H9.07451C8.05321 0.757935 7.22266 1.58849 7.22266 2.60979V6.31349H9.07451V2.60979H17.4078V15.5728H9.07451V11.869H7.22266V15.5728C7.22266 16.594 8.05321 17.4246 9.07451 17.4246H17.4078C18.4291 17.4246 19.2597 16.594 19.2597 15.5728V2.60979C19.2597 1.58849 18.4291 0.757935 17.4078 0.757935Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_288_177">
<rect width="20" height="17.7778" fill="white" transform="translate(0 0.139404)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 732 B

21
public/logo.svg Normal file
View File

@ -0,0 +1,21 @@
<svg width="151" height="53" viewBox="0 0 151 53" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M70.2876 0.23584C65.3603 0.23584 61.3633 1.47128 61.3633 3.01196C61.3633 4.5381 65.3603 5.78809 70.2876 5.78809C75.2148 5.78809 79.2119 4.55264 79.2119 3.01196C79.2264 1.47128 75.2294 0.23584 70.2876 0.23584ZM70.2876 4.20381C66.9737 4.20381 64.2847 3.66602 64.2847 3.01196C64.2847 2.34336 66.9737 1.82012 70.2876 1.82012C73.6015 1.82012 76.2904 2.3579 76.2904 3.01196C76.2904 3.66602 73.6015 4.20381 70.2876 4.20381Z" fill="white"/>
<path d="M76.2607 26.2529C76.2607 26.2529 76.4352 16.2821 90.0251 14.1746C103.615 12.0671 104.778 10.0903 104.778 10.0903C104.778 10.0903 103.615 15.5699 95.1558 21.1658C95.1558 21.1658 97.5831 20.7588 99.0075 19.9448C99.0075 19.9448 97.4378 28.4476 84.4147 29.7994C84.4147 29.7994 91.3332 26.8052 93.0483 23.6221C93.0483 23.6221 89.2402 22.9245 85.156 24.6686C85.156 24.6686 86.7112 22.2995 90.839 20.7442C94.9669 19.189 96.9 16.035 96.9 16.035C96.9 16.035 92.5105 16.9943 89.0513 17.7065C89.0367 17.721 79.7781 19.0873 76.2607 26.2529Z" fill="white"/>
<path d="M63.9936 26.2529C63.9936 26.2529 63.8192 16.2821 50.2293 14.1746C36.6393 12.0671 35.4766 10.0903 35.4766 10.0903C35.4766 10.0903 36.6393 15.5699 45.0985 21.1658C45.0985 21.1658 42.6712 20.7588 41.2468 19.9448C41.2468 19.9448 42.8166 28.4476 55.8396 29.7994C55.8396 29.7994 48.9211 26.8052 47.206 23.6221C47.206 23.6221 51.0141 22.9245 55.0984 24.6686C55.0984 24.6686 53.5432 22.2995 49.4153 20.7442C45.2875 19.189 43.3544 16.035 43.3544 16.035C43.3544 16.035 47.7438 16.9943 51.2031 17.7065C51.2176 17.721 60.4762 19.0873 63.9936 26.2529Z" fill="white"/>
<path d="M2.57022 51.4415C2.54115 51.4415 2.51208 51.427 2.49754 51.4125H0.95687C0.884197 51.4125 0.826057 51.3543 0.826057 51.2817V51.1363C0.826057 51.0636 0.884197 51.0055 0.95687 51.0055C1.52372 51.0055 1.91616 50.8601 2.11964 50.5694C2.33766 50.2642 2.43941 49.8136 2.43941 49.2177V35.497C2.0179 35.1772 1.50919 35.0173 0.942335 35.0173C0.869661 35.0173 0.811523 34.9592 0.811523 34.8865V34.7267C0.811523 34.654 0.869661 34.5958 0.942335 34.5958H2.57022L5.2446 34.5668C5.2882 34.5668 5.34634 34.5958 5.36088 34.6394C5.72424 35.3952 6.11668 36.1947 6.52365 37.0377C6.93062 37.8807 7.35213 38.7382 7.7591 39.6103C8.1806 40.4824 8.58757 41.3399 8.99455 42.1829C9.40152 43.0259 11.5236 47.4009 11.6835 47.7352L17.0904 34.683C17.1049 34.6394 17.163 34.5958 17.2066 34.5958H21.6833C21.756 34.5958 21.8141 34.654 21.8141 34.7267V34.872C21.8141 34.9447 21.756 35.0028 21.6833 35.0028C21.1019 35.0028 20.6804 35.1482 20.4043 35.4534C20.1281 35.7586 19.9828 36.2092 19.9828 36.7906V49.2323C19.9828 49.8136 20.1281 50.2642 20.4043 50.5694C20.6804 50.8747 21.1019 51.02 21.6833 51.02C21.7124 51.02 21.756 51.0346 21.7705 51.0636C21.7996 51.0927 21.8141 51.1218 21.8141 51.1508V51.2962C21.8141 51.3689 21.756 51.427 21.6833 51.427H15.3898C15.3171 51.427 15.259 51.3689 15.259 51.2962V51.1508C15.259 51.0782 15.3171 51.02 15.3898 51.02C15.9567 51.02 16.3927 50.8601 16.6689 50.5694C16.945 50.2642 17.0904 49.8136 17.0904 49.2323V35.8749L11.9451 48.273C11.9887 48.3456 12.0032 48.4038 12.0323 48.4619C12.0468 48.5201 12.0759 48.5782 12.105 48.6073L12.1776 48.7672C12.2067 48.8108 12.1922 48.8689 12.1631 48.898C11.9887 49.1305 11.8433 49.3485 11.7125 49.523C11.5817 49.6974 11.4654 49.8718 11.3637 50.0462C11.262 50.2206 11.1457 50.4096 11.0439 50.6131C10.9422 50.8165 10.8114 51.0636 10.6951 51.3398C10.6806 51.3834 10.6224 51.4125 10.5788 51.4125H10.3608C10.3172 51.4125 10.2591 51.3834 10.2445 51.3398L3.29695 36.529C3.16614 36.2819 3.00626 36.0638 2.83184 35.8604V49.2177C2.83184 49.7991 2.93359 50.2497 3.15161 50.5694C3.35509 50.8601 3.74753 51.0055 4.31438 51.0055C4.38705 51.0055 4.44519 51.0636 4.44519 51.1363V51.2817C4.44519 51.3543 4.38705 51.4125 4.31438 51.4125H2.77371C2.75917 51.427 2.7301 51.4415 2.71557 51.4415H2.57022Z" fill="white"/>
<path d="M0.927734 34.7267H2.55562L5.23 34.6976C5.59337 35.4534 5.9858 36.2528 6.39277 37.0959C6.79975 37.9389 7.22125 38.7964 7.62822 39.6685C8.04973 40.5406 8.4567 41.3981 8.86367 42.2411C9.27064 43.0841 9.66308 43.869 10.0119 44.6103C10.3607 45.337 10.695 46.0056 10.9857 46.6161C11.2764 47.212 11.509 47.6916 11.6834 48.055L17.192 34.7412H21.6687V34.8866C21.0583 34.8866 20.5932 35.0465 20.3025 35.3808C19.9972 35.7151 19.8519 36.1802 19.8519 36.8052V49.2468C19.8519 49.8573 19.9972 50.3369 20.3025 50.6712C20.6077 51.0055 21.0583 51.1654 21.6687 51.1654V51.3108H15.3752V51.1654C15.9857 51.1654 16.4508 51.0055 16.7415 50.6712C17.0467 50.3369 17.192 49.8718 17.192 49.2468V35.2354L11.7706 48.2876C11.8142 48.3602 11.8578 48.4474 11.8724 48.5056C11.9014 48.5782 11.916 48.6364 11.9596 48.68C11.9886 48.7381 12.0177 48.7963 12.0322 48.8253C11.8578 49.0579 11.7125 49.2759 11.5817 49.4503C11.4508 49.6247 11.3346 49.8137 11.2328 49.9881C11.1165 50.1625 11.0148 50.3515 10.8985 50.555C10.7822 50.7585 10.666 51.0055 10.5497 51.2817H10.3317L3.3841 36.4709C3.18061 36.1075 2.94805 35.7877 2.6719 35.5261V49.2178C2.6719 49.8282 2.78817 50.3079 3.02073 50.6422C3.25328 50.9765 3.67479 51.1364 4.28525 51.1364V51.2817H2.68643V51.3108H2.57015V51.2817H0.956806V51.1364C1.56726 51.1364 1.98877 50.9765 2.22132 50.6422C2.45388 50.3079 2.57015 49.8428 2.57015 49.2178V35.4244C2.11958 35.061 1.56726 34.8866 0.94227 34.8866V34.7267H0.927734Z" fill="white"/>
<path d="M23.1953 51.4561C23.1226 51.4561 23.0645 51.398 23.0645 51.3253V51.1799C23.0645 51.1509 23.079 51.1073 23.1081 51.0927C23.1371 51.0637 23.1662 51.0491 23.1953 51.0491C23.7621 51.0491 24.1982 50.8892 24.4743 50.5986C24.7505 50.2933 24.8958 49.8427 24.8958 49.2614V36.8197C24.8958 36.2383 24.7505 35.7877 24.4743 35.4825C24.1982 35.1773 23.7767 35.0319 23.1953 35.0319C23.1662 35.0319 23.1226 35.0174 23.1081 34.9883C23.079 34.9592 23.0645 34.9302 23.0645 34.9011V34.7558C23.0645 34.6831 23.1226 34.6249 23.1953 34.6249H33.1079C33.6748 34.6249 34.1399 34.5959 34.5032 34.5377C34.8666 34.4796 35.1864 34.3924 35.4335 34.2616C35.6806 34.1308 35.8986 33.9563 36.0875 33.7383C36.2765 33.5058 36.4654 33.2151 36.6544 32.8808C36.6834 32.8372 36.727 32.8081 36.7707 32.8081H37.0323C37.0759 32.8081 37.1195 32.8372 37.134 32.8662C37.1486 32.8953 37.1631 32.9535 37.1486 32.9825C37.0177 33.2732 36.9015 33.5348 36.7997 33.7674C36.7271 33.9709 36.6398 34.1744 36.5381 34.3779C36.4509 34.5668 36.3782 34.7122 36.3491 34.7848C36.2038 35.0901 36.0294 35.468 35.8404 35.9331C35.6369 36.3982 35.4335 36.8924 35.2154 37.4011L34.5614 38.9127C34.3434 39.4068 34.1544 39.8429 33.98 40.2353C33.9655 40.2789 33.9073 40.308 33.8637 40.308H33.6457C33.6021 40.308 33.5585 40.2789 33.544 40.2499C33.5149 40.2063 33.5149 40.1627 33.5294 40.1336C33.8201 39.4505 34.0527 38.7819 34.2125 38.1569C34.3579 37.5464 34.387 36.9941 34.2562 36.529C34.1399 36.0639 33.8492 35.715 33.3841 35.4389C32.9044 35.1627 32.1777 35.0174 31.1893 35.0174H29.4888C28.9074 35.0174 28.4859 35.1627 28.2097 35.468C27.9336 35.7732 27.7882 36.2238 27.7882 36.8051V41.8341H28.7911C29.2417 41.8341 29.6487 41.8196 29.9975 41.8051C30.3318 41.7905 30.6516 41.7324 30.9422 41.6307C31.2184 41.5289 31.4946 41.3545 31.7417 41.1365C31.9887 40.9039 32.2504 40.5696 32.512 40.1191C32.5411 40.0755 32.5847 40.0609 32.6283 40.0609H32.8172C32.8608 40.0609 32.9044 40.09 32.919 40.1191C32.948 40.1627 32.948 40.2063 32.9335 40.2353L30.1864 46.4126C30.1719 46.4562 30.1138 46.4852 30.0702 46.4852H29.9103C29.8667 46.4852 29.8231 46.4707 29.8085 46.4271C29.7795 46.398 29.7795 46.3399 29.794 46.3108C30.012 45.773 30.1574 45.2498 30.23 44.7556C30.3027 44.276 30.2882 43.8399 30.1574 43.462C30.0411 43.0987 29.8085 42.808 29.4597 42.59C29.1109 42.3719 28.6167 42.2556 27.9772 42.2556H27.7737V49.2468C27.7737 49.8282 27.919 50.2788 28.1952 50.584C28.4714 50.8893 28.8929 51.0346 29.4742 51.0346H30.3318C31.3783 51.0346 32.2794 50.8166 33.0352 50.3951C33.791 49.959 34.4596 49.4212 35.0265 48.7963C35.5933 48.1567 36.0875 47.4736 36.48 46.7323C36.8724 46.0056 37.2358 45.3225 37.5265 44.7265C37.5555 44.6829 37.5991 44.6539 37.6427 44.6539H37.9044C37.948 44.6539 37.9916 44.6684 38.0061 44.712C38.0352 44.7411 38.0352 44.7992 38.0206 44.8283C37.5119 46.0492 37.0613 47.1248 36.6689 48.0986C36.4945 48.491 36.3346 48.8835 36.1747 49.2759C36.0148 49.6683 35.8695 50.0172 35.7387 50.3369C35.6079 50.6422 35.4625 50.991 35.3027 51.3689C35.2881 51.4125 35.23 51.4416 35.1864 51.4416H23.1953V51.4561Z" fill="white"/>
<path d="M23.1953 51.1945C23.8058 51.1945 24.2709 51.0346 24.5616 50.7003C24.8668 50.366 25.0121 49.9009 25.0121 49.2759V36.8342C25.0121 36.2238 24.8668 35.7441 24.5616 35.4098C24.2563 35.0755 23.8058 34.9157 23.1953 34.9157V34.7703H33.108C33.6748 34.7703 34.1545 34.7412 34.5324 34.6831C34.9103 34.625 35.23 34.5378 35.5062 34.3924C35.7678 34.2616 36.0004 34.0727 36.2038 33.8401C36.4073 33.6075 36.5963 33.3168 36.7852 32.968H37.0469C36.916 33.2587 36.7998 33.5058 36.698 33.7529C36.6254 33.9564 36.5381 34.1599 36.4364 34.3633C36.3347 34.5668 36.2765 34.6976 36.2475 34.7703C36.1021 35.0755 35.9422 35.4534 35.7387 35.9186C35.5353 36.3837 35.3318 36.8778 35.1137 37.3866C34.8957 37.8953 34.6777 38.404 34.4597 38.8982C34.2417 39.3923 34.0527 39.8284 33.8783 40.2063H33.6457C33.951 39.5086 34.169 38.84 34.3289 38.2005C34.4888 37.561 34.5033 36.9941 34.3725 36.5145C34.2417 36.0203 33.9364 35.6424 33.4423 35.3372C32.9481 35.0319 32.1923 34.9011 31.1894 34.9011H29.4888C28.8784 34.9011 28.4133 35.061 28.1226 35.3953C27.8173 35.7296 27.672 36.1947 27.672 36.8197V41.9795H28.8057C29.2563 41.9795 29.6632 41.965 30.0266 41.9504C30.3754 41.9359 30.7097 41.8778 31.015 41.7615C31.3202 41.6452 31.5964 41.4708 31.858 41.2382C32.1196 41.0057 32.3812 40.6569 32.6574 40.1918H32.8463L30.0993 46.369H29.9394C30.1574 45.8167 30.3028 45.2934 30.39 44.7847C30.4627 44.276 30.4481 43.8254 30.3173 43.433C30.1865 43.0405 29.9394 42.7208 29.576 42.4882C29.1981 42.2557 28.6894 42.1394 28.0208 42.1394H27.6865V49.2614C27.6865 49.8718 27.8319 50.3515 28.1371 50.6858C28.4423 51.0201 28.8929 51.18 29.5034 51.18H30.3609C31.4365 51.18 32.3522 50.962 33.1225 50.5114C33.8928 50.0753 34.576 49.523 35.1428 48.8835C35.7242 48.244 36.2038 47.5463 36.6108 46.805C37.0178 46.0638 37.3666 45.3952 37.6573 44.7992H37.9189C37.4102 46.0202 36.9597 47.0957 36.5672 48.0695C36.3928 48.462 36.2329 48.8544 36.073 49.2469C35.9132 49.6393 35.7678 49.9881 35.637 50.2934C35.5062 50.5986 35.3608 50.9474 35.201 51.3253H23.2098V51.1945H23.1953Z" fill="white"/>
<path d="M41.0585 51.4415C41.0294 51.4415 41.0004 51.427 40.9858 51.4125H39.4452C39.3725 51.4125 39.3143 51.3543 39.3143 51.2817V51.1363C39.3143 51.0636 39.3725 51.0055 39.4452 51.0055C40.012 51.0055 40.4044 50.8601 40.6079 50.5694C40.8259 50.2642 40.9277 49.8136 40.9277 49.2177V35.497C40.5062 35.1772 39.9975 35.0173 39.4306 35.0173C39.3579 35.0173 39.2998 34.9592 39.2998 34.8865V34.7267C39.2998 34.654 39.3579 34.5958 39.4306 34.5958H41.0585L43.7329 34.5668C43.7765 34.5668 43.8346 34.5958 43.8492 34.6394C44.2125 35.3952 44.605 36.1947 45.0119 37.0377C45.4189 37.8807 45.8404 38.7382 46.2474 39.6103C46.6689 40.4824 47.0759 41.3399 47.4828 42.1829C47.8898 43.0259 50.0119 47.4009 50.1717 47.7352L55.5786 34.683C55.5932 34.6394 55.6513 34.5958 55.6949 34.5958H60.1716C60.2443 34.5958 60.3024 34.654 60.3024 34.7267V34.872C60.3024 34.9447 60.2443 35.0028 60.1716 35.0028C59.5902 35.0028 59.1687 35.1482 58.8926 35.4534C58.6164 35.7586 58.471 36.2092 58.471 36.7906V49.2323C58.471 49.8136 58.6164 50.2642 58.8926 50.5694C59.1687 50.8747 59.5902 51.02 60.1716 51.02C60.2007 51.02 60.2443 51.0346 60.2588 51.0636C60.2879 51.0927 60.3024 51.1218 60.3024 51.1508V51.2962C60.3024 51.3689 60.2443 51.427 60.1716 51.427H53.8781C53.8054 51.427 53.7473 51.3689 53.7473 51.2962V51.1508C53.7473 51.0782 53.8054 51.02 53.8781 51.02C54.4449 51.02 54.881 50.8601 55.1571 50.5694C55.4333 50.2642 55.5786 49.8136 55.5786 49.2323V35.8749L50.4334 48.273C50.477 48.3456 50.4915 48.4038 50.5206 48.4619C50.5351 48.5201 50.5642 48.5782 50.5932 48.6073L50.6659 48.7672C50.695 48.8108 50.6805 48.8689 50.6514 48.898C50.477 49.1305 50.3316 49.3485 50.2008 49.523C50.07 49.6974 49.9537 49.8718 49.852 50.0462C49.7502 50.2206 49.634 50.4096 49.5322 50.6131C49.4305 50.8165 49.2997 51.0636 49.1834 51.3398C49.1689 51.3834 49.1107 51.4125 49.0671 51.4125H48.8491C48.8055 51.4125 48.7473 51.3834 48.7328 51.3398L41.7852 36.529C41.6544 36.2819 41.4945 36.0638 41.3201 35.8604V49.2177C41.3201 49.7991 41.4219 50.2497 41.6399 50.5694C41.8434 50.8601 42.2358 51.0055 42.8027 51.0055C42.8753 51.0055 42.9335 51.0636 42.9335 51.1363V51.2817C42.9335 51.3543 42.8753 51.4125 42.8027 51.4125H41.262C41.2475 51.427 41.2184 51.4415 41.2038 51.4415H41.0585Z" fill="white"/>
<path d="M39.416 34.7267H41.0584L43.7328 34.6976C44.0962 35.4534 44.4886 36.2528 44.8956 37.0959C45.3026 37.9389 45.7241 38.7964 46.131 39.6685C46.5525 40.5406 46.9595 41.3981 47.3665 42.2411C47.7735 43.0841 48.1659 43.869 48.5147 44.6103C48.8636 45.337 49.1979 46.0056 49.4885 46.6161C49.7792 47.212 50.0118 47.6916 50.1862 48.055L55.6949 34.7412H60.1715V34.8866C59.5611 34.8866 59.096 35.0465 58.8053 35.3808C58.5 35.7151 58.3547 36.1802 58.3547 36.8052V49.2468C58.3547 49.8573 58.5 50.3369 58.8053 50.6712C59.1105 51.0055 59.5611 51.1654 60.1715 51.1654V51.3108H53.878V51.1654C54.4885 51.1654 54.9536 51.0055 55.2443 50.6712C55.5495 50.3369 55.6949 49.8718 55.6949 49.2468V35.2354L50.2734 48.2876C50.317 48.3602 50.3606 48.4474 50.3752 48.5056C50.4042 48.5782 50.4188 48.6364 50.4624 48.68C50.4914 48.7381 50.5205 48.7963 50.535 48.8253C50.3606 49.0579 50.2153 49.2759 50.0845 49.4503C49.9537 49.6247 49.8374 49.8137 49.7356 49.9881C49.6194 50.1625 49.5176 50.3515 49.4013 50.555C49.2851 50.7585 49.1688 51.0055 49.0525 51.2817H48.8345L41.8869 36.4709C41.6834 36.1075 41.4509 35.7877 41.1747 35.5261V49.2178C41.1747 49.8282 41.291 50.3079 41.5235 50.6422C41.7561 50.9765 42.1776 51.1364 42.7881 51.1364V51.2817H41.1747V51.3108H41.0584V51.2817H39.4451V51.1364C40.0555 51.1364 40.477 50.9765 40.7096 50.6422C40.9422 50.3079 41.0584 49.8428 41.0584 49.2178V35.4244C40.6079 35.061 40.0555 34.8866 39.4305 34.8866V34.7267H39.416Z" fill="white"/>
<path d="M80.5927 51.4125C80.5201 51.4125 80.4619 51.3543 80.4619 51.2816V51.1363C80.4619 51.0636 80.5201 51.0055 80.5927 51.0055C80.7671 51.0055 80.9561 50.9619 81.145 50.8892C81.3485 50.802 81.5229 50.6857 81.6974 50.5404C81.8718 50.395 82.0026 50.2061 82.1189 49.9735C82.2351 49.741 82.2787 49.4939 82.2787 49.2177V36.776C82.2787 36.122 82.1334 35.6569 81.8282 35.3952C81.5229 35.1336 81.1014 34.9883 80.5927 34.9883C80.5201 34.9883 80.4619 34.9301 80.4619 34.8575V34.7121C80.4619 34.6394 80.5201 34.5813 80.5927 34.5813H86.5374C88.049 34.5813 89.3281 34.7121 90.3164 34.9737C91.3193 35.2354 92.1187 35.6278 92.7001 36.1074C93.2815 36.6016 93.703 37.2121 93.9356 37.9097C94.1681 38.6074 94.2844 39.3923 94.2844 40.2644C94.2844 41.0347 94.1681 41.7614 93.9501 42.43C93.7175 43.0986 93.3687 43.68 92.9036 44.1742C92.4385 44.6538 91.828 45.0463 91.1013 45.3224C90.3746 45.5986 89.488 45.7439 88.4851 45.7439C87.4386 45.7439 86.6246 45.4968 86.0723 45.0027C85.7089 44.6829 85.4182 44.305 85.2148 43.8835V49.2032C85.2148 49.7846 85.3601 50.2351 85.6363 50.5404C85.9124 50.8456 86.3339 50.991 86.9153 50.991C86.9444 50.991 86.988 51.0055 87.0025 51.0346C87.0316 51.0636 87.0461 51.0927 87.0461 51.1218V51.2671C87.0461 51.3398 86.988 51.3979 86.9153 51.3979H80.5927V51.4125ZM85.1857 41.5434C85.1857 42.2847 85.2874 42.8951 85.4764 43.3748C85.6653 43.8544 85.9124 44.2323 86.2177 44.523C86.5229 44.8137 86.8572 45.0027 87.2351 45.1189C87.6275 45.2352 88.0345 45.2934 88.4415 45.2934C89.4298 45.2934 90.1275 44.8864 90.5926 44.0579C91.0577 43.2149 91.3048 41.8922 91.3048 40.119C91.3048 39.3051 91.2176 38.5638 91.0577 37.9388C90.8978 37.3284 90.6217 36.7906 90.2583 36.3545C89.8949 35.9185 89.4007 35.5987 88.8048 35.3807C88.1944 35.1627 87.4386 35.0464 86.5374 35.0464H85.2002V41.5434H85.1857Z" fill="white"/>
<path d="M80.5928 34.872V34.7267H86.5375C88.0491 34.7267 89.299 34.8575 90.2874 35.1191C91.2758 35.3807 92.0461 35.7441 92.613 36.2238C93.1798 36.7034 93.5722 37.2848 93.8048 37.9679C94.0374 38.651 94.1536 39.4214 94.1536 40.2789C94.1536 41.0347 94.0374 41.7469 93.8193 42.401C93.6013 43.0551 93.2525 43.6219 92.8019 44.087C92.3513 44.5667 91.7554 44.93 91.0432 45.2062C90.331 45.4824 89.4735 45.6132 88.4706 45.6132C87.4386 45.6132 86.6683 45.3806 86.145 44.901C85.6218 44.4213 85.2584 43.8545 85.0695 43.2004V49.2032C85.0695 49.8137 85.2148 50.2933 85.52 50.6276C85.8253 50.9619 86.2758 51.1218 86.8863 51.1218V51.2671H80.5928V51.1218C80.7817 51.1218 80.9852 51.0782 81.2032 50.991C81.4213 50.9038 81.6102 50.7875 81.7991 50.6276C81.9736 50.4677 82.1335 50.2643 82.2497 50.0172C82.366 49.7701 82.4241 49.4939 82.4241 49.2032V36.7615C82.4241 36.0639 82.2643 35.5697 81.93 35.279C81.5811 35.0174 81.1451 34.872 80.5928 34.872ZM85.0549 34.9156V41.5435C85.0549 42.2993 85.1567 42.9242 85.3456 43.4184C85.5491 43.9126 85.7962 44.3196 86.116 44.6103C86.4357 44.9155 86.7845 45.119 87.1915 45.2353C87.5985 45.3515 88.0055 45.4097 88.427 45.4097C89.4589 45.4097 90.2002 44.9736 90.6798 44.1016C91.1595 43.2295 91.4066 41.9068 91.4066 40.1045C91.4066 39.276 91.3194 38.5348 91.1595 37.8952C90.9996 37.2557 90.7234 36.7179 90.331 36.2674C89.9386 35.8168 89.4444 35.4825 88.8194 35.2499C88.1944 35.0174 87.4241 34.9011 86.5084 34.9011H85.0549V34.9156Z" fill="white"/>
<path d="M107.656 51.4125C107.583 51.4125 107.525 51.3543 107.525 51.2816V51.1363C107.525 51.0636 107.583 51.0055 107.656 51.0055C108.223 51.0055 108.659 50.8456 108.935 50.5549C109.211 50.2497 109.357 49.7991 109.357 49.2177V38.2295L97.6852 51.3689C97.6561 51.3979 97.6271 51.4125 97.5835 51.4125H97.4817C97.409 51.4125 97.3509 51.3543 97.3509 51.2816V36.776C97.3509 36.1947 97.2056 35.7441 96.9294 35.4388C96.6532 35.1336 96.2317 34.9883 95.6503 34.9883C95.6213 34.9883 95.5777 34.9737 95.5631 34.9447C95.5341 34.9156 95.5195 34.8865 95.5195 34.8575V34.7121C95.5195 34.6394 95.5777 34.5813 95.6503 34.5813H101.944C102.017 34.5813 102.075 34.6394 102.075 34.7121V34.8575C102.075 34.9301 102.017 34.9883 101.944 34.9883C101.362 34.9883 100.941 35.1336 100.665 35.4388C100.389 35.7441 100.243 36.1947 100.243 36.776V47.7643L111.871 34.6249C111.9 34.5958 111.929 34.5813 111.973 34.5813H112.118C112.191 34.5813 112.249 34.6394 112.249 34.7121V49.2177C112.249 49.7991 112.394 50.2497 112.67 50.5549C112.947 50.8601 113.368 51.0055 113.95 51.0055C113.979 51.0055 114.022 51.02 114.037 51.0491C114.066 51.0782 114.08 51.1072 114.08 51.1363V51.2816C114.08 51.3543 114.022 51.4125 113.95 51.4125H107.656Z" fill="white"/>
<path d="M95.6503 34.7267H101.944V34.872C101.333 34.872 100.868 35.0319 100.578 35.3662C100.272 35.7005 100.127 36.1656 100.127 36.7906V48.1277L111.973 34.7412H112.118V49.2468C112.118 49.8573 112.263 50.3369 112.569 50.6712C112.874 51.0055 113.324 51.1654 113.935 51.1654V51.3108H107.641V51.1654C108.252 51.1654 108.717 51.0055 109.008 50.6712C109.313 50.3369 109.458 49.8718 109.458 49.2468V37.9098L97.5543 51.2962H97.4526V36.7906C97.4526 36.1802 97.3072 35.7005 97.002 35.3662C96.6968 35.0319 96.2462 34.872 95.6357 34.872V34.7267H95.6503Z" fill="white"/>
<path d="M125.955 51.4124C125.882 51.4124 125.824 51.3543 125.824 51.2816V51.1363C125.824 51.0636 125.882 51.0055 125.955 51.0055C126.522 51.0055 126.914 50.8456 127.132 50.5404C127.35 50.2351 127.365 49.7991 127.176 49.2322L126.304 46.5579C126.158 46.1945 125.94 45.9329 125.664 45.7585C125.374 45.584 125.083 45.4968 124.778 45.4968H120.475C120.228 45.4968 119.967 45.555 119.72 45.6858C119.472 45.8021 119.254 45.991 119.095 46.2381L117.874 49.9154C117.859 50.2206 117.917 50.4677 118.092 50.6566C118.31 50.8892 118.688 51.0055 119.24 51.0055C119.313 51.0055 119.371 51.0636 119.371 51.1363V51.2816C119.371 51.3543 119.313 51.4124 119.24 51.4124H115.461C115.388 51.4124 115.33 51.3543 115.33 51.2816V51.1363C115.33 51.0636 115.388 51.0055 115.461 51.0055C116.013 51.0055 116.449 50.8747 116.769 50.613C117.089 50.3514 117.35 49.959 117.554 49.4648L122.19 35.5987C121.958 35.3952 121.667 35.2353 121.347 35.1481C120.984 35.0464 120.563 35.0028 120.068 35.0028C119.996 35.0028 119.938 34.9447 119.938 34.872V34.7266C119.938 34.654 119.996 34.5958 120.068 34.5958H124.85C124.908 34.5958 124.952 34.6249 124.967 34.683L129.981 49.1886C130.228 49.8863 130.519 50.366 130.868 50.6276C131.216 50.8892 131.682 51.02 132.263 51.02C132.336 51.02 132.394 51.0781 132.394 51.1508V51.2962C132.394 51.3688 132.336 51.427 132.263 51.427H125.955V51.4124ZM119.69 44.4939C119.69 44.6684 119.763 44.8282 119.894 44.93C120.039 45.0463 120.228 45.1044 120.461 45.1044H124.763C125.068 45.1044 125.286 45.0172 125.432 44.8282C125.548 44.6684 125.577 44.4503 125.519 44.1742L123.484 37.8807C123.179 37.0522 122.859 36.4127 122.525 35.9912L119.69 44.4939Z" fill="white"/>
<path d="M115.461 51.1363C116.042 51.1363 116.507 50.991 116.842 50.7148C117.176 50.4241 117.452 50.0317 117.656 49.5085L122.321 35.5552C122.06 35.3081 121.74 35.1191 121.362 35.0174C120.984 34.9156 120.548 34.8575 120.054 34.8575V34.7122H124.836L129.85 49.2178C130.097 49.9445 130.417 50.4387 130.78 50.7148C131.144 50.991 131.638 51.1218 132.263 51.1218V51.2672H125.969V51.1218C126.58 51.1218 127.016 50.9474 127.263 50.5986C127.51 50.2497 127.525 49.7846 127.321 49.1742L126.449 46.4998C126.289 46.1073 126.057 45.8166 125.751 45.6277C125.446 45.4387 125.126 45.337 124.792 45.337H120.49C120.228 45.337 119.952 45.4097 119.676 45.5405C119.4 45.6713 119.182 45.8748 119.007 46.151L117.772 49.8718C117.714 50.7148 118.208 51.1218 119.269 51.1218V51.2672H115.49V51.1363H115.461ZM119.574 44.4504C119.574 44.6975 119.661 44.901 119.821 45.0318C119.981 45.1626 120.199 45.2353 120.475 45.2353H124.778C125.126 45.2353 125.388 45.119 125.548 44.901C125.708 44.6829 125.737 44.3632 125.606 43.9562L125.722 44.3632L123.615 37.8371C123.252 36.8633 122.874 36.1511 122.481 35.7296L119.574 44.4504Z" fill="white"/>
<path d="M144.268 51.4124C144.196 51.4124 144.138 51.3543 144.138 51.2816V51.1363C144.138 51.0636 144.196 51.0055 144.268 51.0055C144.835 51.0055 145.228 50.8456 145.446 50.5404C145.664 50.2351 145.678 49.7991 145.489 49.2322L141.798 37.8516C141.492 37.0231 141.158 36.3836 140.838 35.9621L136.187 49.9154C136.173 50.2206 136.231 50.4677 136.405 50.6566C136.623 50.8892 137.001 51.0055 137.553 51.0055C137.626 51.0055 137.684 51.0636 137.684 51.1363V51.2816C137.684 51.3543 137.626 51.4124 137.553 51.4124H133.774C133.702 51.4124 133.644 51.3543 133.644 51.2816V51.1363C133.644 51.0636 133.702 51.0055 133.774 51.0055C134.327 51.0055 134.763 50.8747 135.082 50.613C135.402 50.3514 135.664 49.959 135.867 49.4648L140.504 35.5987C140.271 35.3952 139.981 35.2353 139.661 35.1481C139.298 35.0464 138.876 35.0028 138.382 35.0028C138.309 35.0028 138.251 34.9447 138.251 34.872V34.7266C138.251 34.654 138.309 34.5958 138.382 34.5958H143.164C143.222 34.5958 143.266 34.6249 143.28 34.683L148.295 49.1886C148.542 49.8863 148.832 50.366 149.181 50.6276C149.53 50.8892 149.995 51.02 150.576 51.02C150.649 51.02 150.707 51.0781 150.707 51.1508V51.2962C150.707 51.3688 150.649 51.427 150.576 51.427H144.268V51.4124Z" fill="white"/>
<path d="M135.969 49.5085L140.635 35.5552C140.373 35.3081 140.054 35.1191 139.676 35.0174C139.298 34.9156 138.862 34.8575 138.368 34.8575V34.7122H143.15L148.164 49.2178C148.411 49.9445 148.731 50.4387 149.094 50.7148C149.458 50.991 149.952 51.1218 150.577 51.1218V51.2672H144.283V51.1218C144.894 51.1218 145.33 50.9474 145.577 50.5986C145.824 50.2497 145.838 49.7846 145.635 49.1742L141.943 37.7935C141.58 36.8197 141.202 36.1075 140.809 35.686L136.086 49.8573C136.028 50.7003 136.522 51.1073 137.583 51.1073V51.2526H133.804V51.1073C134.385 51.1073 134.85 50.9619 135.185 50.6858C135.49 50.4387 135.766 50.0317 135.969 49.5085Z" fill="white"/>
<path d="M70.2581 17.9681C70.2581 17.9681 62.5547 25.7587 62.5547 35.3661C62.5547 44.9736 70.2581 52.7642 70.2581 52.7642C70.2581 52.7642 77.9614 44.9736 77.9614 35.3661C77.9614 25.7587 70.2581 17.9681 70.2581 17.9681ZM64.8366 35.3661C64.8366 27.8227 70.2871 21.689 70.2871 21.689C70.2871 21.689 75.7376 27.8081 75.7376 35.3661C75.7376 42.9096 70.2871 49.0433 70.2871 49.0433C70.2871 49.0433 64.8366 42.9096 64.8366 35.3661Z" fill="white"/>
<path d="M66.2171 14.5961C66.2171 14.5379 66.2026 14.4943 66.2026 14.4507C66.2026 12.2124 68.0194 10.3956 70.2577 10.3956C72.4961 10.3956 74.3129 12.2124 74.3129 14.4507C74.3129 14.5089 74.3129 14.5525 74.2984 14.5961H76.7402C76.7402 14.5379 76.7547 14.4943 76.7547 14.4507C76.7547 10.8607 73.8478 7.95374 70.2577 7.95374C66.6677 7.95374 63.7607 10.8607 63.7607 14.4507C63.7607 14.5089 63.7607 14.5525 63.7753 14.5961H66.2171Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

4
public/no.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.0048 11.7727C9.51663 11.2845 9.51664 10.4931 10.0048 10.0049C10.4929 9.51678 11.2844 9.51678 11.7726 10.0049L15.0071 13.2395L18.2383 10.0082C18.7266 9.52007 19.518 9.52007 20.0061 10.0082C20.4943 10.4964 20.4943 11.2878 20.0061 11.776L16.7748 15.0073L20.0048 18.2371C20.493 18.7254 20.493 19.5168 20.0048 20.0049C19.5166 20.4931 18.7252 20.4931 18.237 20.0049L15.0071 16.775L11.7762 20.006C11.288 20.4941 10.4966 20.4941 10.0084 20.006C9.52026 19.5178 9.52026 18.7264 10.0084 18.2381L13.2393 15.0073L10.0048 11.7727Z" fill="#0F0F0F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M28.75 15C28.75 22.5939 22.5939 28.75 15 28.75C7.40609 28.75 1.25 22.5939 1.25 15C1.25 7.40609 7.40609 1.25 15 1.25C22.5939 1.25 28.75 7.40609 28.75 15ZM3.75854 15C3.75854 21.2085 8.79151 26.2415 15 26.2415C21.2085 26.2415 26.2415 21.2085 26.2415 15C26.2415 8.79151 21.2085 3.75854 15 3.75854C8.79151 3.75854 3.75854 8.79151 3.75854 15Z" fill="#0F0F0F"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

4
public/ok.svg Normal file
View File

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.75 16.25L12.5 20L21.25 11.25" stroke="black" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15 27.5C21.9036 27.5 27.5 21.9036 27.5 15C27.5 8.09644 21.9036 2.5 15 2.5C8.09644 2.5 2.5 8.09644 2.5 15C2.5 21.9036 8.09644 27.5 15 27.5Z" stroke="black" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 461 B

BIN
public/old men.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

23
public/operator.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.2 KiB

3
public/phone.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.75208 14.3746C-0.433922 8.18759 -0.137922 3.50859 2.69208 1.38659L3.31908 0.919589C3.47905 0.801886 3.66104 0.717515 3.85424 0.671484C4.04745 0.625452 4.24793 0.618698 4.44379 0.651622C4.63965 0.684545 4.82691 0.756476 4.99444 0.863145C5.16198 0.969815 5.30638 1.10905 5.41908 1.27259L6.99808 3.54459C7.20937 3.84866 7.30073 4.22013 7.25457 4.58752C7.20842 4.9549 7.02802 5.29223 6.74808 5.53459L5.22808 6.84859C4.84808 7.17759 4.66208 7.67659 4.83308 8.14959C5.14908 9.02959 5.91608 10.5826 7.73008 12.3956C9.54408 14.2096 11.0961 14.9766 11.9761 15.2936C12.4501 15.4636 12.9491 15.2786 13.2781 14.8976L14.5921 13.3796C14.8344 13.0997 15.1718 12.9192 15.5392 12.8731C15.9065 12.8269 16.278 12.9183 16.5821 13.1296L18.8581 14.7096C19.0215 14.8219 19.1606 14.966 19.2672 15.1331C19.3739 15.3003 19.4458 15.4871 19.4789 15.6826C19.5119 15.8781 19.5053 16.0783 19.4594 16.2712C19.4136 16.4641 19.3295 16.6458 19.2121 16.8056L18.7421 17.4386C16.6211 20.2666 11.9401 20.5616 5.75208 14.3746Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

3
public/search.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.8672 17.8346L22.375 22.375M20.2917 11.9583C20.2917 16.5607 16.5607 20.2917 11.9583 20.2917C7.35596 20.2917 3.625 16.5607 3.625 11.9583C3.625 7.35596 7.35596 3.625 11.9583 3.625C16.5607 3.625 20.2917 7.35596 20.2917 11.9583Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 422 B

3
public/services.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 5.02832H5V0.0283203H0V5.02832ZM7.5 20.0283H12.5V15.0283H7.5V20.0283ZM0 20.0283H5V15.0283H0V20.0283ZM0 12.5283H5V7.52832H0V12.5283ZM7.5 12.5283H12.5V7.52832H7.5V12.5283ZM15 0.0283203V5.02832H20V0.0283203H15ZM7.5 5.02832H12.5V0.0283203H7.5V5.02832ZM15 12.5283H20V7.52832H15V12.5283ZM15 20.0283H20V15.0283H15V20.0283Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 446 B

38
public/telephone.svg Normal file
View File

@ -0,0 +1,38 @@
<svg width="150" height="150" viewBox="0 0 150 150" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M88.6879 57.1313H86.3438V59.4754H88.6879V57.1313Z" fill="#2F524E"/>
<path d="M88.6879 69.6562H86.3438V72.0004H88.6879V69.6562Z" fill="#2F524E"/>
<path d="M76.1625 69.6562H73.8184V72.0004H76.1625V69.6562Z" fill="#2F524E"/>
<path d="M76.1625 57.1313H73.8184V59.4754H76.1625V57.1313Z" fill="#2F524E"/>
<path d="M63.6381 57.1313H61.2939V59.4754H63.6381V57.1313Z" fill="#2F524E"/>
<path d="M63.6381 69.6562H61.2939V72.0004H63.6381V69.6562Z" fill="#2F524E"/>
<path d="M63.6381 82.1812H61.2939V84.5254H63.6381V82.1812Z" fill="#2F524E"/>
<path d="M92.6244 67.6875V73.95C92.6244 75.0375 91.7432 75.9 90.6744 75.9H84.4119C83.3244 75.9 82.4619 75.0187 82.4619 73.95V67.6875C82.4619 66.6 83.3432 65.7375 84.4119 65.7375H90.6744C91.7432 65.7375 92.6244 66.6187 92.6244 67.6875ZM88.7057 72V69.6562H86.3619V72H88.7057Z" fill="black"/>
<path d="M92.6244 55.1625V61.425C92.6244 62.5125 91.7432 63.375 90.6744 63.375H84.4119C83.3244 63.375 82.4619 62.4938 82.4619 61.425V55.1625C82.4619 54.075 83.3432 53.2125 84.4119 53.2125H90.6744C91.7432 53.2125 92.6244 54.0938 92.6244 55.1625ZM88.7057 59.475V57.1313H86.3619V59.475H88.7057Z" fill="black"/>
<path d="M80.0814 67.6875V73.95C80.0814 75.0375 79.2002 75.9 78.1314 75.9H71.8689C70.7814 75.9 69.9189 75.0187 69.9189 73.95V67.6875C69.9189 66.6 70.8002 65.7375 71.8689 65.7375H78.1314C79.2189 65.7375 80.0814 66.6187 80.0814 67.6875ZM76.1814 72V69.6562H73.8377V72H76.1814Z" fill="black"/>
<path d="M80.0814 55.1625V61.425C80.0814 62.5125 79.2002 63.375 78.1314 63.375H71.8689C70.7814 63.375 69.9189 62.4938 69.9189 61.425V55.1625C69.9189 54.075 70.8002 53.2125 71.8689 53.2125H78.1314C79.2189 53.2125 80.0814 54.0938 80.0814 55.1625ZM76.1814 59.475V57.1313H73.8377V59.475H76.1814Z" fill="black"/>
<path d="M67.5561 80.2125V86.475C67.5561 87.5625 66.6748 88.425 65.6061 88.425H59.3436C58.2561 88.425 57.3936 87.5437 57.3936 86.475V80.2125C57.3936 79.125 58.2748 78.2625 59.3436 78.2625H65.6061C66.6936 78.2625 67.5561 79.1437 67.5561 80.2125ZM63.6561 84.525V82.1812H61.3123V84.525H63.6561Z" fill="black"/>
<path d="M67.5561 67.6875V73.95C67.5561 75.0375 66.6748 75.9 65.6061 75.9H59.3436C58.2561 75.9 57.3936 75.0187 57.3936 73.95V67.6875C57.3936 66.6 58.2748 65.7375 59.3436 65.7375H65.6061C66.6936 65.7375 67.5561 66.6187 67.5561 67.6875ZM63.6561 72V69.6562H61.3123V72H63.6561Z" fill="black"/>
<path d="M67.5561 55.1625V61.425C67.5561 62.5125 66.6748 63.375 65.6061 63.375H59.3436C58.2561 63.375 57.3936 62.4938 57.3936 61.425V55.1625C57.3936 54.075 58.2748 53.2125 59.3436 53.2125H65.6061C66.6936 53.2125 67.5561 54.0938 67.5561 55.1625ZM63.6561 59.475V57.1313H61.3123V59.475H63.6561Z" fill="black"/>
<path d="M76.1635 82.1812H73.8193V84.5254H76.1635V82.1812Z" fill="#2F524E"/>
<path d="M80.0814 80.2125V86.475C80.0814 87.5625 79.2002 88.425 78.1314 88.425H71.8689C70.7814 88.425 69.9189 87.5437 69.9189 86.475V80.2125C69.9189 79.125 70.8002 78.2625 71.8689 78.2625H78.1314C79.2189 78.2625 80.0814 79.1437 80.0814 80.2125ZM76.1814 84.525V82.1812H73.8377V84.525H76.1814Z" fill="black"/>
<path d="M88.6869 82.1812H86.3428V84.5254H88.6869V82.1812Z" fill="#2F524E"/>
<path d="M92.6244 80.2125V86.475C92.6244 87.5625 91.7432 88.425 90.6744 88.425H84.4119C83.3244 88.425 82.4619 87.5437 82.4619 86.475V80.2125C82.4619 79.125 83.3432 78.2625 84.4119 78.2625H90.6744C91.7432 78.2625 92.6244 79.1437 92.6244 80.2125ZM88.7057 84.525V82.1812H86.3619V84.525H88.7057Z" fill="black"/>
<path d="M63.6381 94.7062H61.2939V97.0504H63.6381V94.7062Z" fill="#2F524E"/>
<path d="M67.5561 92.7375V99C67.5561 100.088 66.6748 100.95 65.6061 100.95H59.3436C58.2561 100.95 57.3936 100.069 57.3936 99V92.7375C57.3936 91.65 58.2748 90.7875 59.3436 90.7875H65.6061C66.6936 90.7875 67.5561 91.6688 67.5561 92.7375ZM63.6561 97.05V94.7063H61.3123V97.05H63.6561Z" fill="black"/>
<path d="M76.1635 94.7062H73.8193V97.0504H76.1635V94.7062Z" fill="#2F524E"/>
<path d="M80.0814 92.7375V99C80.0814 100.088 79.2002 100.95 78.1314 100.95H71.8689C70.7814 100.95 69.9189 100.069 69.9189 99V92.7375C69.9189 91.65 70.8002 90.7875 71.8689 90.7875H78.1314C79.2189 90.7875 80.0814 91.6688 80.0814 92.7375ZM76.1814 97.05V94.7063H73.8377V97.05H76.1814Z" fill="black"/>
<path d="M88.6869 94.7062H86.3428V97.0504H88.6869V94.7062Z" fill="#2F524E"/>
<path d="M92.6244 92.7375V99C92.6244 100.088 91.7432 100.95 90.6744 100.95H84.4119C83.3244 100.95 82.4619 100.069 82.4619 99V92.7375C82.4619 91.65 83.3432 90.7875 84.4119 90.7875H90.6744C91.7432 90.7875 92.6244 91.6688 92.6244 92.7375ZM88.7057 97.05V94.7063H86.3619V97.05H88.7057Z" fill="black"/>
<path d="M64.9494 34.1625L66.4869 44.85H58.4619L59.9994 34.1625H64.9494Z" fill="#2F524E"/>
<path d="M90.0002 34.1625L91.5377 44.85H83.5127L85.0502 34.1625H90.0002Z" fill="#2F524E"/>
<path d="M41.175 40.425L40.0687 44.85H18.075L16.9688 40.425H41.175Z" fill="#2F524E"/>
<path d="M133.031 40.425L131.925 44.85H109.931L108.825 40.425H133.031Z" fill="#2F524E"/>
<path d="M137.494 34.2937V38.475C137.494 38.55 137.494 38.625 137.475 38.7C137.475 38.7187 137.475 38.7375 137.475 38.7562C137.475 38.8125 137.456 38.8687 137.437 38.925C137.437 38.9437 137.437 38.9437 137.437 38.9437L135.356 47.2875C135.131 48.15 134.362 48.7688 133.462 48.7688H108.412C107.512 48.7688 106.725 48.1687 106.519 47.2875L104.794 40.425H94.856L95.4935 44.8687H100.05C100.95 44.8687 101.737 45.4875 101.962 46.3687L116.569 106.913C116.569 106.913 116.569 106.931 116.569 106.95C116.569 106.988 116.587 107.025 116.587 107.063C116.587 107.1 116.587 107.119 116.606 107.156C116.606 107.194 116.606 107.213 116.606 107.25C116.606 107.288 116.606 107.325 116.606 107.363V107.381V132.431C116.606 133.519 115.725 134.381 114.656 134.381H35.3248C34.2373 134.381 33.3748 133.5 33.3748 132.431V107.363V107.344C33.3748 107.306 33.3748 107.269 33.3748 107.231C33.3748 107.194 33.3748 107.175 33.3748 107.138C33.3748 107.1 33.3936 107.081 33.3936 107.044C33.3936 107.006 33.4123 106.969 33.4123 106.931C33.4123 106.912 33.4123 106.913 33.4123 106.894L34.3498 102.994C29.1186 102.506 25.0123 98.1 25.0123 92.7375V90.2813C21.4123 89.4 18.7498 86.1563 18.7498 82.2938V48.7688H16.5373C15.6373 48.7688 14.8498 48.15 14.6436 47.2875L12.5623 38.9437V38.925C12.5436 38.8687 12.5436 38.8125 12.5248 38.7562C12.5248 38.7375 12.5248 38.7187 12.5061 38.7C12.5061 38.625 12.4873 38.55 12.4873 38.475V34.2937C12.4873 24 20.8498 15.6375 31.1436 15.6375H91.6873C92.7748 15.6375 98.0998 16.5187 98.0998 17.5875C98.0998 18.675 92.756 19.5375 91.6873 19.5375H31.1623C23.0248 19.5375 16.4248 26.1562 16.4248 34.275V36.4875H55.7248L56.3811 31.9125C56.5123 30.9562 57.3373 30.225 58.3123 30.225H66.656C67.631 30.225 68.4561 30.9375 68.5873 31.9125L69.2435 36.4875H80.7561L81.4123 31.9125C81.5435 30.9562 82.3685 30.225 83.3435 30.225H91.6873C92.6623 30.225 93.4873 30.9375 93.6185 31.9125L94.2748 36.4875H133.575V34.275C133.575 26.1375 126.956 19.5375 118.837 19.5375H91.6873C90.5998 19.5375 98.0998 18.6562 98.0998 17.5875C98.0998 16.5 90.6185 15.6375 91.6873 15.6375H118.837C129.131 15.6375 137.494 24 137.494 34.2937ZM131.925 44.85L133.031 40.4063H108.825L109.931 44.85H131.925ZM112.706 130.463V109.313H45.6748C44.5873 109.313 52.0873 108.431 52.0873 107.363C52.0873 106.275 44.6061 105.413 45.6748 105.413H112.181L98.5123 48.7875H51.4873L37.8186 105.413H45.6748C46.7623 105.413 52.0873 106.294 52.0873 107.363C52.0873 108.45 46.7435 109.313 45.6748 109.313H37.2748V130.444H112.706V130.463ZM91.5373 44.85L89.9998 34.1437H85.0498L83.531 44.85H91.5373ZM79.5748 44.85L80.2123 40.4063H69.806L70.4436 44.85H79.5748ZM66.4873 44.85L64.9685 34.1437H59.9998L58.4623 44.85H66.4873ZM54.5061 44.85L55.1436 40.4063H45.2061L43.4811 47.2688C43.2561 48.1313 42.4873 48.75 41.5873 48.75H22.6686V56.4937C23.9248 55.725 25.3873 55.275 26.9811 55.275C31.5186 55.275 35.1936 58.9688 35.1936 63.4875C35.1936 68.025 31.4998 71.7 26.9811 71.7C25.4061 71.7 23.9248 71.25 22.6686 70.4813V75.2813C23.9248 74.5125 25.3873 74.0625 26.9811 74.0625C31.5186 74.0625 35.1936 77.7563 35.1936 82.275C35.1936 86.1375 32.5311 89.3813 28.9311 90.2625V92.7188C28.9311 96.2438 31.7811 99.0938 35.2873 99.1125L48.0186 46.3313C48.2248 45.45 49.0123 44.8313 49.931 44.8313H54.5061V44.85ZM40.0686 44.85L41.1748 40.4063H16.9686L18.0748 44.85H40.0686ZM31.2936 63.525C31.2936 61.1437 29.3623 59.2125 26.9811 59.2125C24.5998 59.2125 22.6686 61.1437 22.6686 63.525C22.6686 65.9062 24.5998 67.8375 26.9811 67.8375C29.3623 67.8375 31.2936 65.8875 31.2936 63.525ZM31.2936 82.3125C31.2936 79.9313 29.3623 78 26.9811 78C24.5998 78 22.6686 79.9313 22.6686 82.3125C22.6686 84.6938 24.5998 86.625 26.9811 86.625C29.3623 86.625 31.2936 84.675 31.2936 82.3125Z" fill="black"/>
<path d="M98.0816 115.575H51.9004V124.181H98.0816V115.575Z" fill="#2F524E"/>
<path d="M102 113.625V126.15C102 127.237 101.119 128.1 100.05 128.1H49.95C48.8625 128.1 48 127.219 48 126.15V113.625C48 112.537 48.8812 111.675 49.95 111.675H100.05C101.137 111.656 102 112.537 102 113.625ZM98.1 124.181V115.575H51.9V124.181H98.1Z" fill="black"/>
<path d="M58.2939 117.938H56.2127C55.1252 117.938 54.2627 118.819 54.2627 119.888C54.2627 120.975 55.1439 121.837 56.2127 121.837H58.2939C59.3814 121.837 60.2439 120.956 60.2439 119.888C60.2627 118.8 59.3814 117.938 58.2939 117.938Z" fill="black"/>
<path d="M66.6562 117.938H64.575C63.4875 117.938 62.625 118.819 62.625 119.888C62.625 120.975 63.5062 121.837 64.575 121.837H66.6562C67.7438 121.837 68.6062 120.956 68.6062 119.888C68.6062 118.8 67.725 117.938 66.6562 117.938Z" fill="black"/>
<path d="M76.0498 117.938H73.9686C72.8811 117.938 72.0186 118.819 72.0186 119.888C72.0186 120.975 72.8998 121.837 73.9686 121.837H76.0498C77.1373 121.837 77.9998 120.956 77.9998 119.888C77.9998 118.8 77.1186 117.938 76.0498 117.938Z" fill="black"/>
<path d="M85.4434 117.938H83.3621C82.2746 117.938 81.4121 118.819 81.4121 119.888C81.4121 120.975 82.2934 121.837 83.3621 121.837H85.4434C86.5309 121.837 87.3934 120.956 87.3934 119.888C87.3934 118.8 86.5121 117.938 85.4434 117.938Z" fill="black"/>
<path d="M93.7871 117.938H91.7059C90.6184 117.938 89.7559 118.819 89.7559 119.888C89.7559 120.975 90.6371 121.837 91.7059 121.837H93.7871C94.8746 121.837 95.7371 120.956 95.7371 119.888C95.7371 118.8 94.8746 117.938 93.7871 117.938Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

3
public/trash.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.25 12.375L14.4167 16.5417M14.4167 12.375L10.25 16.5417M4 6.125H20.6667M16.5 6.125L16.2181 5.27924C15.9449 4.45964 15.8082 4.04983 15.5549 3.74685C15.3311 3.4793 15.0439 3.27221 14.7193 3.14456C14.3517 3 13.9198 3 13.0558 3H11.6108C10.7469 3 10.315 3 9.94741 3.14456C9.62283 3.27221 9.3355 3.4793 9.11176 3.74685C8.85839 4.04983 8.72179 4.45964 8.44858 5.27924L8.16667 6.125M18.5833 6.125V16.75C18.5833 18.5002 18.5833 19.3752 18.2427 20.0437C17.9431 20.6318 17.4651 21.1098 16.8771 21.4094C16.2085 21.75 15.3335 21.75 13.5833 21.75H11.0833C9.33317 21.75 8.45808 21.75 7.78961 21.4094C7.2016 21.1098 6.72354 20.6318 6.42394 20.0437C6.08333 19.3752 6.08333 18.5002 6.08333 16.75V6.125" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 881 B

56
src/app/GlobalStyles.ts Normal file
View File

@ -0,0 +1,56 @@
import styled, { createGlobalStyle } from 'styled-components'
export const GlobalStyles = createGlobalStyle`
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
min-height: 100vh;
position: relative;
padding-bottom: 260px;
${props => props.theme.mediaQueries.tabletLandscape} {
padding-bottom: 210px;
}
${props => props.theme.mediaQueries.tabletPortrait} {
padding-bottom: 380px;
}
${props => props.theme.mediaQueries.mobile} {
padding-bottom: 690px;
}
}
h1 {
${(props) => props.theme.typography.h1}
}
h2 {
${(props) => props.theme.typography.h2}
}
h3 {
${(props) => props.theme.typography.h3}
}
p {
${(props) => props.theme.typography.paragraph}
}
a {
text-decoration: none;
color: ${(props) => props.theme.colors.black}
}
`
export const Container = styled.div`
width: 90%;
max-width: 1250px;
margin: 0 auto;
`
export const AdminContainer = styled.div`
padding-left: 260px;
`

22
src/app/Providers.tsx Normal file
View File

@ -0,0 +1,22 @@
'use client'
import StyledComponentsRegistry from '@/lib/StyledComponentsRegistry'
import React from 'react'
import { ThemeProvider } from 'styled-components'
import { GlobalStyles } from './GlobalStyles'
import { theme } from './theme'
type Props = {
children: React.ReactNode
}
export default function Providers({ children }: Props) {
return (
<StyledComponentsRegistry>
<ThemeProvider theme={theme}>
<GlobalStyles />
{children}
</ThemeProvider>
</StyledComponentsRegistry>
)
}

147
src/app/aboutUs/page.tsx Normal file
View File

@ -0,0 +1,147 @@
'use client'
import styled from 'styled-components'
import { Container } from '../GlobalStyles'
type Props = {}
const AboutUsSection = styled.div`
padding-bottom: 50px;
h1 {
text-align: center;
margin: 50px 0;
}
.first-block {
display: grid;
gap: 40px;
grid-template-areas: 'a a c' 'b b c';
.item:nth-child(1) {
grid-area: a;
}
.item:nth-child(2) {
grid-area: b;
}
.item:nth-child(3) {
grid-area: c;
}
img {
object-fit: cover;
min-height: 100px;
min-width: 150px;
height: 100%;
width: 100%;
}
}
p {
text-align: justify;
}
h3 {
margin: 25px 0 15px;
&:first-child {
margin-top: 0;
}
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.first-block {
grid-template-areas: 'a a a' 'b b c';
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
.first-block {
grid-template-areas: 'a a a' 'b b b' 'c c c';
}
}
`
export default function page({}: Props) {
return (
<Container>
<AboutUsSection>
<h1>О нас</h1>
<div className='first-block'>
<div className='item'>
<h3>Профессиональная команда с опытом</h3>
<p>
Наша команда состоит из высококвалифицированных специалистов,
каждый из которых обладает обширным опытом в области похоронных
услуг. Мы знаем, как обеспечить достойное прощание и поддержать
семью в трудный момент утраты. Наши сотрудники прошли специальную
подготовку и имеют глубокое понимание потребностей и чувств наших
клиентов. Мы стремимся к профессионализму в каждом аспекте нашей
работы, начиная от первого контакта с семьей и заканчивая
проведением церемонии прощания. Наша команда готова взять на себя
всю организационную нагрузку, чтобы сделать процесс прощания
максимально комфортным для семьи усопшего. Мы ценим доверие,
которое нам оказывают наши клиенты, и стремимся оправдать его
своей компетентностью и заботой.
</p>
</div>
<div className='item'>
<h3>Разнообразные похоронные услуги</h3>
<p>
Наше ценообразование основывается на принципах прозрачности и
справедливости. Мы предлагаем утвержденный прайс на все виды
товаров и услуг, чтобы наши клиенты всегда могли быть уверены в
том, что они получают за свои деньги. Каждая услуга и товар в
нашем прайсе четко описаны, и мы готовы предоставить подробные
консультации по любым вопросам, связанным с ценами и услугами.
Наша цель - обеспечить доступность и прозрачность для всех наших
клиентов, независимо от их бюджета. Мы понимаем, что похороны -
это трудный период, и поэтому стремимся сделать процесс выбора
услуг и оформления заказа максимально простым и понятным. В случае
необходимости мы также готовы обсудить индивидуальные пожелания и
предложить персонализированные решения, соответствующие конкретным
потребностям и возможностям клиента.
</p>
</div>
<img src='/image 6.png' alt='' className='item' />
</div>
<div className='bottom'>
<h3>Принципы прозрачности и заботы о клиентах</h3>
<p>
Наша команда специалистов готова оказывать круглосуточную помощь и
поддержку в любой ситуации. Мы понимаем, что потеря близкого
человека может быть очень тяжелым испытанием, и поэтому мы всегда
доступны для наших клиентов в любое время суток. Наши специалисты
обладают высоким уровнем эмпатии и профессионализма, что позволяет
нам оказывать эффективную поддержку и помощь в самые трудные
моменты. Мы готовы ответить на любые вопросы, предоставить
необходимую информацию и сопровождать наших клиентов на каждом этапе
процесса организации похорон или кремации. Наша цель - сделать все
возможное, чтобы облегчить бремя горя и помочь семье усопшего пройти
через этот трудный период. Независимо от того, нужен ли совет,
поддержка в организации церемонии прощания или просто понимание и
сочувствие, мы всегда здесь, чтобы помочь.
</p>
<h3>Круглосуточная поддержка и помощь</h3>
<p>
Мы гарантируем прозрачные и честные условия сотрудничества, работая
по договору без скрытых комиссий. Наша цель - установить
доверительные отношения с каждым клиентом и обеспечить полное
понимание всех условий сотрудничества. Все расценки и условия
предоставления услуг четко прописаны в договоре, что исключает
появление непредвиденных расходов или дополнительных платежей. Мы
стараемся сделать процесс организации похорон или кремации
максимально простым и прозрачным для наших клиентов, чтобы они могли
сосредоточиться на своих чувствах и эмоциях, не беспокоясь о
формальностях и финансовых вопросах. Наша команда готова
предоставить всю необходимую информацию и консультационную
поддержку, чтобы каждый клиент мог принять обоснованные решения и
быть уверенным в своем выборе.
</p>
</div>
</AboutUsSection>
</Container>
)
}

View File

@ -0,0 +1,107 @@
'use client'
import { AdminContainer } from '@/app/GlobalStyles'
import styled from 'styled-components'
type Props = {}
const AppSection = styled.div`
padding: 35px;
display: flex;
flex-direction: column;
gap: 30px;
.block {
display: flex;
flex-direction: column;
gap: 20px;
}
.title {
display: flex;
justify-content: space-between;
align-items: center;
button {
padding: 10px 25px;
background: ${(props) => props.theme.colors.green};
color: ${(props) => props.theme.colors.white};
border-radius: 12px;
font-size: 18px;
border: none;
font-weight: 500;
cursor: pointer;
}
}
.list {
display: flex;
flex-direction: column;
gap: 15px;
width: 100%;
.item {
padding: 15px;
display: flex;
justify-content: space-between;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
border-radius: 12px;
.data {
display: flex;
align-items: center;
gap: 25px;
}
input[type='checkbox'] {
cursor: pointer;
width: 20px;
height: 20px;
accent-color: ${(props) => props.theme.colors.black};
}
}
}
`
export default function page({}: Props) {
return (
<AdminContainer>
<AppSection>
<div className='block'>
<h1>Заявки</h1>
<div className='list'>
{[...Array(4)].map((_, index) => (
<div className='item' key={index}>
<div className='data'>
<input type='checkbox' />
<p>Имя клиента: Виктор</p>
<p>Номер клиента: +7 (000) 00-00-00</p>
</div>
<p>14:37 20 февраля 2024</p>
</div>
))}
</div>
</div>
<div className='block'>
<div className='title'>
<h1>Отмеченные заявки</h1>
<button>Отчистить</button>
</div>
<div className='list'>
{[...Array(4)].map((_, index) => (
<div className='item' key={index}>
<div className='data'>
<input type='checkbox' checked />
<p>Имя клиента: Виктор</p>
<p>Номер клиента: +7 (000) 00-00-00</p>
</div>
<p>14:37 20 февраля 2024</p>
</div>
))}
</div>
</div>
</AppSection>
</AdminContainer>
)
}

View File

@ -0,0 +1,67 @@
'use client'
import MainButton from '@/components/UI/button/MainButton'
import FormInput from '@/components/UI/input/FormInput'
import { ChangeEvent, useState } from 'react'
import styled from 'styled-components'
type Props = {}
const Container = styled.div`
width: 100%;
height: 100vh;
background-image: url('/image 12.png');
background-position: center;
background-size: cover;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
left: 0;
.form {
width: 440px;
padding: 20px;
text-align: center;
display: flex;
justify-content: center;
flex-direction: column;
gap: 20px;
backdrop-filter: blur(4px);
background: rgba(129, 129, 129, 0.4);
color: ${(props) => props.theme.colors.white};
border-radius: 12px;
}
`
export default function page({}: Props) {
const [admin, setAdmin] = useState({
login: '',
password: ''
})
return (
<Container>
<div className='form'>
<h2>Админ панель</h2>
<FormInput
value={admin.login}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setAdmin({ ...admin, login: e.target.value })
}
placeholder='Логин'
/>
<FormInput
value={admin.password}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setAdmin({ ...admin, password: e.target.value })
}
placeholder='Пароль'
/>
<MainButton>Войти</MainButton>
</div>
</Container>
)
}

16
src/app/admin/page.tsx Normal file
View File

@ -0,0 +1,16 @@
'use client'
import { useRouter } from 'next/navigation'
import { useEffect } from 'react'
type Props = {}
export default function page({}: Props) {
const router = useRouter()
useEffect(() => {
router.push('/admin/applications')
}, [])
return <></>
}

View File

@ -0,0 +1,109 @@
'use client'
import { AdminContainer } from '@/app/GlobalStyles'
import MainButton from '@/components/UI/button/MainButton'
import FormInput from '@/components/UI/input/FormInput'
import Modal from '@/components/UI/modal/Modal'
import { ChangeEvent, useState } from 'react'
import styled from 'styled-components'
type Props = {}
const Container = styled.div`
padding: 35px;
.search-block {
display: flex;
gap: 20px;
margin: 20px 0;
.input-block {
display: flex;
align-items: center;
width: 100%;
img {
margin-left: -40px;
}
}
}
.list {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
justify-items: center;
gap: 20px;
.cart {
display: flex;
flex-direction: column;
align-items: start;
width: 280px;
gap: 10px;
position: relative;
.delete-button {
position: absolute;
top: 10px;
right: 10px;
background: ${(props) => props.theme.colors.white};
width: 30px;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50px;
cursor: pointer;
}
}
}
`
export default function page({}: Props) {
const [searchQuery, setSearchQuery] = useState('')
const [deleteModal, setDeleteModal] = useState(false)
const [newServiceModal, setNewServiceModal] = useState(false)
return (
<>
<AdminContainer>
<Container>
<h1>Услуги</h1>
<div className='search-block'>
<div className='input-block'>
<FormInput
value={searchQuery}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setSearchQuery(e.target.value)
}
placeholder='Введите название услуги'
/>
<img src='/search.svg' alt='' />
</div>
<MainButton fullWidth={true}>Добавить</MainButton>
</div>
<div className='list'>
{[...Array(5)].map((_, index) => (
<div className='cart' key={index}>
<img src='/image 3.png' alt='' />
<h3>Организация похорон</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<h2>От 25 000 руб.</h2>
<MainButton>Редактировать</MainButton>
<div className='delete-button'>
<img src='/trash.svg' alt='' />
</div>
</div>
))}
</div>
</Container>
</AdminContainer>
{/* <Modal modal={deleteModal} setModal={setDeleteModal}></Modal>
<Modal modal={newServiceModal} setModal={setNewServiceModal}></Modal> */}
</>
)
}

View File

@ -0,0 +1,149 @@
'use client'
import { AdminContainer } from '@/app/GlobalStyles'
import MainButton from '@/components/UI/button/MainButton'
import Link from 'next/link'
import styled from 'styled-components'
type Props = {
params: { id: number }
}
const Container = styled.div`
padding: 35px;
.back {
padding: 5px;
display: flex;
align-items: center;
gap: 10px;
justify-content: center;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
padding: 10px;
border-radius: 12px;
width: 190px;
margin-bottom: 20px;
font-weight: 600;
font-size: 18px;
cursor: pointer;
img {
width: 20px;
}
}
.title {
display: flex;
justify-content: space-between;
}
h2 {
margin: 20px 0;
}
.list {
display: flex;
flex-direction: column;
gap: 20px;
.item {
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
padding: 10px;
border-radius: 12px;
text-align: justify;
img {
width: 25px;
cursor: pointer;
transition: 300ms;
&:hover {
transform: scale(1.1);
}
}
.item-title {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
.title-block {
display: flex;
gap: 10px;
p:first-child {
font-weight: 600;
}
}
}
}
}
`
export default function page({ params }: Props) {
return (
<AdminContainer>
<Container>
<Link href='/admin/virtualCemetery'>
<div className='back'>
<img src='/left-arrow.svg' alt='' />
Назад к списку
</div>
</Link>
<div className='title'>
<h1>Иванов Иван Иванович</h1>
<MainButton fullWidth={true}>Редактировать</MainButton>
</div>
<h2>Новые слова памяти</h2>
<div className='list'>
{[...Array(3)].map((_, index) => (
<div className='item'>
<div className='item-title'>
<div className='title-block'>
<p>Имя Фамилия Отчество</p>
<p>27 декабря 2023</p>
</div>
<div className='title-block'>
<img src='/ok.svg' alt='' />
<img src='/no.svg' alt='' />
</div>
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
))}
</div>
<h2>Одобренные слова памяти</h2>
<div className='list'>
{[...Array(3)].map((_, index) => (
<div className='item'>
<div className='item-title'>
<div className='title-block'>
<p>Имя Фамилия Отчество</p>
<p>27 декабря 2023</p>
</div>
<img src='/no.svg' alt='' />
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>
))}
</div>
</Container>
</AdminContainer>
)
}

View File

@ -0,0 +1,119 @@
'use client'
import { AdminContainer } from '@/app/GlobalStyles'
import MainButton from '@/components/UI/button/MainButton'
import FormInput from '@/components/UI/input/FormInput'
import Link from 'next/link'
import { ChangeEvent, useState } from 'react'
import styled from 'styled-components'
type Props = {}
const Container = styled.div`
padding: 35px;
h1 {
margin-bottom: 20px;
}
.search-block {
display: flex;
width: 100%;
gap: 20px;
.input-block {
position: relative;
width: 100%;
img {
position: absolute;
right: 15px;
top: 50%;
transform: translateY(-50%);
}
}
}
.list {
margin-top: 20px;
display: flex;
flex-direction: column;
gap: 20px;
}
.item {
width: 100%;
display: flex;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
border-radius: 12px;
overflow: hidden;
height: 100%;
img {
width: 120px;
height: 120px;
object-fit: cover;
}
.content {
width: 100%;
display: flex;
justify-content: space-between;
align-items: end;
padding: 10px;
.data {
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
}
}
}
`
export default function page({}: Props) {
const [searchQuery, setSearchQuery] = useState('')
const handleClick = (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {
event.preventDefault(); // Отменяем стандартное поведение ссылки
};
return (
<AdminContainer>
<Container>
<h1>Вечная память</h1>
<div className='search-block'>
<div className='input-block'>
<FormInput
value={searchQuery}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setSearchQuery(e.target.value)
}
placeholder='Введите название услуги'
/>
<img src='/search.svg' alt='' />
</div>
<MainButton fullWidth={true}>Добавить</MainButton>
</div>
<div className='list'>
{[...Array(4)].map((_, index) => (
<Link href='/admin/virtualCemetery/1'>
<div className='item'>
<img src='/old men.png' alt='' />
<div className='content'>
<div className='data'>
<h2>Иванов Иван Иванович</h2>
<p>12.12.1912-12.12.2012</p>
<p>Кладбище: Градское, Квартал: 7, Участок: 32453</p>
</div>
<MainButton fullWidth={true} onClick={(e) => handleClick(e)}>Редактировать</MainButton>
</div>
</div>
</Link>
))}
</div>
</Container>
</AdminContainer>
)
}

View File

@ -0,0 +1,239 @@
'use client'
import { Container } from '@/app/GlobalStyles'
import MainButton from '@/components/UI/button/MainButton'
import FormInput from '@/components/UI/input/FormInput'
import MainTextarea from '@/components/UI/textarea/MainTextarea'
import { Map, Placemark, YMaps } from '@pbe/react-yandex-maps'
import { ChangeEvent, useState } from 'react'
import styled from 'styled-components'
type Props = {
params: { id: string }
}
const Section = styled.div`
margin-top: 50px;
h1 {
margin: 50px 0;
text-align: center;
}
.user-section {
display: flex;
gap: 30px;
img {
border-radius: 12px;
width: 470px;
height: 337px;
}
h1 {
margin: 0 0 30px;
}
.information {
display: flex;
flex-direction: column;
gap: 10px;
}
}
.description-section {
h3 {
text-align: justify;
}
}
.review-section {
.title {
display: flex;
gap: 30px;
margin-bottom: 20px;
}
.name {
font-weight: 600;
}
p {
text-align: justify;
}
.list {
display: flex;
flex-direction: column;
gap: 35px;
}
.form {
display: flex;
flex-direction: column;
align-items: end;
gap: 20px;
}
span {
color: ${(props) => props.theme.colors.green};
font-size: 18px;
font-weight: 600;
cursor: pointer;
margin-top: 5px;
}
}
`
const MapSection = styled.div`
position: relative;
margin-bottom: 50px;
h1 {
text-align: center;
margin: 50px 0;
}
.content {
padding: 15px;
display: flex;
flex-direction: column;
gap: 10px;
background: ${(props) => props.theme.colors.white};
border-radius: 12px;
position: absolute;
top: 50%;
left: 10%;
transform: translateY(-20%);
z-index: 1;
}
.map {
width: 100%;
height: 450px;
}
`
export default function page({ params }: Props) {
const [newReview, setNewReview] = useState({
name: '',
message: ''
})
return (
<>
<Container>
<Section>
<div className='user-section'>
<img src='/old men.png' alt='' />
<div className='data'>
<h1>Иванов Иван Иванович</h1>
<div className='information'>
<p>12.12.1912-12.12.2012</p>
<p>Кладбище: Градское</p>
<p>Квартал: 7</p>
<p>Участок: 32453</p>
</div>
</div>
</div>
<div className='description-section'>
<h1>Описание жизни</h1>
<h3>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est
laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Lorem ipsum dolor sit amet, consectetur adipiscing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur.
</h3>
</div>
<div className='review-section'>
<h1>Слова памяти</h1>
<div className='form'>
<FormInput
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setNewReview({ ...newReview, name: e.target.value })
}
value={newReview.name}
placeholder='Ваши Имя и Фамилия'
/>
<MainTextarea
onChange={(e: ChangeEvent<HTMLTextAreaElement>) =>
setNewReview({ ...newReview, message: e.target.value })
}
value={newReview.message}
placeholder='Оставте пару слов об Иване'
/>
<MainButton fullWidth={true}>Оставить</MainButton>
</div>
<div className='list'>
{[...Array(3)].map((_, index) => (
<div className='comment'>
<div className='title'>
<p className='name'>Имя Пользователя</p>
<p>27 декабря 2023</p>
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.
</p>
<span>Показать полностью...</span>
</div>
))}
</div>
</div>
</Section>
</Container>
<MapSection>
<h1>Расположение участка захоронения</h1>
<YMaps>
<div className='content'>
<h3>Расположение участка</h3>
<p>Кладбище: Градское</p>
<p>Квартал: 7</p>
<p>Участок: 32453</p>
</div>
<Map
className='map'
defaultState={{
center: [55.751574, 37.573856],
zoom: 10
}}
options={{
yandexMapDisablePoiInteractivity: true,
copyrightLogoVisible: true,
copyrightProvidersVisible: true,
copyrightUaVisible: true
}}
>
<Placemark geometry={[55.684758, 37.738521]} />
</Map>
</YMaps>
</MapSection>
</>
)
}

View File

@ -0,0 +1,177 @@
'use client'
import { Container } from '@/app/GlobalStyles'
import MainButton from '@/components/UI/button/MainButton'
import Link from 'next/link'
import Slider from 'react-slick'
import styled from 'styled-components'
type Props = {}
const Section = styled.div`
.title {
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
margin: 50px 0;
}
.slider {
display: none;
}
.list {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
justify-items: center;
gap: 20px 0;
}
.item {
display: flex;
justify-content: space-between;
flex-direction: column;
gap: 15px;
.data {
display: flex;
flex-direction: column;
gap: 5px;
}
img {
cursor: pointer;
height: 273px;
width: 381px;
object-fit: cover;
border-radius: 12px;
}
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.item {
img {
height: 200px;
width: 300px;
}
}
}
@media only screen and (max-width: 1000px) {
.list {
grid-template-columns: 1fr 1fr;
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
.list {
grid-template-columns: 1fr;
}
.user-logo {
display: none;
}
.slider {
display: block;
max-width: 470px;
max-height: 340px;
border-radius: 12px;
overflow: hidden;
img {
border-radius: 0;
height: 100%;
width: 100%;
max-width: 470px;
max-height: 340px;
object-fit: cover;
}
}
}
${(props) => props.theme.mediaQueries.mobile} {
}
`
interface man {
images: string[]
}
const some_cool_mans = [
{ images: ['/old men.png', '/image 7.png'] },
{ images: ['/old men.png', '/image 7.png'] },
{ images: ['/old men.png', '/image 7.png'] },
{ images: ['/old men.png', '/image 7.png'] }
] as man[]
export default function Page({}: Props) {
const setting = {
infinite: true,
slidesToShow: 1,
slidesToScroll: 1,
speed: 500,
arrows: false,
dots: false
}
const onEnterMouse =
(some_man: man) =>
(event: React.MouseEvent<HTMLImageElement>): void => {
if (event.target instanceof HTMLImageElement) {
event.target.src = some_man.images[1]
}
}
const onLeaveMouse =
(some_man: man) =>
(event: React.MouseEvent<HTMLImageElement>): void => {
if (event.target instanceof HTMLImageElement) {
event.target.src = some_man.images[0]
}
}
return (
<Container>
<Section>
<div className='title'>
<h2>Иванов Иван Иванович 12.12.1912-12.12.2012, Градское кладбище</h2>
<MainButton fullWidth={true}>Изменить</MainButton>
</div>
<div className='list'>
{some_cool_mans.map((item, index) => (
<div className='item' key={index}>
<Link href='/everlastingMemory/deceased/1'>
<img
src={item.images[0]}
alt=''
onMouseEnter={onEnterMouse(item)}
onMouseLeave={onLeaveMouse(item)}
className='user-logo'
/>
<div className='slider'>
<Slider {...setting}>
<div>
<img src={item.images[0]} />
</div>
<div>
<img src={item.images[1]} />
</div>
</Slider>
</div>
</Link>
<h3>Иванов Иван Иванович</h3>
<div className='data'>
<p>12.12.1912-12.12.2012</p>
<p>Кладбище: Градское</p>
<p>Квартал: 7</p>
<p>Участок: 32453</p>
</div>
</div>
))}
</div>
</Section>
</Container>
)
}

View File

@ -0,0 +1,121 @@
'use client'
import MainButton from '@/components/UI/button/MainButton'
import FormInput from '@/components/UI/input/FormInput'
import Link from 'next/link'
import { ChangeEvent, useState } from 'react'
import styled from 'styled-components'
type Props = {}
const FormSection = styled.div`
height: 90vh;
width: 100%;
background-image: url('/image 11.png');
background-position: center;
background-size: cover;
display: flex;
align-items: center;
justify-content: center;
`
const Form = styled.div`
backdrop-filter: blur(4px);
background: rgba(129, 129, 129, 0.4);
border-radius: 12px;
padding: 20px;
display: flex;
flex-direction: column;
gap: 30px;
margin: 20px;
.form {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 30px;
}
h2 {
text-align: center;
color: ${(props) => props.theme.colors.white};
}
${(props) => props.theme.mediaQueries.mobile} {
width: 100%;
.form {
width: 100%;
grid-template-columns: 1fr;
gap: 20px;
}
}
`
export default function page({}: Props) {
const [deceased, setDeceased] = useState({
firstName: '',
lastName: '',
patronymic: '',
dateBirth: '',
dateDeath: '',
cemetery: ''
})
return (
<FormSection>
<Form>
<h2>Поиск усопшего</h2>
<div className='form'>
<FormInput
value={deceased.firstName}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setDeceased({ ...deceased, firstName: e.target.value })
}
placeholder='Имя'
/>
<FormInput
value={deceased.dateBirth}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setDeceased({ ...deceased, dateBirth: e.target.value })
}
placeholder='Дата рождения'
/>
<FormInput
value={deceased.lastName}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setDeceased({ ...deceased, lastName: e.target.value })
}
placeholder='Фамилия'
/>
<FormInput
value={deceased.dateDeath}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setDeceased({ ...deceased, dateDeath: e.target.value })
}
placeholder='Дата смерти'
/>
<FormInput
value={deceased.patronymic}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setDeceased({ ...deceased, patronymic: e.target.value })
}
placeholder='Отчество'
/>
<FormInput
value={deceased.cemetery}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setDeceased({ ...deceased, cemetery: e.target.value })
}
placeholder='Кладбище'
/>
</div>
<Link href='/everlastingMemory/deceased'>
<MainButton>Искать</MainButton>
</Link>
</Form>
</FormSection>
)
}

32
src/app/layout.tsx Normal file
View File

@ -0,0 +1,32 @@
import AdminSideBar from '@/components/layout/AdminSideBar'
import Header from '@/components/layout/Header/Header'
import Footer from '@/components/layout/footer/Footer'
import type { Metadata } from 'next'
import { Roboto_Flex } from 'next/font/google'
import Providers from './Providers'
const robotoFlex = Roboto_Flex({ subsets: ['latin', 'cyrillic'] })
export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app'
}
export default function RootLayout({
children
}: Readonly<{
children: React.ReactNode
}>) {
return (
<html lang='ru'>
<body className={robotoFlex.className}>
<Providers>
<Header />
<AdminSideBar />
{children}
<Footer />
</Providers>
</body>
</html>
)
}

View File

@ -0,0 +1,102 @@
'use client'
import { Map, Placemark, YMaps } from '@pbe/react-yandex-maps'
import styled from 'styled-components'
type Props = {}
const MapContainer = styled.div`
margin: 50px 0;
position: relative;
h1 {
margin-bottom: 50px;
text-align: center;
}
.content {
padding: 15px;
display: flex;
flex-direction: column;
gap: 10px;
background: ${(props) => props.theme.colors.white};
border-radius: 12px;
position: absolute;
top: 60%;
left: 10%;
transform: translateY(-50%);
z-index: 1;
}
.map {
width: 100%;
height: 450px;
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.content {
gap: 5px;
left: 5%;
h3 {
font-size: 16px;
}
p {
font-size: 14px;
}
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
h3 {
display: none;
}
.content {
left: 0;
right: 0;
border-radius: 0;
position: relative;
transform: translateY(0);
display: grid;
grid-template-columns: 1fr 1fr;
p{
max-width: 200px;
width: 100%;
}
}
}
`
export default function page({}: Props) {
return (
<MapContainer>
<h1>Наши кладбища</h1>
<YMaps>
<Map
className='map'
defaultState={{
center: [55.751574, 37.573856],
zoom: 10
}}
>
<Placemark geometry={[55.684758, 37.738521]} />
<Placemark geometry={[55.755826, 37.6173]} />
<Placemark geometry={[55.6173, 37.684758]} />
<Placemark geometry={[55.755826, 37.684758]} />
</Map>
</YMaps>
<div className='content'>
<h3>Наши Кладбища</h3>
<p>ул. Курчатова, д. 4</p>
<p>ул. Героев Танкограда, д.61а</p>
<p>ул. Героев Танкограда, д.61а</p>
<p>ул. Героев Танкограда, д.61а</p>
</div>
</MapContainer>
)
}

314
src/app/page.tsx Normal file
View File

@ -0,0 +1,314 @@
'use client'
import LandingButton from '@/components/UI/button/LandingButton'
import MainButton from '@/components/UI/button/MainButton'
import { Map, Placemark, YMaps } from '@pbe/react-yandex-maps'
import { useState } from 'react'
import Slider from 'react-slick'
import 'slick-carousel/slick/slick-theme.css'
import 'slick-carousel/slick/slick.css'
import { Container } from './GlobalStyles'
import {
IconContainer,
InstructionsContainer,
Item,
LeftArrow,
MapContainer,
MobileReviewsContainer,
MobileSliderContainer,
OrderContainer,
ReviewsContainer,
RightArrow,
ServiceSliderContainer,
ServicesContainer,
SliderContainer
} from './styles'
type Props = {}
export default function page({}: Props) {
const settings = {
infinite: true,
slidesToShow: 1,
slidesToScroll: 1,
nextArrow: <RightArrow src='/left arrow.svg' alt='' />,
prevArrow: <LeftArrow src='/left arrow.svg' alt='' />,
autoplay: true,
speed: 2000,
autoplaySpeed: 4000,
responsive: [
{
breakpoint: 640,
settings: {
dots: true
}
}
]
}
const reviewSettings = {
autoplay: true,
dots: true,
autoplaySpeed: 4000,
infinite: true,
slidesToShow: 2,
speed: 500,
arrows: false,
centerMode: true,
centerPadding: '60px',
responsive: [
{
breakpoint: 1024,
settings: {
slidesToShow: 1,
slidesToScroll: 1,
infinite: true,
dots: true,
centerMode: true
}
}
]
}
const serviceSliderSetting = {
infinite: true,
dots: true,
slidesToShow: 1,
slidesToScroll: 1,
speed: 500,
arrows: false,
centerMode: true,
centerPadding: '60px'
}
const [placeMark, setPlaceMark] = useState('')
return (
<>
<Container>
<SliderContainer>
<Slider {...settings}>
{[...Array(2)].map((_, index) => (
<Item>
<img src='/image 1.png' alt='' />
<div className='content'>
<h2>Предоставление похоронных услуг в Челябинске.</h2>
<h3>Предоставление похоронных услуг в Челябинске.</h3>
<h4>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna
aliqua.
</h4>
<LandingButton>Подробнее о нас</LandingButton>
</div>
</Item>
))}
</Slider>
</SliderContainer>
</Container>
<MobileSliderContainer>
<Slider {...settings}>
{[...Array(2)].map((_, index) => (
<Item>
<img src='/image 1.png' alt='' />
<div className='content'>
<h2>Предоставление похоронных услуг в Челябинске.</h2>
<h3>Предоставление похоронных услуг в Челябинске.</h3>
<h4>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</h4>
<LandingButton>Подробнее о нас</LandingButton>
</div>
</Item>
))}
</Slider>
</MobileSliderContainer>
<Container>
<IconContainer>
<div className='item'>
<img src='/cemetery.svg' alt='' />
<p>Разнообразные похоронные услуги для всех</p>
</div>
<div className='item'>
<img src='/agreement.svg' alt='' />
<p>Четкие цены на все услуги</p>
</div>
<div className='item'>
<img src='/operator.svg' alt='' />
<p>Круглосуточная поддержка специалистов</p>
</div>
<div className='item'>
<img src='/deal.svg' alt='' />
<p>Договор без скрытых платежей</p>
</div>
</IconContainer>
<ServicesContainer>
<h2>Наши услуги</h2>
<div className='list'>
{[...Array(4)].map((_, index) => (
<div className='cart' key={index}>
<img src='/image 3.png' alt='' />
<div className='content'>
<div className='title'>
<h3>Организация похорон</h3>
<h2 className='price'>От 25 000 руб.</h2>
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna
aliqua.
</p>
<h2 className='price-bottom'>От 25 000 руб.</h2>
<div className='button-block'>
<MainButton>Оставить заявку</MainButton>
</div>
</div>
</div>
))}
</div>
<div className='button'>Показать все услуги</div>
</ServicesContainer>
</Container>
<ServiceSliderContainer>
<h2 className='container-title'>Наши услуги</h2>
<Slider {...serviceSliderSetting}>
{[...Array(4)].map((_, index) => (
<div>
<div className='slider-cart' key={index}>
<img src='/image 3.png' alt='' />
<h3>Организация похорон</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<h2 className='price-bottom'>От 25 000 руб.</h2>
<div className='button-block'>
<MainButton>Оставить заявку</MainButton>
</div>
</div>
</div>
))}
</Slider>
<div className='button'>Показать все услуги</div>
</ServiceSliderContainer>
<Container>
<InstructionsContainer>
<h2>Порядок действий в случае смерти человека</h2>
<div className='list'>
<div className='item'>
<img src='/telephone.svg' alt='' />
<h3>Шаг 1: Обратитесь в нашу службу</h3>
<p>
Позвоните по номеру <span>+7 (932) 307-94-54</span>.
</p>
</div>
<div className='item'>
<img src='/ambulance.svg' alt='' />
<h3>Шаг 2: Дождитесь полицию и скорую помощь</h3>
<p>Дождитесь получения необходимого направления от полиции.</p>
</div>
<div className='item'>
<img src='/hospital.svg' alt='' />
<h3>Шаг 3: Дождитесь эвакуацию</h3>
<p>
Дождитесь прибытия службы эвакуации для транспортировки тела в
морг.
</p>
</div>
</div>
</InstructionsContainer>
<OrderContainer>
<h1>Закажи обратный звонок</h1>
<h3>Круглосуточно принимаем заказы любой сложности</h3>
<div className='button'>
<button>
<h2>Оставить заявку</h2>
</button>
</div>
</OrderContainer>
<ReviewsContainer>
<h2>Отзывы о проведенных церемониях</h2>
<div className='slider-container'>
<Slider {...reviewSettings}>
{[...Array(4)].map((_, index) => (
<div>
<div className='item'>
<img src='/image 4.png' alt='' />
<div className='content'>
<h3>Виктор Иванов</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua.
</p>
</div>
</div>
</div>
))}
</Slider>
</div>
</ReviewsContainer>
</Container>
<MobileReviewsContainer>
<h2>Отзывы о проведенных церемониях</h2>
<div className='slider-container'>
<Slider {...reviewSettings}>
{[...Array(4)].map((_, index) => (
<div>
<div className='item'>
<img src='/image 4.png' alt='' />
<div className='content'>
<h3>Виктор Иванов</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.
</p>
</div>
</div>
<div className='mobile-item'>
<div className='content'>
<img src='/image 4.png' alt='' />
<h3>Виктор Иванов</h3>
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna
aliqua.
</p>
</div>
</div>
))}
</Slider>
</div>
</MobileReviewsContainer>
<MapContainer>
<YMaps>
<Map
className='map'
defaultState={{
center: [55.751574, 37.573856],
zoom: 10
}}
options={{
yandexMapDisablePoiInteractivity: true,
copyrightLogoVisible: true,
copyrightProvidersVisible: true,
copyrightUaVisible: true
}}
>
<Placemark geometry={[55.684758, 37.738521]} />
<Placemark geometry={[55.755826, 37.6173]} />
</Map>
</YMaps>
<div className='content'>
<h3>Наши контакты</h3>
<p>ул. Курчатова, д. 4</p>
<p>ул. Героев Танкограда, д.61а</p>
<p>+7 (951) 773-34-53</p>
<p>+7 (932) 307-94-54 (Круглосуточно)</p>
</div>
</MapContainer>
</>
)
}

73
src/app/services/page.tsx Normal file
View File

@ -0,0 +1,73 @@
'use client'
import MainButton from '@/components/UI/button/MainButton'
import styled from 'styled-components'
import { Container } from '../GlobalStyles'
type Props = {}
const ServicesContainer = styled.div`
display: flex;
align-items: center;
flex-direction: column;
margin: 50px 0;
gap: 50px;
`
const List = styled.div`
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
justify-items: center;
gap: 30px;
.cart {
display: flex;
flex-direction: column;
align-items: start;
max-width: 280px;
width: 100%;
gap: 10px;
img {
max-width: 280px;
width: 100%;
border-radius: 12px 12px 0 0;
}
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
grid-template-columns: 1fr 1fr 1fr;
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
grid-template-columns: 1fr 1fr;
}
${(props) => props.theme.mediaQueries.mobile} {
grid-template-columns: 1fr;
}
`
export default function page({}: Props) {
return (
<Container>
<ServicesContainer>
<h1>Наши услуги</h1>
<List>
{[...Array(8)].map((_, index) => (
<div className='cart' key={index}>
<img src='/image 3.png' alt='' />
<h3>Организация похорон</h3>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
<h2>От 25 000 руб.</h2>
<MainButton>Оставить заявку</MainButton>
</div>
))}
</List>
</ServicesContainer>
</Container>
)
}

670
src/app/styles.ts Normal file
View File

@ -0,0 +1,670 @@
import styled from 'styled-components'
export const Item = styled.div`
position: relative;
img {
width: 100%;
height: 400px;
object-fit: cover;
}
.content {
position: absolute;
top: 0;
left: 0;
display: flex;
flex-direction: column;
width: 400px;
height: 400px;
align-items: start;
padding: 30px 40px;
color: ${(props) => props.theme.colors.white};
z-index: 2;
background: rgba(53, 53, 53, 0.5);
box-sizing: border-box;
h3 {
display: none;
}
h2 {
margin-bottom: 20px;
}
h4 {
margin-bottom: 50px;
}
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.content {
width: 400px;
height: 400px;
padding: 30px 40px;
h3 {
display: block;
margin-bottom: 20px;
}
h2 {
display: none;
}
h4 {
margin-bottom: auto;
}
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
height: 300px;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
.content {
height: 100%;
}
}
${(props) => props.theme.mediaQueries.mobile} {
.content {
width: 100%;
h3 {
font-size: 18px;
}
h4 {
font-size: 14px;
}
}
}
`
export const RightArrow = styled.img`
position: absolute;
right: 0;
top: 50%;
z-index: 1;
transform: rotate(180deg) translateY(50%);
padding: 10px 5px;
background: ${(props) => props.theme.colors.black};
border-radius: 0 12px 12px 0;
height: 45px;
width: 35px;
&:hover {
background: ${(props) => props.theme.colors.black};
}
`
export const LeftArrow = styled.img`
position: absolute;
left: 0;
z-index: 1;
top: 50%;
transform: translateY(-50%);
padding: 10px 5px;
background: ${(props) => props.theme.colors.black};
border-radius: 0 12px 12px 0;
height: 45px;
width: 35px;
&:hover {
background: ${(props) => props.theme.colors.black};
}
${(props) => props.theme.mediaQueries.mobile} {
display: none;
}
`
export const SliderContainer = styled.div`
margin-top: 50px;
overflow: hidden;
border-radius: 12px;
height: 400px;
${(props) => props.theme.mediaQueries.tabletPortrait} {
height: 300px;
}
${(props) => props.theme.mediaQueries.mobile} {
display: none;
}
`
export const MobileSliderContainer = styled.div`
display: none;
${(props) => props.theme.mediaQueries.mobile} {
margin-top: 50px;
overflow: hidden;
display: block;
height: 300px;
}
.slick-arrow {
${(props) => props.theme.mediaQueries.mobile} {
display: none !important;
}
}
`
export const IconContainer = styled.div`
display: flex;
justify-content: space-around;
margin-top: 50px;
.item {
width: 250px;
display: flex;
flex-direction: column;
align-items: center;
gap: 25px;
p {
text-align: center;
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 30px;
}
${(props) => props.theme.mediaQueries.mobile} {
grid-template-columns: 1fr;
justify-items: center;
}
`
export const ServicesContainer = styled.div`
display: flex;
flex-direction: column;
margin-top: 50px;
gap: 60px;
align-items: center;
.slider-container {
display: none;
}
.list {
display: flex;
justify-content: space-between;
width: 100%;
}
.cart {
border-radius: 12px;
width: 280px;
display: flex;
flex-direction: column;
gap: 15px;
.content {
display: flex;
flex-direction: column;
gap: 15px;
}
.price {
display: none;
}
h2 {
color: ${(props) => props.theme.colors.black};
}
p {
text-align: justify;
}
}
.button {
padding: 10px 15px;
background: ${(props) => props.theme.colors.black};
color: ${(props) => props.theme.colors.white};
border-radius: 12px;
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.list {
flex-direction: column;
gap: 20px;
}
.cart {
flex-direction: row;
width: 100%;
img {
border-radius: 12px;
}
.content {
display: flex;
flex-direction: column;
align-items: end;
}
.title {
display: flex;
align-items: start;
justify-content: space-between;
width: 100%;
}
.button-block {
margin-top: auto;
width: 200px;
}
h3 {
font-size: 22px;
}
.price-bottom {
display: none;
}
.price {
display: block;
font-size: 22px;
}
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
.list {
display: grid;
grid-template-columns: 1fr 1fr;
}
.cart {
flex-direction: column;
max-width: 300px;
width: 100%;
align-items: none;
img {
border-radius: 12px;
}
.price-bottom {
display: block;
}
.price {
display: none;
}
.button-block {
width: 100%;
}
}
}
${(props) => props.theme.mediaQueries.mobile} {
display: none;
}
`
export const ServiceSliderContainer = styled.div`
display: none;
${(props) => props.theme.mediaQueries.mobile} {
display: block;
width: 100%;
.container-title {
text-align: center;
margin: 50px 0 30px;
}
.button {
padding: 10px;
background: ${(props) => props.theme.colors.black};
color: ${(props) => props.theme.colors.white};
border-radius: 12px;
width: 200px;
margin: 50px auto 0;
display: flex;
align-items: center;
justify-content: center;
}
.slick-slide {
display: flex;
justify-content: center;
padding: 0 10px;
}
.slider-cart {
display: flex;
flex-direction: column;
max-width: 300px;
width: 100%;
gap: 15px;
img {
border-radius: 12px;
width: 100%;
}
.price-bottom {
display: block;
}
.button-block {
width: 100%;
}
}
.list {
display: none;
}
}
${(props) => props.theme.mediaQueries.slimMobile} {
.slider-cart {
gap: 10px;
h3 {
font-size: 20px;
}
p {
font-size: 16px;
}
h2 {
font-size: 22px;
}
}
}
`
export const InstructionsContainer = styled.div`
margin-top: 50px;
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
.list {
display: flex;
justify-content: space-around;
text-align: center;
}
.item {
max-width: 370px;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
margin-bottom: 20px;
span {
text-decoration: underline;
cursor: pointer;
}
img {
height: 150px;
}
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.list {
flex-wrap: wrap;
}
}
`
export const OrderContainer = styled.div`
display: flex;
align-items: center;
flex-direction: column;
gap: 30px;
margin-top: 50px;
.button {
padding: 10px;
border-radius: 12px;
border: 3px solid ${(props) => props.theme.colors.green};
button {
background: ${(props) => props.theme.colors.green};
color: ${(props) => props.theme.colors.white};
padding: 30px 70px;
border-radius: 12px;
border: none;
}
}
`
export const ReviewsContainer = styled.div`
gap: 50px;
h2 {
margin: 50px 0;
text-align: center;
}
.item {
padding: 25px;
gap: 30px;
background: ${(props) => props.theme.colors.black};
max-width: 580px;
border-radius: 12px;
color: ${(props) => props.theme.colors.white};
display: flex;
img {
border-radius: 100px;
}
}
.slick-slide {
display: flex;
justify-content: center;
padding: 0 10px;
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
display: none;
.item {
h3 {
font-style: 14px;
}
p {
font-size: 12px;
}
img {
border-radius: 100px;
height: 90px;
width: 90px;
}
}
}
`
export const MobileReviewsContainer = styled.div`
display: none;
gap: 50px;
h2 {
margin: 50px 0;
text-align: center;
}
.item {
padding: 25px;
gap: 30px;
background: ${(props) => props.theme.colors.black};
max-width: 580px;
border-radius: 12px;
color: ${(props) => props.theme.colors.white};
display: flex;
img {
border-radius: 100px;
}
}
.slick-slide {
display: flex;
justify-content: center;
padding: 0 10px;
}
.mobile-item {
display: none;
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
display: block;
.item {
h3 {
font-style: 14px;
}
p {
font-size: 12px;
}
img {
border-radius: 100px;
height: 90px;
width: 90px;
}
}
}
${(props) => props.theme.mediaQueries.mobile} {
.item {
display: none;
}
.mobile-item {
display: flex;
flex-direction: column;
padding: 15px;
gap: 20px;
background: ${(props) => props.theme.colors.black};
border-radius: 12px;
color: ${(props) => props.theme.colors.white};
.content {
display: flex;
gap: 20px;
align-items: center;
img {
border-radius: 100px;
height: 80px;
width: 80px;
}
h3 {
font-style: 14px;
}
p {
font-size: 12px;
}
}
}
}
${(props) => props.theme.mediaQueries.slimMobile} {
.mobile-item {
.content {
gap: 10px;
img {
height: 60px;
width: 60px;
}
h3 {
font-style: 10px;
}
p {
font-size: 8px;
}
}
}
}
`
export const MapContainer = styled.div`
margin: 50px 0;
position: relative;
.content {
padding: 15px;
display: flex;
flex-direction: column;
gap: 10px;
background: ${(props) => props.theme.colors.white};
border-radius: 12px;
position: absolute;
top: 50%;
left: 10%;
transform: translateY(-50%);
z-index: 1;
}
.map {
width: 100%;
height: 450px;
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.content {
gap: 5px;
left: 5%;
h3 {
font-size: 16px;
}
p {
font-size: 14px;
}
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
h3 {
display: none;
}
.content {
left: 0;
right: 0;
border-radius: 0;
position: relative;
transform: translateY(0);
display: grid;
grid-template-columns: 1fr 1fr;
p{
max-width: 200px;
width: 100%;
}
}
}
`

31
src/app/theme.ts Normal file
View File

@ -0,0 +1,31 @@
export const theme = {
colors: {
green: '#2F524E',
black: '#353535',
white: '#fff'
},
typography: {
h1: `
font-weight: 400;
font-size: 36px;
`,
h2: `
font-weight: 600;
font-size: 30px;
`,
h3: `
font-weight: 500;
font-size: 24px;
`,
paragraph: `
font-weight: 400;
font-size: 18px;
`
},
mediaQueries: {
slimMobile: `@media only screen and (max-width: 430px)`,
mobile: `@media only screen and (max-width: 640px)`,
tabletPortrait: `@media only screen and (max-width: 768px)`,
tabletLandscape: `@media only screen and (max-width: 1250px)`
}
}

View File

@ -0,0 +1,50 @@
import React from 'react'
import styled from 'styled-components'
const ButtonContainer = styled.div`
padding: 10px;
border: 2px solid ${(props) => props.theme.colors.white};
border-radius: 12px;
${props => props.theme.mediaQueries.tabletLandscape} {
border: none;
padding: 0;
}
`
const Button = styled.button`
padding: 15px 25px;
background: ${(props) => props.theme.colors.white};
color: ${(props) => props.theme.colors.green};
border: none;
border-radius: 12px;
font-weight: 600;
font-size: 18px;
cursor: pointer;
display: flex;
${(props) => props.theme.mediaQueries.tabletPortrait} {
font-size: 16px;
padding: 10px 15px;
}
${props => props.theme.mediaQueries.mobile} {
font-size: 14px;
}
`
type Props = {
onClick?: () => void
children: React.ReactNode
disabled?: boolean
}
export default function LandingButton({ onClick, children, disabled }: Props) {
return (
<ButtonContainer>
<Button onClick={onClick} disabled={disabled}>
{children}
</Button>
</ButtonContainer>
)
}

View File

@ -0,0 +1,54 @@
import React from 'react'
import styled, { css } from 'styled-components'
type Props = {
onClick?: (param?: any) => void
children: React.ReactNode
disabled?: boolean
fullWidth?: boolean
}
interface I_Width {
fullWidth: boolean
}
const Button = styled.button<I_Width>`
padding: 15px 20px;
background: ${(props) => props.theme.colors.green};
color: ${(props) => props.theme.colors.white};
border: none;
border-radius: 12px;
font-weight: 500;
font-size: 18px;
cursor: pointer;
${(props) =>
!props.fullWidth &&
css`
width: 100%;
`}
${(props) => props.theme.mediaQueries.tabletPortrait} {
width: 100%;
padding: 10px;
font-size: 16px;
font-weight: 500;
}
`
export default function MainButton({
onClick,
children,
disabled,
fullWidth
}: Props) {
return (
<Button
onClick={onClick}
disabled={disabled}
fullWidth={fullWidth ? fullWidth : false}
>
{children}
</Button>
)
}

View File

@ -0,0 +1,26 @@
import { ChangeEvent } from 'react'
import styled from 'styled-components'
type Props = {
onChange: (param: ChangeEvent<HTMLInputElement>) => void
value: string
placeholder: string
}
const Input = styled.input`
width: 100%;
padding: 15px 25px;
border-radius: 12px;
font-size: 18px;
border: 1px solid ${props => props.theme.colors.black};
outline: none;
${props => props.theme.mediaQueries.mobile} {
padding: 12px 18px;
font-size: 14px;
}
`
export default function FormInput({ onChange, value, placeholder }: Props) {
return <Input onChange={onChange} value={value} placeholder={placeholder} />
}

View File

@ -0,0 +1,81 @@
import React from 'react'
import styled, { css } from 'styled-components'
type Props = {
modal: boolean
setModal: (param: boolean) => void
children: React.ReactNode
}
interface I_Modal {
modal: boolean
}
const ModalContainer = styled.div<I_Modal>`
z-index: 3;
position: fixed;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
${(props) =>
!props.modal &&
css`
display: none;
`}
.bg {
width: 100%;
height: 100%;
opacity: 0.7;
background: ${(props) => props.theme.colors.black};
}
.content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
padding: 25px;
border-radius: 12px;
background: ${(props) => props.theme.colors.white};
}
.close {
display: none;
}
${props => props.theme.mediaQueries.mobile} {
.bg {
display: none;
}
.content {
top: 0;
left: 0;
transform: none;
border-radius: 0;
width: 100vw;
height: 100vh;
padding-top: 40px;
}
.close {
display: block;
position: absolute;
top: 15px;
right: 15px;
z-index: 4;
}
}
`
export default function Modal({ modal, setModal, children }: Props) {
return (
<ModalContainer modal={modal}>
<img src="/close-black.svg" alt="" className='close' onClick={() => setModal(false)} />
<div className='bg' onClick={() => setModal(false)}></div>
<div className='content'>{children}</div>
</ModalContainer>
)
}

View File

@ -0,0 +1,30 @@
import { ChangeEvent } from 'react'
import styled from 'styled-components'
type Props = {
onChange: (param: ChangeEvent<HTMLTextAreaElement>) => void
value: string
placeholder: string
}
const Textarea = styled.textarea`
height: 150px;
width: 100%;
resize: none;
border-radius: 12px;
padding: 15px 25px;
font-size: 18px;
border: 1px solid ${props => props.theme.colors.black};
outline: none;
font-family: "Roboto Flex", sans-serif;
`
export default function MainTextarea({ onChange, value, placeholder }: Props) {
return (
<Textarea
value={value}
placeholder={placeholder}
onChange={onChange}
></Textarea>
)
}

View File

@ -0,0 +1,55 @@
import styled from 'styled-components'
import FormInput from '../UI/input/FormInput'
import { ChangeEvent, useState } from 'react'
import MainButton from '../UI/button/MainButton'
type Props = {
setModal: (param: boolean) => void
}
const Container = styled.div`
width: 400px;
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
${props => props.theme.mediaQueries.mobile} {
width: 100%;
}
`
export default function AddAppForm({ setModal }: Props) {
const [newApp, setNewApp] = useState({
name: '',
phone: ''
})
const changeName = (value: string) => {
setNewApp({ ...newApp, name: value })
}
const changePhone = (value: string) => {
setNewApp({ ...newApp, phone: value })
}
return (
<Container>
<h2>Новая заявка</h2>
<FormInput
value={newApp.name}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
changeName(e.target.value)
}
placeholder='Ваши имя и фамилия'
/>
<FormInput
value={newApp.phone}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
changePhone(e.target.value)
}
placeholder='Ваш номер телефона'
/>
<MainButton onClick={() => setModal(false)}>Оставить заявку</MainButton>
</Container>
)
}

View File

@ -0,0 +1,71 @@
'use client'
import Link from 'next/link'
import { usePathname } from 'next/navigation'
import styled from 'styled-components'
type Props = {}
const Container = styled.div`
background: ${(props) => props.theme.colors.green};
display: flex;
flex-direction: column;
width: 260px;
padding: 30px 40px;
gap: 20px;
height: 100vh;
position: fixed;
top: 0;
left: 0;
.menu {
display: flex;
flex-direction: column;
gap: 25px;
.item {
display: flex;
align-items: center;
gap: 15px;
cursor: pointer;
padding: 5px;
color: ${(props) => props.theme.colors.white};
}
}
`
export default function AdminSideBar({}: Props) {
const pathname = usePathname()
return pathname.startsWith('/admin') && pathname !== '/admin/auth' ? (
<Container>
<img src='/logo.svg' alt='' />
<div className='menu'>
<Link href='/admin/applications'>
<div className='item'>
<img src='/applications.svg' alt='' />
<p>Заявки</p>
</div>
</Link>
<Link href='/admin/services'>
<div className='item'>
<img src='/services.svg' alt='' />
<p>Услуги</p>
</div>
</Link>
<Link href='/admin/virtualCemetery'>
<div className='item'>
<img src='/grave.svg' alt='' />
<p>Вечная память</p>
</div>
</Link>
<Link href='/admin/virtualCemetery'>
<div className='item'>
<img src='/log-out.svg' alt='' />
<p>Выйти</p>
</div>
</Link>
</div>
</Container>
) : null
}

View File

@ -0,0 +1,129 @@
'use client'
import { Container } from '@/app/GlobalStyles'
import Image from 'next/image'
import Link from 'next/link'
import { usePathname } from 'next/navigation'
import { useEffect, useState } from 'react'
import LandingButton from '../../UI/button/LandingButton'
import Modal from '../../UI/modal/Modal'
import AddAppForm from '../../blocks/AddAppForm'
import { BurgerMenu, HeaderContainer } from './styles'
type Props = {}
export default function Header({}: Props) {
const [modal, setModal] = useState(false)
const [menuState, setMenuState] = useState(false)
const pathname = usePathname()
useEffect(() => {
setMenuState(false)
}, [pathname])
return !pathname.startsWith('/admin') ? (
<>
<HeaderContainer>
<Container>
<div className='content'>
<div className='logo'>
<img src='/logo.svg' alt='phone' />
<span>Городская похоронная служба</span>
</div>
<div className='contact-block'>
<div className='addresses'>
<span>ул. Курчатова, д. 4</span>
<span>ул. Героев Танкограда, д.61а</span>
</div>
<div className='phones'>
<div className='phone'>
<Image src='/phone.svg' width={20} height={20} alt='phone' />
<p>+7 (951) 773-34-53</p>
</div>
<div className='phone-all-time'>
<div className='top'>
<Image
src='/phone.svg'
width={20}
height={20}
alt='phone'
/>
<p>+7 (932) 307-94-54</p>
</div>
<span>Круглосуточно</span>
</div>
</div>
</div>
<LandingButton onClick={() => setModal(true)}>
Заказать звонок
</LandingButton>
</div>
<div className='navbar'>
<Link href='/'>Главная</Link>
<Link href='/services'>Услуги</Link>
<Link href='/aboutUs'>О нас</Link>
<Link href='/ourCemeteries'>Наши кладбища</Link>
<Link href='/everlastingMemory'>Вечная память</Link>
</div>
</Container>
<BurgerMenu state={menuState}>
<div className='title'>
<div className='logo-container'>
<img src='/logo.svg' alt='' className='logo-image' />
</div>
<div className='menu-icon-container'>
<img
src='/burger-menu.svg'
alt=''
onClick={() => setMenuState(true)}
/>
</div>
</div>
<div className='menu-container'>
<div className='title-active'>
<div className='contact'>
<div className='addresses'>
<p>ул. Курчатова, д. 4</p>
<p>ул. Героев Танкограда, д.61а</p>
</div>
<div className='number'>
<p>+7 (951) 773-34-53</p>
<p>+7 (932) 307-94-54</p>
</div>
</div>
<img
src='/close-menu.svg'
alt=''
onClick={() => setMenuState(false)}
/>
</div>
<div className='menu'>
<LandingButton
onClick={() => {
setModal(true), setMenuState(false)
}}
>
Заказать звонок
</LandingButton>
<Link href='/'>Главная</Link>
<Link href='/services'>Услуги</Link>
<Link href='/aboutUs'>О нас</Link>
<Link href='/ourCemeteries'>Наши кладбища</Link>
<Link href='/everlastingMemory'>Вечная память</Link>
</div>
</div>
</BurgerMenu>
</HeaderContainer>
<Modal modal={modal} setModal={setModal}>
<AddAppForm setModal={setModal} />
</Modal>
</>
) : null
}

View File

@ -0,0 +1,302 @@
import styled, { css } from 'styled-components'
export const HeaderContainer = styled.div`
background: ${(props) => props.theme.colors.green};
color: ${(props) => props.theme.colors.white};
.content {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.contact-block {
display: flex;
align-items: start;
gap: 30px;
}
.logo {
display: flex;
flex-direction: column;
gap: 10px;
align-items: center;
padding: 15px;
span {
font-size: 16px;
font-weight: 300;
}
}
.addresses {
display: flex;
flex-direction: column;
gap: 10px;
}
.phones {
display: flex;
align-items: start;
gap: 20px;
}
.phone {
display: flex;
align-items: center;
gap: 5px;
}
.phone-all-time {
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
span {
font-size: 12px;
}
.top {
display: flex;
align-items: center;
gap: 5px;
}
}
.navbar {
display: flex;
align-items: start;
justify-content: space-around;
padding: 20px 0;
}
a {
color: ${(props) => props.theme.colors.white};
width: 190px;
text-align: center;
font-size: 24px;
}
${(props) => props.theme.mediaQueries.tabletLandscape} {
.contact-block {
flex-direction: column;
gap: 10px;
.addresses {
flex-direction: row;
width: 100%;
justify-content: space-between;
}
}
.logo {
width: 250px;
img {
}
span {
font-size: 12px;
}
}
.navbar {
a {
font-size: 18px;
}
}
.phones {
width: 100%;
justify-content: space-between;
}
.phone {
display: flex;
align-items: center;
gap: 5px;
font-size: 14px;
p {
font-size: 14px;
}
}
.phone-all-time {
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
p {
font-size: 14px;
}
span {
font-size: 10px;
}
.top {
font-size: 14px;
display: flex;
align-items: center;
gap: 5px;
}
}
}
${(props) => props.theme.mediaQueries.tabletPortrait} {
.content {
align-items: center;
padding-top: 10px;
}
.contact-block {
flex-direction: row;
.addresses {
width: 100%;
justify-content: space-between;
flex-direction: column;
span {
font-size: 14px;
}
}
}
.logo {
span {
display: none;
}
}
.phones {
flex-direction: column;
img {
display: none;
}
}
.navbar {
a {
font-size: 16px;
}
}
}
${(props) => props.theme.mediaQueries.mobile} {
.content {
display: none;
}
.navbar {
display: none;
}
.menu-container {
display: none;
}
}
`
interface I_Menu {
state: boolean
}
export const BurgerMenu = styled.div<I_Menu>`
display: none;
.menu-container {
display: block;
position: fixed;
z-index: 3;
transition: 300ms;
height: 100vh;
top: 1px;
width: 100vw;
padding-top: 15px;
background: ${(props) => props.theme.colors.green};
${(props) =>
props.state
? css`
right: 1px;
`
: css`
right: -100vw;
`}
}
.contact {
display: flex;
gap: 20px;
p {
font-size: 12px;
}
.addresses {
display: flex;
gap: 10px;
}
.number {
flex-direction: column;
display: flex;
gap: 10px;
}
}
.menu {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
}
${(props) => props.theme.mediaQueries.mobile} {
display: block;
padding: 15px 0;
.title {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 15px;
.logo-image {
/* position: absolute;
left: 50%;
top: 10px;
transform: translateX(-50%); */
height: 32px;
}
}
.title-active {
display: flex;
align-items: start;
justify-content: space-between;
padding: 0 15px;
margin-bottom: 20px;
}
.menu-container {
}
.menu-icon-container {
/* width: 160px;
float: left; */
img {
height: 20px;
}
}
.logo-container {
}
}
`

View File

@ -0,0 +1,68 @@
'use client'
import { Container } from '@/app/GlobalStyles'
import { usePathname } from 'next/navigation'
import { useState } from 'react'
import LandingButton from '../../UI/button/LandingButton'
import Modal from '../../UI/modal/Modal'
import AddAppForm from '../../blocks/AddAppForm'
import {
ContentContainer,
ContentSection,
FooterContainer,
FooterContent,
LogoSection
} from './styels'
type Props = {}
export default function Footer({}: Props) {
const [modal, setModal] = useState(false)
const pathname = usePathname()
return !pathname.startsWith('/admin') ? (
<>
<FooterContainer>
<Container>
<FooterContent>
<ContentContainer>
<LogoSection>
<img src='/logo.svg' alt='phone' />
<span>Городская похоронная служба</span>
<LandingButton onClick={() => setModal(true)}>
Заказать звонок
</LandingButton>
</LogoSection>
<ContentSection>
<h3>Наши контакты</h3>
<p>ул. Курчатова, д. 4</p>
<p>ул. Героев Танкограда, д.61а</p>
<p>+7 (951) 773-34-53</p>
<p>+7 (932) 307-94-54</p>
</ContentSection>
<ContentSection>
<h3>Услуги</h3>
<p>Название услуги</p>
<p>Название услуги</p>
<p>Название услуги</p>
<p>Название услуги</p>
</ContentSection>
<ContentSection>
<h3>Навигация</h3>
<p>На главную</p>
<p>О нас</p>
<p>Услуги</p>
<p>Наши кладбища</p>
<p>Вечная память</p>
</ContentSection>
</ContentContainer>
</FooterContent>
</Container>
</FooterContainer>
<Modal modal={modal} setModal={setModal}>
<AddAppForm setModal={setModal} />
</Modal>
</>
) : null
}

View File

@ -0,0 +1,84 @@
import styled from 'styled-components'
export const FooterContainer = styled.div`
background: ${(props) => props.theme.colors.green};
color: ${(props) => props.theme.colors.white};
position: absolute;
width: 100%;
bottom: 0px;
${props => props.theme.mediaQueries.mobile} {
}
`
export const ContentContainer = styled.div`
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
padding: 30px 0;
${(props) => props.theme.mediaQueries.tabletLandscape} {
gap: 15px;
}
${props => props.theme.mediaQueries.tabletPortrait} {
grid-template-columns: 1fr 1fr;
justify-items: start;
gap: 30px;
}
${props => props.theme.mediaQueries.mobile} {
grid-template-columns: 1fr;
justify-items: start;
padding: 30px auto;
}
`
export const ContentSection = styled.div`
display: flex;
flex-direction: column;
align-items: start;
gap: 15px;
${(props) => props.theme.mediaQueries.tabletLandscape} {
gap: 5px;
h3 {
font-size: 18px;
}
p {
font-size: 16px;
}
}
${props => props.theme.mediaQueries.tabletPortrait} {
h3 {
font-size: 20px;
}
p {
font-size: 18px;
}
}
`
export const LogoSection = styled.div`
display: flex;
flex-direction: column;
align-items: center;
gap: 15px;
${(props) => props.theme.mediaQueries.tabletLandscape} {
span {
font-size: 14px;
white-space: nowrap;
}
}
`
export const FooterContent = styled.div`
${props => props.theme.mediaQueries.mobile} {
display: flex;
justify-content: center;
}
`

View File

@ -0,0 +1,29 @@
'use client'
import { useServerInsertedHTML } from 'next/navigation'
import React, { useState } from 'react'
import { ServerStyleSheet, StyleSheetManager } from 'styled-components'
export default function StyledComponentsRegistry({
children
}: {
children: React.ReactNode
}) {
// Only create stylesheet once with lazy initial state
// x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state
const [styledComponentsStyleSheet] = useState(() => new ServerStyleSheet())
useServerInsertedHTML(() => {
const styles = styledComponentsStyleSheet.getStyleElement()
styledComponentsStyleSheet.instance.clearTag()
return <>{styles}</>
})
if (typeof window !== 'undefined') return <>{children}</>
return (
<StyleSheetManager sheet={styledComponentsStyleSheet.instance}>
{children}
</StyleSheetManager>
)
}

26
tsconfig.json Normal file
View File

@ -0,0 +1,26 @@
{
"compilerOptions": {
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"plugins": [
{
"name": "next"
}
],
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
}