diff --git a/.env b/.env new file mode 100644 index 0000000..e81a9d3 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +DISABLE_ESLINT_PLUGIN=true \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..5af5c21 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,7 @@ +{ + "extends": ["react-app", "plugin:prettier/recommended"], + "plugins": ["react", "prettier"], + "rules": { + "prettier/prettier": "error" + } + } \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..af5138c --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "arrowParens": "avoid", + "bracketSameLine": true, + "bracketSpacing": false, + "singleQuote": true, + "trailingComma": "all", + "endOfLine": "auto" +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ad97fbf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,18 @@ +{ + "editor.renderWhitespace": "boundary", + "editor.rulers": [80], + "javascript.validate.enable": false, + "editor.tabSize": 2, + "git.ignoreLimitWarning": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + }, + "editor.formatOnSave": true, +"[javascript]": { + "editor.formatOnSave": true +}, +"[javascriptreact]": { + "editor.formatOnSave": true +} + +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 52dee80..a707276 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,12 @@ "styled-components": "^6.1.1", "swiper": "^11.0.5", "web-vitals": "^2.1.4" + }, + "devDependencies": { + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.5" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -2463,9 +2469,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2490,9 +2496,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -2526,9 +2532,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2568,12 +2574,12 @@ "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -2593,9 +2599,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -3742,6 +3748,18 @@ "node": ">= 8" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -5149,6 +5167,11 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -7909,17 +7932,18 @@ } }, "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -7961,6 +7985,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/eslint-config-react-app": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", @@ -8164,6 +8200,36 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/eslint-plugin-react": { "version": "7.33.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", @@ -8703,6 +8769,12 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -14948,6 +15020,33 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -17170,6 +17269,22 @@ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tailwindcss": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", diff --git a/package.json b/package.json index 6c92895..0d4ed08 100644 --- a/package.json +++ b/package.json @@ -47,5 +47,11 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.5" } } diff --git a/src/App.js b/src/App.js index a5a2e80..5494194 100644 --- a/src/App.js +++ b/src/App.js @@ -1,5 +1,5 @@ -import React from "react"; -import AppRouter from "./router/AppRouter.js"; +import React from 'react'; +import AppRouter from './router/AppRouter.js'; function App() { return ( diff --git a/src/assets/card-list.js b/src/assets/card-list.js index 11f04e6..3949adb 100644 --- a/src/assets/card-list.js +++ b/src/assets/card-list.js @@ -1,216 +1,216 @@ export const list2 = [ { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', ], - price: "20000", - date: "15-20 May", - title: "Hotel 0000", + price: '20000', + date: '15-20 May', + title: 'Hotel 0000', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "30000", - date: "25-20 May", - title: "Hotel 3", + price: '30000', + date: '25-20 May', + title: 'Hotel 3', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "45000", - date: "10-20 Oct", - title: "Hotel 3", + price: '45000', + date: '10-20 Oct', + title: 'Hotel 3', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, ]; export const list = [ { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "30000", - date: "25-20 May", - title: "Hotel 3", + price: '30000', + date: '25-20 May', + title: 'Hotel 3', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "45000", - date: "10-20 Oct", - title: "Hotel 3", + price: '45000', + date: '10-20 Oct', + title: 'Hotel 3', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, { - rating: "4", - desc: "Beach and Sunset Views", + rating: '4', + desc: 'Beach and Sunset Views', imgSrc: [ - "https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg", - "https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg", - "https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683", - "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU", + 'https://hips.hearstapps.com/hmg-prod.s3.amazonaws.com/images/lpibo-ew-1656015868.jpg', + 'https://www.travelandleisure.com/thmb/BJupPeakYV7RY_vQQnmvrKAl7LU=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/soneva-jani-sunset-view-maldives-SONEVA0421-74b37591d80441ce87831a41da518e49.jpg', + 'https://i0.wp.com/theluxuryeditor.com/wp-content/uploads/2019/02/178793622.jpg?resize=1024%2C683', + 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTqg5siFywtSULLeH0eaN3k6cBQy_HSnJpJGQ&usqp=CAU', ], - price: "20000", - date: "15-20 May", - title: "Hotel 1", + price: '20000', + date: '15-20 May', + title: 'Hotel 1', }, ]; diff --git a/src/components/Calendar/index.js b/src/components/Calendar/index.js index 32da4f2..4d68203 100644 --- a/src/components/Calendar/index.js +++ b/src/components/Calendar/index.js @@ -1,33 +1,43 @@ -import "react-dates/initialize"; -import React, { useState } from "react"; -import styles from "./index.module.scss"; -import "react-dates/lib/css/_datepicker.css"; -import { DateRangePicker } from "react-dates"; +import React, {useState} from 'react'; +import {DateRangePicker} from 'react-dates'; +import 'react-dates/initialize'; +import 'react-dates/lib/css/_datepicker.css'; +import styles from './index.module.scss'; +import moment from 'moment'; const Calendar = () => { const [dateState, setDateState] = useState({ - startDate: null, - endDate: null, + startDate: moment(), + endDate: moment(), focusedInput: null, }); - const { startDate, endDate, focusedInput } = dateState; + const {startDate, endDate, focusedInput} = dateState; + // cette fonction permet de changer le state de startDate et endDate + const handleDateChange = ({startDate, endDate}) => { + console.log(moment(startDate), 'change'); + setDateState({ + startDate: moment(startDate), + endDate: moment(endDate), + focusedInput, + }); + }; + + // cette fonction permet de changer le state de focusedInput + const handleFocusChange = focusedInput => { + setDateState({...dateState, focusedInput}); + }; return (
- setDateState({ startDate, endDate, focusedInput }) - } + onDatesChange={handleDateChange} focusedInput={focusedInput} - onFocusChange={(focusedInput) => - setDateState({ ...dateState, focusedInput }) - } + onFocusChange={handleFocusChange} />
); diff --git a/src/components/Calendar/index.module.scss b/src/components/Calendar/index.module.scss index da8009c..ec0717f 100644 --- a/src/components/Calendar/index.module.scss +++ b/src/components/Calendar/index.module.scss @@ -8,7 +8,7 @@ padding: 8px 12px; font-size: 15px; font-weight: 400; - // line-height: 15px; + line-height: 15px; color: black; border: 1px solid #b8b8b5; border-radius: 10px; diff --git a/src/components/Card/card.js b/src/components/Card/card.js index f452cac..00e1a6a 100644 --- a/src/components/Card/card.js +++ b/src/components/Card/card.js @@ -1,13 +1,13 @@ -import React from "react"; -import { Link } from "react-router-dom"; // Import Link from React Router -import styles from "./index.module.scss"; -import hotel from "../../assets/hotels/hotel-1.jpeg"; -import StarRateRoundedIcon from "@mui/icons-material/StarRateRounded"; +import React from 'react'; +import {Link} from 'react-router-dom'; // Import Link from React Router +import styles from './index.module.scss'; +import hotel from '../../assets/hotels/hotel-1.jpeg'; +import StarRateRoundedIcon from '@mui/icons-material/StarRateRounded'; const Card = () => { return ( - {" "} + {' '} {/* Add Link component with the desired route */}
@@ -18,19 +18,18 @@ const Card = () => {

4.88

-

+

Beach and sea views

+ marginTop: '0.2rem', + fontSize: '0.8rem', + color: 'var(--font-grey)', + }}> 19-25 May

-

+

850€ night

diff --git a/src/components/Card/cards.js b/src/components/Card/cards.js index 1758982..4fb47ba 100644 --- a/src/components/Card/cards.js +++ b/src/components/Card/cards.js @@ -1,6 +1,6 @@ -import React from "react"; -import styles from "./index.module.scss"; -import Card from "./card"; +import React from 'react'; +import styles from './index.module.scss'; +import Card from './card'; const Cards = () => { return ( diff --git a/src/components/Location/index.js b/src/components/Location/index.js index fd1e9d2..d75a1e8 100644 --- a/src/components/Location/index.js +++ b/src/components/Location/index.js @@ -1,46 +1,62 @@ - - import React, { useState } from "react"; -// import Input from "../UI/Input"; import "./index.scss"; const Index = () => { + // État pour gérer si l'input a été cliqué const [isInputClicked, setInputClicked] = useState(false); + + // État pour gérer la visibilité des options const [isOptionsVisible, setOptionsVisible] = useState(false); + + // État pour gérer la distance const [distance, setDistance] = useState(30); + + // État pour gérer si "Autour de moi" est sélectionné const [isAroundMeSelected, setAroundMeSelected] = useState(false); + // Fonction pour afficher les options const showOptions = () => { setOptionsVisible(true); }; + // Fonction pour masquer les options const hideOptions = () => { setOptionsVisible(false); }; + // Gestionnaire de clic sur l'input const handleInputClick = () => { setInputClicked(true); showOptions(); }; + // Fonction pour effacer les filtres const clearFilters = () => { - alert("Filtres effacés !"); + // Réinitialiser les états et masquer les options + setInputClicked(false); + setOptionsVisible(false); + setAroundMeSelected(false); + setDistance(30); }; + // Fonction pour appliquer les filtres const applyFilters = () => { alert("Filtres validés !"); }; + // Gestionnaire de changement de la distance const handleDistanceChange = (event) => { setDistance(event.target.value); }; + // Gestionnaire de clic sur "Autour de moi" const handleAroundMeClick = () => { setAroundMeSelected(!isAroundMeSelected); }; return (
+ {/* Input pour la localisation */} { onBlur={hideOptions} /> + {/* Options affichées si l'input est cliqué */} {isInputClicked && (
-

Autour de moi

+ {/* Option "Autour de moi" */} +

+ Autour de moi{" "} +

+ + {/* Option "Toute la France" - Affichée seulement si "Autour de moi" n'est pas sélectionné */} + {!isAroundMeSelected &&

Toute la France

} + + {/* Options supplémentaires si "Autour de moi" est sélectionné */} {isAroundMeSelected && ( <> -

Autour de moi ({distance} km)

+ {/* Slider pour la distance */} { value={distance} onChange={handleDistanceChange} /> -
- - -
+ + {/* Affichage de la distance sélectionnée */} {distance} km - - )} - {!isAroundMeSelected && ( - <> -

Toute la France

+ + {/* Boutons pour effacer et valider les filtres */}
diff --git a/src/components/Location/index.scss b/src/components/Location/index.scss index 6e48d26..fc446b2 100644 --- a/src/components/Location/index.scss +++ b/src/components/Location/index.scss @@ -5,25 +5,32 @@ display: flex; flex-direction: column; align-items: center; + gap: 20px; } input { width: 100%; - padding: 10px; + padding: 13px; margin: 0; + font-size: 1.1rem; } .filter-main { position: absolute; top: 100%; left: 0; - width: 100%; + // width: 100%; background-color: #fff; box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); display: none; border-radius: 4px; overflow: hidden; z-index: 1; + margin: 18px 0 0; + padding: 65px; +} +.text { + font-size: 1.1rem; } .filter-container.active .filter-main { @@ -37,6 +44,7 @@ button { cursor: pointer; border-radius: 0 0 4px 4px; margin: 10px; + padding: 10px; } button:hover { diff --git a/src/components/Navbar/index.js b/src/components/Navbar/index.js index b755063..1d48e53 100644 --- a/src/components/Navbar/index.js +++ b/src/components/Navbar/index.js @@ -1,19 +1,19 @@ -import React, { useState, useRef } from "react"; -import styles from "./index.module.scss"; -import SearchRoundedIcon from "@mui/icons-material/SearchRounded"; -import logo from "../../assets/img/logo-navbar.png"; -import Button from "../../components/UI/Button"; -import { Link } from "react-router-dom"; -import Location from "../Location"; -import Calendar from "../Calendar"; +import React, {useState, useRef} from 'react'; +import styles from './index.module.scss'; +import SearchRoundedIcon from '@mui/icons-material/SearchRounded'; +import logo from '../../assets/img/logo-navbar.png'; +import Button from '../../components/UI/Button'; +import {Link} from 'react-router-dom'; +import Location from '../Location'; +import Calendar from '../Calendar'; -const Index = ({ inputRef }) => { +const Index = () => { const [windowActivated, setWindowActivated] = useState(0); const calendarRef = useRef(null); - const handleDateChange = ({ startDate, endDate }) => { + const handleDateChange = ({startDate, endDate}) => { // Utilisez les dates sélectionnées comme vous le souhaitez - console.log("Dates sélectionnées :", startDate, endDate); + console.log('Dates sélectionnées :', startDate, endDate); }; return ( @@ -21,8 +21,7 @@ const Index = ({ inputRef }) => {
+ }`}> Airbnb @@ -30,14 +29,12 @@ const Index = ({ inputRef }) => {
setWindowActivated(1)} - > + onClick={() => setWindowActivated(1)}> N'importe où
setWindowActivated(2)} - > + onClick={() => setWindowActivated(2)}> Quand
Commencer
@@ -48,23 +45,20 @@ const Index = ({ inputRef }) => { {windowActivated !== 0 && (
+ display: 'flex', + cursor: 'pointer', + alignItems: 'center', + }}>
setWindowActivated(1)} - > + onClick={() => setWindowActivated(1)}> {/* Destination */} - +
setWindowActivated(2)} - style={{ border: "1px solid black", color: "black" }} - > + style={{border: '1px solid black', color: 'black'}}> {/* Date */}
@@ -90,8 +84,7 @@ const Index = ({ inputRef }) => { {windowActivated !== 0 && (
setWindowActivated(0)} - >
+ onClick={() => setWindowActivated(0)}>
)}
); diff --git a/src/index.js b/src/index.js index 2ec4b27..835c005 100644 --- a/src/index.js +++ b/src/index.js @@ -1,13 +1,13 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App"; -import "./index.scss"; +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; +import './index.scss'; -const root = ReactDOM.createRoot(document.getElementById("root")); +const root = ReactDOM.createRoot(document.getElementById('root')); root.render( - + , ); // If you want to start measuring performance in your app, pass a function diff --git a/src/pages/homepage/index.js b/src/pages/homepage/index.js index d17763e..6dafa83 100644 --- a/src/pages/homepage/index.js +++ b/src/pages/homepage/index.js @@ -1,12 +1,12 @@ -import React from "react"; -import Navbar from "../../components/Navbar/index"; -import Footer from "../../components/Footer/index"; -import Card from "../../components/Card/cards"; -import styles from "./index.module.scss"; +import React from 'react'; +import Navbar from '../../components/Navbar/index'; +import Footer from '../../components/Footer/index'; +import Card from '../../components/Card/cards'; +import styles from './index.module.scss'; function Index() { return (
-
+

Transformez vos soirées

Lorem ipsum dolor sit amet.

diff --git a/src/pages/login/index.js b/src/pages/login/index.js index cf3c86b..4e1fb11 100644 --- a/src/pages/login/index.js +++ b/src/pages/login/index.js @@ -1,11 +1,10 @@ import React from 'react'; function Index() { - - return ( -
-

LOGIN PAGE

-
- ); + return ( +
+

LOGIN PAGE

+
+ ); } -export default Index; \ No newline at end of file +export default Index; diff --git a/src/pages/register/index.js b/src/pages/register/index.js index 99973ae..11bc2d3 100644 --- a/src/pages/register/index.js +++ b/src/pages/register/index.js @@ -1,82 +1,80 @@ -import React, { useState } from 'react'; +import React, {useState} from 'react'; function Index() { - const [formData, setFormData] = useState({ - name: '', - email: '', - password: '', - }); + const [formData, setFormData] = useState({ + name: '', + email: '', + password: '', + }); - //Mise à jour constante des données entrées par l'utilisateur - const handleChange = (e) => { - const { name, value } = e.target; - setFormData({ ...formData, [name]: value }); - }; + //Mise à jour constante des données entrées par l'utilisateur + const handleChange = e => { + const {name, value} = e.target; + setFormData({...formData, [name]: value}); + }; + //Envoie de la requête ! + const handleSubmit = async e => { + e.preventDefault(); + try { + const response = await fetch('http://localhost:8080/register', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(formData), + }); - //Envoie de la requête ! - const handleSubmit = async (e) => { - e.preventDefault(); - try { - const response = await fetch('http://localhost:8080/register', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(formData), - }); + //Gestion de la réponse ! + if (response.ok) { + console.log(response.body); + } else { + const errorResponse = await response.json(); // Récupérer le JSON renvoyé par le serveur + console.log(errorResponse.message); // Afficher le message d'erreur côté client + } + } catch (error) { + console.error('Erreur lors de la requête :', error); + } + }; - - //Gestion de la réponse ! - if (response.ok) { - console.log(response.body); - } else { - const errorResponse = await response.json(); // Récupérer le JSON renvoyé par le serveur - console.log(errorResponse.message); // Afficher le message d'erreur côté client - } - } catch (error) { - console.error('Erreur lors de la requête :', error); - } - }; - - return ( -
-

Inscription

-
-
- - -
-
- - -
-
- - -
- -
+ return ( +
+

Inscription

+
+
+ + +
+
+ + +
+
+ +
- ); + +
+
+ ); } -export default Index; \ No newline at end of file +export default Index;