diff --git a/README.md b/README.md index af43ba5..f546105 100644 --- a/README.md +++ b/README.md @@ -65,3 +65,5 @@ Here are some documentation links if you want to learn more: - ADMIN_PASS (the password for the admin dashboard) - JWT_KEY_SIGNATURE (the JWT encoding signature that's used to encode user tokens) - PRINTFUL_TOKEN (The token used for the printful store) +- MONGO_USER (the login for MongoDB) +- MONGO_PASS (the password for the MongoDB) diff --git a/package.json b/package.json index 4278512..f97ce7c 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@heroicons/react": "^2.1.5", - "jose": "^5.7.0", + "jose": "^5.8.0", "jsonwebtoken": "^9.0.2", "mongodb": "^6.8.0", "next": "14.2.6", @@ -18,13 +18,13 @@ "react-dom": "^18.3.1" }, "devDependencies": { - "@types/node": "^20.16.1", - "@types/react": "^18.3.4", + "@types/node": "^20.16.2", + "@types/react": "^18.3.5", "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.20", "eslint": "^8.57.0", "eslint-config-next": "14.0.0", - "postcss": "^8.4.41", + "postcss": "^8.4.42", "tailwindcss": "^3.4.10", "typescript": "^5.5.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cddc023..4fc4158 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^2.1.5 version: 2.1.5(react@18.3.1) jose: - specifier: ^5.7.0 - version: 5.7.0 + specifier: ^5.8.0 + version: 5.8.0 jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 @@ -29,17 +29,17 @@ dependencies: devDependencies: '@types/node': - specifier: ^20.16.1 - version: 20.16.1 + specifier: ^20.16.2 + version: 20.16.2 '@types/react': - specifier: ^18.3.4 - version: 18.3.4 + specifier: ^18.3.5 + version: 18.3.5 '@types/react-dom': specifier: ^18.3.0 version: 18.3.0 autoprefixer: specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.41) + version: 10.4.20(postcss@8.4.42) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -47,8 +47,8 @@ devDependencies: specifier: 14.0.0 version: 14.0.0(eslint@8.57.0)(typescript@5.5.4) postcss: - specifier: ^8.4.41 - version: 8.4.41 + specifier: ^8.4.42 + version: 8.4.42 tailwindcss: specifier: ^3.4.10 version: 3.4.10 @@ -290,6 +290,11 @@ packages: fastq: 1.17.1 dev: true + /@nolyfill/is-core-module@1.0.39: + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -316,8 +321,8 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/node@20.16.1: - resolution: {integrity: sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==} + /@types/node@20.16.2: + resolution: {integrity: sha512-91s/n4qUPV/wg8eE9KHYW1kouTfDk2FPGjXbBMfRWP/2vg1rCXNQL1OCabwGs0XSdukuK+MwCDXE30QpSeMUhQ==} dependencies: undici-types: 6.19.8 dev: true @@ -329,11 +334,11 @@ packages: /@types/react-dom@18.3.0: resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} dependencies: - '@types/react': 18.3.4 + '@types/react': 18.3.5 dev: true - /@types/react@18.3.4: - resolution: {integrity: sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==} + /@types/react@18.3.5: + resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==} dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -586,7 +591,7 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true - /autoprefixer@10.4.20(postcss@8.4.41): + /autoprefixer@10.4.20(postcss@8.4.42): resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -594,11 +599,11 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001655 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 - postcss: 8.4.41 + postcss: 8.4.42 postcss-value-parser: 4.2.0 dev: true @@ -654,7 +659,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001655 electron-to-chromium: 1.5.13 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) @@ -697,8 +702,8 @@ packages: engines: {node: '>= 6'} dev: true - /caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + /caniuse-lite@1.0.30001655: + resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==} /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1054,8 +1059,8 @@ packages: is-symbol: 1.0.4 dev: true - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} dev: true @@ -1078,14 +1083,15 @@ packages: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) eslint-plugin-react: 7.35.0(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) typescript: 5.5.4 transitivePeerDependencies: - eslint-import-resolver-webpack + - eslint-plugin-import-x - supports-color dev: true @@ -1099,21 +1105,28 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + /eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true dependencies: + '@nolyfill/is-core-module': 1.0.39 debug: 4.3.6 enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.2(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) fast-glob: 3.3.2 - get-tsconfig: 4.7.6 - is-core-module: 2.15.1 + get-tsconfig: 4.8.0 + is-bun-module: 1.1.0 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -1122,8 +1135,8 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + /eslint-module-utils@2.8.2(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): + resolution: {integrity: sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -1147,12 +1160,12 @@ packages: debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -1171,7 +1184,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.2(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -1473,8 +1486,8 @@ packages: get-intrinsic: 1.2.4 dev: true - /get-tsconfig@4.7.6: - resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + /get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -1691,6 +1704,12 @@ packages: has-tostringtag: 1.0.2 dev: true + /is-bun-module@1.1.0: + resolution: {integrity: sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==} + dependencies: + semver: 7.6.3 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -1865,8 +1884,8 @@ packages: hasBin: true dev: true - /jose@5.7.0: - resolution: {integrity: sha512-3P9qfTYDVnNn642LCAqIKbTGb9a1TBxZ9ti5zEVEr48aDdflgRjhspWFb6WM4PzAfFbGMJYC4+803v8riCRAKw==} + /jose@5.8.0: + resolution: {integrity: sha512-E7CqYpL/t7MMnfGnK/eg416OsFCVUrU/Y3Vwe7QjKhu/BkS1Ms455+2xsqZQVN57/U2MHMBvEb5SrmAZWAIntA==} dev: false /js-tokens@4.0.0: @@ -2157,7 +2176,7 @@ packages: '@next/env': 14.2.6 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001651 + caniuse-lite: 1.0.30001655 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -2365,29 +2384,29 @@ packages: engines: {node: '>= 0.4'} dev: true - /postcss-import@15.1.0(postcss@8.4.41): + /postcss-import@15.1.0(postcss@8.4.42): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.41 + postcss: 8.4.42 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 dev: true - /postcss-js@4.0.1(postcss@8.4.41): + /postcss-js@4.0.1(postcss@8.4.42): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.41 + postcss: 8.4.42 dev: true - /postcss-load-config@4.0.2(postcss@8.4.41): + /postcss-load-config@4.0.2(postcss@8.4.42): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: @@ -2400,17 +2419,17 @@ packages: optional: true dependencies: lilconfig: 3.1.2 - postcss: 8.4.41 + postcss: 8.4.42 yaml: 2.5.0 dev: true - /postcss-nested@6.2.0(postcss@8.4.41): + /postcss-nested@6.2.0(postcss@8.4.42): resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.41 + postcss: 8.4.42 postcss-selector-parser: 6.1.2 dev: true @@ -2435,8 +2454,8 @@ packages: source-map-js: 1.2.0 dev: false - /postcss@8.4.41: - resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + /postcss@8.4.42: + resolution: {integrity: sha512-hywKUQB9Ra4dR1mGhldy5Aj1X3MWDSIA1cEi+Uy0CjheLvP6Ual5RlwMCh8i/X121yEDLDIKBsrCQ8ba3FDMfQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -2846,11 +2865,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.41 - postcss-import: 15.1.0(postcss@8.4.41) - postcss-js: 4.0.1(postcss@8.4.41) - postcss-load-config: 4.0.2(postcss@8.4.41) - postcss-nested: 6.2.0(postcss@8.4.41) + postcss: 8.4.42 + postcss-import: 15.1.0(postcss@8.4.42) + postcss-js: 4.0.1(postcss@8.4.42) + postcss-load-config: 4.0.2(postcss@8.4.42) + postcss-nested: 6.2.0(postcss@8.4.42) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0 @@ -3002,7 +3021,7 @@ packages: browserslist: '>= 4.21.0' dependencies: browserslist: 4.23.3 - escalade: 3.1.2 + escalade: 3.2.0 picocolors: 1.0.1 dev: true diff --git a/public/gallery/bettereagle_chip.png b/public/gallery/bettereagle_chip.png new file mode 100644 index 0000000..b7f2e46 Binary files /dev/null and b/public/gallery/bettereagle_chip.png differ diff --git a/public/gallery/mrbenword.png b/public/gallery/mrbenword.png new file mode 100644 index 0000000..400645d Binary files /dev/null and b/public/gallery/mrbenword.png differ diff --git a/public/gallery/spacecsdesign.jpg b/public/gallery/spacecsdesign.jpg new file mode 100644 index 0000000..5b05b5d Binary files /dev/null and b/public/gallery/spacecsdesign.jpg differ diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000..0ee027f Binary files /dev/null and b/public/logo.png differ diff --git a/src/app/components/BottomBar.tsx b/src/app/components/BottomBar.tsx index 303c756..4a36cc1 100644 --- a/src/app/components/BottomBar.tsx +++ b/src/app/components/BottomBar.tsx @@ -7,15 +7,7 @@ export default function BottomBar() { return ( ); } diff --git a/src/app/components/Navbar.tsx b/src/app/components/Navbar.tsx index cc01d92..d5ca85a 100644 --- a/src/app/components/Navbar.tsx +++ b/src/app/components/Navbar.tsx @@ -1,32 +1,74 @@ -import Link from 'next/link'; -import React from 'react'; +"use client"; -import { ShoppingCartIcon } from '@heroicons/react/24/outline'; +import Link from 'next/link'; +import React, { useState } from 'react'; +import { ShoppingCartIcon, Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline'; export default function Navbar() { + const [isOpen, setIsOpen] = useState(false); + + const toggleMenu = () => setIsOpen(!isOpen); + return ( - - - - - Home + + + {/* Hamburger Menu */} + + {isOpen ? ( + + ) : ( + + )} + + + {/* Desktop Links */} + + + Home - + About - - - Store - + + + Store + + - + {/* Mobile Cart Icon */} + - + - + - + {/* Desktop Cart Icon */} + + + + + + + + {/* Mobile Menu */} + + + Home + + + About + + + Store + ); -} +} \ No newline at end of file diff --git a/src/app/favicon.ico b/src/app/favicon.ico index 10cb55e..496da68 100644 Binary files a/src/app/favicon.ico and b/src/app/favicon.ico differ diff --git a/src/app/globals.css b/src/app/globals.css index 047fdac..5ca4105 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -2,12 +2,45 @@ @tailwind components; @tailwind utilities; +/* Keyframe animation for the line growing from the middle to the sides */ +@keyframes hover-line { + 0% { + width: 0; + left: 50%; + } + 100% { + width: 100%; + left: 0; + } +} + +.nav-link { + position: relative; + cursor: pointer; +} + +.nav-link::after { + content: ''; + position: absolute; + left: 50%; + bottom: 0; + width: 0; + height: 2px; + background-color: #63d297; + transition: all 0.3s ease; +} + +.nav-link:hover::after { + animation: hover-line 0.3s forwards; +} + + h1 { @apply font-semibold text-7xl text-white animate-bounce-in my-10; } hr { - @apply bg-textMid h-1 border-none; + @apply bg-textMid h-3 border-none; } h2 { @@ -21,9 +54,34 @@ h3 { p { @apply text-textDim; } + footer { @apply text-bgLight; } -p a{ - color:#B4FFDC; + +p a { + color: #3392d1; +} + +nav ul { + margin: 0; + padding: 0; + list-style: none; +} + +.scrollable-gallery::-webkit-scrollbar { + width: 8px; +} + +.scrollable-gallery::-webkit-scrollbar-track { + background: transparent; +} + +.scrollable-gallery::-webkit-scrollbar-thumb { + background: #63d297; + border-radius: 10px; +} + +.scrollable-gallery::-webkit-scrollbar-thumb:hover { + background: #5ec28d; } \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 107c0ad..a43ba0b 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -3,12 +3,30 @@ import { Metadata } from 'next'; export const metadata: Metadata = { title: 'Home', }; + export default function Home() { return ( <> - Welcome to the Mr. Ben Merch Store + Welcome to Mr.Ben's Merch Store - Coming Soon!! + Concept designs: + + + + + + + + + + + + + + + + + > ); } diff --git a/src/lib/mongodb/index.ts b/src/lib/mongodb/index.ts index fc81e03..6fece98 100644 --- a/src/lib/mongodb/index.ts +++ b/src/lib/mongodb/index.ts @@ -15,12 +15,16 @@ declare global { var __mongoClientProcess: any; // For typescript typing, unrelated to anything else } -if (!global.__mongoClientProcess) { - global.__mongoClientProcess = client.connect(); - clientConnection = global.__mongoClientProcess; +if (process.env.MONGO_USER && process.env.MONGO_PASS) { + if (!global.__mongoClientProcess) { + global.__mongoClientProcess = client.connect(); + clientConnection = global.__mongoClientProcess; + } else { + clientConnection = global.__mongoClientProcess; + console.log(typeof global.__mongoClientProcess); + } } else { - clientConnection = global.__mongoClientProcess; - console.log(typeof global.__mongoClientProcess); + console.log('Not connected to Mongo. Keys not set.'); } export default clientConnection; diff --git a/tailwind.config.ts b/tailwind.config.ts index b770d7b..14f3d33 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,90 +1,105 @@ import type { Config } from 'tailwindcss'; const config: Config = { - content: [ - './src/pages/**/*.{js,ts,jsx,tsx,mdx}', - './src/components/**/*.{js,ts,jsx,tsx,mdx}', - './src/app/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { - extend: { - backgroundImage: { - 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', - 'gradient-conic': - 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', - }, - colors: { - theme: '#63d297', - bgBase: '#000000', - bgDim: '#083331', - bgMid: '#0F4948', - bgLight: '#196660', - textDark: '#2F9987', - textDim: '#51CCA6', - textMid: '#6BE3B1', - textLight: '#7EFFC3' - - }, - fontFamily: { - sans: [ - 'Lucida Sans', - 'Lucida Sans Regular', - 'Lucida Grande', - 'Lucida Sans Unicode', - 'Geneva', - 'Verdana', - 'sans-serif', - ], - }, - animation: { - 'bounce-in': 'bounce-in-top 1.1s both', - }, - keyframes: { - 'bounce-in-top': { - '0%': { - transform: 'translateY(-500px)', - 'animation-timing-function': 'ease-in', - opacity: '0', - }, - '38%': { - transform: 'translateY(0)', - 'animation-timing-function': 'ease-out', - opacity: '0', - }, - - '55%': { - transform: 'translateY(-65px)', - 'animation-timing-function': 'ease-in', - }, - - '72%': { - transform: 'translateY(0)', - 'animation-timing-function': 'ease-out', - }, - - '81%': { - transform: 'translateY(-28px)', - 'animation-timing-function': 'ease-in', - }, - - '90%': { - transform: 'translateY(0)', - 'animation-timing-function': 'ease-out', - }, - - '95%': { - transform: 'translateY(-8px)', - 'animation-timing-function': 'ease-in', - }, - - '100%': { - transform: 'translateY(0)', - 'animation-timing-function': 'ease-out', - }, - }, - }, + content: [ + './src/pages/**/*.{js,ts,jsx,tsx,mdx}', + './src/components/**/*.{js,ts,jsx,tsx,mdx}', + './src/app/**/*.{js,ts,jsx,tsx,mdx}', + ], + theme: { + extend: { + backgroundImage: { + 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', + 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', + }, + colors: { + theme: '#63d297', + bgBase: '#000000', + bgDim: '#083331', + bgMid: '#0F4948', + bgLight: '#196660', + textDark: '#2F9987', + textDim: '#51CCA6', + textMid: '#6BE3B1', + textLight: '#7EFFC3' + }, + fontFamily: { + sans: [ + 'Lucida Sans', + 'Lucida Sans Regular', + 'Lucida Grande', + 'Lucida Sans Unicode', + 'Geneva', + 'Verdana', + 'sans-serif', + ], + }, + animation: { + 'bounce-in': 'bounce-in-top 1.1s both', + 'slide-in-left': 'slide-in-left 0.5s ease-out forwards', + 'hover-line': 'hover-line 0.3s ease-out forwards', // New animation for hover line + }, + keyframes: { + 'bounce-in-top': { + '0%': { + transform: 'translateY(-500px)', + 'animation-timing-function': 'ease-in', + opacity: '0', + }, + '38%': { + transform: 'translateY(0)', + 'animation-timing-function': 'ease-out', + opacity: '0', + }, + '55%': { + transform: 'translateY(-65px)', + 'animation-timing-function': 'ease-in', + }, + '72%': { + transform: 'translateY(0)', + 'animation-timing-function': 'ease-out', + }, + '81%': { + transform: 'translateY(-28px)', + 'animation-timing-function': 'ease-in', + }, + '90%': { + transform: 'translateY(0)', + 'animation-timing-function': 'ease-out', + }, + '95%': { + transform: 'translateY(-8px)', + 'animation-timing-function': 'ease-in', + }, + '100%': { + transform: 'translateY(0)', + 'animation-timing-function': 'ease-out', + }, + }, + 'slide-in-left': { + '0%': { + transform: 'translateX(-100%)', + opacity: '0', + }, + '100%': { + transform: 'translateX(0)', + opacity: '1', + }, }, + 'hover-line': { + '0%': { + width: '0', + left: '50%', + }, + '100%': { + width: '100%', + left: '0', + }, + }, + }, }, - plugins: [], + }, + plugins: [], }; + export default config;