diff --git a/index.html b/index.html
index 57cdcd8..58bcb7c 100644
--- a/index.html
+++ b/index.html
@@ -6,17 +6,19 @@
DMC-12
+
-
diff --git a/package-lock.json b/package-lock.json
index da39c3b..4f78445 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,1800 +1,8 @@
{
"name": "dmc12-frontend",
"version": "0.0.0",
- "lockfileVersion": 2,
+ "lockfileVersion": 1,
"requires": true,
- "packages": {
- "": {
- "version": "0.0.0",
- "dependencies": {
- "prop-types": "^15.8.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.4.1",
- "styled-components": "^5.3.5"
- },
- "devDependencies": {
- "@types/react": "^18.0.17",
- "@types/react-dom": "^18.0.6",
- "@types/styled-components": "^5.1.26",
- "@vitejs/plugin-react": "^2.1.0",
- "pretty": "^2.0.0",
- "typescript": "^4.6.4",
- "vite": "^3.1.0"
- },
- "engines": {
- "node": "14.x",
- "npm": "6.x"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dependencies": {
- "@babel/highlight": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz",
- "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz",
- "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==",
- "dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.1.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-compilation-targets": "^7.19.1",
- "@babel/helper-module-transforms": "^7.19.0",
- "@babel/helpers": "^7.19.0",
- "@babel/parser": "^7.19.1",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.1",
- "@babel/types": "^7.19.0",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.1",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz",
- "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==",
- "dependencies": {
- "@babel/types": "^7.19.0",
- "@jridgewell/gen-mapping": "^0.3.2",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz",
- "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz",
- "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.19.1",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
- "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
- "dependencies": {
- "@babel/template": "^7.18.10",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz",
- "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.18.6",
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.0",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz",
- "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
- "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz",
- "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
- "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz",
- "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.18.10",
- "@babel/traverse": "^7.19.0",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz",
- "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==",
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz",
- "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz",
- "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.18.6",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.19.0",
- "@babel/plugin-syntax-jsx": "^7.18.6",
- "@babel/types": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz",
- "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==",
- "dev": true,
- "dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
- "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz",
- "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.18.10",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
- "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==",
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.18.10",
- "@babel/types": "^7.18.10"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz",
- "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==",
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.19.0",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.19.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.19.1",
- "@babel/types": "^7.19.0",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.19.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz",
- "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==",
- "dependencies": {
- "@babel/helper-string-parser": "^7.18.10",
- "@babel/helper-validator-identifier": "^7.18.6",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@emotion/is-prop-valid": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
- "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
- "dependencies": {
- "@emotion/memoize": "^0.8.0"
- }
- },
- "node_modules/@emotion/memoize": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
- "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
- },
- "node_modules/@emotion/stylis": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
- "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
- },
- "node_modules/@emotion/unitless": {
- "version": "0.7.5",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
- "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.9.tgz",
- "integrity": "sha512-VZPy/ETF3fBG5PiinIkA0W/tlsvlEgJccyN2DzWZEl0DlVKRbu91PvY2D6Lxgluj4w9QtYHjOWjAT44C+oQ+EQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.9.tgz",
- "integrity": "sha512-O+NfmkfRrb3uSsTa4jE3WApidSe3N5++fyOVGP1SmMZi4A3BZELkhUUvj5hwmMuNdlpzAZ8iAPz2vmcR7DCFQA==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz",
- "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "node_modules/@remix-run/router": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.1.tgz",
- "integrity": "sha512-eBV5rvW4dRFOU1eajN7FmYxjAIVz/mRHgUE9En9mBn6m3mulK3WTR5C3iQhL9MZ14rWAq+xOlEaCkDiW0/heOg==",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@types/hoist-non-react-statics": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
- "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
- "dev": true,
- "dependencies": {
- "@types/react": "*",
- "hoist-non-react-statics": "^3.3.0"
- }
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
- },
- "node_modules/@types/react": {
- "version": "18.0.21",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz",
- "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==",
- "dev": true,
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.0.6",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz",
- "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==",
- "dev": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
- },
- "node_modules/@types/styled-components": {
- "version": "5.1.26",
- "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz",
- "integrity": "sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==",
- "dev": true,
- "dependencies": {
- "@types/hoist-non-react-statics": "*",
- "@types/react": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.1.0.tgz",
- "integrity": "sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.18.13",
- "@babel/plugin-transform-react-jsx": "^7.18.10",
- "@babel/plugin-transform-react-jsx-development": "^7.18.6",
- "@babel/plugin-transform-react-jsx-self": "^7.18.6",
- "@babel/plugin-transform-react-jsx-source": "^7.18.6",
- "magic-string": "^0.26.2",
- "react-refresh": "^0.14.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- }
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/babel-plugin-styled-components": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz",
- "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.16.0",
- "@babel/helper-module-imports": "^7.16.0",
- "babel-plugin-syntax-jsx": "^6.18.0",
- "lodash": "^4.17.11",
- "picomatch": "^2.3.0"
- }
- },
- "node_modules/babel-plugin-syntax-jsx": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
- "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw=="
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/browserslist": {
- "version": "4.21.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
- "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
- "dev": true,
- "dependencies": {
- "caniuse-lite": "^1.0.30001400",
- "electron-to-chromium": "^1.4.251",
- "node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.9"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/camelize": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
- "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg=="
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001412",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz",
- "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==",
- "dev": true
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "node_modules/condense-newlines": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz",
- "integrity": "sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-whitespace": "^0.3.0",
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/config-chain": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
- "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
- "dev": true,
- "dependencies": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
- },
- "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.0.0",
- "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz",
- "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==",
- "dependencies": {
- "camelize": "^1.0.0",
- "css-color-keywords": "^1.0.0",
- "postcss-value-parser": "^4.0.2"
- }
- },
- "node_modules/csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "dev": true
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- }
- },
- "node_modules/editorconfig": {
- "version": "0.15.3",
- "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
- "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==",
- "dev": true,
- "dependencies": {
- "commander": "^2.19.0",
- "lru-cache": "^4.1.5",
- "semver": "^5.6.0",
- "sigmund": "^1.0.1"
- }
- },
- "node_modules/editorconfig/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.264",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.264.tgz",
- "integrity": "sha512-AZ6ZRkucHOQT8wke50MktxtmcWZr67kE17X/nAXFf62NIdMdgY6xfsaJD5Szoy84lnkuPWH+4tTNE3s2+bPCiw==",
- "dev": true
- },
- "node_modules/esbuild": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.9.tgz",
- "integrity": "sha512-OnYr1rkMVxtmMHIAKZLMcEUlJmqcbxBz9QoBU8G9v455na0fuzlT/GLu6l+SRghrk0Mm2fSSciMmzV43Q8e0Gg==",
- "dev": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.15.9",
- "@esbuild/linux-loong64": "0.15.9",
- "esbuild-android-64": "0.15.9",
- "esbuild-android-arm64": "0.15.9",
- "esbuild-darwin-64": "0.15.9",
- "esbuild-darwin-arm64": "0.15.9",
- "esbuild-freebsd-64": "0.15.9",
- "esbuild-freebsd-arm64": "0.15.9",
- "esbuild-linux-32": "0.15.9",
- "esbuild-linux-64": "0.15.9",
- "esbuild-linux-arm": "0.15.9",
- "esbuild-linux-arm64": "0.15.9",
- "esbuild-linux-mips64le": "0.15.9",
- "esbuild-linux-ppc64le": "0.15.9",
- "esbuild-linux-riscv64": "0.15.9",
- "esbuild-linux-s390x": "0.15.9",
- "esbuild-netbsd-64": "0.15.9",
- "esbuild-openbsd-64": "0.15.9",
- "esbuild-sunos-64": "0.15.9",
- "esbuild-windows-32": "0.15.9",
- "esbuild-windows-64": "0.15.9",
- "esbuild-windows-arm64": "0.15.9"
- }
- },
- "node_modules/esbuild-android-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.9.tgz",
- "integrity": "sha512-HQCX7FJn9T4kxZQkhPjNZC7tBWZqJvhlLHPU2SFzrQB/7nDXjmTIFpFTjt7Bd1uFpeXmuwf5h5fZm+x/hLnhbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-android-arm64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.9.tgz",
- "integrity": "sha512-E6zbLfqbFVCNEKircSHnPiSTsm3fCRxeIMPfrkS33tFjIAoXtwegQfVZqMGR0FlsvVxp2NEDOUz+WW48COCjSg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.9.tgz",
- "integrity": "sha512-gI7dClcDN/HHVacZhTmGjl0/TWZcGuKJ0I7/xDGJwRQQn7aafZGtvagOFNmuOq+OBFPhlPv1T6JElOXb0unkSQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-arm64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.9.tgz",
- "integrity": "sha512-VZIMlcRN29yg/sv7DsDwN+OeufCcoTNaTl3Vnav7dL/nvsApD7uvhVRbgyMzv0zU/PP0xRhhIpTyc7lxEzHGSw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.9.tgz",
- "integrity": "sha512-uM4z5bTvuAXqPxrI204txhlsPIolQPWRMLenvGuCPZTnnGlCMF2QLs0Plcm26gcskhxewYo9LkkmYSS5Czrb5A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-arm64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.9.tgz",
- "integrity": "sha512-HHDjT3O5gWzicGdgJ5yokZVN9K9KG05SnERwl9nBYZaCjcCgj/sX8Ps1jvoFSfNCO04JSsHSOWo4qvxFuj8FoA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-32": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.9.tgz",
- "integrity": "sha512-AQIdE8FugGt1DkcekKi5ycI46QZpGJ/wqcMr7w6YUmOmp2ohQ8eO4sKUsOxNOvYL7hGEVwkndSyszR6HpVHLFg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.9.tgz",
- "integrity": "sha512-4RXjae7g6Qs7StZyiYyXTZXBlfODhb1aBVAjd+ANuPmMhWthQilWo7rFHwJwL7DQu1Fjej2sODAVwLbcIVsAYQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.9.tgz",
- "integrity": "sha512-3Zf2GVGUOI7XwChH3qrnTOSqfV1V4CAc/7zLVm4lO6JT6wbJrTgEYCCiNSzziSju+J9Jhf9YGWk/26quWPC6yQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.9.tgz",
- "integrity": "sha512-a+bTtxJmYmk9d+s2W4/R1SYKDDAldOKmWjWP0BnrWtDbvUBNOm++du0ysPju4mZVoEFgS1yLNW+VXnG/4FNwdQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-mips64le": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.9.tgz",
- "integrity": "sha512-Zn9HSylDp89y+TRREMDoGrc3Z4Hs5u56ozZLQCiZAUx2+HdbbXbWdjmw3FdTJ/i7t5Cew6/Q+6kfO3KCcFGlyw==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-ppc64le": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.9.tgz",
- "integrity": "sha512-OEiOxNAMH9ENFYqRsWUj3CWyN3V8P3ZXyfNAtX5rlCEC/ERXrCEFCJji/1F6POzsXAzxvUJrTSTCy7G6BhA6Fw==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-riscv64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.9.tgz",
- "integrity": "sha512-ukm4KsC3QRausEFjzTsOZ/qqazw0YvJsKmfoZZm9QW27OHjk2XKSQGGvx8gIEswft/Sadp03/VZvAaqv5AIwNA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-s390x": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.9.tgz",
- "integrity": "sha512-uDOQEH55wQ6ahcIKzQr3VyjGc6Po/xblLGLoUk3fVL1qjlZAibtQr6XRfy5wPJLu/M2o0vQKLq4lyJ2r1tWKcw==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-netbsd-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.9.tgz",
- "integrity": "sha512-yWgxaYTQz+TqX80wXRq6xAtb7GSBAp6gqLKfOdANg9qEmAI1Bxn04IrQr0Mzm4AhxvGKoHzjHjMgXbCCSSDxcw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-openbsd-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.9.tgz",
- "integrity": "sha512-JmS18acQl4iSAjrEha1MfEmUMN4FcnnrtTaJ7Qg0tDCOcgpPPQRLGsZqhes0vmx8VA6IqRyScqXvaL7+Q0Uf3A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-sunos-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.9.tgz",
- "integrity": "sha512-UKynGSWpzkPmXW3D2UMOD9BZPIuRaSqphxSCwScfEE05Be3KAmvjsBhht1fLzKpiFVJb0BYMd4jEbWMyJ/z1hQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-32": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.9.tgz",
- "integrity": "sha512-aqXvu4/W9XyTVqO/hw3rNxKE1TcZiEYHPsXM9LwYmKSX9/hjvfIJzXwQBlPcJ/QOxedfoMVH0YnhhQ9Ffb0RGA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.9.tgz",
- "integrity": "sha512-zm7h91WUmlS4idMtjvCrEeNhlH7+TNOmqw5dJPJZrgFaxoFyqYG6CKDpdFCQXdyKpD5yvzaQBOMVTCBVKGZDEg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-arm64": {
- "version": "0.15.9",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.9.tgz",
- "integrity": "sha512-yQEVIv27oauAtvtuhJVfSNMztJJX47ismRS6Sv2QMVV9RM+6xjbMWuuwM2nxr5A2/gj/mu2z9YlQxiwoFRCfZA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/glob": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
- "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/hoist-non-react-statics": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
- "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
- "dependencies": {
- "react-is": "^16.7.0"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/is-core-module": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
- "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- }
- },
- "node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-whitespace": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz",
- "integrity": "sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/js-beautify": {
- "version": "1.14.6",
- "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz",
- "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==",
- "dev": true,
- "dependencies": {
- "config-chain": "^1.1.13",
- "editorconfig": "^0.15.3",
- "glob": "^8.0.3",
- "nopt": "^6.0.0"
- },
- "bin": {
- "css-beautify": "js/bin/css-beautify.js",
- "html-beautify": "js/bin/html-beautify.js",
- "js-beautify": "js/bin/js-beautify.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "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/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
- "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "node_modules/magic-string": {
- "version": "0.26.4",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.4.tgz",
- "integrity": "sha512-e5uXtVJ22aEpK9u1+eQf0fSxHeqwyV19K+uGnlROCxUhzwRip9tBsaMViK/0vC3viyPd5Gtucp3UmEp/Q2cPTQ==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/minimatch": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
- "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
- "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==",
- "dev": true
- },
- "node_modules/nopt": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
- "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
- "dev": true,
- "dependencies": {
- "abbrev": "^1.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/postcss": {
- "version": "8.4.16",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
- "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
- "dev": true,
- "dependencies": {
- "nanoid": "^3.3.4",
- "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/pretty": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz",
- "integrity": "sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==",
- "dev": true,
- "dependencies": {
- "condense-newlines": "^0.2.1",
- "extend-shallow": "^2.0.1",
- "js-beautify": "^1.6.12"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
- "node_modules/proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "dev": true
- },
- "node_modules/pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
- "dev": true
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- }
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
- },
- "node_modules/react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-router": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.1.tgz",
- "integrity": "sha512-OJASKp5AykDWFewgWUim1vlLr7yfD4vO/h+bSgcP/ix8Md+LMHuAjovA74MQfsfhQJGGN1nHRhwS5qQQbbBt3A==",
- "dependencies": {
- "@remix-run/router": "1.0.1"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/react-router-dom": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.1.tgz",
- "integrity": "sha512-MY7NJCrGNVJtGp8ODMOBHu20UaIkmwD2V3YsAOUQoCXFk7Ppdwf55RdcGyrSj+ycSL9Uiwrb3gTLYSnzcRoXww==",
- "dependencies": {
- "@remix-run/router": "1.0.1",
- "react-router": "6.4.1"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- }
- },
- "node_modules/rollup": {
- "version": "2.78.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
- "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
- "dev": true,
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "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/sigmund": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
- "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==",
- "dev": true
- },
- "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==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "node_modules/styled-components": {
- "version": "5.3.5",
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz",
- "integrity": "sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==",
- "dependencies": {
- "@babel/helper-module-imports": "^7.0.0",
- "@babel/traverse": "^7.4.5",
- "@emotion/is-prop-valid": "^1.1.0",
- "@emotion/stylis": "^0.8.4",
- "@emotion/unitless": "^0.7.4",
- "babel-plugin-styled-components": ">= 1.12.0",
- "css-to-react-native": "^3.0.0",
- "hoist-non-react-statics": "^3.0.0",
- "shallowequal": "^1.1.0",
- "supports-color": "^5.5.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/typescript": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
- "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz",
- "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==",
- "dev": true,
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "browserslist-lint": "cli.js"
- }
- },
- "node_modules/vite": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.3.tgz",
- "integrity": "sha512-/3XWiktaopByM5bd8dqvHxRt5EEgRikevnnrpND0gRfNkrMrPaGGexhtLCzv15RcCMtV2CLw+BPas8YFeSG0KA==",
- "dev": true,
- "dependencies": {
- "esbuild": "^0.15.6",
- "postcss": "^8.4.16",
- "resolve": "^1.22.1",
- "rollup": "~2.78.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
- "dev": true
- }
- },
"dependencies": {
"@ampproject/remapping": {
"version": "2.2.0",
diff --git a/public/assets/1.png b/public/assets/1.png
deleted file mode 100644
index f96d088..0000000
Binary files a/public/assets/1.png and /dev/null differ
diff --git a/public/assets/2.png b/public/assets/2.png
deleted file mode 100644
index ca034eb..0000000
Binary files a/public/assets/2.png and /dev/null differ
diff --git a/public/assets/3.png b/public/assets/3.png
deleted file mode 100644
index 66e7c6f..0000000
Binary files a/public/assets/3.png and /dev/null differ
diff --git a/public/assets/DMC_CircleLogo.png b/public/assets/DMC_CircleLogo.png
deleted file mode 100644
index b57ea79..0000000
Binary files a/public/assets/DMC_CircleLogo.png and /dev/null differ
diff --git a/public/assets/ProjectBackgroundMobile.png b/public/assets/ProjectBackgroundMobile.png
new file mode 100644
index 0000000..ca03424
Binary files /dev/null and b/public/assets/ProjectBackgroundMobile.png differ
diff --git a/public/assets/background-mobile.png b/public/assets/background-mobile.png
new file mode 100644
index 0000000..daa789e
Binary files /dev/null and b/public/assets/background-mobile.png differ
diff --git a/public/assets/background.png b/public/assets/background.png
new file mode 100644
index 0000000..f10436c
Binary files /dev/null and b/public/assets/background.png differ
diff --git a/public/assets/clipto-screenshot.png b/public/assets/clipto-screenshot.png
new file mode 100644
index 0000000..c9a5faa
Binary files /dev/null and b/public/assets/clipto-screenshot.png differ
diff --git a/public/assets/clipto/clipto_1.png b/public/assets/clipto/clipto_1.png
new file mode 100644
index 0000000..d9f1bf2
Binary files /dev/null and b/public/assets/clipto/clipto_1.png differ
diff --git a/public/assets/clipto/clipto_2.png b/public/assets/clipto/clipto_2.png
new file mode 100644
index 0000000..ac323d1
Binary files /dev/null and b/public/assets/clipto/clipto_2.png differ
diff --git a/public/assets/clipto/clipto_3.png b/public/assets/clipto/clipto_3.png
new file mode 100644
index 0000000..a19f3c4
Binary files /dev/null and b/public/assets/clipto/clipto_3.png differ
diff --git a/public/assets/clipto/clipto_cover.png b/public/assets/clipto/clipto_cover.png
new file mode 100644
index 0000000..32dda62
Binary files /dev/null and b/public/assets/clipto/clipto_cover.png differ
diff --git a/public/assets/devnode-screenshot.png b/public/assets/devnode-screenshot.png
new file mode 100644
index 0000000..ef5d138
Binary files /dev/null and b/public/assets/devnode-screenshot.png differ
diff --git a/public/assets/devnode/devnode_1.png b/public/assets/devnode/devnode_1.png
new file mode 100644
index 0000000..cdea036
Binary files /dev/null and b/public/assets/devnode/devnode_1.png differ
diff --git a/public/assets/devnode/devnode_2.png b/public/assets/devnode/devnode_2.png
new file mode 100644
index 0000000..e96b667
Binary files /dev/null and b/public/assets/devnode/devnode_2.png differ
diff --git a/public/assets/devnode/devnode_3.png b/public/assets/devnode/devnode_3.png
new file mode 100644
index 0000000..2c0d4ed
Binary files /dev/null and b/public/assets/devnode/devnode_3.png differ
diff --git a/public/assets/devnode/devnode_cover.png b/public/assets/devnode/devnode_cover.png
new file mode 100644
index 0000000..46faf20
Binary files /dev/null and b/public/assets/devnode/devnode_cover.png differ
diff --git a/public/assets/dmc12-background-mobile.png b/public/assets/dmc12-background-mobile.png
deleted file mode 100644
index c014c29..0000000
Binary files a/public/assets/dmc12-background-mobile.png and /dev/null differ
diff --git a/public/assets/dmc12-background.png b/public/assets/dmc12-background.png
deleted file mode 100644
index aaf71de..0000000
Binary files a/public/assets/dmc12-background.png and /dev/null differ
diff --git a/public/assets/footer-mobile.png b/public/assets/footer-mobile.png
new file mode 100644
index 0000000..60ecacb
Binary files /dev/null and b/public/assets/footer-mobile.png differ
diff --git a/public/assets/footer.png b/public/assets/footer.png
new file mode 100644
index 0000000..5462bc2
Binary files /dev/null and b/public/assets/footer.png differ
diff --git a/public/assets/workflow-background.png b/public/assets/workflow-background.png
new file mode 100644
index 0000000..392c582
Binary files /dev/null and b/public/assets/workflow-background.png differ
diff --git a/public/vite.svg b/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/App.tsx b/src/App.tsx
index 9f8c22c..242de39 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,8 +1,22 @@
-import { BrowserRouter, Route, Routes } from "react-router-dom";
+import { BrowserRouter, Route, Routes, useLocation } from "react-router-dom";
import Footer from "./components/Footer/Footer";
import Header from "./components/Header/Header";
import LandingPage from "./Pages/LandingPage/LandingPage";
+import ProjectDetailsPage from "./Pages/ProjectDetailsPage/ProjectDetailPage";
import { GlobalStyle, AppWrapper } from "./Style";
+import { Projects } from "./api/projects";
+import { useEffect } from "react";
+import ProjectPage from "./Pages/ProjectPage/ProjectPage";
+
+const ScrollToTop = () => {
+ const { pathname } = useLocation();
+
+ useEffect(() => {
+ window.scrollTo(0, 0);
+ }, [pathname]);
+
+ return null;
+};
function App() {
return (
@@ -10,8 +24,18 @@ function App() {
+
} />
+ }
+ />
+ }
+ />
+ } />
diff --git a/src/Pages/LandingPage/LandingPage.tsx b/src/Pages/LandingPage/LandingPage.tsx
index f20109f..d294c80 100644
--- a/src/Pages/LandingPage/LandingPage.tsx
+++ b/src/Pages/LandingPage/LandingPage.tsx
@@ -1,41 +1,63 @@
import React from "react";
import Text from "../../components/Text/Text";
-import { Circle, Triangle, Square, Rectangle } from "../../components/Icons";
+import { ThunderIcon, MailIcon, CheckIcon } from "../../components/Icons";
import {
- HeadingWrapper,
- FunnyTextWrapper,
- AboutTextWrapper,
- WorkWrapper,
- StackWrapper,
- Row,
- PastWorkWrapper,
- CompanyLogo,
- ImageContainer,
- WorkSection,
- PastWorkSection, BottomSectionWrapper, LandingPageHr,
+ HeadingWrapper,
+ FunnyTextWrapper,
+ AboutTextWrapper,
+ PastWorkWrapper,
+ CompanyLogo,
+ ImageContainer,
+ PastWorkSection,
+ BottomSectionWrapper,
+ TechStackSection,
+ TechStackWrapper,
+ WorkflowSection,
+ WorkFlowWrapper,
+ CollaborationWrapper,
+ ProjectSection,
+ ProjectWrapper,
+ ProjectListContainer,
+ ProjectContainer,
+ ImageHolder,
+ TextContanier,
+ ProjectsMobileTitle,
+ ProjectMobileSection,
+ MobileProjectCard,
} from "./Style";
-import ShapeContainer from "../../components/ShapeContainer/ShapeContainer";
import Messari from "../../components/Icons/Messari.png";
import Clipto from "../../components/Icons/Clipto.png";
import Macys from "../../components/Icons/Macys.png";
+import DevNode from "../../components/Icons/DevNode.png";
+
+import Solidity from "../../components/Icons/Solidity.png";
+import Rust from "../../components/Icons/Rust.png";
+import Polygon from "../../components/Icons/Polygon.png";
+import Ceramic from "../../components/Icons/Ceramic.png";
+import Typescript from "../../components/Icons/Typescript.png";
+import { CollabCard } from "../../components/Cards/CollabCard";
+import { ProjectCard } from "../../components/Cards/ProjectCard";
+import { Link, useNavigate } from "react-router-dom";
const LandingPage = () => {
+ const navigate = useNavigate();
+
+ const redirectToDevnode = () => {
+ navigate("/devnode");
+ };
+
+ const redirectToClipto = () => {
+ navigate("/clipto");
+ };
+
return (
<>
-
+
HEY, WE'RE DMC-12
-
- WE’RE HELPING BUILD WEB3
-
@@ -48,130 +70,334 @@ const LandingPage = () => {
lineHeight="23px"
style={{}}
>
-
-
-
+
-
- DMC-12 collaborates on web3 projects and accelerates their build.
- Whether you're just starting, have built something sweet in web3
- and need some skilful input, or want someone to bounce ideas off,
- you can speak to us.
+ DMC-12 is a collective of software engineers and product heads
+ that provide founders and organisations with professional services
+ for web3 application designs, development, NFT projects, DAO
+ tooling, and loads more.
-
-
-
-
- THING S WE DO
-
-
-
-
-
- }
- TextProps={{
- size: "36px",
- family: "Death Star",
- weight: "400",
- lineHeight: "41px",
- }}
- textPosition="45%"
- >
- TOKENOMICS
-
-
- }
- TextProps={{
- size: "36px",
- family: "Death Star",
- weight: "400",
- lineHeight: "41px",
- }}
- textPosition="41%"
- >
-
- SMART CONTRACTS
-
-
-
- }
- TextProps={{
- size: "36px",
- family: "Death Star",
- weight: "400",
- lineHeight: "41px",
- }}
- textPosition="45%"
- >
- DE-FI
-
-
-
-
- }
- TextProps={{
- size: "36px",
- family: "Death Star",
- weight: "400",
- lineHeight: "41px",
- }}
- textPosition="25%"
- >
+
+
+
+ Workflow
+
+
+ Collaboration is straightforward and easy:
+
+
+
+ }
+ text={"Submit a project brief"}
+ />
+ }
+ text={"Receive a proposal from our experienced team"}
+ />
+ }
+ text={"Review, agree, and pay as we complete your project"}
+ />
+
+
+
+
+ PROJECTS
+
+
+
+
+
+
+
+ CLIPTO
+
+
+
+
+
+
+ {"View Project ->"}
+
+
+
+
+
+
+ DEVNODE
+
+
+
+
+
+
+ {"View Project ->"}
+
+
+
+
+
+
+
+
+ Build fast with dmc-12
+
+
+
+
- PLATFORM CONSULTING
+ Over the years we’ve developed building styles that are high
+ quality and rapid. From dynamic interfaces to scalable backends,
+ we provide high quality execution at every step. Here’s a
+ snapshot of our problem solving skills.
-
-
-
-
-
-
-
-
- Stuff we'’ve helped build
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ GROWING DEVELOPER ECOSYSTEMS
+
+
+
+ Rapid prototype development.
+ Test your web3 infrastructure ideas and then scale
+
+
+
+
+
+
+
+ NFT MARKET DEVELOPMENT
+
+
+
+ Go from 0 to 1.
+ Build an NFT marketplace that creators and fans love
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tech Stack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stuff we'’ve helped build
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>
);
diff --git a/src/Pages/LandingPage/Style.tsx b/src/Pages/LandingPage/Style.tsx
index c672a05..ae76da8 100644
--- a/src/Pages/LandingPage/Style.tsx
+++ b/src/Pages/LandingPage/Style.tsx
@@ -10,9 +10,10 @@ export const HeadingWrapper = styled.div`
flex-direction: column;
margin: 5% 10px;
margin-top: 0px;
-
+
@media only screen and (max-width: 600px) {
& div:nth-child(1) {
+ margin: 80% 10px;
font-size: 40px;
line-height: 46px;
}
@@ -26,13 +27,13 @@ export const HeadingWrapper = styled.div`
export const FunnyTextWrapper = styled.div`
margin:10px 0px;
padding:15px;
- margin-top: 88%;
+ margin-top: 10%;
& div {
width: 80%;
margin: auto;
}
@media only screen and (max-width: 768px) {
- margin-top: 110%;
+ margin-top: 0;
& div {
width: 100%;
}
@@ -48,24 +49,23 @@ export const FunnyTextWrapper = styled.div`
`;
export const AboutTextWrapper = styled.div`
- padding:54px 0;
- width:100%;
+ padding: 54px 0;
+ width: 100%;
overflow-x: hidden;
overflow-y: hidden;
- background-color:#09042C;
+ background-color: #040217;
//background-image: url("/assets/2.png");
background-repeat: no-repeat;
background-size: cover;
justify-content: center;
- font-family: "Death Star";
font-size: 32px;
font-weight: 400;
line-height: 28px;
letter-spacing: 0em;
text-align: center;
- @media only screen and (max-width: 900px){
+ @media only screen and (max-width: 900px) {
//background-image: url("/assets/2.png");
- background-color:#09042C;
+ background-color: #040217;
background-position: center top 0px;
}
& div {
@@ -78,7 +78,7 @@ export const AboutTextWrapper = styled.div`
}
}
@media only screen and (max-width: 600px) {
- margin-top: 20%;
+ margin-top: 10%;
& div {
width: 80%;
}
@@ -174,18 +174,81 @@ export const PastWorkWrapper = styled.div`
}
`;
+export const TechStackWrapper = styled(PastWorkWrapper)`
+ @media only screen and (max-width: 768px) {
+ padding-top: 0px;
+ }
+`;
+
+export const WorkFlowWrapper = styled(PastWorkWrapper)`
+ @media only screen and (max-width: 600px) {
+ & div:nth-child(1) {
+ font-family: "Death Star";
+ font-style: normal;
+ font-weight: 400;
+ font-size: 32px;
+ line-height: 37px;
+ text-align: center;
+ margin-top: 0px !important;
+ }
+ & div:nth-child(2) {
+ font-family: "Raven Sans NBP";
+ font-style: normal;
+ font-weight: 400;
+ font-size: 10px;
+ line-height: 253.54%;
+ text-align: center;
+ padding: 10px;
+ margin-top: 30px !important;
+ }
+ }
+`;
+
+export const ProjectWrapper = styled(PastWorkWrapper)``;
+
+export const CollaborationWrapper = styled.div`
+ display: flex;
+ flex-wrap: wrap;
+ gap: 55px;
+ align-items: center;
+ justify-content: center;
+ margin-top: 14px;
+
+ @media only screen and (max-width: 768px) {
+ margin: 0 20px;
+ }
+
+ @media only screen and (max-width: 600px) {
+ & div > div {
+ font-family: "Raven Sans NBP";
+ font-style: normal;
+ font-weight: 400;
+ font-size: 24px;
+ line-height: 48px;
+ text-align: center;
+ word-break: break-word;
+ }
+ & > div {
+ padding: 25px;
+ }
+ }
+`;
+
export const CompanyLogo = styled.div`
margin: 10px auto;
display: flex;
- justify-content: space-between;
+ flex-wrap: wrap;
+ justify-content: center;
align-items: center;
width: 50%;
+ gap: 50px;
text-align: center;
@media only screen and (max-width: 1200px) {
width: 60%;
}
@media only screen and (max-width: 900px) {
width: 70%;
+ gap: 0px;
}
@media only screen and (max-width: 768px) {
width: 50%;
@@ -210,15 +273,104 @@ export const PastWorkSection = styled.section`
margin: 20px 10px 70px 10px;
margin-bottom: 10%;
`;
+
+export const TechStackSection = styled(PastWorkSection)`
+ margin-bottom: 5%;
+`;
+
+export const ProjectSection = styled(PastWorkSection)`
+ @media only screen and (max-width: 768px) {
+ display: none;
+ }
+`;
+
+export const WorkflowSection = styled.div`
+ background-image: url("/assets/workflow-background.png");
+ background-repeat: no-repeat;
+ background-size: cover;
+ padding-bottom: 257px;
+ @media only screen and (max-width: 768px) {
+ padding-bottom: 136px;
+ }
+`;
+
export const BottomSectionWrapper = styled.div`
overflow-y: hidden;
- background-color:#09032B;
- background-image: url("/assets/3.png");
+`;
+
+export const ProjectListContainer = styled.div`
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: column;
+ gap: 200px;
+ margin-top: 80px;
+ margin-bottom: 80px;
+`;
+
+export const ProjectContainer = styled.div`
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ width: 100%;
+ padding: 0px 85px;
+ box-sizing: border-box;
+ justify-content: space-between;
+ align-items: center;
+`;
+
+export const ImageHolder = styled.div`
+ width: 45%;
+ height: 381px;
+ position: relative;
+ background-color: #040217;
background-repeat: no-repeat;
background-size: cover;
+ background-position: center top;
+
+ border: 2px solid rgba(254, 254, 254, 0.6);
+ box-shadow: 0px 4px 62px 11px rgba(255, 255, 255, 0.2);
+ border-radius: 25px;
`;
+
export const LandingPageHr = styled.div`
@media only screen and (max-width: 900px) {
display: none;
}
`;
+
+export const TextContanier = styled.div`
+ display: flex;
+ flex-direction: column;
+ justiy-content: space-between;
+ height: 100%;
+ width: 45%;
+ position: relative;
+ margin: 10px;
+`;
+
+export const ProjectsMobileTitle = styled.div`
+ display: none;
+ @media only screen and (max-width: 768px) {
+ display: block;
+ padding-top: 100px;
+ }
+`;
+
+export const ProjectMobileSection = styled.div`
+ display: none;
+ @media only screen and (max-width: 768px) {
+ display: block;
+ padding: 20px;
+ width: 100%;
+ height: auto;
+ box-sizing: border-box;
+ }
+`;
+
+export const MobileProjectCard = styled.div`
+ display: none;
+ @media only screen and (max-width: 768px) {
+ display: flex;
+ flex-direction: column;
+ }
+`;
diff --git a/src/Pages/ProjectDetailsPage/ProjectDetailPage.tsx b/src/Pages/ProjectDetailsPage/ProjectDetailPage.tsx
new file mode 100644
index 0000000..6ba35b4
--- /dev/null
+++ b/src/Pages/ProjectDetailsPage/ProjectDetailPage.tsx
@@ -0,0 +1,70 @@
+import React from "react";
+import Text from "../../components/Text/Text";
+import {
+ Description,
+ ImagesWrapper,
+ ParagraphWrapper,
+ GlobalStyle,
+ ProjectTitleSection,
+} from "./Style";
+import { ProjectPageProps, ParagraphProps } from "./types";
+
+const Paragraph = ({ title, description }: ParagraphProps) => {
+ return (
+
+
+ {title}
+
+
+
+ {description}
+
+
+
+ );
+};
+
+const ProjectDetailsPage = (props: ProjectPageProps) => {
+ // const elements = window.document.getElementsByTagName("html");
+ // elements[0].style.backgroundImage = `url("")`;
+
+ return (
+ <>
+
+
+
+ {props.title}
+
+
+
+
+
+
+
+ {props.images.map((image, index) => {
+ return (
+
+ );
+ })}
+
+ >
+ );
+};
+
+export default ProjectDetailsPage;
diff --git a/src/Pages/ProjectDetailsPage/Style.tsx b/src/Pages/ProjectDetailsPage/Style.tsx
new file mode 100644
index 0000000..e1ce1e2
--- /dev/null
+++ b/src/Pages/ProjectDetailsPage/Style.tsx
@@ -0,0 +1,74 @@
+import styled, { createGlobalStyle } from "styled-components";
+
+export const GlobalStyle = createGlobalStyle`
+ html {
+ height:100%;
+ width:100%;
+ margin:0;
+ padding:0;
+ overflow-x: hidden;
+ background-color: #040217;
+ background-image: none;
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center top;
+ @media only screen and (max-width: 768px){
+ background-image: none;
+ background-position: center top 0px;
+ }
+ }
+ body {
+ height:100%;
+ width:100%;
+ margin:0;
+ padding:0;
+ }
+`;
+
+export const ParagraphWrapper = styled.div`
+ display: grid;
+ grid-template-columns: auto auto;
+ gap: 117px;
+ margin: 15% 10%;
+
+ @media only screen and (max-width: 768px) {
+ grid-template-columns: auto;
+ gap: 80px;
+ }
+`;
+
+export const ImagesWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ gap: 200px;
+ margin: 20px 10% 20%;
+
+ @media only screen and (max-width: 768px) {
+ gap: 100px;
+ }
+`;
+
+export const Description = styled.div`
+ margin-top: 40px;
+ div {
+ text-align: left;
+ }
+
+ @media only screen and (max-width: 768px) {
+ div {
+ text-align: center;
+ }
+ }
+`;
+
+export const ProjectTitleSection = styled.section`
+ @media only screen and (min-width: 600px) {
+ margin-top: 200px;
+ margin-bottom: 100px;
+ }
+ @media only screen and (max-width: 600px) {
+ & div:nth-child(1) {
+ font-size: 45px;
+ }
+ }
+`;
diff --git a/src/Pages/ProjectDetailsPage/types.tsx b/src/Pages/ProjectDetailsPage/types.tsx
new file mode 100644
index 0000000..bb18a35
--- /dev/null
+++ b/src/Pages/ProjectDetailsPage/types.tsx
@@ -0,0 +1,13 @@
+
+export interface ProjectPageProps {
+ title: string;
+ cover: string;
+ problem: string;
+ solution: string;
+ images: string[];
+}
+
+export interface ParagraphProps {
+ title: string;
+ description: string;
+}
diff --git a/src/Pages/ProjectPage/ProjectPage.tsx b/src/Pages/ProjectPage/ProjectPage.tsx
new file mode 100644
index 0000000..1321dbc
--- /dev/null
+++ b/src/Pages/ProjectPage/ProjectPage.tsx
@@ -0,0 +1,103 @@
+import react from "react";
+import { Link } from "react-router-dom";
+import Footer from "../../components/Footer/Footer";
+import Header from "../../components/Header/Header";
+import Text from "../../components/Text/Text";
+import {
+ GlobalStyle,
+ HeadingWrapper,
+ MobileProjectCard,
+ ProjectMobileSection,
+} from "./Style";
+
+const ProjectPage = () => {
+ return (
+ <>
+
+
+
+
+
+
+ CLIPTO
+
+
+
+
+
+
+ {"View Project ->"}
+
+
+
+
+
+
+ DEVNODE
+
+
+
+
+
+
+ {"View Project ->"}
+
+
+
+
+
+ >
+ );
+};
+
+export default ProjectPage;
diff --git a/src/Pages/ProjectPage/Style.tsx b/src/Pages/ProjectPage/Style.tsx
new file mode 100644
index 0000000..81b3381
--- /dev/null
+++ b/src/Pages/ProjectPage/Style.tsx
@@ -0,0 +1,77 @@
+import styled, { createGlobalStyle } from "styled-components";
+
+export const GlobalStyle = createGlobalStyle`
+ html {
+ height:100%;
+ width:100%;
+ margin:0;
+ padding:0;
+ overflow-x: hidden;
+ background-color: #040217;
+ background-image:none;
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center top;
+ @media only screen and (max-width: 768px){
+ background-image: url("/assets/ProjectBackgroundMobile.png");
+ background-position: center top 0px;
+ }
+ }
+ body {
+ height:100%;
+ width:100%;
+ margin:0;
+ padding:0;
+ }
+`;
+export const ProjectPageWrapper = styled.div`
+ width: 100%;
+ height: auto;
+`;
+
+export const HeadingWrapper = styled.div`
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ margin: 15% 10px;
+ @media only screen and (max-width: 768px) {
+ & div:nth-child(1) {
+ margin: 80% 10px;
+ font-size: 40px;
+ line-height: 46px;
+ }
+ & div:nth-child(2) {
+ font-size: 10px;
+ line-height: 20px;
+ }
+ }
+`;
+export const ProjectsMobileTitle = styled.div`
+ display: none;
+ @media only screen and (max-width: 768px) {
+ display: block;
+ padding-top: 100px;
+ }
+`;
+
+export const ProjectMobileSection = styled.div`
+ display: block;
+ padding: 20px;
+ width: 100%;
+ height: auto;
+ box-sizing: border-box;
+ background-color: #040217;
+`;
+
+export const MobileProjectCard = styled.div`
+ display: flex;
+ flex-direction: column;
+ @media only screen and (min-width: 768px) {
+ margin-bottom: 50px;
+ }
+ @media only screen and (min-width: 600px) {
+ & div:nth-child(1) {
+ font-size: 45px;
+ }
+ }
+`;
diff --git a/src/Style.tsx b/src/Style.tsx
index b9513fb..c6af6d0 100644
--- a/src/Style.tsx
+++ b/src/Style.tsx
@@ -8,13 +8,13 @@ export const GlobalStyle = createGlobalStyle`
margin:0;
padding:0;
overflow-x: hidden;
- background-color:#09032B;
- background-image: url("/assets/1.png");
+ background-color: #040217;
+ background-image: url("/assets/background.png");
background-repeat: no-repeat;
background-size: cover;
background-position: center top;
@media only screen and (max-width: 768px){
- background-image: url("/assets/dmc12-background-mobile.png");
+ background-image: url("/assets/background-mobile.png");
background-position: center top 0px;
}
}
diff --git a/src/api/projects.ts b/src/api/projects.ts
new file mode 100644
index 0000000..980b013
--- /dev/null
+++ b/src/api/projects.ts
@@ -0,0 +1,33 @@
+interface Project {
+ title: string;
+ problem: string;
+ solution: string;
+ cover: string;
+ images: string[];
+}
+
+export const Projects: Project[] = [
+ {
+ title: "DEVNODE",
+ problem: "Developers spend lots of time searching a variety of internet platforms to find solutions to their project problems. Each platform represents siloed information and user-based knowledge that is difficult to discover and learn from. Our objectives was to explore the feasibility of breaking down these silos through a prototype and MVP that facilitates cross-platform Q&A.\n",
+ solution: "We developed a prototype that utilises decentralised infrastructure and Discord to allow communities from various platforms to collaborate and share knowledge seamlessly, resulting in faster and higher-quality learning experiences. We are now moving forward with the MVP, which will aim to include more communities and an incentivisation protocol for contributions.\n",
+ cover: "/assets/devnode/devnode_cover.png",
+ images: [
+ "/assets/devnode/devnode_1.png",
+ "/assets/devnode/devnode_2.png",
+ "/assets/devnode/devnode_3.png",
+ ],
+ },
+ {
+ title: "CLIPTO",
+ problem: "Build an NFT video marketplace for creators and their audiences. The platform needed to allow anyone to create a creator profile and accept requests for NFT video content for personal and business use. The product had to be user-friendly, allowing creators to easily sign up and users to connect their wallets and request NFT videos from their favourite creators with ease.\n",
+ solution: "We built an MVP and beyond solution that integrated the Clipto community. Our initial focus was on creating the core user experiences. Users can connect their wallet, become creators, and accept requests, while other users can request NFT video content from creators and make payments via a smart contract. \n" +
+ "Beyond MVP deliverables included a separate business button, a bounty system that allows users to request NFT videos from creators not on the platform, and a partnership with Lens Protocol to enable users to share their NFT video content directly on the Lens platform.",
+ cover: "/assets/clipto/clipto_cover.png",
+ images: [
+ "/assets/clipto/clipto_1.png",
+ "/assets/clipto/clipto_2.png",
+ "/assets/clipto/clipto_3.png",
+ ],
+ }
+];
diff --git a/src/components/Buttons/PrimaryButton.tsx b/src/components/Buttons/PrimaryButton.tsx
index 9d4e3da..476f28b 100644
--- a/src/components/Buttons/PrimaryButton.tsx
+++ b/src/components/Buttons/PrimaryButton.tsx
@@ -3,14 +3,14 @@ import { StyledPrimaryButton } from "./Style";
import { PrimaryButtonProps } from "./types";
const PrimaryButton = ({
- width,
- height,
text,
onClick,
+ icon
}: PrimaryButtonProps) => {
return (
-
+
{text}
+ {icon ? icon : null}
);
};
diff --git a/src/components/Buttons/Style.tsx b/src/components/Buttons/Style.tsx
index bcd4232..d6f7ffe 100644
--- a/src/components/Buttons/Style.tsx
+++ b/src/components/Buttons/Style.tsx
@@ -1,25 +1,32 @@
import React from "react";
import styled from "styled-components";
-import { ButtonProps } from "./types";
export const StyledPrimaryButton = styled.button`
+ display: flex;
+ flex-wrap: nowrap;
+ gap: 18px;
+ align-items: center;
box-sizing: border-box;
- width: ${(props: ButtonProps) => props.width || "224px"};
- height: ${(props: ButtonProps) => props.height || "63px"};
border: 4px solid #ffffff;
cursor: pointer;
color: white;
font-style: normal;
text-align: center;
- font-family: "Death Star";
- letter-spacing: 0.05em;
- font-weight: 400;
+ font-family: "Advent Pro", sans-serif;
+ font-weight: 600;
font-size: 2rem;
line-height: 0;
background-color: rgba(255, 255, 255, .2);
border-radius: 28px;
- padding: 20px;
+ padding: 10px 20px;
&:hover {
+ border-radius: 12px;
+ background-color: rgba(255, 255, 255, 0.35);
+ }
+
+ @media only screen and (max-width: 950px) {
+ font-size: 1.5rem;
+ line-height: 0px;
border: 2px solid #ffffff;
}
@media only screen and (max-width: 768px) {
diff --git a/src/components/Buttons/types.tsx b/src/components/Buttons/types.tsx
index 7c87b46..1f7ba2e 100644
--- a/src/components/Buttons/types.tsx
+++ b/src/components/Buttons/types.tsx
@@ -1,9 +1,8 @@
-export interface ButtonProps {
- width?: string;
- height?: string;
-}
+import React from "react";
-export interface PrimaryButtonProps extends ButtonProps {
+export interface PrimaryButtonProps {
text: string;
onClick?: React.MouseEventHandler;
+
+ icon?: any;
}
diff --git a/src/components/Cards/CollabCard.tsx b/src/components/Cards/CollabCard.tsx
new file mode 100644
index 0000000..33a8f7a
--- /dev/null
+++ b/src/components/Cards/CollabCard.tsx
@@ -0,0 +1,17 @@
+import React from "react";
+import { CollabCardProps } from "./types";
+import { CollabCardContainer } from "./Style";
+import Text from "../Text/Text";
+
+const CollabCard = ({ icon, text }: CollabCardProps) => {
+ return (
+
+ {icon}
+
+ {text}
+
+
+ );
+};
+
+export { CollabCard };
diff --git a/src/components/Cards/ProjectCard.tsx b/src/components/Cards/ProjectCard.tsx
new file mode 100644
index 0000000..964bdac
--- /dev/null
+++ b/src/components/Cards/ProjectCard.tsx
@@ -0,0 +1,48 @@
+import {ProjectCardWrapper} from "./Style";
+import Text from "../Text/Text";
+import React from "react";
+import {ProjectCardProps} from "./types";
+
+const ProjectCard = ({ backgroundColor, heading, title, onClick }: ProjectCardProps) => {
+ return (
+
+
+
+ { heading }
+
+
+
+
+ { title }
+
+
+
+
+
+ {"View project ->"}
+
+
+
+
+ );
+}
+
+export { ProjectCard };
diff --git a/src/components/Cards/Style.tsx b/src/components/Cards/Style.tsx
new file mode 100644
index 0000000..9028090
--- /dev/null
+++ b/src/components/Cards/Style.tsx
@@ -0,0 +1,38 @@
+import styled from "styled-components";
+
+export const CollabCardContainer = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 45px;
+ padding: 46px 62px;
+
+ max-width: 280px;
+ height: 450px;
+ border: 7px solid #fbfbfb;
+ border-radius: 28px;
+
+ font-family: Raven Sans NBP;
+ font-style: normal;
+ font-weight: 700;
+ font-size: 48px;
+ line-height: 57px;
+ text-align: center;
+ color: #ffffff;
+ @media only screen and (max-width: 768px) {
+ height: auto;
+ padding: 46px 42px;
+ }
+`;
+
+export const ProjectCardWrapper = styled.div.attrs(
+ (props: { color: string }) => props
+)`
+ width: 100%;
+ max-width: 284px;
+ height: auto;
+ padding: 25px;
+ box-sizing: border-box;
+ background: ${(props) => props.color};
+ border-radius: 28px;
+`;
diff --git a/src/components/Cards/types.tsx b/src/components/Cards/types.tsx
new file mode 100644
index 0000000..a070053
--- /dev/null
+++ b/src/components/Cards/types.tsx
@@ -0,0 +1,13 @@
+import {ReactElement} from "react";
+
+export interface CollabCardProps {
+ icon: ReactElement,
+ text: string;
+}
+
+export interface ProjectCardProps {
+ backgroundColor: string;
+ heading: string;
+ title: string;
+ onClick: any;
+}
diff --git a/src/components/Footer/DesktopFooter.tsx b/src/components/Footer/DesktopFooter.tsx
index 1fdc5b2..11fe11a 100644
--- a/src/components/Footer/DesktopFooter.tsx
+++ b/src/components/Footer/DesktopFooter.tsx
@@ -1,7 +1,7 @@
-import { LogoIcon } from "../Icons";
-import { DiscordIcon, TwitterIcon, UnknownIcon } from "../Icons/Icons";
+import {GithubIcon, LogoIcon} from "../Icons";
+import { TwitterIcon, UnknownIcon } from "../Icons/Icons";
import Text from "../Text/Text";
-import { FootWrapper, LeftWrapper, RightWrapper, RowWrapper } from "./Style";
+import {FootWrapper, LeftWrapper, RightWrapper, RowWrapper, SocialWrapper} from "./Style";
const DesktopFooter = () => {
return (
@@ -19,27 +19,31 @@ const DesktopFooter = () => {
- helping build web3
+ Where talented founders accelerate web3 projects..
-
- stay connected
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Footer/MobileFooter.tsx b/src/components/Footer/MobileFooter.tsx
index 1e97630..48eedd2 100644
--- a/src/components/Footer/MobileFooter.tsx
+++ b/src/components/Footer/MobileFooter.tsx
@@ -1,7 +1,7 @@
-import { LogoIcon } from "../Icons";
-import { DiscordIcon, TwitterIcon, UnknownIcon } from "../Icons/Icons";
+import {GithubIcon, LogoIcon} from "../Icons";
+import { TwitterIcon, UnknownIcon } from "../Icons/Icons";
import Text from "../Text/Text";
-import { MobileFootWrapper, Socials } from "./Style";
+import {MobileFootWrapper, Socials, SocialWrapper} from "./Style";
const MobileFooter = () => {
return (
@@ -10,9 +10,15 @@ const MobileFooter = () => {
stay connected
-
-
-
+
+
+
+
+
+
+
+
+
{
>
DMC-12
-
- helping build web3
-
);
diff --git a/src/components/Footer/Style.tsx b/src/components/Footer/Style.tsx
index cd48f87..ec10043 100644
--- a/src/components/Footer/Style.tsx
+++ b/src/components/Footer/Style.tsx
@@ -3,23 +3,44 @@ import styled from "styled-components";
export const FootWrapper = styled.div`
display: flex;
+ background-image: url("/assets/footer.png");
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-color: black;
flex-wrap: wrap;
justify-content: space-between;
text-align: left;
- margin: 20px;
- padding: 200px 10px 40px 10px;
+ padding: 57px 50px 57px 50px;
box-sizing: border-box;
@media only screen and (max-width: 850px) {
display: none;
}
`;
+export const SocialWrapper = styled.div`
+ box-sizing: border-box;
+ width: 80px;
+ height: 80px;
+ border-radius: 80px;
+ background: #171538;
+ border: 2px solid #FFFFFF;
+
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ @media only screen and (max-width: 850px) {
+ width: 70px;
+ height: 65px;
+ }
+`;
+
export const Socials = styled.div`
display: flex;
flex-direction: row;
gap: 20px;
margin-top: 35px;
- margin-bottom: 20px;
+ margin-bottom: 40px;
@media only screen and (max-width: 768px) {
justify-content: space-evenly;
@@ -47,7 +68,7 @@ export const RightWrapper = styled.div`
export const RowWrapper = styled.div`
display: flex;
flex-direction: row;
- align-items: center;
+ align-items: end;
gap: 20px;
@media only screen and (max-width: 768px) {
@@ -62,7 +83,14 @@ export const MobileFootWrapper = styled.div`
flex-direction: column;
align-items: center;
text-align: center;
- padding-bottom: 80px;
+ padding-bottom: 122px;
+ padding-top: 50px;
+
+ background-image: url("/assets/footer-mobile.png");
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-color: black;
+
@media only screen and (min-width: 851px) {
display: none;
}
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index a981e15..e6cd72e 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -1,30 +1,59 @@
-import React from "react";
-import { useScreenSize } from "../../hooks";
+import React, { useEffect } from "react";
import PrimaryButton from "../Buttons/PrimaryButton";
-import { LogoIcon } from "../Icons";
-import { NavWrapper, MobileHeader, DesktopHeader } from "./Style";
+import { ChatIcon, GithubIcon, LogoIcon } from "../Icons";
+import { NavWrapper, Logo, DesktopHeader, MobileHeader } from "./Style";
+import { useNavigate } from "react-router-dom";
+import Menu from "../Menu/Menu";
const Header = () => {
- const { isMobile, isLargeMobile, isTablet } = useScreenSize();
+ const navigate = useNavigate();
const openMailClient = () => {
const discord = "mailto:hello@dmc12.xyz";
window.open(discord, "_blank");
};
+ const openGithub = () => {
+ const github = "https://github.com/dmc12-xyz";
+ window.open(github, "_blank");
+ };
+
+ const openForm = () => {
+ const discord = "https://forms.gle/FDnpYSYCxHu8Q7Jv6";
+ window.open(discord, "_blank");
+ };
+
+ const redirectToHome = () => {
+ navigate("/");
+ };
+
return (
-
-
-
+
+
+
+
+
+ }
+ />
+ }
/>
+
+
+
+
+
);
};
diff --git a/src/components/Header/Style.tsx b/src/components/Header/Style.tsx
index fd31205..9ec9931 100644
--- a/src/components/Header/Style.tsx
+++ b/src/components/Header/Style.tsx
@@ -16,7 +16,7 @@ export const NavWrapper = styled.nav`
}
`;
-export const MobileHeader = styled.div`
+export const Logo = styled.div`
width: 12.7vw;
max-width: 170px;
height: auto;
@@ -27,8 +27,21 @@ export const MobileHeader = styled.div`
`;
export const DesktopHeader = styled.div`
+ display: flex;
+ gap: 20px;
height: 63px;
@media only screen and (max-width: 768px) {
- height: auto;
+ display: none;
+ }
+`;
+
+export const MobileHeader = styled.div`
+ display: flex;
+ align-items: center;
+ gap: 30px;
+ height: 63px;
+ margin: 0px 30px;
+ @media only screen and (min-width: 768px) {
+ display: none;
}
`;
diff --git a/src/components/Icons/Ceramic.png b/src/components/Icons/Ceramic.png
new file mode 100644
index 0000000..9d16d4b
Binary files /dev/null and b/src/components/Icons/Ceramic.png differ
diff --git a/src/components/Icons/ChatIcon.tsx b/src/components/Icons/ChatIcon.tsx
new file mode 100644
index 0000000..fc5c9a7
--- /dev/null
+++ b/src/components/Icons/ChatIcon.tsx
@@ -0,0 +1,23 @@
+import React from "react";
+import {IconProps} from "./types";
+
+const ChatIcon = (
+ {
+ width = "45",
+ height = "45",
+ classes = "",
+ }: IconProps) => {
+ return (
+
+
+
+ );
+}
+
+export {ChatIcon};
diff --git a/src/components/Icons/CheckIcon.tsx b/src/components/Icons/CheckIcon.tsx
new file mode 100644
index 0000000..1a09f5a
--- /dev/null
+++ b/src/components/Icons/CheckIcon.tsx
@@ -0,0 +1,25 @@
+import React from "react";
+import {IconProps} from "./types";
+
+const CheckIcon = (
+ {
+ width = "103",
+ height = "103",
+ classes = "",
+ }: IconProps) => {
+ return (
+
+
+
+ );
+};
+
+export {CheckIcon};
diff --git a/src/components/Icons/Close.tsx b/src/components/Icons/Close.tsx
new file mode 100644
index 0000000..5c3c078
--- /dev/null
+++ b/src/components/Icons/Close.tsx
@@ -0,0 +1,27 @@
+import React from "react";
+import { IconProps } from "./types";
+
+const CloseIcon = ({
+ width = "18",
+ height = "17",
+ classes = "",
+ onClick = () => {},
+}: IconProps) => {
+ return (
+
+
+
+ );
+};
+
+export { CloseIcon };
diff --git a/src/components/Icons/DevNode.png b/src/components/Icons/DevNode.png
new file mode 100644
index 0000000..94db8cb
Binary files /dev/null and b/src/components/Icons/DevNode.png differ
diff --git a/src/components/Icons/Github.tsx b/src/components/Icons/Github.tsx
new file mode 100644
index 0000000..0d46cc1
--- /dev/null
+++ b/src/components/Icons/Github.tsx
@@ -0,0 +1,27 @@
+import React from "react";
+import {IconProps} from "./types";
+
+const GithubIcon = (
+ {
+ width = "45",
+ height = "45",
+ classes = "",
+ }: IconProps) => {
+ return (
+
+
+
+
+
+ );
+}
+
+export {GithubIcon};
diff --git a/src/components/Icons/Hamburgur.tsx b/src/components/Icons/Hamburgur.tsx
new file mode 100644
index 0000000..5f7231e
--- /dev/null
+++ b/src/components/Icons/Hamburgur.tsx
@@ -0,0 +1,27 @@
+import React from "react";
+import { IconProps } from "./types";
+
+const HamburgurIcon = ({
+ width = "24",
+ height = "24",
+ classes = "",
+ onClick = () => {},
+}: IconProps) => {
+ return (
+
+
+
+ );
+};
+
+export { HamburgurIcon };
diff --git a/src/components/Icons/Icons.tsx b/src/components/Icons/Icons.tsx
index 2e8b28f..8506071 100644
--- a/src/components/Icons/Icons.tsx
+++ b/src/components/Icons/Icons.tsx
@@ -5,12 +5,15 @@ const LogoIcon = ({
width = "170px",
height = "100px",
classes = "",
+ onClick,
}: IconProps) => {
return (
{
+const TwitterIcon = (
+ {
+ width="41",
+ height="37",
+ classes = "",
+ }) => {
return (
-
-
+
);
};
@@ -154,26 +153,23 @@ const DiscordIcon = () => {
);
};
-const UnknownIcon = () => {
+const UnknownIcon = (
+ {
+ width="41",
+ height="37",
+ classes = "",
+ }) => {
return (
-
-
+
);
};
diff --git a/src/components/Icons/MailIcon.tsx b/src/components/Icons/MailIcon.tsx
new file mode 100644
index 0000000..7675f3a
--- /dev/null
+++ b/src/components/Icons/MailIcon.tsx
@@ -0,0 +1,35 @@
+import React from "react";
+import {IconProps} from "./types";
+
+const MailIcon = (
+ {
+ width = "103",
+ height = "103",
+ classes = "",
+ }: IconProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export {MailIcon};
diff --git a/src/components/Icons/Polygon.png b/src/components/Icons/Polygon.png
new file mode 100644
index 0000000..7be721a
Binary files /dev/null and b/src/components/Icons/Polygon.png differ
diff --git a/src/components/Icons/Rust.png b/src/components/Icons/Rust.png
new file mode 100644
index 0000000..df62ed9
Binary files /dev/null and b/src/components/Icons/Rust.png differ
diff --git a/src/components/Icons/Solidity.png b/src/components/Icons/Solidity.png
new file mode 100644
index 0000000..2327d87
Binary files /dev/null and b/src/components/Icons/Solidity.png differ
diff --git a/src/components/Icons/ThunderIcon.tsx b/src/components/Icons/ThunderIcon.tsx
new file mode 100644
index 0000000..70b452e
--- /dev/null
+++ b/src/components/Icons/ThunderIcon.tsx
@@ -0,0 +1,25 @@
+import React from "react";
+import {IconProps} from "./types";
+
+const ThunderIcon = (
+ {
+ width = "103",
+ height = "103",
+ classes = "",
+ }: IconProps) => {
+ return (
+
+
+
+ );
+};
+
+export {ThunderIcon};
diff --git a/src/components/Icons/Typescript.png b/src/components/Icons/Typescript.png
new file mode 100644
index 0000000..50506cc
Binary files /dev/null and b/src/components/Icons/Typescript.png differ
diff --git a/src/components/Icons/dmc12-background.png b/src/components/Icons/dmc12-background.png
deleted file mode 100644
index aaf71de..0000000
Binary files a/src/components/Icons/dmc12-background.png and /dev/null differ
diff --git a/src/components/Icons/index.ts b/src/components/Icons/index.ts
index b47688f..45f25ce 100644
--- a/src/components/Icons/index.ts
+++ b/src/components/Icons/index.ts
@@ -3,3 +3,8 @@ export { Circle } from "./Circle";
export { Triangle } from "./Triangle";
export { Square } from "./Square";
export { Rectangle } from "./Rectangle";
+export { GithubIcon } from "./Github";
+export { ChatIcon } from "./ChatIcon";
+export { ThunderIcon } from "./ThunderIcon";
+export { MailIcon } from "./MailIcon";
+export { CheckIcon } from "./CheckIcon";
diff --git a/src/components/Icons/types.tsx b/src/components/Icons/types.tsx
index aa3de37..f4db91e 100644
--- a/src/components/Icons/types.tsx
+++ b/src/components/Icons/types.tsx
@@ -4,5 +4,5 @@ export interface IconProps {
width?: string;
height?: string;
classes?: string;
- onClick?: MouseEventHandler;
+ onClick?: MouseEventHandler;
}
diff --git a/src/components/Menu/Menu.tsx b/src/components/Menu/Menu.tsx
new file mode 100644
index 0000000..3dfc88e
--- /dev/null
+++ b/src/components/Menu/Menu.tsx
@@ -0,0 +1,94 @@
+import react, { useEffect, useRef, useState } from "react";
+import { MenuWrapper, MenuItem } from "./Style";
+import { HamburgurIcon } from "../Icons/Hamburgur";
+import { CloseIcon } from "../Icons/Close";
+import Text from "../Text/Text";
+import { ChatIcon, GithubIcon } from "../Icons";
+import { Link } from "react-router-dom";
+const Menu = () => {
+ const [close, setClose] = useState(true);
+ const closeRef: any = useRef(null);
+
+ useEffect(() => {
+ document.addEventListener("mousedown", closeMenu);
+ return () => {
+ document.removeEventListener("mousedown", closeMenu);
+ };
+ }, []);
+
+ const handleClose = () => {
+ setClose(!close);
+ };
+ const closeMenu = (e: any) => {
+ if (closeRef.current && !closeRef.current?.contains(e.target)) {
+ setClose(true);
+ }
+ };
+ const listItems = [
+ {
+ text: "submit a form",
+ hasIcon: false,
+ Icon: "",
+ link: "https://forms.gle/FDnpYSYCxHu8Q7Jv6",
+ },
+ {
+ text: "OUR GITHUB",
+ hasIcon: true,
+ Icon: ,
+ link: "https://github.com/dmc12-xyz",
+ },
+ {
+ text: "BUILD WIHT US",
+ hasIcon: true,
+ Icon: ,
+ link: "mailto:hello@dmc12.xyz",
+ },
+ {
+ text: "VIEW PROJECTS",
+ hasIcon: false,
+ Icon: "",
+ link: "/projects",
+ },
+ ];
+ return (
+ <>
+ {close ? (
+
+ ) : (
+
+ )}
+ {!close && (
+
+ {listItems.map((data, index) => {
+ return (
+ {
+ handleClose();
+ }}
+ >
+
+
+ {data.text}
+
+ {data.hasIcon && data.Icon}
+
+
+ );
+ })}
+
+ )}
+ >
+ );
+};
+
+export default Menu;
diff --git a/src/components/Menu/Style.tsx b/src/components/Menu/Style.tsx
new file mode 100644
index 0000000..25cd11b
--- /dev/null
+++ b/src/components/Menu/Style.tsx
@@ -0,0 +1,27 @@
+import styled from "styled-components";
+
+export const MenuWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: auto;
+ padding: 30px;
+ box-sizing: border-box;
+ position: absolute;
+ z-index: 3;
+ right: 0px;
+ left: 0px;
+ top: 100px;
+`;
+
+export const MenuItem = styled.div`
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 10px;
+ border-bottom: 1px solid #ffffff;
+ padding: 10px 0px;
+ &:hover {
+ background-color: rgba(255, 255, 255, 0.5);
+ }
+`;
diff --git a/src/components/ShapeContainer/ShapeContainer.tsx b/src/components/ShapeContainer/ShapeContainer.tsx
index bd39620..96189e4 100644
--- a/src/components/ShapeContainer/ShapeContainer.tsx
+++ b/src/components/ShapeContainer/ShapeContainer.tsx
@@ -1,4 +1,3 @@
-import Reawct, { Children } from "react";
import { ShapeWrapper } from "../../Pages/LandingPage/Style";
import Text from "../Text/Text";
interface Props {
diff --git a/src/main.tsx b/src/main.tsx
index d886c9b..3fd3a69 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,7 +1,6 @@
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
-import background from "./components/Icons/dmc12-background.png";
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(