diff --git a/package-lock.json b/package-lock.json index 0bc327b..c4dd6f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "@react-email/tailwind": "^0.0.12", "@vercel/analytics": "^1.1.0", "argon2": "^0.31.1", + "classnames": "^2.5.1", "cloudinary": "^1.41.0", "cookie": "^0.5.0", "date-fns": "^2.30.0", @@ -37,7 +38,7 @@ "passport-local": "^1.0.0", "pino": "^8.14.1", "react": "^18.2.0", - "react-daisyui": "^4.1.2", + "react-daisyui": "^5.0.0", "react-dom": "^18.2.0", "react-email": "^1.9.5", "react-hook-form": "^7.45.2", @@ -45,7 +46,6 @@ "react-icons": "^4.10.1", "react-intersection-observer": "^9.5.2", "react-map-gl": "^7.1.2", - "react-page-scroller": "^3.0.1", "react-responsive-carousel": "^3.2.23", "swr": "^2.2.0", "theme-change": "^2.5.0", @@ -63,10 +63,9 @@ "@types/passport-local": "^1.0.35", "@types/react": "^18.2.15", "@types/react-dom": "^18.2.7", - "@types/sparkpost": "^2.1.5", "@vercel/fetch": "^7.0.0", "autoprefixer": "^10.4.14", - "daisyui": "^3.9.2", + "daisyui": "^4.7.2", "dotenv-cli": "^7.2.1", "eslint": "^8.51.0", "eslint-config-airbnb-base": "15.0.0", @@ -81,8 +80,8 @@ "prettier-plugin-jsdoc": "^1.0.2", "prettier-plugin-tailwindcss": "^0.5.7", "prisma": "^5.7.0", - "tailwindcss": "^3.3.3", - "tailwindcss-animate": "^1.0.6", + "tailwindcss": "^3.4.1", + "tailwindcss-animated": "^1.0.1", "ts-node": "^10.9.1", "typescript": "^5.3.2" } @@ -2109,12 +2108,6 @@ "@types/responselike": "^1.0.0" } }, - "node_modules/@types/caseless": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.3.tgz", - "integrity": "sha512-ZD/NsIJYq/2RH+hY7lXmstfp/v9djGt9ah+xRQ3pcgR79qiKsG4pLl25AI7IcXxVO8dH9GiBE5rAknC0ePntlw==", - "dev": true - }, "node_modules/@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -2376,32 +2369,6 @@ "@types/react": "*" } }, - "node_modules/@types/request": { - "version": "2.48.9", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.9.tgz", - "integrity": "sha512-4mi2hYsvPAhe8RXjk5DKB09sAUzbK68T2XjORehHdWyxFoX2zUnfi1VQ5wU4Md28H/5+uB4DkxY9BS4B87N/0A==", - "dev": true, - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/@types/responselike": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", @@ -2449,22 +2416,6 @@ "@types/node": "*" } }, - "node_modules/@types/sparkpost": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@types/sparkpost/-/sparkpost-2.1.6.tgz", - "integrity": "sha512-lqimYaHi52iIJBge6XZBvLFGBjlZgSlsvUsARALgaYLpsUriPhayYKc8fyP5dgHmjJ6ClumP3BQHYT5Vbci6ew==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/request": "*" - } - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", - "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", - "dev": true - }, "node_modules/@types/unist": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", @@ -3206,49 +3157,6 @@ "dequal": "^2.0.3" } }, - "node_modules/babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", - "dependencies": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - } - }, - "node_modules/babel-polyfill/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/babel-polyfill/node_modules/regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3662,9 +3570,9 @@ } }, "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "node_modules/cli-cursor": { "version": "3.1.0", @@ -3758,11 +3666,6 @@ "color-support": "bin.js" } }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -3926,16 +3829,23 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/culori": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/culori/-/culori-3.3.0.tgz", + "integrity": "sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/daisyui": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.9.4.tgz", - "integrity": "sha512-fvi2RGH4YV617/6DntOVGcOugOPym9jTGWW2XySb5ZpvdWO4L7bEG77VHirrnbRUEWvIEVXkBpxUz2KFj0rVnA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.7.2.tgz", + "integrity": "sha512-9UCss12Zmyk/22u+JbkVrHHxOzFOyY17HuqP5LeswI4hclbj6qbjJTovdj2zRy8cCH6/n6Wh0lTLjriGnyGh0g==", "dependencies": { - "colord": "^2.9", "css-selector-tokenizer": "^0.8", - "postcss": "^8", - "postcss-js": "^4", - "tailwindcss": "^3.1" + "culori": "^3", + "picocolors": "^1", + "postcss-js": "^4" }, "engines": { "node": ">=16.9.0" @@ -5788,26 +5698,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==", - "peer": true - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -6015,15 +5905,6 @@ "node": ">= 0.10" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "peer": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -8201,21 +8082,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "peer": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "peer": true - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -8782,11 +8648,11 @@ } }, "node_modules/react-daisyui": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/react-daisyui/-/react-daisyui-4.1.2.tgz", - "integrity": "sha512-Sx8ziaxKDe/59bw+UxTFOoDSJEuA8iGhgmMbzSAtnhaaZPP20kluHG+1/wY5mBSxfcAuk6oI8fqKcJRp55WzPQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-daisyui/-/react-daisyui-5.0.0.tgz", + "integrity": "sha512-j1cugAxALmIbihycGBh7P9H3UXrfsvqu84qM6O55l7nOKST43IjUkZjmNav/7s0ZaUpa9Y+52mFchUb2zvon1A==", "peerDependencies": { - "daisyui": "^3.0.22", + "daisyui": "^4.4.6", "react": ">=16", "react-dom": ">=16", "tailwindcss": ">=3.2.7" @@ -8985,21 +8851,6 @@ } } }, - "node_modules/react-page-scroller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/react-page-scroller/-/react-page-scroller-3.0.1.tgz", - "integrity": "sha512-1OTlUHOSFCG8wmYzy3wo4dUIugXORzgZZ/Pj4BbkxN3n+Nv5tynfo7kygUiLYgE0QhDJslzZ4lntpCONAlv/vA==", - "dependencies": { - "babel-polyfill": "^6.26.0" - }, - "peerDependencies": { - "babel-polyfill": "^6.26.0", - "prop-types": "^15.6.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router-dom": "^4.3.1" - } - }, "node_modules/react-responsive-carousel": { "version": "3.2.23", "resolved": "https://registry.npmjs.org/react-responsive-carousel/-/react-responsive-carousel-3.2.23.tgz", @@ -9010,41 +8861,6 @@ "react-easy-swipe": "^0.0.21" } }, - "node_modules/react-router": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", - "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", - "peer": true, - "dependencies": { - "history": "^4.7.2", - "hoist-non-react-statics": "^2.5.0", - "invariant": "^2.2.4", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.1", - "warning": "^4.0.1" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-router-dom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz", - "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==", - "peer": true, - "dependencies": { - "history": "^4.7.2", - "invariant": "^2.2.4", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.1", - "react-router": "^4.3.1", - "warning": "^4.0.1" - }, - "peerDependencies": { - "react": ">=15" - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -9354,12 +9170,6 @@ "node": ">=4" } }, - "node_modules/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", - "peer": true - }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -10113,19 +9923,19 @@ "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" }, "node_modules/tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.18.2", + "jiti": "^1.19.1", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -10148,13 +9958,13 @@ "node": ">=14.0.0" } }, - "node_modules/tailwindcss-animate": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", - "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "node_modules/tailwindcss-animated": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tailwindcss-animated/-/tailwindcss-animated-1.0.1.tgz", + "integrity": "sha512-u5wusj89ZwP8I+s8WZlaAd7aZTWBN/XEG6QgMKpkIKmAf3xP1A6WYf7oYIKmGaB10UAQaSqWopi/i1ozzZEs8Q==", "dev": true, "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" + "tailwindcss": ">=3.1.0" } }, "node_modules/tailwindcss/node_modules/arg": { @@ -10241,18 +10051,6 @@ "real-require": "^0.2.0" } }, - "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", - "peer": true - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "peer": true - }, "node_modules/tinyqueue": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", @@ -10740,12 +10538,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", - "peer": true - }, "node_modules/vt-pbf": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", @@ -10756,15 +10548,6 @@ "pbf": "^3.2.1" } }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "peer": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -12392,12 +12175,6 @@ "@types/responselike": "^1.0.0" } }, - "@types/caseless": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.3.tgz", - "integrity": "sha512-ZD/NsIJYq/2RH+hY7lXmstfp/v9djGt9ah+xRQ3pcgR79qiKsG4pLl25AI7IcXxVO8dH9GiBE5rAknC0ePntlw==", - "dev": true - }, "@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -12658,31 +12435,6 @@ "@types/react": "*" } }, - "@types/request": { - "version": "2.48.9", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.9.tgz", - "integrity": "sha512-4mi2hYsvPAhe8RXjk5DKB09sAUzbK68T2XjORehHdWyxFoX2zUnfi1VQ5wU4Md28H/5+uB4DkxY9BS4B87N/0A==", - "dev": true, - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, "@types/responselike": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", @@ -12730,22 +12482,6 @@ "@types/node": "*" } }, - "@types/sparkpost": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@types/sparkpost/-/sparkpost-2.1.6.tgz", - "integrity": "sha512-lqimYaHi52iIJBge6XZBvLFGBjlZgSlsvUsARALgaYLpsUriPhayYKc8fyP5dgHmjJ6ClumP3BQHYT5Vbci6ew==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/request": "*" - } - }, - "@types/tough-cookie": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", - "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", - "dev": true - }, "@types/unist": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.0.tgz", @@ -13263,49 +12999,6 @@ "dequal": "^2.0.3" } }, - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -13582,9 +13275,9 @@ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, "cli-cursor": { "version": "3.1.0", @@ -13652,11 +13345,6 @@ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, - "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -13787,16 +13475,20 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "culori": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/culori/-/culori-3.3.0.tgz", + "integrity": "sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==" + }, "daisyui": { - "version": "3.9.4", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-3.9.4.tgz", - "integrity": "sha512-fvi2RGH4YV617/6DntOVGcOugOPym9jTGWW2XySb5ZpvdWO4L7bEG77VHirrnbRUEWvIEVXkBpxUz2KFj0rVnA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-4.7.2.tgz", + "integrity": "sha512-9UCss12Zmyk/22u+JbkVrHHxOzFOyY17HuqP5LeswI4hclbj6qbjJTovdj2zRy8cCH6/n6Wh0lTLjriGnyGh0g==", "requires": { - "colord": "^2.9", "css-selector-tokenizer": "^0.8", - "postcss": "^8", - "postcss-js": "^4", - "tailwindcss": "^3.1" + "culori": "^3", + "picocolors": "^1", + "postcss-js": "^4" } }, "damerau-levenshtein": { @@ -15171,26 +14863,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "peer": true, - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==", - "peer": true - }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -15340,15 +15012,6 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "peer": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -16835,23 +16498,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "peer": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "peer": true - } - } - }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -17178,9 +16824,9 @@ } }, "react-daisyui": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/react-daisyui/-/react-daisyui-4.1.2.tgz", - "integrity": "sha512-Sx8ziaxKDe/59bw+UxTFOoDSJEuA8iGhgmMbzSAtnhaaZPP20kluHG+1/wY5mBSxfcAuk6oI8fqKcJRp55WzPQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/react-daisyui/-/react-daisyui-5.0.0.tgz", + "integrity": "sha512-j1cugAxALmIbihycGBh7P9H3UXrfsvqu84qM6O55l7nOKST43IjUkZjmNav/7s0ZaUpa9Y+52mFchUb2zvon1A==", "requires": {} }, "react-dom": { @@ -17315,14 +16961,6 @@ "@types/mapbox-gl": ">=1.0.0" } }, - "react-page-scroller": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/react-page-scroller/-/react-page-scroller-3.0.1.tgz", - "integrity": "sha512-1OTlUHOSFCG8wmYzy3wo4dUIugXORzgZZ/Pj4BbkxN3n+Nv5tynfo7kygUiLYgE0QhDJslzZ4lntpCONAlv/vA==", - "requires": { - "babel-polyfill": "^6.26.0" - } - }, "react-responsive-carousel": { "version": "3.2.23", "resolved": "https://registry.npmjs.org/react-responsive-carousel/-/react-responsive-carousel-3.2.23.tgz", @@ -17333,35 +16971,6 @@ "react-easy-swipe": "^0.0.21" } }, - "react-router": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", - "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", - "peer": true, - "requires": { - "history": "^4.7.2", - "hoist-non-react-statics": "^2.5.0", - "invariant": "^2.2.4", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.1", - "warning": "^4.0.1" - } - }, - "react-router-dom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz", - "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==", - "peer": true, - "requires": { - "history": "^4.7.2", - "invariant": "^2.2.4", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.1", - "react-router": "^4.3.1", - "warning": "^4.0.1" - } - }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -17603,12 +17212,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", - "peer": true - }, "resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -18164,19 +17767,19 @@ "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==" }, "tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", + "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", "requires": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.18.2", + "jiti": "^1.19.1", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -18199,10 +17802,10 @@ } } }, - "tailwindcss-animate": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", - "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "tailwindcss-animated": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tailwindcss-animated/-/tailwindcss-animated-1.0.1.tgz", + "integrity": "sha512-u5wusj89ZwP8I+s8WZlaAd7aZTWBN/XEG6QgMKpkIKmAf3xP1A6WYf7oYIKmGaB10UAQaSqWopi/i1ozzZEs8Q==", "dev": true, "requires": {} }, @@ -18272,18 +17875,6 @@ "real-require": "^0.2.0" } }, - "tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", - "peer": true - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "peer": true - }, "tinyqueue": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", @@ -18641,12 +18232,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", - "peer": true - }, "vt-pbf": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", @@ -18657,15 +18242,6 @@ "pbf": "^3.2.1" } }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "peer": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/package.json b/package.json index 7fe47f4..433f928 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@react-email/tailwind": "^0.0.12", "@vercel/analytics": "^1.1.0", "argon2": "^0.31.1", + "classnames": "^2.5.1", "cloudinary": "^1.41.0", "cookie": "^0.5.0", "date-fns": "^2.30.0", @@ -43,7 +44,7 @@ "passport-local": "^1.0.0", "pino": "^8.14.1", "react": "^18.2.0", - "react-daisyui": "^4.1.2", + "react-daisyui": "^5.0.0", "react-dom": "^18.2.0", "react-email": "^1.9.5", "react-hook-form": "^7.45.2", @@ -51,7 +52,6 @@ "react-icons": "^4.10.1", "react-intersection-observer": "^9.5.2", "react-map-gl": "^7.1.2", - "react-page-scroller": "^3.0.1", "react-responsive-carousel": "^3.2.23", "swr": "^2.2.0", "theme-change": "^2.5.0", @@ -71,7 +71,7 @@ "@types/react-dom": "^18.2.7", "@vercel/fetch": "^7.0.0", "autoprefixer": "^10.4.14", - "daisyui": "^3.9.2", + "daisyui": "^4.7.2", "dotenv-cli": "^7.2.1", "eslint": "^8.51.0", "eslint-config-airbnb-base": "15.0.0", @@ -86,8 +86,8 @@ "prettier-plugin-jsdoc": "^1.0.2", "prettier-plugin-tailwindcss": "^0.5.7", "prisma": "^5.7.0", - "tailwindcss": "^3.3.3", - "tailwindcss-animate": "^1.0.6", + "tailwindcss": "^3.4.1", + "tailwindcss-animated": "^1.0.1", "ts-node": "^10.9.1", "typescript": "^5.3.2" }, diff --git a/public/background.jpg b/public/background.jpg new file mode 100644 index 0000000..27841d8 Binary files /dev/null and b/public/background.jpg differ diff --git a/src/components/Account/UpdateProfileLink.tsx b/src/components/Account/UpdateProfileLink.tsx index e8c941a..e354a5b 100644 --- a/src/components/Account/UpdateProfileLink.tsx +++ b/src/components/Account/UpdateProfileLink.tsx @@ -5,7 +5,7 @@ import { FaArrowRight } from 'react-icons/fa'; const UpdateProfileLink: React.FC = () => { return ( -
+
diff --git a/src/components/Account/UserPosts.tsx b/src/components/Account/UserPosts.tsx index 5149649..65b3661 100644 --- a/src/components/Account/UserPosts.tsx +++ b/src/components/Account/UserPosts.tsx @@ -8,11 +8,9 @@ const UserPosts: FC = () => {
- - Beers - - Breweries - + + Beers + Breweries diff --git a/src/components/BeerById/BeerRecommendations.tsx b/src/components/BeerById/BeerRecommendations.tsx index 96d0887..e6c48ad 100644 --- a/src/components/BeerById/BeerRecommendations.tsx +++ b/src/components/BeerById/BeerRecommendations.tsx @@ -1,10 +1,11 @@ import Link from 'next/link'; -import { FC, MutableRefObject, useRef } from 'react'; +import { FC } from 'react'; import { useInView } from 'react-intersection-observer'; import { z } from 'zod'; import useBeerRecommendations from '@/hooks/data-fetching/beer-posts/useBeerRecommendations'; import BeerPostQueryResult from '@/services/posts/beer-post/schema/BeerPostQueryResult'; import debounce from 'lodash/debounce'; + import BeerRecommendationLoadingComponent from './BeerRecommendationLoadingComponent'; const BeerRecommendationsSection: FC<{ @@ -28,10 +29,8 @@ const BeerRecommendationsSection: FC<{ }, }); - const beerRecommendationsRef: MutableRefObject = useRef(null); - return ( -
+
<>
@@ -54,6 +53,7 @@ const BeerRecommendationsSection: FC<{
diff --git a/src/components/BreweryPost/CreateBreweryPostForm.tsx b/src/components/BreweryPost/CreateBreweryPostForm.tsx index d61e444..cc473a1 100644 --- a/src/components/BreweryPost/CreateBreweryPostForm.tsx +++ b/src/components/BreweryPost/CreateBreweryPostForm.tsx @@ -250,13 +250,9 @@ const CreateBreweryPostForm: FC<{ autoComplete="off" > - - - Information - - - Location - + + Information + Location diff --git a/src/components/Comments/CommentContentBody.tsx b/src/components/Comments/CommentContentBody.tsx index adb35c4..b1d6f42 100644 --- a/src/components/Comments/CommentContentBody.tsx +++ b/src/components/Comments/CommentContentBody.tsx @@ -7,6 +7,8 @@ import Link from 'next/link'; import CommentQueryResult from '@/services/schema/CommentSchema/CommentQueryResult'; import { z } from 'zod'; +import { useInView } from 'react-intersection-observer'; +import classNames from 'classnames'; import CommentCardDropdown from './CommentCardDropdown'; interface CommentContentBodyProps { @@ -17,9 +19,16 @@ interface CommentContentBodyProps { const CommentContentBody: FC = ({ comment, setInEditMode }) => { const { user } = useContext(UserContext); const timeDistance = useTimeDistance(new Date(comment.createdAt)); + const [ref, inView] = useInView({ triggerOnce: true }); return ( -
+
diff --git a/src/components/Comments/CommentLoadingCardBody.tsx b/src/components/Comments/CommentLoadingCardBody.tsx index b662594..ca5800d 100644 --- a/src/components/Comments/CommentLoadingCardBody.tsx +++ b/src/components/Comments/CommentLoadingCardBody.tsx @@ -1,6 +1,6 @@ const CommentLoadingCardBody = () => { return ( -
+
diff --git a/src/components/Comments/EditCommentBody.tsx b/src/components/Comments/EditCommentBody.tsx index cb5d985..6c278dd 100644 --- a/src/components/Comments/EditCommentBody.tsx +++ b/src/components/Comments/EditCommentBody.tsx @@ -15,6 +15,8 @@ import FormLabel from '../ui/forms/FormLabel'; import FormSegment from '../ui/forms/FormSegment'; import FormTextArea from '../ui/forms/FormTextArea'; import { HandleDeleteCommentRequest, HandleEditCommentRequest } from './types'; +import { useInView } from 'react-intersection-observer'; +import classNames from 'classnames'; interface EditCommentBodyProps { comment: z.infer; @@ -80,8 +82,16 @@ const EditCommentBody: FC = ({ const disableForm = isSubmitting || isDeleting; + const [ref, inView] = useInView({ triggerOnce: true }); + return ( -
+
diff --git a/src/components/Login/LoginForm.tsx b/src/components/Login/LoginForm.tsx index df2ecb9..282cea0 100644 --- a/src/components/Login/LoginForm.tsx +++ b/src/components/Login/LoginForm.tsx @@ -47,7 +47,7 @@ const LoginForm = () => { }; return ( - +
username diff --git a/src/components/RegisterUserForm.tsx b/src/components/RegisterUserForm.tsx index b126d45..835f677 100644 --- a/src/components/RegisterUserForm.tsx +++ b/src/components/RegisterUserForm.tsx @@ -44,13 +44,9 @@ const RegisterUserForm: FC = () => { } }; return ( - -
-
+ +
+
First name @@ -63,7 +59,7 @@ const RegisterUserForm: FC = () => { type="text" formValidationSchema={register('firstName')} error={!!errors.firstName} - placeholder="first name" + placeholder="John" />
@@ -80,13 +76,13 @@ const RegisterUserForm: FC = () => { type="text" formValidationSchema={register('lastName')} error={!!errors.lastName} - placeholder="last name" + placeholder="Doe" />
-
+
email @@ -99,7 +95,7 @@ const RegisterUserForm: FC = () => { type="email" formValidationSchema={register('email')} error={!!errors.email} - placeholder="email" + placeholder="john.doe@example.com" />
@@ -115,13 +111,13 @@ const RegisterUserForm: FC = () => { type="text" formValidationSchema={register('username')} error={!!errors.username} - placeholder="username" + placeholder="johndoe" />
-
+
password @@ -155,26 +151,28 @@ const RegisterUserForm: FC = () => {
- - Date of birth - {errors.dateOfBirth?.message} - - - - -
- +
+ + Date of birth + {errors.dateOfBirth?.message} + + + +
+
+ +
); }; diff --git a/src/components/ui/Layout.tsx b/src/components/ui/Layout.tsx index 8358a7e..6e1a8b6 100644 --- a/src/components/ui/Layout.tsx +++ b/src/components/ui/Layout.tsx @@ -3,13 +3,10 @@ import Navbar from './Navbar'; const Layout: FC<{ children: ReactNode }> = ({ children }) => { return ( -
+
-
- {children} -
+ {children}
); }; - export default Layout; diff --git a/src/components/ui/Navbar.tsx b/src/components/ui/Navbar.tsx index 675a8ca..f1287fd 100644 --- a/src/components/ui/Navbar.tsx +++ b/src/components/ui/Navbar.tsx @@ -1,11 +1,13 @@ import useMediaQuery from '@/hooks/utilities/useMediaQuery'; import useNavbar from '@/hooks/utilities/useNavbar'; -import useTheme from '@/hooks/utilities/useTheme'; +// import useTheme from '@/hooks/utilities/useTheme'; import Link from 'next/link'; -import { FC } from 'react'; -import { MdDarkMode, MdLightMode } from 'react-icons/md'; -import { GiHamburgerMenu } from 'react-icons/gi'; +import { FC, useRef } from 'react'; +// import { MdDarkMode, MdLightMode } from 'react-icons/md'; + +import { FaBars } from 'react-icons/fa'; +import classNames from 'classnames'; const DesktopLinks: FC = () => { const { pages, currentURL } = useNavbar(); @@ -19,8 +21,8 @@ const DesktopLinks: FC = () => { {page.name} @@ -35,24 +37,44 @@ const DesktopLinks: FC = () => { const MobileLinks: FC = () => { const { pages } = useNavbar(); + + const drawerRef = useRef(null); return (
-
- -
    - {pages.map((page) => ( -
  • - - {page.name} - -
  • - ))} -
+
+ +
+ +
+
+
); @@ -61,17 +83,30 @@ const MobileLinks: FC = () => { const Navbar = () => { const isDesktopView = useMediaQuery('(min-width: 1024px)'); - const { theme, setTheme } = useTheme(); + const { currentURL } = useNavbar(); + const backgroundIsTransparent = + currentURL === '/' || currentURL === '/login' || currentURL === '/register'; + + const isOnHomePage = currentURL === '/'; + + // const { theme, setTheme } = useTheme(); return ( -
+
- - The Biergarten App - + {isOnHomePage ? null : ( + + The Biergarten App + + )}
-
@@ -96,7 +131,7 @@ const Navbar = () => { )}
-
+
*/}
{isDesktopView ? : }
); diff --git a/src/pages/404.tsx b/src/pages/404.tsx index a83cc5c..4869202 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -8,7 +8,7 @@ const NotFound: NextPage = () => { 404 Page Not Found -
+

404: Not Found

Sorry, the page you are looking for does not exist. diff --git a/src/pages/beers/[id]/index.tsx b/src/pages/beers/[id]/index.tsx index 51b03b0..d949710 100644 --- a/src/pages/beers/[id]/index.tsx +++ b/src/pages/beers/[id]/index.tsx @@ -74,13 +74,9 @@ const BeerByIdPage: NextPage = ({ beerPost }) => {

) : ( - - - Comments - - - Other Beers - + + Comments + Other Beers diff --git a/src/pages/beers/styles/[id]/index.tsx b/src/pages/beers/styles/[id]/index.tsx index 58d96b4..7340161 100644 --- a/src/pages/beers/styles/[id]/index.tsx +++ b/src/pages/beers/styles/[id]/index.tsx @@ -41,11 +41,9 @@ const BeerStyleByIdPage: NextPage = ({ beerStyle }) => {
) : ( - - - Comments - - + + Comments + Beers in this Style diff --git a/src/pages/breweries/[id]/index.tsx b/src/pages/breweries/[id]/index.tsx index a081fe4..19f0faa 100644 --- a/src/pages/breweries/[id]/index.tsx +++ b/src/pages/breweries/[id]/index.tsx @@ -85,11 +85,11 @@ const BreweryByIdPage: NextPage = ({ breweryPost, mapboxToken token={mapboxToken} /> - - + + Comments - + Beers diff --git a/src/pages/index.tsx b/src/pages/index.tsx index b9e9602..cb58ba6 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,4 +1,5 @@ import { NextPage } from 'next'; +import { CldImage } from 'next-cloudinary'; import Head from 'next/head'; const keywords = [ @@ -29,7 +30,7 @@ const keywords = [ 'beer recipes', ]; -const description = `The Biergarten App is an app for beer lovers to share their favourite brews and breweries with like-minded people online.`; +const description = `An app for beer lovers to share their favourite brews and breweries with like-minded people online.`; const Home: NextPage = () => { return ( @@ -39,13 +40,17 @@ const Home: NextPage = () => { - -
-
-

- The Biergarten App -

-

{description}

+
+ +
+

The Biergarten App

+

{description}

diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index f80db46..f254883 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -18,34 +18,32 @@ const LoginPage: NextPage = () => { -
-
- -
-
-
-
- -

Login

-
+
+ + +
+
+ +

Login

+
+
-
- - Don't have an account? - - - Forgot password? - -
+
+ +
+ + Don't have an account? + + + + Forgot your password?{' '} +
diff --git a/src/pages/register/index.tsx b/src/pages/register/index.tsx index d67e25b..4fcde09 100644 --- a/src/pages/register/index.tsx +++ b/src/pages/register/index.tsx @@ -1,10 +1,11 @@ import RegisterUserForm from '@/components/RegisterUserForm'; -import FormPageLayout from '@/components/ui/forms/FormPageLayout'; import useRedirectWhenLoggedIn from '@/hooks/auth/useRedirectIfLoggedIn'; import { NextPage } from 'next'; +import { CldImage } from 'next-cloudinary'; import Head from 'next/head'; -import { BiUser } from 'react-icons/bi'; + +import { FaUserCircle } from 'react-icons/fa'; const RegisterUserPage: NextPage = () => { useRedirectWhenLoggedIn(); @@ -15,14 +16,26 @@ const RegisterUserPage: NextPage = () => { Register User - - - + +
+ + +
+
+ +

Register

+
+
+ +
+
+
); }; diff --git a/src/pages/users/[id].tsx b/src/pages/users/[id].tsx index 170a8ff..0940db9 100644 --- a/src/pages/users/[id].tsx +++ b/src/pages/users/[id].tsx @@ -25,7 +25,7 @@ const UserInfoPage: FC = ({ user }) => { <> -
+
diff --git a/src/pages/users/account/index.tsx b/src/pages/users/account/index.tsx index 7c6445e..43527aa 100644 --- a/src/pages/users/account/index.tsx +++ b/src/pages/users/account/index.tsx @@ -33,7 +33,7 @@ const AccountPage: NextPage = () => { content="Your account page. Here you can view your account information, change your settings, and view your posts." /> -
+
@@ -48,22 +48,18 @@ const AccountPage: NextPage = () => {
- - - Account - - - Your Posts - + + Account + Your Posts - + - + diff --git a/src/pages/users/current.tsx b/src/pages/users/current.tsx index 2111bbc..2e1c6e1 100644 --- a/src/pages/users/current.tsx +++ b/src/pages/users/current.tsx @@ -22,7 +22,7 @@ const ProtectedPage: NextPage = () => { Hello! | The Biergarten App -
+
{isLoading && } {user && !isLoading && ( <> diff --git a/tailwind.config.js b/tailwind.config.js index bf6fc8b..c6a3588 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,7 +2,7 @@ const myThemes = { dark: { - primary: 'hsl(227, 25%, 25%)', + primary: 'hsl(227, 10%, 25%)', secondary: 'hsl(255, 9%, 69%)', error: 'hsl(9, 52%, 57%)', accent: 'hsl(316, 96%, 60%)', @@ -12,24 +12,10 @@ const myThemes = { warning: 'hsl(50, 98%, 50%)', 'primary-content': 'hsl(0, 0%, 98%)', 'error-content': 'hsl(0, 0%, 98%)', - 'base-100': 'hsl(227, 20%, 20%)', - 'base-200': 'hsl(227, 20%, 13%)', - 'base-300': 'hsl(227, 20%, 10%)', - }, - light: { - primary: 'hsl(180, 20%, 70%)', - secondary: 'hsl(120, 10%, 70%)', - error: 'hsl(4, 87%, 74%)', - accent: 'hsl(93, 27%, 73%)', - neutral: 'hsl(38, 31%, 91%)', - info: 'hsl(163, 40%, 79%)', - success: 'hsl(93, 27%, 73%)', - warning: 'hsl(40, 76%, 73%)', - 'primary-content': 'hsl(0, 0%, 0%)', - 'error-content': 'hsl(0, 0%, 0%)', - 'base-300': 'hsl(180, 10%, 88%)', - 'base-200': 'hsl(180, 10%, 92%)', - 'base-100': 'hsl(180, 10%, 95%)', + 'base-content': 'hsl(227, 0%, 60%)', + 'base-100': 'hsl(227, 10%, 20%)', + 'base-200': 'hsl(227, 10%, 10%)', + 'base-300': 'hsl(227, 10%, 8%)', }, }; @@ -46,10 +32,9 @@ module.exports = { plugins: [ require('@headlessui/tailwindcss'), require('daisyui'), - require('tailwindcss-animate'), + require('tailwindcss-animated'), require('autoprefixer'), ], - daisyui: { logs: false, themes: [myThemes],