diff --git a/components.json b/components.json new file mode 100644 index 0000000..14331d8 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "slate", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index db132f0..4a8529a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,20 @@ "name": "landingatc-front-end", "version": "0.1.0", "dependencies": { + "@radix-ui/react-icons": "^1.3.0", + "@types/react-star-ratings": "^2.3.3", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.0", "next": "14.1.0", + "next-themes": "^0.2.1", "react": "^18", "react-dom": "^18", + "react-fast-marquee": "^1.6.4", "react-icons": "^5.0.1", - "react-image-gallery": "^1.3.0" + "react-image-gallery": "^1.3.0", + "react-star-ratings": "^2.3.0", + "tailwind-merge": "^2.2.1", + "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@types/node": "^20", @@ -40,7 +49,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "engines": { "node": ">=10" }, @@ -52,7 +60,6 @@ "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", - "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -153,7 +160,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -170,7 +176,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -182,7 +187,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -197,7 +201,6 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz", "integrity": "sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -211,7 +214,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -220,7 +222,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -228,14 +229,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz", "integrity": "sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -394,7 +393,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -407,7 +405,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -416,7 +413,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -429,12 +425,19 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true, "engines": { "node": ">=14" } }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, "node_modules/@rushstack/eslint-patch": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz", @@ -467,14 +470,12 @@ "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "dev": true + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/react": { "version": "18.2.58", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.58.tgz", "integrity": "sha512-TaGvMNhxvG2Q0K0aYxiKfNDS5m5ZsoIBBbtfUorxdH4NGSXIlYvZxLJI+9Dd3KjeB3780bciLyAb7ylO8pLhPw==", - "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -499,11 +500,18 @@ "@types/react": "*" } }, + "node_modules/@types/react-star-ratings": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/react-star-ratings/-/react-star-ratings-2.3.3.tgz", + "integrity": "sha512-8vLqJG1uRA2SmYBBMPWpv6QWHLvZ/a3XmELCIf4xh4VFXT7QkkrcthiLSMjQ4ibDiUtYYpyLB0JoR1lBHSHA2A==", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@typescript-eslint/parser": { "version": "6.21.0", @@ -679,7 +687,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -688,7 +695,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -702,14 +708,12 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -721,8 +725,7 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "node_modules/argparse": { "version": "2.0.1", @@ -980,14 +983,12 @@ "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 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -1006,7 +1007,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -1089,7 +1089,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "engines": { "node": ">= 6" } @@ -1133,7 +1132,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1157,7 +1155,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1165,16 +1162,47 @@ "node": ">= 6" } }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -1185,14 +1213,12 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "engines": { "node": ">= 6" } @@ -1207,7 +1233,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1221,7 +1246,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -1232,8 +1256,7 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -1310,8 +1333,7 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -1328,8 +1350,7 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "node_modules/doctrine": { "version": "3.0.0", @@ -1346,8 +1367,7 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/electron-to-chromium": { "version": "1.4.681", @@ -1358,8 +1378,7 @@ "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/enhanced-resolve": { "version": "5.15.0", @@ -1963,7 +1982,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1979,7 +1997,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -2003,7 +2020,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -2024,7 +2040,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2081,7 +2096,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -2116,7 +2130,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -2130,7 +2143,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2214,7 +2226,6 @@ "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -2236,7 +2247,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -2248,7 +2258,6 @@ "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" } @@ -2257,7 +2266,6 @@ "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2414,7 +2422,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -2533,7 +2540,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2573,7 +2579,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -2600,7 +2605,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2621,7 +2625,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -2645,7 +2648,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -2678,7 +2680,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -2835,8 +2836,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/iterator.prototype": { "version": "1.1.2", @@ -2855,7 +2855,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -2873,7 +2872,6 @@ "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -2984,7 +2982,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, "engines": { "node": ">=10" } @@ -2992,8 +2989,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/locate-path": { "version": "6.0.0", @@ -3031,7 +3027,6 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, "engines": { "node": "14 || >=16.14" } @@ -3040,7 +3035,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -3049,7 +3043,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -3083,7 +3076,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -3098,7 +3090,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -3173,6 +3164,16 @@ } } }, + "node_modules/next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "peerDependencies": { + "next": "*", + "react": "*", + "react-dom": "*" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -3210,7 +3211,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3228,7 +3228,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3237,7 +3236,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "engines": { "node": ">= 6" } @@ -3442,7 +3440,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -3450,14 +3447,12 @@ "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 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -3487,7 +3482,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -3499,7 +3493,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3508,7 +3501,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "engines": { "node": ">= 6" } @@ -3526,7 +3518,6 @@ "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3554,7 +3545,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -3571,7 +3561,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -3590,7 +3579,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3625,7 +3613,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", - "dev": true, "engines": { "node": ">=14" }, @@ -3637,7 +3624,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -3656,7 +3642,6 @@ "version": "6.0.15", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3668,8 +3653,7 @@ "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==", - "dev": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -3684,7 +3668,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -3704,7 +3687,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -3743,6 +3725,15 @@ "react": "^18.2.0" } }, + "node_modules/react-fast-marquee": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/react-fast-marquee/-/react-fast-marquee-1.6.4.tgz", + "integrity": "sha512-LAgvhRmHdqaUQ8R5jCUwzEGFUIjnCCt3T3W8X7j7wF6DWe0SATlpP0JX1V0pp2qX3DYUezmn1Iz5AtRFdL2EWQ==", + "peerDependencies": { + "react": ">= 16.8.0 || 18.0.0", + "react-dom": ">= 16.8.0 || 18.0.0" + } + }, "node_modules/react-icons": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.0.1.tgz", @@ -3762,14 +3753,35 @@ "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==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-star-ratings": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-star-ratings/-/react-star-ratings-2.3.0.tgz", + "integrity": "sha512-34Z/oFNDRRn4ZcX7F3t9ccnpo7SQ32gD/vsusQOBc6B6vlqaGR6tke1/Yx3jTDjemKRSmXqhKgpPTR7/JAXq6A==", + "dependencies": { + "classnames": "^2.2.1", + "prop-types": "^15.6.0", + "react": "^16.1.0" + } + }, + "node_modules/react-star-ratings/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "dependencies": { "pify": "^2.3.0" } @@ -3778,7 +3790,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -3810,8 +3821,7 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", @@ -3835,7 +3845,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -3870,7 +3879,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -3915,7 +3923,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -4040,7 +4047,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4052,7 +4058,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -4079,7 +4084,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "engines": { "node": ">=14" }, @@ -4116,7 +4120,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -4134,7 +4137,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4147,14 +4149,12 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -4166,7 +4166,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4246,7 +4245,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4259,7 +4257,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4314,7 +4311,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -4348,7 +4344,6 @@ "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" }, @@ -4356,11 +4351,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwind-merge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.1.tgz", + "integrity": "sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==", + "dependencies": { + "@babel/runtime": "^7.23.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", - "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -4393,6 +4399,14 @@ "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==", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -4412,7 +4426,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "dependencies": { "any-promise": "^1.0.0" } @@ -4421,7 +4434,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -4433,7 +4445,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -4456,8 +4467,7 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, "node_modules/tsconfig-paths": { "version": "3.15.0", @@ -4649,14 +4659,12 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -4747,7 +4755,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -4765,7 +4772,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4781,14 +4787,12 @@ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -4802,7 +4806,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -4814,7 +4817,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "engines": { "node": ">=12" }, @@ -4826,7 +4828,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4853,7 +4854,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.0.tgz", "integrity": "sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ==", - "dev": true, "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index a7f49b7..919575b 100644 --- a/package.json +++ b/package.json @@ -9,11 +9,20 @@ "lint": "next lint" }, "dependencies": { + "@radix-ui/react-icons": "^1.3.0", + "@types/react-star-ratings": "^2.3.3", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.0", "next": "14.1.0", + "next-themes": "^0.2.1", "react": "^18", "react-dom": "^18", + "react-fast-marquee": "^1.6.4", "react-icons": "^5.0.1", - "react-image-gallery": "^1.3.0" + "react-image-gallery": "^1.3.0", + "react-star-ratings": "^2.3.0", + "tailwind-merge": "^2.2.1", + "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@types/node": "^20", diff --git a/public/images/backgroundBlog.webp b/public/images/backgroundBlog.webp new file mode 100644 index 0000000..9f4d27d Binary files /dev/null and b/public/images/backgroundBlog.webp differ diff --git a/public/images/blog.webp b/public/images/blog.webp new file mode 100644 index 0000000..23dfa85 Binary files /dev/null and b/public/images/blog.webp differ diff --git a/public/images/brands/audi-logo.webp b/public/images/brands/audi-logo.webp new file mode 100644 index 0000000..88ed0e7 Binary files /dev/null and b/public/images/brands/audi-logo.webp differ diff --git a/public/images/brands/bmw-logo.webp b/public/images/brands/bmw-logo.webp new file mode 100644 index 0000000..cccb0d2 Binary files /dev/null and b/public/images/brands/bmw-logo.webp differ diff --git a/public/images/brands/chevrolet-logo.webp b/public/images/brands/chevrolet-logo.webp new file mode 100644 index 0000000..9f7b392 Binary files /dev/null and b/public/images/brands/chevrolet-logo.webp differ diff --git a/public/images/brands/dodge-logo.webp b/public/images/brands/dodge-logo.webp new file mode 100644 index 0000000..217c643 Binary files /dev/null and b/public/images/brands/dodge-logo.webp differ diff --git a/public/images/brands/ferrari-logo.webp b/public/images/brands/ferrari-logo.webp new file mode 100644 index 0000000..8791516 Binary files /dev/null and b/public/images/brands/ferrari-logo.webp differ diff --git a/public/images/brands/ford-logo.webp b/public/images/brands/ford-logo.webp new file mode 100644 index 0000000..7e302a2 Binary files /dev/null and b/public/images/brands/ford-logo.webp differ diff --git a/public/images/brands/honda-logo.webp b/public/images/brands/honda-logo.webp new file mode 100644 index 0000000..4fd7a1f Binary files /dev/null and b/public/images/brands/honda-logo.webp differ diff --git a/public/images/brands/hyundai-logo.webp b/public/images/brands/hyundai-logo.webp new file mode 100644 index 0000000..e2c5872 Binary files /dev/null and b/public/images/brands/hyundai-logo.webp differ diff --git a/public/images/brands/jeep-logo.webp b/public/images/brands/jeep-logo.webp new file mode 100644 index 0000000..d80f1c6 Binary files /dev/null and b/public/images/brands/jeep-logo.webp differ diff --git a/public/images/brands/kia-logo.webp b/public/images/brands/kia-logo.webp new file mode 100644 index 0000000..77ce5e2 Binary files /dev/null and b/public/images/brands/kia-logo.webp differ diff --git a/public/images/brands/lamborghini-logo.webp b/public/images/brands/lamborghini-logo.webp new file mode 100644 index 0000000..428ddd1 Binary files /dev/null and b/public/images/brands/lamborghini-logo.webp differ diff --git a/public/images/brands/land-rover-logo.webp b/public/images/brands/land-rover-logo.webp new file mode 100644 index 0000000..b346f9b Binary files /dev/null and b/public/images/brands/land-rover-logo.webp differ diff --git a/public/images/brands/lexus-logo.webp b/public/images/brands/lexus-logo.webp new file mode 100644 index 0000000..8773665 Binary files /dev/null and b/public/images/brands/lexus-logo.webp differ diff --git a/public/images/brands/mazda-logo.webp b/public/images/brands/mazda-logo.webp new file mode 100644 index 0000000..10c6daa Binary files /dev/null and b/public/images/brands/mazda-logo.webp differ diff --git a/public/images/brands/mercedes-benz-logo.webp b/public/images/brands/mercedes-benz-logo.webp new file mode 100644 index 0000000..78d9c6d Binary files /dev/null and b/public/images/brands/mercedes-benz-logo.webp differ diff --git a/public/images/brands/mini-logo.webp b/public/images/brands/mini-logo.webp new file mode 100644 index 0000000..1088f17 Binary files /dev/null and b/public/images/brands/mini-logo.webp differ diff --git a/public/images/brands/mitsubishi-logo.webp b/public/images/brands/mitsubishi-logo.webp new file mode 100644 index 0000000..17d33c0 Binary files /dev/null and b/public/images/brands/mitsubishi-logo.webp differ diff --git a/public/images/brands/nissan-logo.webp b/public/images/brands/nissan-logo.webp new file mode 100644 index 0000000..7f6c186 Binary files /dev/null and b/public/images/brands/nissan-logo.webp differ diff --git a/public/images/brands/porsche-logo.webp b/public/images/brands/porsche-logo.webp new file mode 100644 index 0000000..bc16dd3 Binary files /dev/null and b/public/images/brands/porsche-logo.webp differ diff --git a/public/images/brands/ram-logo.webp b/public/images/brands/ram-logo.webp new file mode 100644 index 0000000..621c514 Binary files /dev/null and b/public/images/brands/ram-logo.webp differ diff --git a/public/images/brands/subaru-logo.webp b/public/images/brands/subaru-logo.webp new file mode 100644 index 0000000..8f227b2 Binary files /dev/null and b/public/images/brands/subaru-logo.webp differ diff --git a/public/images/brands/tesla-logo.webp b/public/images/brands/tesla-logo.webp new file mode 100644 index 0000000..4950340 Binary files /dev/null and b/public/images/brands/tesla-logo.webp differ diff --git a/public/images/brands/toyota-logo.webp b/public/images/brands/toyota-logo.webp new file mode 100644 index 0000000..131c96b Binary files /dev/null and b/public/images/brands/toyota-logo.webp differ diff --git a/public/images/brands/volkswagen-logo.webp b/public/images/brands/volkswagen-logo.webp new file mode 100644 index 0000000..372beb0 Binary files /dev/null and b/public/images/brands/volkswagen-logo.webp differ diff --git a/public/images/brands/volvo-logo.webp b/public/images/brands/volvo-logo.webp new file mode 100644 index 0000000..d61a9ba Binary files /dev/null and b/public/images/brands/volvo-logo.webp differ diff --git a/public/images/mercadoPago.webp b/public/images/mercadoPago.webp deleted file mode 100644 index 41ef4aa..0000000 Binary files a/public/images/mercadoPago.webp and /dev/null differ diff --git a/src/actions/reviews.ts b/src/actions/reviews.ts new file mode 100644 index 0000000..723a0cd --- /dev/null +++ b/src/actions/reviews.ts @@ -0,0 +1,11 @@ +"use server"; + +export const getReviews = async () => { + try { + const response = await fetch("http://localhost:3005/reviews"); + const { data } = await response.json(); + return data; + } catch (_) { + return []; + } +}; diff --git a/src/app/(nav-bar)/index.tsx b/src/app/(nav-bar)/index.tsx new file mode 100644 index 0000000..1299a75 --- /dev/null +++ b/src/app/(nav-bar)/index.tsx @@ -0,0 +1,93 @@ +'use client' +import { Button } from '@/components/button' +import Image from 'next/image' +import { HiBars3 } from 'react-icons/hi2' +import { ContactIcon, ShoppingCartIcon } from '@/assets/icons' +import { MobileMenu } from './mobile-menu' +import { useState } from 'react' +import { ThemeModeButton } from '@/components/theme-mode' +import { CgChevronDown } from 'react-icons/cg' + +const routes = [ + { + label: 'Productos', + url: '/products', + sub: [ + { + label: 'Farola', + to: 'farolas', + }, + { + label: 'Luces', + to: 'farolas', + }, + ], + }, + { label: 'Como comprar', url: '/how-to-buy' }, + { label: 'Blog', url: 'https://actualizatucarro.blogspot.com' }, + { label: 'Nosotros', url: '/about-us' }, +] + +export function NavBar() { + const [open, setOpen] = useState(false) + const handleOPen = () => setOpen((cur) => !cur) + + return ( + + ) +} diff --git a/src/app/(nav-bar)/mobile-menu.tsx b/src/app/(nav-bar)/mobile-menu.tsx new file mode 100644 index 0000000..b85fbe6 --- /dev/null +++ b/src/app/(nav-bar)/mobile-menu.tsx @@ -0,0 +1,163 @@ +import Image from 'next/image' +import { useEffect, type ReactNode, useState } from 'react' + +import { ToggleTheme } from '@/components/theme-mode' +import { useRouter } from 'next/navigation' +import { Button } from '@/components/button' +import { FiChevronDown } from 'react-icons/fi' +import { HiOutlineX } from 'react-icons/hi' +import Link from 'next/link' + +interface Props { + buttonValue: ReactNode + open: boolean + handleOPen(): void +} + +export function MobileMenu({ buttonValue, open, handleOPen }: Props) { + const [curIndex, setCurIndex] = useState(0) + const handleCurIndex = (index: number) => setCurIndex(index ? index : 0) + const route = useRouter() + const routes = [ + { + label: 'Productos', + url: '/products', + sub: [ + { + label: 'Farola', + to: 'farolas', + }, + { + label: 'Luces', + to: 'farolas', + }, + ], + }, + { label: 'Como comprar', url: '/how-to-buy' }, + { label: 'Blog', url: 'https://actualizatucarro.blogspot.com' }, + { label: 'Nosotros', url: '/about-us' }, + ] + + useEffect(() => { + document.body.style.overflow = open ? 'hidden' : '' + }, [open]) + + return ( + <> + + {open && ( +
+
e.stopPropagation()} + > +
+ Your Company route.back()} + /> + +
+ +
+
+ )} + + ) +} + +interface AccordionProps { + index: number + current: number + values: Array<{ + label: string + to: string + }> +} + +function Accordion({ index, current, values }: AccordionProps) { + return ( +
+ {values.map(({ label }, i) => ( + + {label} + + ))} +
+ ) +} + +function AvatarProfile({ image, name }: { image: string; name: string }) { + return ( +
+ {name} + +
+ ) +} diff --git a/src/app/globals.css b/src/app/globals.css index bd6213e..ae411f8 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,3 +1,82 @@ @tailwind base; @tailwind components; -@tailwind utilities; \ No newline at end of file +@tailwind utilities; + +body, +html, +:root { + height: 100%; +} +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 40% 98%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + --ring: 212.7 26.8% 83.9%; + } +} + +@layer base { + * { + @apply border-border; + } + + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 0e3c69f..e7b5101 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,23 +1,27 @@ -import type { Metadata } from "next"; -import { Inter } from "next/font/google"; -import "./globals.css"; +'use client' +import { Inter } from 'next/font/google' +import './globals.css' +import { NavBar } from './(nav-bar)' +import { ThemeProvider } from 'next-themes' -const inter = Inter({ subsets: ["latin"] }); - -export const metadata: Metadata = { - title: "Actualizatucarro", - description: "Accesorios premiun para autos tipo Original", - keywords: ["accesorios", "repuestos", "farolas", "stops", "tuning"], -}; +const inter = Inter({ subsets: ['latin'] }) export default function RootLayout({ children, }: Readonly<{ - children: React.ReactNode; + children: React.ReactNode }>) { return ( - {children} + + + + {children} + + - ); + ) } diff --git a/src/app/page.tsx b/src/app/page.tsx index f7f5d2d..f5f4c3b 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,11 +1,28 @@ -import Banner from "@/components/Banner"; -import Categories from "@/components/Categories"; +import Banner from '@/components/Banner' +import Categories from '@/components/Categories' +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'Actualizatucarro', + description: 'Accesorios premiun para autos tipo Original', + keywords: ['accesorios', 'repuestos', 'farolas', 'stops', 'tuning'], +} +import Blog from "@/components/Blog"; +import BrandsCarousel from "@/components/BrandsCarousel"; +import { Reviews } from "@/components/Reviews"; +import { ReviewsSkeleton } from "@/components/Reviews/ReviewsSkeleton"; +import { Suspense } from "react"; export default function Home() { return (
+ + + }> + +
- ); + ) } diff --git a/src/assets/icons.tsx b/src/assets/icons.tsx new file mode 100644 index 0000000..238bf80 --- /dev/null +++ b/src/assets/icons.tsx @@ -0,0 +1,8 @@ +import { SVGProps } from 'react' + +type IconProps = SVGProps +//create icons + + +export function ShoppingCartIcon({ ...props }: IconProps) { return ( ) } +export function ContactIcon({ ...props }: IconProps) { return ( ) } diff --git a/src/components/Blog/index.tsx b/src/components/Blog/index.tsx new file mode 100644 index 0000000..5ba8bc2 --- /dev/null +++ b/src/components/Blog/index.tsx @@ -0,0 +1,20 @@ +import Link from "next/link"; +import Image from "next/image"; +import { FC } from "react"; + +const Blog: FC = () => { + return ( +
+ + Título del Blog + +
+ ); +}; +export default Blog; diff --git a/src/components/BrandsCarousel/BrandCard.tsx b/src/components/BrandsCarousel/BrandCard.tsx new file mode 100644 index 0000000..ab7e01a --- /dev/null +++ b/src/components/BrandsCarousel/BrandCard.tsx @@ -0,0 +1,25 @@ +import { Brand } from "@/types"; +import Image from "next/image"; +import Link from "next/link"; + +interface BrandCardProps { + brand: Brand; +} + +export const BrandCard = ({ brand }: BrandCardProps) => { + return ( + + {brand.name} + + ); +}; diff --git a/src/components/BrandsCarousel/Carousel.tsx b/src/components/BrandsCarousel/Carousel.tsx new file mode 100644 index 0000000..54db738 --- /dev/null +++ b/src/components/BrandsCarousel/Carousel.tsx @@ -0,0 +1,23 @@ +"use client"; +import Marquee from "react-fast-marquee"; + +import { BrandCard } from "./BrandCard"; + +import { Brand } from "@/types"; + +interface CarouselProps { + brands: Brand[]; +} + +export const Carousel = ({ brands }: CarouselProps) => { + + return ( +
+ + {brands.map((brand, i) => ( + + ))} + +
+ ); +}; diff --git a/src/components/BrandsCarousel/index.tsx b/src/components/BrandsCarousel/index.tsx new file mode 100644 index 0000000..8efd954 --- /dev/null +++ b/src/components/BrandsCarousel/index.tsx @@ -0,0 +1,14 @@ +import { FC } from "react"; + +import { Carousel } from "./Carousel"; +import { BRANDS } from "@/lib/constants"; + +const BrandsCarousel: FC = () => { + + return ( +
+ +
+ ); +}; +export default BrandsCarousel; \ No newline at end of file diff --git a/src/components/Categories/index.tsx b/src/components/Categories/index.tsx index 89d4e54..31af23d 100644 --- a/src/components/Categories/index.tsx +++ b/src/components/Categories/index.tsx @@ -1,7 +1,7 @@ import { FC } from "react"; import CategoryCard from "./CategoryCard"; -import { CATEGORIES } from "@/utils/constants"; +import { CATEGORIES } from "@/lib/constants"; const Categories: FC = () => { return ( diff --git a/src/components/Reviews/ReviewCard.tsx b/src/components/Reviews/ReviewCard.tsx new file mode 100644 index 0000000..7962b28 --- /dev/null +++ b/src/components/Reviews/ReviewCard.tsx @@ -0,0 +1,35 @@ +"use client"; +import StarRatings from "react-star-ratings"; +import { ImQuotesLeft } from "react-icons/im"; +import { IoPersonCircleSharp } from "react-icons/io5"; +import { Review } from "@/types"; + +interface ReviewCardProps { + review: Review; +} + +export const ReviewCard = ({ review }: ReviewCardProps) => { + return ( +
+
+ +
+

{review.review}

+
+
+
+
+ +
+

{review.user}

+ +
+
+
+ ); +}; diff --git a/src/components/Reviews/ReviewsMarquee.tsx b/src/components/Reviews/ReviewsMarquee.tsx new file mode 100644 index 0000000..b2ec5b8 --- /dev/null +++ b/src/components/Reviews/ReviewsMarquee.tsx @@ -0,0 +1,17 @@ +import Marquee from "react-fast-marquee"; +import { ReviewCard } from "./ReviewCard"; +import { Review } from "@/types"; + +interface ReviewsMarqueeProps { + reviews: Review[]; +} + +export const ReviewsMarquee = ({ reviews }: ReviewsMarqueeProps) => { + return ( + + {reviews.map((review) => ( + + ))} + + ); +}; diff --git a/src/components/Reviews/ReviewsSkeleton.tsx b/src/components/Reviews/ReviewsSkeleton.tsx new file mode 100644 index 0000000..4cb725c --- /dev/null +++ b/src/components/Reviews/ReviewsSkeleton.tsx @@ -0,0 +1,68 @@ +"use client"; + +import { Skeleton } from "../ui/skeleton"; +import StarRatings from "react-star-ratings"; + +export const ReviewsSkeleton = () => { + return ( +
+
+ + + + +
+ +
+ + +
+
+
+
+
+ + + + +
+ +
+ + +
+
+
+
+
+ + + + +
+ +
+ + +
+
+
+
+
+ ); +}; diff --git a/src/components/Reviews/index.tsx b/src/components/Reviews/index.tsx new file mode 100644 index 0000000..b2410a3 --- /dev/null +++ b/src/components/Reviews/index.tsx @@ -0,0 +1,20 @@ +import { Review } from "@/types"; +import { ReviewsMarquee } from "./ReviewsMarquee"; +import { getReviews } from "@/actions/reviews"; + +export const Reviews = async () => { + const reviews: Review[] = await getReviews(); + + if(!reviews.length) return null + + return ( +
+
+ +
+
+ ); +}; diff --git a/src/components/button/index.tsx b/src/components/button/index.tsx new file mode 100644 index 0000000..d51533f --- /dev/null +++ b/src/components/button/index.tsx @@ -0,0 +1,44 @@ +type ButtonProps = { + ownStyles?: boolean + variant?: Variant + color?: Color + className?: string + children: React.ReactNode +} & React.DetailedHTMLProps< + React.ButtonHTMLAttributes, + HTMLButtonElement +> + +const variants = ['Primary', 'Secondary', 'Tertiary'] as const +type Variant = (typeof variants)[number] +const colors = ['Default', 'Red'] as const +type Color = (typeof colors)[number] + +export function Button({ + variant = 'Primary', + color = 'Default', + className, + children, + ownStyles = false, + ...props +}: ButtonProps) { + let variant_style = + variant === 'Secondary' + ? `border ${color === 'Red' ? 'border-primary-lm text-primary-lm' : ''}` + : variant === 'Tertiary' + ? `${color === 'Red' ? 'text-primary-lm' : ''}` + : `${ + color === 'Red' + ? 'bg-primary-lm text-white hover:bg-[#B02E0C]' + : 'bg-none hover:text-primary-lm hover:bg-primary-dm/20' + }` + + return ( + + ) +} diff --git a/src/components/theme-mode.tsx b/src/components/theme-mode.tsx new file mode 100644 index 0000000..7ba6d81 --- /dev/null +++ b/src/components/theme-mode.tsx @@ -0,0 +1,48 @@ +'use client' +import { useTheme } from 'next-themes' +import { Button } from './button' +import { IoSunny } from 'react-icons/io5' +import { HiMiniMoon } from 'react-icons/hi2' + +export function ThemeModeButton() { + const { systemTheme, theme, setTheme } = useTheme() + const currentTheme = theme === 'system' ? systemTheme : theme + + const handleTheme = () => + currentTheme === 'dark' ? setTheme('light') : setTheme('dark') + + return ( + + ) +} + +export function ToggleTheme() { + const { systemTheme, theme, setTheme } = useTheme() + const currentTheme = theme === 'system' ? systemTheme : theme + + const handleTheme = () => + currentTheme === 'dark' ? setTheme('light') : setTheme('dark') + const className = ` w-16 h-8 overflow-hidden rounded-full shadow outline-none ${ + theme === 'dark' + ? "bg-background-lm before:grid before:place-content-center before:content-['☀️'] before:absolute before:h-6 before:aspect-square before:top-1/2 before:bg-background-dm before:rounded-full before:left-1 before:-translate-y-1/2" + : "bg-background-dm after:rotate-180 after:opacity-100 after:duration-700 after:absolute after:top-1/2 after:right-1 after:-translate-y-1/2 after:bg-background-lm after:shadow after:rounded-full after:h-6 after:aspect-square after:grid after:place-content-center after:content-['🌑']" + }` + console.log('theme', theme) + + return ( + + ) +} diff --git a/src/components/ui/skeleton.tsx b/src/components/ui/skeleton.tsx new file mode 100644 index 0000000..d7e45f7 --- /dev/null +++ b/src/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ) +} + +export { Skeleton } diff --git a/src/lib/constants.ts b/src/lib/constants.ts new file mode 100644 index 0000000..dc19de2 --- /dev/null +++ b/src/lib/constants.ts @@ -0,0 +1,144 @@ +export const CATEGORIES = [ + { + id: "74ee7f33-36c0-4446-8eb2-a18c64c2fab3", + image: "/images/categories/audio.webp", + name: "Audio", + }, + { + id: "c75457bc-23c3-46e9-acde-73bf6ff126b4", + image: "/images/categories/bombillos.webp", + name: "Bombillos", + }, + { + id: "6afe0153-7240-4cfc-bda6-09e08dc01031", + image: "/images/categories/exploradoras.webp", + name: "Exploradoras", + }, + { + id: "a0842546-e4bb-4a7a-bee0-0a81512885e3", + image: "/images/categories/exterior.webp", + name: "Exterior", + }, + { + id: "07b25b9c-fafc-4fa4-8621-3a1d7c0488c5", + image: "/images/categories/farolas.webp", + name: "Farolas", + }, + { + id: "ee3c96c4-03d9-40c9-81c0-d94b97aa7178", + image: "/images/categories/interior.webp", + name: "Interior", + }, + { + id: "509af101-457a-4a8d-877d-efcc5d9f6250", + image: "/images/categories/repuestos.webp", + name: "Repuestos", + }, + { + id: "b826f6be-d561-4a2f-b4ca-4f50d8837c06", + image: "/images/categories/stops.webp", + name: "Stops", + }, +]; +export const BRANDS = [ + { + name: "Audi", + image: "/images/brands/audi-logo.webp" + }, + { + name: "BMW", + image: "/images/brands/bmw-logo.webp" + }, + { + name: "Chevrolet", + image: "/images/brands/chevrolet-logo.webp" + }, + { + name: "Dodge", + image: "/images/brands/dodge-logo.webp" + }, + { + name: "Ferrari", + image: "/images/brands/ferrari-logo.webp" + }, + { + name: "Ford", + image: "/images/brands/ford-logo.webp" + }, + { + name: "Honda", + image: "/images/brands/honda-logo.webp" + }, + { + name: "Hyundai", + image: "/images/brands/hyundai-logo.webp" + }, + { + name: "Jeep", + image: "/images/brands/jeep-logo.webp" + }, + { + name: "Kia", + image: "/images/brands/kia-logo.webp" + }, + { + name: "Lamborghini", + image: "/images/brands/lamborghini-logo.webp" + }, + { + name: "Land Rover", + image: "/images/brands/land-rover-logo.webp" + }, + { + name: "Lexus", + image: "/images/brands/lexus-logo.webp" + }, + { + name: "Mazda", + image: "/images/brands/mazda-logo.webp" + }, + { + name: "Mercedes Benz", + image: "/images/brands/mercedes-benz-logo.webp" + }, + { + name: "Mini", + image: "/images/brands/mini-logo.webp" + }, + { + name: "Mitsubishi", + image: "/images/brands/mitsubishi-logo.webp" + }, + { + name: "Nissan", + image: "/images/brands/nissan-logo.webp" + }, + { + name: "Porsche", + image: "/images/brands/porsche-logo.webp" + }, + { + name: "RAM", + image: "/images/brands/ram-logo.webp" + }, + { + name: "Subaru", + image: "/images/brands/subaru-logo.webp" + }, + { + name: "Tesla", + image: "/images/brands/tesla-logo.webp" + }, + { + name: "Toyota", + image: "/images/brands/toyota-logo.webp" + }, + { + name: "Volkswagen", + image: "/images/brands/volkswagen-logo.webp" + }, + { + name: "Volvo", + image: "/images/brands/volvo-logo.webp" + }, +] \ No newline at end of file diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..d084cca --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 0000000..139a4c0 --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,10 @@ +export interface Brand { + image: string; + name: string; +} +export interface Review { + id: string; + review: string; + rating: number; + user: string; +} diff --git a/src/utils/constants.ts b/src/utils/constants.ts deleted file mode 100644 index 3bcff67..0000000 --- a/src/utils/constants.ts +++ /dev/null @@ -1,42 +0,0 @@ -export const CATEGORIES = [ - { - id: "74ee7f33-36c0-4446-8eb2-a18c64c2fab3", - image: "/images/categories/audio.webp", - name: "Audio", - }, - { - id: "c75457bc-23c3-46e9-acde-73bf6ff126b4", - image: "/images/categories/bombillos.webp", - name: "Bombillos", - }, - { - id: "6afe0153-7240-4cfc-bda6-09e08dc01031", - image: "/images/categories/exploradoras.webp", - name: "Exploradoras", - }, - { - id: "a0842546-e4bb-4a7a-bee0-0a81512885e3", - image: "/images/categories/exterior.webp", - name: "Exterior", - }, - { - id: "07b25b9c-fafc-4fa4-8621-3a1d7c0488c5", - image: "/images/categories/farolas.webp", - name: "Farolas", - }, - { - id: "ee3c96c4-03d9-40c9-81c0-d94b97aa7178", - image: "/images/categories/interior.webp", - name: "Interior", - }, - { - id: "509af101-457a-4a8d-877d-efcc5d9f6250", - image: "/images/categories/repuestos.webp", - name: "Repuestos", - }, - { - id: "b826f6be-d561-4a2f-b4ca-4f50d8837c06", - image: "/images/categories/stops.webp", - name: "Stops", - }, -]; diff --git a/tailwind.config.ts b/tailwind.config.ts index f0ea29a..c829690 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,69 +1,110 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - darkMode: 'class', +import type { Config } from "tailwindcss"; + +const config = { + darkMode: ["class"], content: [ - './src/pages/**/*.{js,ts,jsx,tsx,mdx}', - './src/components/**/*.{js,ts,jsx,tsx,mdx}', - './src/app/**/*.{js,ts,jsx,tsx,mdx}', - './src/stories/**/*.{js,ts,jsx,tsx}', - './src/assets/**/*.{js,ts,jsx,tsx}' - ], - safelist: [ - 'xs:min-w-[calc(100%/3)]', - 'xs:min-w-[calc(100%/5)]', - 'ms:min-w-[calc(100%/3)]', - 'ms:min-w-[calc(100%/4)]', - 'ms:min-w-[calc(100%/5)]', - 'md:min-w-[calc(100%/4)]', - 'md:min-w-[calc(100%/5)]', - 'lg:min-w-[calc(100%/5)]', - { - pattern: /min-w-./, - variants: ['xl', 'lg', 'md', 'ms', 'xs'] - } + "./pages/**/*.{ts,tsx}", + "./components/**/*.{ts,tsx}", + "./app/**/*.{ts,tsx}", + "./src/**/*.{ts,tsx}", ], + prefix: "", theme: { - colors: { - 'background-lm': '#f1f1f1', - 'background-dm': '#13131d', - 'primary-lm': '#fe0000', - 'primary-dm': '#444444', - 'secondary-lm': '#F20505', - 'secondary-dm': '#555555', - 'secondary-background': '#ffff', - 'text-lm': '#333333', - 'text-dm': '#f1f1f1', - 'input-bg': '#FFF2F7', - white: '#fff', - black: '#000', - green: '#008000', - gray: '#DCDCDC' - }, - screens: { - xs: '480px', - ms: '768px', - md: '1080px', - lg: '1200px', - xl: '1480px', - xxl: '1899px', - xxxl: '1920px' + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, }, extend: { + colors: { + "background-lm": "#f1f1f1", + "background-dm": "#13131d", + "primary-lm": "#fe0000", + "primary-dm": "#444444", + "secondary-lm": "#F20505", + "secondary-dm": "#555555", + "secondary-background": "#ffff", + "text-lm": "#333333", + "text-dm": "#f1f1f1", + "input-bg": "#FFF2F7", + white: "#fff", + black: "#000", + green: "#008000", + gray: "#DCDCDC", + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + screens: { + xs: "480px", + ms: "768px", + md: "1080px", + lg: "1200px", + xl: "1480px", + xxl: "1899px", + xxxl: "1920px", + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, backgroundImage: { banner: - 'url("https://i0.wp.com/citymagazine.si/wp-content/uploads/2022/05/2023-audi-rs5-coupe-competition.jpg?fit=1920%2C1080&ssl=1")', + 'url("/images/backgroundBlog.webp")', }, - maxWidth: { - 'f-hd': '1920px', + "f-hd": "1920px", }, - minWidth: { - 100: '100px', + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", }, - gap: { - 50: '50px', - }, - plugins: [], }, }, -}; \ No newline at end of file + plugins: [require("tailwindcss-animate")], +} satisfies Config; + +export default config;