From fdcac39c05cce40309da2931c85414e2e7935893 Mon Sep 17 00:00:00 2001 From: ottert Date: Sun, 25 Aug 2024 23:33:05 +0700 Subject: [PATCH 01/20] firts from desktop, base ui --- index.html | 2 +- package-lock.json | 547 ++++++++++++++++++++---------- package.json | 3 +- public/favicon.png | Bin 6140 -> 12835 bytes src/App.jsx | 10 +- src/components/navbar/Navbar.jsx | 39 +++ src/components/navbar/navbar.scss | 109 ++++++ src/index.scss | 13 + src/layout.scss | 24 ++ src/main.jsx | 13 +- src/responsive.scss | 17 + src/router/homePage/homePage.jsx | 0 src/router/homePage/homePage.scss | 0 13 files changed, 594 insertions(+), 183 deletions(-) create mode 100644 src/components/navbar/Navbar.jsx create mode 100644 src/components/navbar/navbar.scss create mode 100644 src/index.scss create mode 100644 src/layout.scss create mode 100644 src/responsive.scss create mode 100644 src/router/homePage/homePage.jsx create mode 100644 src/router/homePage/homePage.scss diff --git a/index.html b/index.html index b4929825..deeef21f 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Lama Real Estate UI + Real estate =4" } }, + "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1399,6 +1451,17 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1409,6 +1472,17 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/browserslist": { "version": "4.23.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", @@ -1503,6 +1577,40 @@ "node": ">=4" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1768,9 +1876,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "bin": { @@ -1780,29 +1888,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { @@ -2164,6 +2272,17 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2219,7 +2338,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": [ @@ -2474,6 +2592,11 @@ "node": ">= 4" } }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2572,6 +2695,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -2631,7 +2765,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" } @@ -2667,7 +2800,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" }, @@ -2696,6 +2828,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -3049,6 +3189,14 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3257,11 +3405,22 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -3272,9 +3431,9 @@ } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "dev": true, "funding": [ { @@ -3292,8 +3451,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -3386,6 +3545,17 @@ "node": ">=0.10.0" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", @@ -3477,9 +3647,9 @@ } }, "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", + "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -3492,19 +3662,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", + "@rollup/rollup-android-arm-eabi": "4.21.0", + "@rollup/rollup-android-arm64": "4.21.0", + "@rollup/rollup-darwin-arm64": "4.21.0", + "@rollup/rollup-darwin-x64": "4.21.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", + "@rollup/rollup-linux-arm-musleabihf": "4.21.0", + "@rollup/rollup-linux-arm64-gnu": "4.21.0", + "@rollup/rollup-linux-arm64-musl": "4.21.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", + "@rollup/rollup-linux-riscv64-gnu": "4.21.0", + "@rollup/rollup-linux-s390x-gnu": "4.21.0", + "@rollup/rollup-linux-x64-gnu": "4.21.0", + "@rollup/rollup-linux-x64-musl": "4.21.0", + "@rollup/rollup-win32-arm64-msvc": "4.21.0", + "@rollup/rollup-win32-ia32-msvc": "4.21.0", + "@rollup/rollup-win32-x64-msvc": "4.21.0", "fsevents": "~2.3.2" } }, @@ -3566,6 +3739,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sass": { + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -3655,10 +3844,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -3791,6 +3979,17 @@ "node": ">=4" } }, + "node_modules/to-regex-range": { + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -3943,14 +4142,14 @@ } }, "node_modules/vite": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz", - "integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", "dev": true, "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.41", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -3969,6 +4168,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -3986,6 +4186,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, diff --git a/package.json b/package.json index 84e628e5..6685a2d1 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ }, "dependencies": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "sass": "^1.77.8" }, "devDependencies": { "@types/react": "^18.2.56", diff --git a/public/favicon.png b/public/favicon.png index 5f01b902eee5c128304c34760a293459313c7570..392181bdb06e073ca5ae2c84f66acb975b77525f 100644 GIT binary patch literal 12835 zcmc(FcT|&G*XIL~AVs){N|Vq6f`X!;fJliHK@qS~ z1R_x>3IYKYlo~-Giu6dN&x!AS@AuyO&CDM&v(~s)BspiFv+LRCdG`KYI&NdWi(8Z% zf}mZN7AAHO#KvHKcEZ6(XaCq`@P{kd!Vw2Sd@ZaG+f7A2F$m(=>v!r**ct0%dS2K- zWe;zxr;l<}U@)MDAcH79@HNmU%tJCNFdzu07lo4lMWF}2vxZgV(cF@M{xb;mKBs4A zV)iE~_=S=`9~Ks@r=k)W8L1qpp^OdnRZ-K`)m2edS5a420u)NP=%6rOn# ztNl$%Z!f(tzpwzGe+Z5V2>ZuKfFDZ}y#S9OUzB{5lDE$}kMMvnd9+c0hnK&kN07H< zL{rr4OIRy z^_PPU{+uw43bXV^duw~^XlrWdDybp8wUm%Z4=*KMb)>hFy6!n$Z?K)ZhL+Y}d;M$4 zf7{8-6KtfZuBoo2sjG%m)7I70QT=PpugU+mpV*>wEAC^|26hs;Qu&rEHD2$$}Ina3E*Fizxfx8>0!dd&SOK-Cp`jj;X%HVCw)RAd_s>N zH()LJ_vAkm{J#%JkWl^>i+@QO+S~l$&>5AKzKT z9#k*cuSb93S-DeyQ_kcuBmEi0`gNv3Cz%;Dtvx@W%QVp4_#q{=d~S}cp}}LB@gD!A zh|?mYbvRxaKjNkkqZUMkk%Zn zhO3^;bmDwaQ4u4FiQ&u1^YLLBlNkMBBNUD$8`3>}(tgPW*qZJZ^P4Dow* zMor%-9`v7~o^^GYw11RYvZ6-s9zPo1}+%?X47q5Yl7h6>@?qty3mVgyZO$hN2J%{m~} z0dJ~i*5f9fKMsuB!XDFfcT?sQw;{BP!=!dmyM?m`T~y4`?fb3`&0uLX-DIMY9nBtF zUe&RE2_ch+84!NGbX&SO9l5SplbQQ2X`nFa5;K1jRz zu=z<voy9`34Kx2vh=q5lEihP!f|sg4v4KR%Nfj-Kmw!Kj5$ zT4uO?5a0`fH23jgmD7DLSD&ckQ*V$I6SIN&eHg#hq+$k2z}XU7IFRdmZGG%2(%`mV zLD$w}AaDwzIAVeHK)hqgQ(%FcHlJwv0#~AZFL3}iUtSR!#}K}vO|0Tt)qRH4inqbl zZhfLliJpbK4!w_IAB;(yD5|q)cxOt%#XY`V+e-510ah`=i3~bYx?kXAM@A$PHT*{Z z7~6v~n|MW z!E}Hr49(I{943y2fOY1}j?dDOHwS0*a(nt!E+dL`;N)U(Ot?1`yXrp5m45c3_=Ve# z3ZqPleX05fJ5#+9`C&0;*z3sPW_FvZiY3KfW26(DYz)>M!C9|bE%vw_{d6ujlGa^b zu~bV}6WzuCP5k;~>kDLE#;_rf@cJs(!j}exgxx5USH4uifySXB#q(8)V~2o*y^U9< z7Te~R4h8vX(7C{Aw9W15NWU^FeQ4O>Jlc8Np7GnR3Pcp!xvQId7h8(;!}O1L-=VYDPBc&<>D)YUWeNE z$3x~4wMpdpC+qp!v2#VO`+r;`LiJxGo2Pk%;zsHtdqinpfsuhl-g!}-fpV}!p2W?f zy7Nuedlut2G4sB|`qREh?V{BajNh#DG1xnYRczS0IrhPAdvkJ+wX9q3VZ^tQHTv1) zfzn^;Qn{kUQE75d=ULn3=RkWsvND@K*d_Ksj9#=a}* zw@jMGP7%Sp{46`Ir9ol9oWJ*~2xA`|)flT89LCt!Dt4-6y-Sw9nHH0wT>8vyv#!_p zX&gN6Er|a8KW*Kk0f~rN%la+_7KvRI2LfdH8W0(3M06WSKe1pcYn}3M2)cMf=F7|FbhVk1-K1RaW(XEMH zM{GM*PfB5Y(@ca#a8nCbHekQnPnR0ZcpTaKl(F$Bz2~lM=4rTGp>PQ`be9 zk0Q~*M_q4<6(xt|WB9WsTVr!M9~h|NQ{i6eBSOn5GJK-zDNM0x5_2YfeV}@Stq%K8 z%4-~l7{uM;qVd+RLoA%$sm zh^2jw1bh1Zilsm3Qm&pc?+RE$iVd3$DM871OD$>Tm}3NyJDb9#+{0orNPr$)?WVLII5ui-ziIgu5H> z%((VmgdsIEf}Fxpyo&3}JzD0gI$4?|Pw`L|M`O>`^RE5&!*ffG_O;i!p*sazh-ucJ zKnE8>1@;c5b!%d~iD+4H!NSp3)%d+yTN!LnI4g*f)`Z7VK#<;= zdgCWrG?M+j<5jv2HHAL~Q>Z(E_UQphj@T<>=Sk%RHZo^F%N}ugG=oKlpT6}oo=LW4 z0ib8ExmOKVqpjR(6)J;zxOd%Gow zdVAn;NZvKN2vf<$2ABFV98A9@^&FXZTDFC?n`13+f~7=6XFV)fY5`e&qVTzHFKjSi zD`Pz$mbaTMI!j)-FpZ9p)xZ zHqOxd@`3DCec%Pj)+kG;^Ze)qCetdz%vY<+c|QKFE*Ja)C%DB-mgRJsNm7=@b&6ft zUpAzd_=Fka>yfl;bb*Zb9?8(OS-Nl}JWl^{Qxtr`p;uqlGH+P_fImAtj@{AiaQn8* zjgpYipe&(;eJD>C5k?@raWpoBvCpzEe;-UD4WU-WyH-oyFOjTZIYIArbTcr-x9F(T zo!=~tAEDK-wiCo#WeK6@BNgFf+bp4FAZDQu*)#)rCqFTLAg1$$_~ zTG_Eus{2Qz+cdENT+Ni!;z)~(yR)s}fj|@`?Nr7Z-A~)3#k8r_2LZ}|i=fclh?N(&%YuuDO1NE?8HbpVS%Otcfs65KwRvZvIn9gP@W$%`1Kafkp!`I z78$jNieYtYHhOe&=lcQ#i)v2y-r2USFzTYZrlp-1-zD%PfJ#1QotrnmRerfZ^2*V^ z>_=T!5URZ7ve8)ur>H1>2O*IVKc@^Zr@)%Ksyg16CKs7iaEvwgEv+6IY?)sw zFBoQ^?~nw3onrkG2 z6Oi_1E}~*(p417S=*8eB-$tjGDOO&7K3PH);2x63zdrU9O{XXpb6N~}wUnNYl3OUD z3uyFy1KwDKX!UgQzW%iO_j3*8AlMBp*J|SeY_oO4#T`PCt zvxHI;Gm9dhen?u?UnFr3XYUfze$+D>6Z&cInD1;?IO9RT+PIya&D*8%H1NP;#((Q- zKU_Qt@lX|Sa{I88PN6-gA)%OGpI~_QQQkA$^ul7#*|umbDzodh_Ht!K)#oSv%054` zl|K(?5AQ)m28e_la!e&mvt!c`>f)8WfIm;7koo+1VxVcP^SQ3v)(&Gn_em+vg&yA~ zNpk$ekxA* z;#>V3DDaXIC3CCMQ8fW!j##7kna4_Rh8V6(xV>h^|2&CqoU&8i=yS+SYZS=dk(WE! zTK4V!@P3rH!j=RCZEt@cnMrpE7jIv*ts5C}<2O+gE`C^37H|?@yzlbe7katnKPe_& zvN<`Tf-PmD6B^irKXNUk)kcjL`kc~iMBQu7S4f84nLU!tzPIFj%u(l{ksmL*bA3iW zb%*uj^)U06<2PZ=JuivOg0Z~(EM%Nnf07Hy3(VTwtbNbRsnqrAgzalKc?OdOaFWa1aTBAADv$%R|8fxmAWU4Ly$ml_K)4-Xi8XmeZZ z!MnQWD?X^j_wO38V{9XJOvrW)(&LJoMd;E!MuW_M2t-1z+%dC=r4H1~q1p24TMuzc z{O$;k>JekOYoB>*cns#{b`0$Fa%-GB$!%U7in^_tf&PL}D=f!s{~mKB@R$H2sH-I| z>fjfZY3Q=x;}a){&xcSDMBv+r*Uosl=w|6WtPeqScdHDoDqMPwq6<|n?pXNx#Chn* zt;4;H!s?5=)#y^y>JXIUQx`*VxswFEA}39U2tUz%L8pc9Bq{qMuV*FsbK(#b_BBg3@Ii2Tj=%wM8ZGa?Yj);_ z4%Y4EX6WKeNMqj+5OgH{BMlkPU1)*>{e~2SHWT zshww4z4#kSZtwL192`84us#2ZG_t6B27W!XSn+4>#Ej8^92DtK&Sq3L=!`*3=L6PR zCqzl{LC5274_ZG7F}yP-=~o&JgP_!!qwl}~XTH!l1lfC#BO*CRwr+t5T`4*Qog)0` z|0Et(HOvOtpXgy3qO{~k)iN9O`qLUPM5y>&tWooeSTqDhi(XsAd=PmrF!2e37_U-h z+>`jABk^V~oPuExw4^bvmqUU<*9rv&UhEKu2pehjd< zLG{@ zJTBRBZUbAye{naf9+H-HAUpL9^XDU1R{$QUsywiy0%;#+S_6Ff zi>ogk*yVV*%QF~soUJCxsQJ8(AViRMJ-BwnoXWE;#ReTbbDEKOl_a!f%nluYh%=Qq z6GeS;dby}%AQdeH5t5n;YI19$4%uXM=X7&Gq_M+Se#x5(?0%e0MGx3}Wa$-H3b94nllsZ z%+eyGBx@!Xm?Of#UsK*SS-+4f_w~f`D&XI`c0!%yQi=Y%&xqZrArRsILwMY+_ebA{F9G3F=um_kPr!FhYK^z zkW~|cD!+w52Mb|yY<77hiOevkKFv8P(;V?dFL}4%9yZA3S@z@8xR)p+?%j+BAM%d% zwdIu9Hr6qC1ULytxpA-dOVa~6?H`c}@n6Tb*N<)7%2a8X1}EN}IxR3|*x?CwFTbfe zdwCDT{8XPx4!CiTTUB2oZ8tyo&;)Mk=KHeS$2)OlZvC&4+cYE2yU4FkN_&3K;0tAR#fy|UoDLN1dmh_xpE}MTntOmD3 zfD>|QbF|i0Ogql<(LLEf1Ie$;Rl5u~KEWEo{QANTAkzL7-^z34^DAjT&7S?>Cg#AP zhTpz5xLy`v04so=miy5@iD8*3ZXw1>5SzZ7n3h;0ILcph?Ap^FG7KWBWA)3%ygDW?Jp~adD`s{q_57PWi#vd^tlhnRETW2M=6Td#V840c} z!r+J>CQlA-Q{U{YX~4e{J-6I0q?huox~UgoeNuY8723IAeY@JPX#A&MuWmU+dkH7 zc+Dti9n4=rsO_!f!`mvVs9cl1a-+Xa_9Cf=bM6u-s$8gy@pJ0CP|1%6HPQ2+z;M^Fz;-EO(HrI&M~ERF;e0!575ac*V@5$BmE(Un-6Rs(P~>CI1Y8_OC9aI>T=w{M_oSq5uGh=#gukT z64c_7Ci$yr4PsNckzLDgA`*62C;af(k7ES5MSo0uD{M7eeYNDOqmgH%nDx}}eALD} zTkXY>CFO35I|oKo3$^ptJXYdX9~BJC)wtS~;VkBV=j&=8&A(E{Nct+zuVx>tBEoOt|&6>78sNH_I;1- z^tJO;Ht^nzIJ1Xr+~(T%`pmGuafV$2f)Ph)1{LcAXeE_H)U)RN!X@6ebST_jnSIK1 zo?06nnvFDB2JYOC^1Rj%EDK6O@Ej48$x z5Jw*LK7nZ-N@JoBXp6jOG3PTpa3|e-`Wc8cPbI$?Y56^l@C~JUbt3B@I#ZV#zQ1-jjG(o&c!0=!LU5FU8Yf zz4}NO=fYvz=XJCx^wl{s@!)>9Z zsdwF)b9VTx8m91=u50}0Vm^g`fiEbEW))+f3zsBvjfhRDIgmEmr#Hw~{K1WG&Q!w9wzjsPo8KL7MP z9hgRTgdun3sSANWBo7iSNEe)sWH-vSq)`qPd zVqO8BhSeM3lLtLU8h!+Pbf=aI;G$h`Mw+Il^skbbdAkm?&R6ckMnA+W{T>p~8O@$& zvCL;_X{Y}HZbL`?5m|tlzgH0|5bVaPYt`q2KKw|pjM+uZSYH{zlvUc&ugRHGb4J1A zG{Wtx%A&u;fwqigUxZRw^!>Ov#?Ru4$OUSysoN_@Txn3ex+ z>Zp|E8fqDz-aB|1Gxq!)fwRcmA_EaA(dG4|_5}%R?s~H`F%vple7z)U#?MWgiLx2; zphl9aIyfjCtimNYe3RpJf#SEM`QdhgGgxhxJYuwb=7G2>UH{Ri(g3UCItx2aB@P?L z?wWiJ`UIeVMRB3^f-2*CsdRQ+O!|vKE+X0n^uoCE1b!84(?-3j+d#qgi0e%UHV2TT zO8DxFm^l?8>U2S75G6tFXdi9Za`{XJKw$`;a+nm&9e5{^HY)wYDtcY~!OwiGfJnHP zMq80Q?<*p*`gZjtP-C`DK~PVFQYU+?P>ulE^jorsmsiu$L)fht#^pIgO;Sx=XB3{C`l1rU_^4etUP$H|`xOr~a{3K^myd4nDJpH^P5p4=u zQ2cp9WMk1i6KK8N{A=bj_d$Kv}nKwF#+ zNGT2!DG()lP_i6wayqC+Bdp&uFON!_-cr+Q^LWDNKG*x?7VeA3_tmFmCbmb-JTVC= z2d3;9*G>sD(95A(ewkn2l`UQ-0(io@>>X0|4sI3O85JTLa_c^@iJm}*b8&2b1f67o zUk#EYkDGq}wr~j)@eYDUN2UdJ`)*Z7YLR)#YZ5=`O$f31n$BM{yA>kQyd!DrO@o5r z9+b5GufEF9!wcPXaXT?#rnrAJ)ewZOALyo>qjDbZO!cE=CkldIccABR!r4^fmMz5@ zWHt$utPebH=i??}*mJhGmqw*)u7_ZsBI#o#tBj|ht7zv-O_uFUbtO0_z9N=cRQ6BS z*QwI$*vvsQ@C@UcvMSve04nAvMl_#Z=aM~PN^?p)YYC9~d;4e7zdBh`zdFleJxvEe zKR-jcg=~u17Eo=h>KHTO|GJxq06iIUVgj4nZnEjo6Zb=~meg&rsBqVt{AT=LMTrQ& zyR5J2ZhSCf-yxqvtz-_&S(D}5Rcvu`*mVp)V4X?0O^^X{yWDu7f_C z50&T>ttME{QLMbnUTgyW64T73^BiQ6UgL(hq;!JY`)M|8%BXbs3FmQi5txiB9=O%6 zL6<3tT)tI75Cq!hYjuQ3yda(B%=3P0PQ*w^fffSW<+OxRs3i`*E}nr& zO$S1Muk9kGKRm2*?p@Po?=ZKP%%>MU+E6-l{@&Qv9n2#5`F7s5l+LAbQ{;(+AdqDA zwdnPn@Hnonk+Ce3jo>Tk7%b=o7VvFo1Rn>}6B;S?oE)1mNcrXDKQ@V)YH+gLS zrXJU7bJ$)-Vm2?w9HC+%8vu>?p_)*Bpq*4_G5@$WHId0e8tA?&vz@p`T=4}Fz51@$ z?Zs#eDsXsv_8Ku>YC%B7%AcP&Y6OlRdo28;CO{axxve$JwSVn#cAEa2G56Y08hFB~ z7G?0;C4ja*Xk9_M+MOtUKzL8gb~yPrMkyr^)T4D?OBB6Or7M9ZZvnEpqKB(M`d)gi z5R;8_^E6Ef+`nS)`Kj(KU;w!)9v#fL6@B#0Cxf~5X36Q-6Jzh@B_6T;)CsPt&aS)7 zW?_;gggcKuD3v-YeNQv1H?ISG1yKaLWn7@mvx<~>g+Bt!A~TX{IDH{k%=B%WA@*KsKQzr=7G>!)XmBSIh^A5+EwsS{ z0#r0Nh9C$$u82>8_Xs+hKX8f|t3EgPs3-fp+sVR<+c}wbwTV+JR4nKdZviX^pTv6> z21JHX4aER3#rw$S9W2n#O8~P_R&kyojc(J|VcM)2hXI(1*3`%sF7gCut?sVhALRx# z&RjW3a|NbM0XUQAe~gAyWQ{PN+=}_W9G%l8TSb%k)FCB`UJq|jM zMbBDhQOLsl!+ud&uz8r9_uCqc0;*;Z=nk=g%nna$t-793yRV*Ir>v@D5&(+$;I4uo zVB(RsubL0Az(Hb(PnvkG1%0TRe&m4x6?Q&wn&oIgw0v-U;OF0Pe*5F5_p^T zmIH`WpgkKF#-}=!%WX^l2H-kvgiHdC;0yRT-C9=dns=aiH#}HissP?qdvNyy)DlBDY}YAPA9bGcu%Zz`ie9Eq z^FD*WA^9H!NCz%}lrmfxXJNB8cGe5mSFuu%*9|nW>JB*7;S^2+E3p!T#TM$q?c+7@ zDGjY8#bd0%c~&`D2-5(9pL_(bN7R>8bu<>Wm*3`XcnM6)n_D(+%K>0!eI|#CpP9}~ zf+sgDLpc04X5jVfC21DYODM|byQp7sJf90Z79>7%Vx0v6Gmrvw3(k#fm*D&^s%LiL z!Hyv4Ik?Ot|HP>IfgH#2QzN&&hr6IS$cfj5>up8F(r3C_-->WpjTw-ufxHb)N~~1x zm8i}BB=ONl(+jt1K+nD!b`}KS3mU4gL?ld3rZW{qc!tE5#O!q&stR<59WJ@_6Fe~~ z^Nh;;xX3~UV(-SltcTOt&$TJrJ+w#KmL=?}f1_P@$n;-`LhanLiS%!AvqFs)#-S>z zg$KTjE#gB;yMN&kf6BP?fwfRXx@!q~RjKRb*X2ZKa3T!>GVm1KH6H|*aIoran|V(5 zcSh!ZP5rRQz8$gXg-y`(YPHE27Y_3Sz?biQO?guXw4UI{wlVaBfeioL+f9ezTjFN` z(C_j`%Rag)z0U?fosMa7#P91m6kkU@@ik^oJyB_bjEu-Y4gxGE7kD7r(F8?(K6f^n zUcPdlAOT}C;>qAr)CVBUSubiS8sI+;EX3BPZM0D%H*W{7Pkr;6dX+XGVMI5 zrED|g#ko%uoZol>c4hN9MLA?rt%Bb6c1FhxiBF>gYopcv__KtP)*4*Jx>T8mJhKE}V1X1C4STeZ z$x(+Q_d|phwD>CQCL0d!f&daYVF^bzVII{B6(9BtLx+;)w*<|-0wb)POTAQPr33FE z&`WMUuoD78AcRGea~kpp6;z&NL0R&5R-bGLF*BoI95(ny%6Cyo;jE6 z!iq!{I6M)TtD(?OQSqb>CaX8WTx<0sjAx+Zew1Bj-_Pk;*fZ)Y!^mQR414xi-g3|&WS_NG$#HMID|8fCFNC~ zf*}w~3Nk1t%&Q6+KXXRB#+p`G!SHvCd0N$-SeOOpAlOiv@9%Xb+Y#%5Zy{ySuf>QGBdewn5Lo7k+OpvvhZT{`KzA-So0h}mHum> zsBY-E4r*&^^6qaCPJnBOA+g)?WK2t;Pz-^Xf-+%8^xO)Odx~<|p^iTahCvb3 zu9ZR+Uf0kI+mPR8nsyq--=>#$^j{Cfh=Rh`G6Bo7u&zA;C(a~cHk}sls}s(Fi(s)E zKjSCC0@iXYR`4ZZFU+kF9JbLzb}VF$T?2I)1H!`4)O@!Tt_p>u))p^IcK{4NLEosx zdqPoNyW5aUse$6Uc2zqZ8~g$|o^vb5Qqn^Ur`Cwxlew1h9E;_i03S)S z`NJ{Oik_Yk*s7|9pR;T$gqpFp!F$lPjMueHghKx|LBrgNXY$9&W=skzrVv&-lZCK? z!#wQp9w|RuOiLj(>m=uu-FKe4*>u0;Xc^-+8UsZOQLbpPcB?LV% zX;;GYJcJP}jIz_81B*S(`VxDo$i2~#*8zsjo{DKQT6)kGmNbLG-(B|RVu_;rI1`SwXnFB} zEH4NUHdw~O&~8<(FzZxD#b6Sz|4v!18v=+j8P}t6d0WwaI3!Xrptx|j$q`7WktAMU zSU!hABx9o&hheaBxpT$I(9-Hy%}zd1tt2Id6@)OTMPc5g#Uc$+#aUZ(9K%V=L*Nj) zW>ea+0vZMpqrzI%*;RBOV{NH^DPLL*hV3+LF*w6$IAM83<)mr(#op}X`@NH z+ym6gtCWnVQWfP|s-UP)TxyFxOrc#oR~Hsb65taU0;f!D;DKX?m{S=M6@uY#%*O1~ zvO-?;VO?Aatq0VFB@oRgxQ)>es08C^i|NPFa2r@|fq~r6Kx78T0FJQPqk@C}a}gFfJQbQ@Q#=3f_t8#t_2tQN|e}$qzx8VdHTB)#Q0q8NS z)4N4C#LKv1)wr0O(a^VU?BBpP0#O}&_1&>>&7j|IrG_jp3^jG)H@;3BXVm?`r)e+m z;sxm%sb2(e-SrC(&&~&px6;{mi9~!P_cfIl`i57 zP>HOd`R1QhNtYsoK61;!qK$BU6&AYH#fHZrtf0%Zy=eZ7qoMCV2~&4|16ua}m-wNZ zfv0)j87i(hDvna1(3jKqR(I@(cB3UU*V<7p31^Ik$6uzT>r(B1)F53ipe`(xas%)9 z5o20R1w0Iv0v*7LsE}o^{JZ#kv!X)Kb=sf*2^G$;W*ZdM>gS&-Eh+>>^b0Dc^PIk@ zr`p+zVtHt*WX|M&`wgViN@4q^~QF=eHg-A z6qUhHsP&+s`OOt|09OljnnrxzSW^~A29rF%|GFlYNSuAxwf!)Z8cf}%M4+z zwyQBp9l`6;1NQi)O!WGOANhfOaiORlR@qaG%a{v=B0TTtxIj6S8PvG&x6goApom8; zgf|q|)VH^SB{o&7i%Nhb={l6udRmFfd(6>LSgzG}taJ~H1HkTs3AvfsqcV&z1GQft zlqU5pF*w+Qbt-IsU#(V)k`Ybww}{=y5;4>)YTG@Q3z*A{I-MvNfa0}ULclT)P5~eO z>R&3QpmRAnX|VXY$WCQcR1*928t8kT055}0%Bg;31QbJ(io$A6gyjKzzS~n^#%t~d zOYn?t#Xwi4cEe#gtR1uiE<$ZFxVQmb3f<0%An{;OJSRJyTS|}HXX2%*VNuZrz%u;Q zDOjH|SuVjc!-fO8(>rt*Q(!n04sT9c-GQc@dxJ(m_d=m8{@^`vk%OARq~VuGOcg$n z%coDn$^L#g*8ef2sG!oheH?14t6^D73#?hOLcEPT9@f)KQ+vC3qK7QB$3~jko2G(c(7d=y09w2Vw2%Aut6u-%+YCDq~DoxIH(^kAnryHa=5P z$-7^mxZZo~EqeV2xHOb6mg^H8@X)qz<=t0bmxc%L`T$HJz&;uV4UG>O?g|J;Htx4_ zcH!qO&ewG!w3)tg1r8lJ0I$CIt2}{y@7{YCLL-L4?r&sa1^X_Tg5$U3Dh0Y2UrdoT z7F(4>PUSuIH2mFl&pq(mFMbL4KK$^){Rcm~x(g1T-Z6cR$+HW^u|Z>^LJSK_d{L7_ zJZZMF6L&vZ+SUf&?|BlQ{>OiUW%TDuBO_vRkH^7Wvv#fd*}TM@v6x%_Wzw}Oy+;@X zZr{9Fbg#v_yP6ZaKIIOkhe_W?c)%2qXLl-3!Gvk)F#tY#~j* z_&j4^gn*b&gUl~jHRxK>0hS4f2nHywM`>tO7EAFnO6z_3Ew~k8T3AM1D;twXTjR*1DF_6A%lO5E*%WdnC!cPj68$>~fM-3qZJEUDXBdZJg9xZ4BE z25vAsl)tBYhHceuOoS)FBGxwr;aL2onp0|`#N8Q=Xbjg_rJ>;TSSj=2F<-A1ll5fP#>iVat1dyIJfHKYLcckgbd5GIS(Hr z``~N_bRg_K-bBT+v~7jxYDz~!cl+Ie_u&*3VZ;0%fDxu)?b=mv$ISw)@2D1U=Yb)R zpWkBFtq@0qg(zn~L{nwF<ogG2SoTv%gh@z3~J<8n5^3vveCn}0|ahtZ{G_%RPIVupTXj1>+JuiKj?4|Pz_gd zEG5UzpT#3QJ0Zdou(Z%R`vx@6zN6m215qKaA1fy?*#`(8-*0s#b%Zf6Nyp)tC9}UN zuBgj+Br3#p$3l*uJJ%@?VLu&NZ-NNh)Mh?g2y+ZS16BNpwwPo*6cyr$u#ltY&TJ=y zyaW-pKv%-Ot<2%vP>oSM6Bcsp+&MZ}Em%89Il_vlXq}3Gz|2BZr|?u*$kDTBdkJH0 zgON(cw5S}MsbB@q&nsNNdUdbBgRR+#m4*eUdKq}8%P&zOo;#LItW zoGvcT?DZMngoQ-nDoqV{8dgs}r{Cj4#L!1eJ6#{Tc8IANJP(CRqOhn9)}>5{YPS^n zf*~rzSI3h1?97?_S(dyM)wv{OQQ>uIgg)SK;e+?RK0N{0oO*{!vOaFN{WhB(1Bw*f-EW|Fpj09Qj>a|=At-@%N@&DsE=#BXqwwwt@c;*YepgroB@tW4c2zXurHUY=P(AuJhb5F6dAd<51y z`$k{O^c(wtXZM8Fozw`Gun;Uu0LS(cLLP&#!^7?yRQ)790{ zQI@NjLMtqps{&&-hbcq~^VyE|9UVz1Q$jB+CE_eqAWzW0D$t8JaC{WUNui7>D`Clq z!$Vo72N?Fg;JFw{-mr3&?s~wlY1&T<(ZLA3yKp{bf>nrD6N{fmTmKw6y1VLyb zMChddAx(r~)=+Usf+HkR^dv!`!Vz6)Lg2YcI`otTo+Js!4OF6t)c6zb=S#fkz?$L! O0000Hello World - ) +
+ +
+ ); } -export default App \ No newline at end of file +export default App; diff --git a/src/components/navbar/Navbar.jsx b/src/components/navbar/Navbar.jsx new file mode 100644 index 00000000..3dc1b2ca --- /dev/null +++ b/src/components/navbar/Navbar.jsx @@ -0,0 +1,39 @@ +import { useState } from "react"; +import "./navbar.scss"; +function Navbar() { + const [open, setOpen] = useState(false); + return ( + + ); +} +export default Navbar; diff --git a/src/components/navbar/navbar.scss b/src/components/navbar/navbar.scss new file mode 100644 index 00000000..3d0be399 --- /dev/null +++ b/src/components/navbar/navbar.scss @@ -0,0 +1,109 @@ +@import "../../responsive.scss"; +nav { + height: 100px; + display: flex; + justify-content: space-between; + align-items: center; + + a { + transition: all 0.4s ease; + + @include sm { + display: none; + } + + &:hover { + scale: 1.05s; + } + } + + .left { + flex: 3; + display: flex; + align-items: center; + gap: 50px; + + .logo { + font-weight: bold; + font-size: 20px; + display: flex; + align-items: center; + gap: 10px; + + img { + width: 28px; + } + + span { + @include md { + display: none; + } + + @include sm { + display: initial; + } + } + } + } + .right { + flex: 2; + display: flex; + align-items: center; + justify-content: flex-end; + background-color: #fcf5f3; + + @include md { + background-color: transparent; + } + + a { + padding: 12px 24px; + margin: 24px; + } + + .register { + background-color: #fece51; + } + + .menuIcon { + display: none; + z-index: 999; + + img { + width: 36px; + height: 36px; + cursor: pointer; + } + + @include sm { + display: inline; + } + } + + .menu { + position: absolute; + top: 0; + right: -50%; + background-color: black; + color: white; + height: 100vh; + width: 50%; + transition: all 1s ease; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: 24px; + + &.active { + right: 0; + } + + @include sm { + a { + display: inherit; + } + } + } + } +} diff --git a/src/index.scss b/src/index.scss new file mode 100644 index 00000000..3a9bdae8 --- /dev/null +++ b/src/index.scss @@ -0,0 +1,13 @@ +* { + margin: 0; + padding: 0; + box-sizing: 0; +} +a { + text-decoration: none; + color: inherit; +} +body { + font-family: "Lato", sans-serif; + overflow: hidden; +} diff --git a/src/layout.scss b/src/layout.scss new file mode 100644 index 00000000..a78a4a0a --- /dev/null +++ b/src/layout.scss @@ -0,0 +1,24 @@ +@import "./responsive.scss"; +.layout { + height: 100vh; + max-width: 1366px; + margin-left: auto; + margin-right: auto; + padding-left: 20px; + padding-right: 20px; + + @include lg { + background-color: rgb(247, 210, 196); + max-width: 1280px; + } + + @include md { + background-color: rgb(186, 203, 234); + max-width: 768px; + } + + @include sm { + background-color: rgb(239, 200, 200); + max-width: 640px; + } +} diff --git a/src/main.jsx b/src/main.jsx index 51a8c582..af80bdf2 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,9 +1,10 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' +import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App.jsx"; +import "./index.scss"; -ReactDOM.createRoot(document.getElementById('root')).render( +ReactDOM.createRoot(document.getElementById("root")).render( - , -) + +); diff --git a/src/responsive.scss b/src/responsive.scss new file mode 100644 index 00000000..f4f75772 --- /dev/null +++ b/src/responsive.scss @@ -0,0 +1,17 @@ +@mixin sm { + @media (max-width: 738px) { + @content; + } +} + +@mixin md { + @media (max-width: 1024px) { + @content; + } +} + +@mixin lg { + @media (max-width: 1366px) { + @content; + } +} diff --git a/src/router/homePage/homePage.jsx b/src/router/homePage/homePage.jsx new file mode 100644 index 00000000..e69de29b diff --git a/src/router/homePage/homePage.scss b/src/router/homePage/homePage.scss new file mode 100644 index 00000000..e69de29b From 320fcef8a0c7c4635b717ce2006cd49f52d7549a Mon Sep 17 00:00:00 2001 From: ottert Date: Sun, 25 Aug 2024 23:50:48 +0700 Subject: [PATCH 02/20] test rafc --- src/router/homePage/homePage.jsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/router/homePage/homePage.jsx b/src/router/homePage/homePage.jsx index e69de29b..1a2e15f9 100644 --- a/src/router/homePage/homePage.jsx +++ b/src/router/homePage/homePage.jsx @@ -0,0 +1,7 @@ +import React from 'react' + +export const `homePage` = () => { + return ( +
`homePage`
+ ) +} From e556911732650544abecf32b30edbcbdb51a63d7 Mon Sep 17 00:00:00 2001 From: ottert Date: Sun, 25 Aug 2024 23:58:42 +0700 Subject: [PATCH 03/20] Revert "add icons" This reverts commit 932f1693977435298212f79a8cbb6318645c7e4e. --- public/arrow.png | Bin 7966 -> 0 bytes public/bath.png | Bin 3708 -> 0 bytes public/bed.png | Bin 3452 -> 0 bytes public/bus.png | Bin 2675 -> 0 bytes public/chat.png | Bin 3006 -> 0 bytes public/fee.png | Bin 4624 -> 0 bytes public/pet.png | Bin 6814 -> 0 bytes public/pin.png | Bin 4618 -> 0 bytes public/restaurant.png | Bin 3663 -> 0 bytes public/save.png | Bin 2856 -> 0 bytes public/school.png | Bin 3809 -> 0 bytes public/size.png | Bin 3454 -> 0 bytes public/utility.png | Bin 5139 -> 0 bytes 13 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 public/arrow.png delete mode 100644 public/bath.png delete mode 100644 public/bed.png delete mode 100644 public/bus.png delete mode 100644 public/chat.png delete mode 100644 public/fee.png delete mode 100644 public/pet.png delete mode 100644 public/pin.png delete mode 100644 public/restaurant.png delete mode 100644 public/save.png delete mode 100644 public/school.png delete mode 100644 public/size.png delete mode 100644 public/utility.png diff --git a/public/arrow.png b/public/arrow.png deleted file mode 100644 index e22dc51d88fad591d138cb46a5f6bc0bc960f135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7966 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 C51yg` diff --git a/public/bath.png b/public/bath.png deleted file mode 100644 index 98dc72cf707e5420a665503b5188a99a2b865dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3708 zcmb_f2{@Gd8XwHqiI6>ONSMV~W{lA=BO&W>lv5gJFkQ1SgBi-6QVOAy6rn{SvXoAi zNw!L&Bq0=9L^i5^9NnTEgIF5Cj5h#6-g25E#r7iZDjyHv#~_5i;I~ z>9fNb89<|$5QsE?k_n4K=Q-fHU?F+06cUr5$)bc%8Az73{t5!gd*_S6`e<>@?-weJ z7>M-1+JA@gzO40wnM^to433P9G>J4dp@jv3p$G&541s}RFk>FVn8Btp2`pnOLx;z- zmI_N^1cZ_4OfrqC$)_gx)54k7`ueM=KSCk~th%9xhlQ*-AqId+AtZib7+|OgbWN1R z03?&l3?cm#I3|SolO%-9&jcAlpaxm%vy6$PKtgy3Qy=X`U9l%>5=jhl5LMGy(;Nln z2N**Bfni0mmK6L?T(7`>$n?J~0*1*9Bm1uwg32%e{mYpBhd7VOR0Hys};S{pBfm{WV?FU!Dw!31f zYFsP={V#LJ10z>vgcgRU(L&I61Zo5U1^!w5?}GgE(D@0&JAQr`T=44gg~kUwOacHz zzih{1@T@aaXDO-bUdnB;k&zjo>mNV^d#>5WZ%Dc7QBm->xRb3dy>3wd!?T5OHyoN9 z57&~h)wLDGqAzEBGCX3-o&m`m-LSjHR!sG1tv9d$Cob>PUo&;@`fhQJCDS~{jZd8& z^>b0v){Vr+rd6hl{GsJeHoKFN=h@_L;K)`TDQ*_?fK;v@bK8q{6TT>9&G8+2s5g?6 zI%$9+i-!T|(iLhxqDo zzZYzPy!g6jWSVo7Q^HY#++RegnY~*@YYl{+ezEIfO<$0r&kKor9 z-WT6D3a zO}*XRmt`2*FXP*B{>q_^WA>jns?^g!F+er<@&3@g>U1d;k?iz=SBU9P-#8$#XW7c3 zLo&IwI!iFRHCN%B)yVIPaef8vi^%!%6UlK-@x$!4`x#YLWCzD|%MN>r+s%8^d3K4n zZ3ROk3n^tUkT^ml=ew(ep8fUzrdDw8Mzbl z{&P!lKRJuqV|G2-?Y?Qt1oZ{I6 zpVA7zF@Th=4==E6iAn{ZG?n?C?NtL#Tpyy0*xNMR>5ERP2kSrrEa2nEr~Sr1iyWhtWs^p5>RG@?y!of zPVy(^;~WvQ0ao0*((=l+N(V{ESpoo*OUtP>uW%mcaNV=oh-wQ_-n}&jHwp~*$%9TN zHav|jfNO7E@P9yX{`LxXsx?6Eg3hxecjK;U5E@F|O9nT*&G0Cc$YgKsYLVA#cPSa1 z&0%>ozlVUX>PpLvQA$uXue^>!CZ|p42;3=6n$P&@k9j)s(J$Ve4iXYjv}~LH3dHfEvRR20c(;J#fyEn?-*U|yL@Ii)4#B>vSY5^?9c}#YBd#&Rq+)^i>kG(gPWHG@QR)1TPpR>x5oz)hY|w=FBM6a zn5E1nPuiNMoI8L zLk`|{XaE|0IaMHt5D`?It6M1h5D;@@!Yw~CE?>yTKGwSIW$Gl>>w|c8W|}%`L1kBw z@`V37?aSP*qV9lA9dMb=( zGo2}!&?3UKMhB{uM{B0Eih6W* zid8llE_z`Vvl*Ri{4Y1fcr!vWXN!cyPGr0y5(QjPYCBH52?gHZ?3_LRypUmbWHRi+OK0l9ZJy*#I%wAO=|rQFrt16S^c`1-GszuyYTxL? zQdK&&MFpdrOt!N9uFPo8L}*L3Y!Wh1a!F5k0o<%KEo7IJ29Z1RERg?Sw;kt#y=uER F;qU(J< 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 NDSry^7odpanoHDy)Fa+|-gp zg^Jvqyke^gTXnDsDOJBvhkZQj3#|G7CyF^YauyMkglamzLP7 ztHV`6oRpFbx2B-9CZPhDuQ&Q6sOLI!p?Lzaw`co8AQj0Uw^AvOyOl|Z*4$R3!G65`tYN$RItHH{U zd`e~@IF^(YWhTJ`BCl945iC*)3Ozkw#Of!efP%sRB`6@etQ=E{ksJ>4NpNZ*ng}p3 zKoSLsMa8Khl?AD`>OrZ+`K3k4smLh+YM^sbYGO%hiXAY;ndllA=^9zs=%Y!&Bhdyb z;aXARnPO*XZeV1XoM@?=oCqXL%uUjCEzQi#byLj^4b0Lk4NZ)alHq1Sv|yOzmIO4& z)X3Dx%oM1>(A?70!T_!ZEQz5dB)>E{1LQ3`Be+V07(zLYXhsb#m{(DQl}Zs^fRw91 zu?)_xp!fw!0OQvfC4PZoR*t158TmzaJ}x#OB`_|Umnctwz+wU=^}*d$kywC{?tqG| zz-c7EC?r2W$Idx1uPo6@vEOwC{2$V9N%CYf?nW(qlTK>(dlTW_0v^KV`{+IKQpYO~~W8>eO z?`wzRJnL%==~dfivebDAcuV@RuiLusJcB*Me=$=Hp(4Q#Yz7gb zDWV^AK4c`^)}3)U`|ccm9?R2F2aeAu{^+>f@t$I~vVoVSWGNq;xyzQj5s@NuU%vlP ztzTfACe6RYewWj)hVL`$JF<>Ro2WsCHW z6DvP+7G&Lgq4gy5j6?Q;&3F4}eD*N6V7T*I=Qh`!iBs7Plc#Q+3^ear#M8_N3+GIg z>E|-+`}k&agvF^t#V0h1oel_Idbg>3*QO03(&f9)S=+Yo@Z?@&DtG;M(L}E!Q%3vA zv^R@GTuykzdUkLLy1h|+o%-Oa7E|W~<}*8a&T#x_)H}xXfvF%m<8g%I<&ytKUuJ~b zd3}GZX>D-El|S-OfFcMLv~F2b^w73ib=INW*IYN7cV0JY{g-W~dOmU6NAm-5zuCWQ zWy|c?G;hWY4CzYTt!QE~TReY%%XHJA4;NTp^HnWZ&|Csvkl{ z8%;W9cT{lehMf@jkdh+r``AXQ<%OcRgq8~eZ48f0-63IYnzdW=(09i5*9E)r} zfSKEU7lwORHn!)m&pYs^^y$SzK8G%?-OK#I*JoY-*4$S;$!XX9ykwoeJvvjNJVCR? zr+jrdEI1*7ia}<6^wS0=eDl>co({j4CEKrjF?E;pp*+1l1NBE`5A+}G1}FOh+t0=> z{XfbUalX4;$g+8R#amTH=~AW{M^%c$Kg~R<;v)AgS7LHZg|XW7*EG}Y&WZk;G*`#7+r73+m|C7JSFype@#M*`y1lz9;C0{ zBei34>-8Ud57eI9w6eu;=Z@D^EEW38=lynhte<&kWm-bS5rt<<1LWH@PIO=Ug@ZR}8mKwv M>FVdQ&MBb@08kyyO#lD@ diff --git a/public/chat.png b/public/chat.png deleted file mode 100644 index 33634617849fd9f0462728e32abb4c6ecfe6e1a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3006 zcmb_edpwl+8h>?>)LOzwB}Sx;F&D#_iNTl|rbw7Vh34`OlewL_WTsSeq+M+)loKix zD>^jA$71VN3!Ug^T#>o{e0fb@A-Xy-{*P0&-43z-b0%< z`h20kOdkM%FKE8xAn483-g>&wQ}iN@4!stNe8VIFU~pS|>!jHmEQgG4Qc9@QTgc~w z0x2LD6W9c@7ZpKbQvIkwECSleVJ88Hb3tRUu4q?0+7*L!M&a>j2PpxAMPV?mXgtC# z`#J#3d&Z@QN<;nq2rMDrk--)+K}R`X1UZ0Q$O+IVACxkzV3^Jr3n}|VSum}_e zfpK+1&YGGkqTA#IMJ}bWi6}OkfdyT02t3vai@>s&t_Y@+GZTRW*)E`q3z~y>;!JUU zT=E$cl?f3!W1KNA&UiEyjl(;;qNdhNOn$b6E|jsNwP_JCQ^>z;f5HDvnP z{+|jhnzpO7Ri4}Y?(v`l7dQerU=`88nYh`9l6MLXNoE}vy^KYZ8 zBw^nl3hj`>S`Bto=lpZ0>-8(UM*9*H|B)M7y#UxXtS-nG87OOaS5p%eTv8qGH%I=3 zT*q2XcL2YhoZ10rMzrCpt#O+$*b_R*N8dD-Zi(5qzcywi`F3jl^*QOy=rQ-)ZMs0x zu&St&$VZulel?qp7DY*6QtZzMtqzA<&6m3*5%KpD>~_y3)C671cZu*c|@ zb-D2%i&)~VOmDed6VlUuXLHn^cS9w<1By(7Sbc00lJr1bOcc+3X>55mVqeJvbx7i` zJZ9yW&i(M7c9`XJO=d-HNi(oz^sdTYHahfS;4{aNvQtr1wG|p$FI(NIaDD5N>m|BJ z_i%Cw!Dh4&%#26fJ_L1D7JYwh{~POsL=G)epd+e0Hb#TLO^GR2Ih7tbQ$>~@&Fl67 zHlB$#Im~M)HK2#*t9s$JhN(&3+i7)&cQ3H@x4aWrQ=^VgA1KN%5?s@RcOH-H*y7og zoy^&Y>Ag~D67;od5xrNZZ!pDu{yt1|%kBmKvMQUBeYj@a+JbJqxbU3E20P$NiXJQA zRZd}LH0Oum`?tVWDl80m_IM%30@WN+&kOm^v{T+z3x%uux=b~;Hn590|8;jxFK}yQ zh)U3kJw4|c1FZlsbtdJNCsc-J_4#HsGA?2CeN_VqrZDsDS+)P(rJ8=A^Md5*=B#j; z)$4$pWhYXcjwcF+jQS{vg|FVGEMLMI%00F{+pNIlU5!CPi{I}u%bO9q6Epf7w-(2Q zcFd7_^yeFl_2tH{sBVjZ0R@uCcXg^&vNqfCr^W~8QB9UC4fNeXhW|a#=5}vZNZw&h zsX0RT()lP6(Ww4au-6e=59+$|D0ytWcVpj`?^vR*^SZz3X2ewsVf0~ zF5`9_T*(~|jr=j`Qcb4DEBJ|@gV^*iU6J{+zNmTYc812tH#KR=U}-_i@)f5Ev1ij; zH^R(yL|n?vE}cg^IqU52_L5TB^U*@j`mD{_9``yyU7$sPTyW{~t+CRzb#nm2CaCGL z)Vcur84CbeAhB1*A#3YOAadq~*txIY)@SLHvFrZud3fKeB?!I8Ul#Uo=ab_e-4%Px zTENz&N;FKZcOwosKNezbR1fDM&0+v0rSnov8_=*OeOG=(L*0khW%~k>=8in1m#4RW zXgG9>WgrtQSMrT%oRq7--m_076n22DR2$rq!41ICuhKP97s@Lf_Ncy<9V8|D^pNM# zQhg4+^Eat|bhZIeaB8vDja;#H=4$SH2j#l;u+|rk`zf5ED39JAGcP{eqW-F1wQh?b zGC0KC({o#*%}=(s$6(5z_4CgZ5?_??_&2u~>yaR{HFKr+o0}1cQ?cfA$A7weYIr?U zlgKnL<7>dhyhZSH4BF3KK>L;w-(oGIm6RAwzAtsU3qGh+oNO9K*a$Vk+>v+IN4OgB zx6KgWi))GiWV(Pp=$MQ22vZD3Q0i2r;TDUe;i0JMT2zeUgoJgOZ%ZdQQr=-(`#M5P4zf2G7RD_q^*bv;enz& r7aHg7({rm|2R5ls~fk&95 z(CQeMV+1D}3IWwoJBiSNYwBq0X=}rvP(4kUCQL^Qszyb?v@~HbJs8X)b<2^Bjgv`o zaHcxj+8}UbKMgFN>_yO^`30~7utLxftXn?<6{|q=^Ysrx(2T&}5D3=&ju-+)@+tgv z7*g=w2zzt%Ur^SQ5tvA&1|T4i(9lqgP`Cz};sb%|>+3@_VGtNhorO>j3iGF8Y3lw# ziY!k*yD}#P;V7g4Dv9i`u;Uu*MGmGKfx+KVf2M@TeGd~5O!55|1doFdd=cw>WosbHj||2KQQ0-g{=^6^(t zSAZKrb`ta@{ovu7@D&<~04RC0_E_=|)^#*QKYO9>)4gar_c!1jb7axeu)_;CXMa%e^&V5tN= zk~MK!>Y6Zhn4Tfz7uEMB8vdoQpi!;xNW31wOH)rzTU}dQTUT8R4uh)eXYJ57mO|>TBz1ez*Ci{D+AHIT%OWDGLevj{LXm z-|+vU%|Fxicd0+q`v27EfFItfoi2ZSU3dD+Qn309|Ea$$83GkdC6Xyf8*{@Q$ls5@ zl=OceK-M<#)AW7Mi-ryO$K0{Nh;K7OrZ|wvzDP5ye+bqP@~im2OY-kc=NAlX`}tvT zA>X$zq*U;$3^q1_R4a3o1Fc}b@Jyn+lSG&C2yfN3hmKBlN^W(RRIG^B_Q{e^FKfY+ z{pYPgB&%{2TVia6dEUkLEOeD5^iq7e*28~s=1l^QC5u2Ot)1#70Z#7ktoI~S@9`+s zglu0h-XrV!b!}k2d9{B-f1$r`yzex2EbRK~*5-?dft%9>5ij=jo%y_Lko^qTi-or7 z<4m8nt+0u{ge5%;_b|6R$8W)3Or!NZ4HkRVxN{fi1soxvUqEUO(Gjy}@;mmeA3roc z%wg#5SImZtN4PX2&qXIhpWKrE5?$@$e-bGUi^f3LG^E14Gb`B3+9c*0OVqdv2I*_i zP=kVv5YW_(wp~E3&i`SVU3s*32=$pwSaCGUm?AR3rr2g|5PbAG1|!c$oJX}+D1dfYU`G$z8c0(p@+u<;-w`PTEM^zF*zJDU#?81TI=m%n z(2=Qn1kG8^{V$iV#_yy0H&6|GfjRmGx0UIg~lmmI|^XU?{14wl1;b$XN47}5k`jaI6|=W!@bj*yR&UDCcmwbwEwm0B7ymdH%*u4ecg>T5nDiF z{nbgM+eqdNeOkthbIdu0XPtWyCMubP~? z;=P?0&`Q}V0Hht5AagofEe5ZY9yN}uBglPRaNlieSH|7YvAVJQntT)g+JW$kBm+^4#18-VFHpJR* zsr5ipFWNQiz3_SKYgj}X4}HwrTTo@Ni;?rm>S#lYWxr7@lYBzZH(MYG!)KWIIkWxZ z^9mli%_~NRSl;b7jJoA0+XqqeD-uh+8ZLfOp=cXXo?I>sm+^!kWJ}?*n_N!xd+jR# zcV542Atn3+89g*wl!sl95OspTs`uj`A8G zdYV{2`M!^1L2ZGjA`J5Q&2Og2q2lA(^#b&NpVP-jwMGwqQRM?NQ_s(ri>n9H1amI{ zHqs9gzyUs6x@D~cPsXL=Jh+PbW)LIH)a{&2!6fr;CBtF+T`fhgYfp98Nj08!iyJk2 z$-SL$cig|yR-#{N6TaY$9bB=@K)t?*q4xn-W838(Mo`O+Sme(7Sn22&a3asixy!xl zRBFajO=@}A8GCT9LJC|Lz;B28zM{|z5&Gb%y{`n`p=`AygGzZ7oVz=c%TP^m@!z;al^y)rHx~>>^3hxU!Q~uvYX#vM?;?Z<>eB9}wNY^UB6OG+ zX(&x5M>kiwWS}1;S|`nQK6a`2WMZ`Lux&#}|Iu9@UDd@)hKs)Uamcf?*Cb^XOpABN zq$|CVh{Nv`5E9=qBQD5 zX61I_vuF>dpP|xeag`}GDR5Mq0WIkK@ing*K;eZeIYaarzpNPlOla(+h|G+D)WxEW zriMELj6$^vX1v5mg7)V@vppR7up&bNvv+TGhA*(|G3qwZuGA0pl9r_pn~a1MZx-KU zkP>3JJEhloa}!Ta>~hEe8C%>c7!P5(>~{@Muh36CNzvwySdvuT_RV;5c%xgBlzlLx zhR7`iDKpKr%IU~HiXUW(6bTUlH~5i{Z5p$~jTgzMBIrvHKh%TG0G@B#2VXB?0x5|im4^9p%YWB zLzF2JuM`@Umx&KjtmiWrP8kn>tyxq?k?v2)171pQR@I%aGRg>osspu|3EiU3S-$OJ z_I0D_l6CS9Lw$(ktR`#0J57Ph^&i$+U0x=1NJ|`ta$|XCu^bp*-%{w4`q;Y;WBZ5F zmwt-7CM2;Izj>n{zxfbC-P0Km#I1$ugi2&6j9QB{T+YB5$24W2#6jc#CEV z;n#Dg-BIQ7UNPyO4nz2wr@QowFr0GNPQ%3?V*(pZFsA~fLyuzw8CS-f`*s1VV+!++ zpe*>s2#+T|d|0(>uQ7KzU=e;ySDXTQV16^^!AbKw9?Q}*NySe~Nn9$jwXDwy-Zl2T z&i7`*YIfAC;OF7%ZcR74w_VR?>>c%^#eKeds<0!a65Ou#0 zXknG^qq{eKMRUgB6MpnDp^l>yj`m@t@}u{PXcB?CGwF^^b&-(j-lF=~%Z~OOVdz@YYd^!T^wth><_vtCtBHU{OF9nE7Gs4H!ZWy z&{J0w7PlH;-M!ggMrV3u^%=!AM{bCzSaMVM0-5M9IwcL$2E)zP?+3wRvZqwU4#Smm zJ8n1+zSg*6m+UWaMM;vBy% zPih;*ed9F5{{4!NlJ&C}i88v9CV;lL2L|#vZ_Jg)yTx8{S$hsT1eY6}xwHTbv3(Vd z)hf>nS3RVha$okk4ejAG_bqot<%5f?PXdoD|DZ%VSF3&7h|IAmCxd&Zk>~2<`XD-~ zrMceZturo3k_%uLVMDIXeYs_CZ~LT=8RRWWT6y-a-cFYKT1W45Oxm=L5@VcKOKo(~ zQnCKjlG3~U>DiqX&BbF6TXj_hZt&wIdeo}*ZYNq&<7BPR(rves*Q{j2t6uMc5%Q}G z;Pe;QNX4N7E~a6Ll5SVhN|q=4`{Jw<1q>EuIi-hlkI=(iPJb?$nid=(>kjw(M5T3w zlwW=Sy2yNLzmm60l)RgRZAtljA4KpV2zXJBmWtO%wd-tUQx-=SbfH|MSBI2isM+Gr zQVtQr)7?s@OU1kv4L;A#rIm$Q7m+7=VtMO1KWt2``kS$B3%5l5q4d~g1ikaG#md6Y KyvEcs_CEk5NtwX_ diff --git a/public/pet.png b/public/pet.png deleted file mode 100644 index 70c2ff68fac8886899a43834231d62aa1c5e0bec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6814 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 diff --git a/public/restaurant.png b/public/restaurant.png deleted file mode 100644 index 12dc94f34b2df41805f2458f3d3e1ec77035e68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3663 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 YA>AGwocvlwv;Ko}=R~s)g)CnE57WRy3IG5A diff --git a/public/school.png b/public/school.png deleted file mode 100644 index efe035718ca7b4c4001b9b1320f74ace18a0c309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3809 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 Ig-`510Z6Gi<^TWy diff --git a/public/size.png b/public/size.png deleted file mode 100644 index 15400ad2a14bd9dd57024078bfaa99bc668812a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3454 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 arVKb@)vZdWoF+pNs(%qmR0 Date: Mon, 26 Aug 2024 22:06:44 +0700 Subject: [PATCH 04/20] build button buy and rent use useState --- src/App.jsx | 8 +++- src/components/navbar/navbar.scss | 2 +- src/components/searchbar/SearchBar.jsx | 55 +++++++++++++++++++++++++ src/components/searchbar/searchBar.scss | 13 ++++++ src/layout.scss | 8 ++++ src/router/homePage/homePage.jsx | 42 +++++++++++++++++-- src/router/homePage/homePage.scss | 48 +++++++++++++++++++++ 7 files changed, 170 insertions(+), 6 deletions(-) create mode 100644 src/components/searchbar/SearchBar.jsx create mode 100644 src/components/searchbar/searchBar.scss diff --git a/src/App.jsx b/src/App.jsx index 369cb677..5533100c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,9 +1,15 @@ import "./layout.scss"; import Navbar from "./components/navbar/Navbar"; +import HomePage from "./router/homePage/homePage"; function App() { return (

    - +
    + +
    +
    + +
    ); } diff --git a/src/components/navbar/navbar.scss b/src/components/navbar/navbar.scss index 3d0be399..07f7e00b 100644 --- a/src/components/navbar/navbar.scss +++ b/src/components/navbar/navbar.scss @@ -1,6 +1,6 @@ @import "../../responsive.scss"; nav { - height: 100px; + // height: 100px; display: flex; justify-content: space-between; align-items: center; diff --git a/src/components/searchbar/SearchBar.jsx b/src/components/searchbar/SearchBar.jsx new file mode 100644 index 00000000..c0effa76 --- /dev/null +++ b/src/components/searchbar/SearchBar.jsx @@ -0,0 +1,55 @@ +import { useState } from "react"; +import "./searchBar.scss"; + +const types = ["buy", "rent"]; + +function SearchBar() { + const [query, setQuery] = useState({ + type: "buy", + location: "", + minPrice: 0, + maxPrice: 0, + }); + + const switchType = (val) => { + setQuery((prev) => ({ ...prev, type: val })); + }; + + return ( +
    +
    + {types.map((type) => ( + + ))} +
    +
    + + + + +
    +
    + ); +} + +export default SearchBar; diff --git a/src/components/searchbar/searchBar.scss b/src/components/searchbar/searchBar.scss new file mode 100644 index 00000000..897c02f6 --- /dev/null +++ b/src/components/searchbar/searchBar.scss @@ -0,0 +1,13 @@ +.searchBar { + .type { + button { + padding: 16px 36px; + border: 1px solid #999; + + &.active { + background-color: black; + color: #fff; + } + } + } +} diff --git a/src/layout.scss b/src/layout.scss index a78a4a0a..0dcdb855 100644 --- a/src/layout.scss +++ b/src/layout.scss @@ -6,6 +6,8 @@ margin-right: auto; padding-left: 20px; padding-right: 20px; + display: flex; + flex-direction: column; @include lg { background-color: rgb(247, 210, 196); @@ -21,4 +23,10 @@ background-color: rgb(239, 200, 200); max-width: 640px; } + + .content { + background: #ffeaea; + // height: calc(100vh - 100px); phần nội dung toàn màn hình + flex: 1; + } } diff --git a/src/router/homePage/homePage.jsx b/src/router/homePage/homePage.jsx index 1a2e15f9..167b99a3 100644 --- a/src/router/homePage/homePage.jsx +++ b/src/router/homePage/homePage.jsx @@ -1,7 +1,41 @@ -import React from 'react' +import SearchBar from "../../components/searchbar/SearchBar.jsx"; +import "./homePage.scss"; -export const `homePage` = () => { +function HomePage() { return ( -
    `homePage`
    - ) +
    +
    +
    +

    Find Real Estate $ Get Your Dream Place

    +

    + The Future of Real Estate is a five episode series that profiles + global CEOs on the forces shaping our buildings and cities in a time + of unprecedented change. Each episode explores topics that include + hybrid work, housing affordability, resilience, decarbonization and + real estate in the metaverse. +

    + +
    +
    +

    16+

    +

    Years of Experience

    +
    +
    +

    1200

    +

    Property readly

    +
    +
    +

    16+

    +

    Years of Experience

    +
    +
    +
    +
    +
    + bacground +
    +
    + ); } + +export default HomePage; diff --git a/src/router/homePage/homePage.scss b/src/router/homePage/homePage.scss index e69de29b..4febd43c 100644 --- a/src/router/homePage/homePage.scss +++ b/src/router/homePage/homePage.scss @@ -0,0 +1,48 @@ +.homePage { + display: flex; + height: 100%; + + .textContainer { + flex: 3; + + .wrapper { + padding-right: 100px; + display: flex; + flex-direction: column; + justify-content: center; + gap: 30px; + height: 100%; + + .title { + font-size: 64px; + } + + .boxes { + display: flex; + justify-content: space-between; + + h1 { + font-size: 36px; + } + h2 { + font-size: 20px; + font-weight: 300; + } + } + } + } + + .imgContainer { + flex: 2; + background-color: #fcf5f3; + position: relative; + display: flex; + align-items: center; + + img { + width: 115%; + position: absolute; + right: 0; + } + } +} From 09183ffb0dc5c46aeeaddee8ff75423e130a521a Mon Sep 17 00:00:00 2001 From: Otter Date: Tue, 27 Aug 2024 14:29:16 +0700 Subject: [PATCH 05/20] perfect base ui --- src/App.jsx | 2 +- src/components/searchbar/SearchBar.jsx | 2 +- src/components/searchbar/searchBar.scss | 81 +++++++++++++++++++++++++ src/layout.scss | 8 +-- src/router/homePage/homePage.jsx | 10 +-- src/router/homePage/homePage.scss | 31 +++++++++- 6 files changed, 122 insertions(+), 12 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 5533100c..68b011bf 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,7 +3,7 @@ import Navbar from "./components/navbar/Navbar"; import HomePage from "./router/homePage/homePage"; function App() { return ( -
    +
    diff --git a/src/components/searchbar/SearchBar.jsx b/src/components/searchbar/SearchBar.jsx index c0effa76..05cebb7b 100644 --- a/src/components/searchbar/SearchBar.jsx +++ b/src/components/searchbar/SearchBar.jsx @@ -28,7 +28,7 @@ function SearchBar() { ))}
    -
    + Years of Experience
    -

    1200

    -

    Property readly

    +

    200

    +

    Award Gained

    -

    16+

    -

    Years of Experience

    +

    2000+

    +

    Property readly

    - bacground + background
    ); diff --git a/src/router/homePage/homePage.scss b/src/router/homePage/homePage.scss index 4febd43c..d22b1944 100644 --- a/src/router/homePage/homePage.scss +++ b/src/router/homePage/homePage.scss @@ -1,3 +1,4 @@ +@import "../../responsive.scss"; .homePage { display: flex; height: 100%; @@ -10,19 +11,39 @@ display: flex; flex-direction: column; justify-content: center; - gap: 30px; + gap: 50px; height: 100%; + @include md { + padding: 0; + } + + @include sm { + justify-content: flex-start; + } + .title { font-size: 64px; + + @include lg { + font-size: 48px; + } } .boxes { display: flex; justify-content: space-between; + @include sm { + display: none; + } + h1 { font-size: 36px; + + @include lg { + font-size: 32px; + } } h2 { font-size: 20px; @@ -39,10 +60,18 @@ display: flex; align-items: center; + @include md { + display: none; + } + img { width: 115%; position: absolute; right: 0; + + @include lg { + width: 105%; + } } } } From 05bf9a5ec31d436321c433d4460a9d95b02902be Mon Sep 17 00:00:00 2001 From: Otter Date: Tue, 27 Aug 2024 15:51:03 +0700 Subject: [PATCH 06/20] setup react route --- package-lock.json | 42 +++++++++++++++++++++++++ package.json | 1 + src/App.jsx | 33 ++++++++++++------- src/components/searchbar/searchBar.scss | 4 +-- src/router/layout/layout.jsx | 18 +++++++++++ src/{ => router/layout}/layout.scss | 2 +- src/router/listPage/listPage.jsx | 7 +++++ src/router/listPage/listPage.scss | 0 8 files changed, 92 insertions(+), 15 deletions(-) create mode 100644 src/router/layout/layout.jsx rename src/{ => router/layout}/layout.scss (94%) create mode 100644 src/router/listPage/listPage.jsx create mode 100644 src/router/listPage/listPage.scss diff --git a/package-lock.json b/package-lock.json index 19906048..390e6156 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.26.1", "sass": "^1.77.8" }, "devDependencies": { @@ -927,6 +928,15 @@ "node": ">= 8" } }, + "node_modules/@remix-run/router": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", + "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", @@ -3545,6 +3555,38 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", + "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.19.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", + "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.19.1", + "react-router": "6.26.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", diff --git a/package.json b/package.json index 6685a2d1..d3e02411 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^6.26.1", "sass": "^1.77.8" }, "devDependencies": { diff --git a/src/App.jsx b/src/App.jsx index 68b011bf..17a45247 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,17 +1,26 @@ -import "./layout.scss"; -import Navbar from "./components/navbar/Navbar"; import HomePage from "./router/homePage/homePage"; +import { createBrowserRouter, RouterProvider } from "react-router-dom"; +import ListPage from "./router/listPage/listPage"; +import Layout from "./router/layout/layout"; + function App() { - return ( -
    -
    - -
    -
    - -
    -
    - ); + const router = createBrowserRouter([ + { + path: "/", + element: , + children: [ + { + path: "/", + element: , + }, + { + path: "/list", + element: , + }, + ], + }, + ]); + return ; } export default App; diff --git a/src/components/searchbar/searchBar.scss b/src/components/searchbar/searchBar.scss index d5fb4163..d449309c 100644 --- a/src/components/searchbar/searchBar.scss +++ b/src/components/searchbar/searchBar.scss @@ -66,12 +66,12 @@ @include sm { width: auto; + padding: 20px; + border: 1px solid #999; &:nth-child(2), &:nth-child(3) { width: auto; } - padding: 20px; - border: 1px solid #999; } } diff --git a/src/router/layout/layout.jsx b/src/router/layout/layout.jsx new file mode 100644 index 00000000..e9b855b4 --- /dev/null +++ b/src/router/layout/layout.jsx @@ -0,0 +1,18 @@ +import "./layout.scss"; +import Navbar from "../../components/navbar/Navbar"; +import { Outlet } from "react-router-dom"; + +function Layout() { + return ( +
    +
    + +
    +
    + +
    +
    + ); +} + +export default Layout; diff --git a/src/layout.scss b/src/router/layout/layout.scss similarity index 94% rename from src/layout.scss rename to src/router/layout/layout.scss index 2a721697..c248f2bd 100644 --- a/src/layout.scss +++ b/src/router/layout/layout.scss @@ -1,4 +1,4 @@ -@import "./responsive.scss"; +@import "../../responsive.scss"; .layout { height: 100vh; max-width: 1366px; diff --git a/src/router/listPage/listPage.jsx b/src/router/listPage/listPage.jsx new file mode 100644 index 00000000..6c93f0fe --- /dev/null +++ b/src/router/listPage/listPage.jsx @@ -0,0 +1,7 @@ +import "./listPage.scss"; + +function ListPage() { + return
    ListPage
    ; +} + +export default ListPage; diff --git a/src/router/listPage/listPage.scss b/src/router/listPage/listPage.scss new file mode 100644 index 00000000..e69de29b From 74226927da3b880427235b8bd0c51fa7acb86b6b Mon Sep 17 00:00:00 2001 From: Otter Date: Tue, 27 Aug 2024 16:42:50 +0700 Subject: [PATCH 07/20] add img --- public/arrow.png | Bin 0 -> 7966 bytes public/bath.png | Bin 0 -> 3708 bytes public/bed.png | Bin 0 -> 3452 bytes public/bus.png | Bin 0 -> 2675 bytes public/chat.png | Bin 0 -> 3006 bytes public/fee.png | Bin 0 -> 4624 bytes public/pet.png | Bin 0 -> 6814 bytes public/pin.png | Bin 0 -> 4618 bytes public/restaurant.png | Bin 0 -> 3663 bytes public/save.png | Bin 0 -> 2856 bytes public/school.png | Bin 0 -> 3809 bytes public/size.png | Bin 0 -> 3454 bytes public/utility.png | Bin 0 -> 5139 bytes src/App.jsx | 5 + src/lib/dummydata.js | 211 ++++++++++++++++++++++++++ src/router/login/login.jsx | 7 + src/router/login/login.scss | 0 src/router/singlePage/singlePage.jsx | 7 + src/router/singlePage/singlePage.scss | 0 19 files changed, 230 insertions(+) create mode 100644 public/arrow.png create mode 100644 public/bath.png create mode 100644 public/bed.png create mode 100644 public/bus.png create mode 100644 public/chat.png create mode 100644 public/fee.png create mode 100644 public/pet.png create mode 100644 public/pin.png create mode 100644 public/restaurant.png create mode 100644 public/save.png create mode 100644 public/school.png create mode 100644 public/size.png create mode 100644 public/utility.png create mode 100644 src/lib/dummydata.js create mode 100644 src/router/login/login.jsx create mode 100644 src/router/login/login.scss create mode 100644 src/router/singlePage/singlePage.jsx create mode 100644 src/router/singlePage/singlePage.scss diff --git a/public/arrow.png b/public/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e22dc51d88fad591d138cb46a5f6bc0bc960f135 GIT binary patch literal 7966 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 C51yg` literal 0 HcmV?d00001 diff --git a/public/bath.png b/public/bath.png new file mode 100644 index 0000000000000000000000000000000000000000..98dc72cf707e5420a665503b5188a99a2b865dba GIT binary patch literal 3708 zcmb_f2{@Gd8XwHqiI6>ONSMV~W{lA=BO&W>lv5gJFkQ1SgBi-6QVOAy6rn{SvXoAi zNw!L&Bq0=9L^i5^9NnTEgIF5Cj5h#6-g25E#r7iZDjyHv#~_5i;I~ z>9fNb89<|$5QsE?k_n4K=Q-fHU?F+06cUr5$)bc%8Az73{t5!gd*_S6`e<>@?-weJ z7>M-1+JA@gzO40wnM^to433P9G>J4dp@jv3p$G&541s}RFk>FVn8Btp2`pnOLx;z- zmI_N^1cZ_4OfrqC$)_gx)54k7`ueM=KSCk~th%9xhlQ*-AqId+AtZib7+|OgbWN1R z03?&l3?cm#I3|SolO%-9&jcAlpaxm%vy6$PKtgy3Qy=X`U9l%>5=jhl5LMGy(;Nln z2N**Bfni0mmK6L?T(7`>$n?J~0*1*9Bm1uwg32%e{mYpBhd7VOR0Hys};S{pBfm{WV?FU!Dw!31f zYFsP={V#LJ10z>vgcgRU(L&I61Zo5U1^!w5?}GgE(D@0&JAQr`T=44gg~kUwOacHz zzih{1@T@aaXDO-bUdnB;k&zjo>mNV^d#>5WZ%Dc7QBm->xRb3dy>3wd!?T5OHyoN9 z57&~h)wLDGqAzEBGCX3-o&m`m-LSjHR!sG1tv9d$Cob>PUo&;@`fhQJCDS~{jZd8& z^>b0v){Vr+rd6hl{GsJeHoKFN=h@_L;K)`TDQ*_?fK;v@bK8q{6TT>9&G8+2s5g?6 zI%$9+i-!T|(iLhxqDo zzZYzPy!g6jWSVo7Q^HY#++RegnY~*@YYl{+ezEIfO<$0r&kKor9 z-WT6D3a zO}*XRmt`2*FXP*B{>q_^WA>jns?^g!F+er<@&3@g>U1d;k?iz=SBU9P-#8$#XW7c3 zLo&IwI!iFRHCN%B)yVIPaef8vi^%!%6UlK-@x$!4`x#YLWCzD|%MN>r+s%8^d3K4n zZ3ROk3n^tUkT^ml=ew(ep8fUzrdDw8Mzbl z{&P!lKRJuqV|G2-?Y?Qt1oZ{I6 zpVA7zF@Th=4==E6iAn{ZG?n?C?NtL#Tpyy0*xNMR>5ERP2kSrrEa2nEr~Sr1iyWhtWs^p5>RG@?y!of zPVy(^;~WvQ0ao0*((=l+N(V{ESpoo*OUtP>uW%mcaNV=oh-wQ_-n}&jHwp~*$%9TN zHav|jfNO7E@P9yX{`LxXsx?6Eg3hxecjK;U5E@F|O9nT*&G0Cc$YgKsYLVA#cPSa1 z&0%>ozlVUX>PpLvQA$uXue^>!CZ|p42;3=6n$P&@k9j)s(J$Ve4iXYjv}~LH3dHfEvRR20c(;J#fyEn?-*U|yL@Ii)4#B>vSY5^?9c}#YBd#&Rq+)^i>kG(gPWHG@QR)1TPpR>x5oz)hY|w=FBM6a zn5E1nPuiNMoI8L zLk`|{XaE|0IaMHt5D`?It6M1h5D;@@!Yw~CE?>yTKGwSIW$Gl>>w|c8W|}%`L1kBw z@`V37?aSP*qV9lA9dMb=( zGo2}!&?3UKMhB{uM{B0Eih6W* zid8llE_z`Vvl*Ri{4Y1fcr!vWXN!cyPGr0y5(QjPYCBH52?gHZ?3_LRypUmbWHRi+OK0l9ZJy*#I%wAO=|rQFrt16S^c`1-GszuyYTxL? zQdK&&MFpdrOt!N9uFPo8L}*L3Y!Wh1a!F5k0o<%KEo7IJ29Z1RERg?Sw;kt#y=uER F;qU(J< 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 NDSry^7odpanoHDy)Fa+|-gp zg^Jvqyke^gTXnDsDOJBvhkZQj3#|G7CyF^YauyMkglamzLP7 ztHV`6oRpFbx2B-9CZPhDuQ&Q6sOLI!p?Lzaw`co8AQj0Uw^AvOyOl|Z*4$R3!G65`tYN$RItHH{U zd`e~@IF^(YWhTJ`BCl945iC*)3Ozkw#Of!efP%sRB`6@etQ=E{ksJ>4NpNZ*ng}p3 zKoSLsMa8Khl?AD`>OrZ+`K3k4smLh+YM^sbYGO%hiXAY;ndllA=^9zs=%Y!&Bhdyb z;aXARnPO*XZeV1XoM@?=oCqXL%uUjCEzQi#byLj^4b0Lk4NZ)alHq1Sv|yOzmIO4& z)X3Dx%oM1>(A?70!T_!ZEQz5dB)>E{1LQ3`Be+V07(zLYXhsb#m{(DQl}Zs^fRw91 zu?)_xp!fw!0OQvfC4PZoR*t158TmzaJ}x#OB`_|Umnctwz+wU=^}*d$kywC{?tqG| zz-c7EC?r2W$Idx1uPo6@vEOwC{2$V9N%CYf?nW(qlTK>(dlTW_0v^KV`{+IKQpYO~~W8>eO z?`wzRJnL%==~dfivebDAcuV@RuiLusJcB*Me=$=Hp(4Q#Yz7gb zDWV^AK4c`^)}3)U`|ccm9?R2F2aeAu{^+>f@t$I~vVoVSWGNq;xyzQj5s@NuU%vlP ztzTfACe6RYewWj)hVL`$JF<>Ro2WsCHW z6DvP+7G&Lgq4gy5j6?Q;&3F4}eD*N6V7T*I=Qh`!iBs7Plc#Q+3^ear#M8_N3+GIg z>E|-+`}k&agvF^t#V0h1oel_Idbg>3*QO03(&f9)S=+Yo@Z?@&DtG;M(L}E!Q%3vA zv^R@GTuykzdUkLLy1h|+o%-Oa7E|W~<}*8a&T#x_)H}xXfvF%m<8g%I<&ytKUuJ~b zd3}GZX>D-El|S-OfFcMLv~F2b^w73ib=INW*IYN7cV0JY{g-W~dOmU6NAm-5zuCWQ zWy|c?G;hWY4CzYTt!QE~TReY%%XHJA4;NTp^HnWZ&|Csvkl{ z8%;W9cT{lehMf@jkdh+r``AXQ<%OcRgq8~eZ48f0-63IYnzdW=(09i5*9E)r} zfSKEU7lwORHn!)m&pYs^^y$SzK8G%?-OK#I*JoY-*4$S;$!XX9ykwoeJvvjNJVCR? zr+jrdEI1*7ia}<6^wS0=eDl>co({j4CEKrjF?E;pp*+1l1NBE`5A+}G1}FOh+t0=> z{XfbUalX4;$g+8R#amTH=~AW{M^%c$Kg~R<;v)AgS7LHZg|XW7*EG}Y&WZk;G*`#7+r73+m|C7JSFype@#M*`y1lz9;C0{ zBei34>-8Ud57eI9w6eu;=Z@D^EEW38=lynhte<&kWm-bS5rt<<1LWH@PIO=Ug@ZR}8mKwv M>FVdQ&MBb@08kyyO#lD@ literal 0 HcmV?d00001 diff --git a/public/chat.png b/public/chat.png new file mode 100644 index 0000000000000000000000000000000000000000..33634617849fd9f0462728e32abb4c6ecfe6e1a4 GIT binary patch literal 3006 zcmb_edpwl+8h>?>)LOzwB}Sx;F&D#_iNTl|rbw7Vh34`OlewL_WTsSeq+M+)loKix zD>^jA$71VN3!Ug^T#>o{e0fb@A-Xy-{*P0&-43z-b0%< z`h20kOdkM%FKE8xAn483-g>&wQ}iN@4!stNe8VIFU~pS|>!jHmEQgG4Qc9@QTgc~w z0x2LD6W9c@7ZpKbQvIkwECSleVJ88Hb3tRUu4q?0+7*L!M&a>j2PpxAMPV?mXgtC# z`#J#3d&Z@QN<;nq2rMDrk--)+K}R`X1UZ0Q$O+IVACxkzV3^Jr3n}|VSum}_e zfpK+1&YGGkqTA#IMJ}bWi6}OkfdyT02t3vai@>s&t_Y@+GZTRW*)E`q3z~y>;!JUU zT=E$cl?f3!W1KNA&UiEyjl(;;qNdhNOn$b6E|jsNwP_JCQ^>z;f5HDvnP z{+|jhnzpO7Ri4}Y?(v`l7dQerU=`88nYh`9l6MLXNoE}vy^KYZ8 zBw^nl3hj`>S`Bto=lpZ0>-8(UM*9*H|B)M7y#UxXtS-nG87OOaS5p%eTv8qGH%I=3 zT*q2XcL2YhoZ10rMzrCpt#O+$*b_R*N8dD-Zi(5qzcywi`F3jl^*QOy=rQ-)ZMs0x zu&St&$VZulel?qp7DY*6QtZzMtqzA<&6m3*5%KpD>~_y3)C671cZu*c|@ zb-D2%i&)~VOmDed6VlUuXLHn^cS9w<1By(7Sbc00lJr1bOcc+3X>55mVqeJvbx7i` zJZ9yW&i(M7c9`XJO=d-HNi(oz^sdTYHahfS;4{aNvQtr1wG|p$FI(NIaDD5N>m|BJ z_i%Cw!Dh4&%#26fJ_L1D7JYwh{~POsL=G)epd+e0Hb#TLO^GR2Ih7tbQ$>~@&Fl67 zHlB$#Im~M)HK2#*t9s$JhN(&3+i7)&cQ3H@x4aWrQ=^VgA1KN%5?s@RcOH-H*y7og zoy^&Y>Ag~D67;od5xrNZZ!pDu{yt1|%kBmKvMQUBeYj@a+JbJqxbU3E20P$NiXJQA zRZd}LH0Oum`?tVWDl80m_IM%30@WN+&kOm^v{T+z3x%uux=b~;Hn590|8;jxFK}yQ zh)U3kJw4|c1FZlsbtdJNCsc-J_4#HsGA?2CeN_VqrZDsDS+)P(rJ8=A^Md5*=B#j; z)$4$pWhYXcjwcF+jQS{vg|FVGEMLMI%00F{+pNIlU5!CPi{I}u%bO9q6Epf7w-(2Q zcFd7_^yeFl_2tH{sBVjZ0R@uCcXg^&vNqfCr^W~8QB9UC4fNeXhW|a#=5}vZNZw&h zsX0RT()lP6(Ww4au-6e=59+$|D0ytWcVpj`?^vR*^SZz3X2ewsVf0~ zF5`9_T*(~|jr=j`Qcb4DEBJ|@gV^*iU6J{+zNmTYc812tH#KR=U}-_i@)f5Ev1ij; zH^R(yL|n?vE}cg^IqU52_L5TB^U*@j`mD{_9``yyU7$sPTyW{~t+CRzb#nm2CaCGL z)Vcur84CbeAhB1*A#3YOAadq~*txIY)@SLHvFrZud3fKeB?!I8Ul#Uo=ab_e-4%Px zTENz&N;FKZcOwosKNezbR1fDM&0+v0rSnov8_=*OeOG=(L*0khW%~k>=8in1m#4RW zXgG9>WgrtQSMrT%oRq7--m_076n22DR2$rq!41ICuhKP97s@Lf_Ncy<9V8|D^pNM# zQhg4+^Eat|bhZIeaB8vDja;#H=4$SH2j#l;u+|rk`zf5ED39JAGcP{eqW-F1wQh?b zGC0KC({o#*%}=(s$6(5z_4CgZ5?_??_&2u~>yaR{HFKr+o0}1cQ?cfA$A7weYIr?U zlgKnL<7>dhyhZSH4BF3KK>L;w-(oGIm6RAwzAtsU3qGh+oNO9K*a$Vk+>v+IN4OgB zx6KgWi))GiWV(Pp=$MQ22vZD3Q0i2r;TDUe;i0JMT2zeUgoJgOZ%ZdQQr=-(`#M5P4zf2G7RD_q^*bv;enz& r7aHg7({rm|2R5ls~fk&95 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 KyvEcs_CEk5NtwX_ literal 0 HcmV?d00001 diff --git a/public/pet.png b/public/pet.png new file mode 100644 index 0000000000000000000000000000000000000000..70c2ff68fac8886899a43834231d62aa1c5e0bec GIT binary patch literal 6814 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 literal 0 HcmV?d00001 diff --git a/public/restaurant.png b/public/restaurant.png new file mode 100644 index 0000000000000000000000000000000000000000..12dc94f34b2df41805f2458f3d3e1ec77035e68b GIT binary patch literal 3663 zcmb_fdpK0<8edYRgi;|YWGBg7mN90=3{A!@RBCLL+n9^nn9*F!xZ8HM6(zTZgd)3K z5|TP9oJX+@65&CTt=zMPr08^1wc;HLEtQ z0svr*jWy{Yw9+KkN*U-ous?+iEpma@E?fXmxG%Y+QuGznAt9b;;mk8<2L#YrJV407 z(QqW9rGd4}A-a>0h(n@x`Qgxp2(%H#$OuFtF$fR=qEX0QJRFEZfFK40EzW#!1c2pz zzGP>fv%MXT$_{{0XlyS!Oc)Rd1%N^banNl5ok!6W1~6G%oRFZqfWSfb5;0uYbd~0p z51vC~;0}^3zd)fUg02sb7l?zy1p)y~Ul*-#3eg9L_hkS1S*C^5lG>1>Ez%*Izjg!oy+EPsPu0c@Wr7yhfd+qX{He4PzDIl z0L0+o->DXxi2tIn5b|tjrp62mijKfSCWcs=0Sd)1GN6El6ay-TN<(0%7&;A$UG(+Y z~R!Xi;fW2_Mdv1qfP{EG>h&8PZEwq*(~BEQPM!vChtOUw1=R+pCb z|J3NfZ{8|Nmls}FNq->))L+9T{e@&WBA@5O=9t=%@Dj+MkKb+SeoF)tw{ z@GrcBz_7XSbia`Nf{3b*EWw8n52tvoz75nGv}W-+%^2_HMEtgu{c1#|=9SSx zOQrjU(VCeh0i81P>S|W|hf0&Gn&`R{&}!U%|7~ndnU(yFDN4@v+Wi&|uk`^FsTY79 z`$_qD0cp>VpBf@nPuOn@t=HBn*H3w;0?2u)Rj&bLrR=1mkoE3Ko&It99-xM-oK=ffk! z?iF!;))~h%bHOUB0P;f?sj~A`=)Sy0GbyI*tKDN$?&aub&L_^RMxKsgJd$b*vlZ<$ z8*8gfP$t>ORgp+spt{kUpT{Y($aK-J7@cx`lq)Wnc}CM1PXIq6EK)AO*PFHa4kjq; zh%(+A`i<9Q&rb}Y-xV!OUEx^^^%5vv4NM*Ps;djW zJXlK82>8XnFfF(!Lly9}4jAg?4s7F_^mRmpFP2&EK2^M!>I~&gr;1aaA{U z+{3tj{-PG4IQSYl`mB=9^I_#9^hThwcOc@lQ(`XqNxHA`!>+UB=p8BVPA5+$#^nrE z1C73DXXsTL7Rp%K6)_+({3GD9ZO+E zxQliUxl%iP8nZhF;LC3JqnpH-IgYUo)$f9qw2kRtzPBjlX1{gh#M$P`otZKHk>1N_LmaZpwgIb9WPJ+;8ckHE}s$`_Ek#v(GF$e)si$;6mNA- zixo@VrrNazDd<1i5Xqc#pZI<7v<>X`Ygt<2D82_(kvxfPTOsGxM@(SjJ1#lQO5%Q< zM#H$y^T*DT`muV?rH2FN+|`qM80A$(R;h~TWjr!TY$`~#D}59Tcaz(*2Y-n?CNzk%tvda%NKx?I){oeuY0o z<{uOW_T_@pheZNovyw7LjK`o_ zVfBOx2iErCo9e-lO2{09EeRw z0Yi?*FdRZHOWdM5lkZq%cn|v5lHo>mm5EAO4m+p0ysF`&S9bZkMI>DNV0Gw2__RfB zOI-4#V_5|5Vs2zp^sbyBbB{~m&L1NRVbLz}TiEi>?mwl8dWJaR1Oq427@zoqyi)95 zSMe}HW*SWK)yt`=AiJ!kSP0`5x;N zFjBX6?AA{mhpVfEjg9a(fM@pEsCg7^xBv_3xwn1*52z+xK-tV(x!2jM59w~FY^ZL0 z)}AYl$31njkIUMgeJiRrd?e371e(4~jP=c_%cz-k#Y)Et*;YTp1&?E-0El}l1!{tV z2!Z|e2}Kv|2D-+*7IUl#y18_q5LHT;Ykf1-CifxaQiEO1k>)M@pmr5ybs2(NY3jR8 zA(0bVTWEN;$%QrMv-B6e!~v5fKMa<3`;)A_HX*tu_NuAY;q4ppS3 zL2@-htD=c$Y!(Ly5pd>m<_T#8Vn8Y_IG9WTNfZKwN}zzGAUu^y2vE~N5*`F81S&w^ z(SShMcT0JR>cptIG@&9bkS|gQpg?V!(h|TDLQAu}ra@{xN}DE=!!#`eJBXlJ-mPLB zmWf1tJm@Nsm^P2i`3SXqF|ZP~T1ms zAcrv)Pa|EiAy}xAD%Dbj9A$OQ7brAp1{OPn`jC=HI21;yQOO2_h=e#u23d)LafCp^ zh%7}ynp&!sL8B69$<(7HGO4u^nv5@B!oX?)5hUhoWNIukK|W|NLWv+)xJd*BK@Ocj#kYTF~y)*h^LT<09k-10wjtU0t5mI6##_<0znWY5DQ5`L%u$keCCNG zus8|=gFtc+l|Ui{Q-dh@A)7(vXC^#_MkukC#RP|tf5`rT|BE({r0Y|uBWe8~HCj1r zRav_{xLmFMwJ0q8C64H?MMh(3)Dne?IhRehLOy+tD(Sx;K+85UV)};i((;v`&7B2I z8=Mh^il

      n4x_6GCmzQTKw;l{Iuze!dSMSVS|es+P;{7UhuvKfpFN%WwUtNZGGFN z`N_gb=U2fq9|TMeJo%)SA@q zQ}^Xa>}z=I!e>nC6vYDKL*w2@->Qdio#-v=VP-sh68UQ*z5hgScK_Ska9KtR!{IK$ z?Y?c^y9MSuy{291%U>}?pNCS@iLW*&}Y9pKl73Q;m`^vPf%vS2(tfH z>M@@@F0u5HPveF$raxUfP1#>`L*Fx|jc`kX){k$1yc*X|`oBFf`^Wpws;mbNCsa)? zcI2*YdJ8=WsGah{;l9n@8?`_#_tnW$HG9Tr$JeT!yvOKY>&c7dRoy5~;+=Bytt*A?~Yf_3SvdV`AHaSE`#qFaHvq#-|Y|7~jN z+3F(mY%HE^cy71A=DBfs-!;>Ax5rn^Rc#OUbsZ=om?F9#p}L$FA?dMasB(ln*RaFB ze%(MGH2`_jMLU-AmEpbJB76Fm_ZCetJ#~KQQV}3DALH|V8 zdyvwbe1GD^2&$uY)1;W#7Q4uhXJHG@rLeLvO23HaYbxJ}XKz_=!i_&%q?elWiq;h8 zC$D+oXf%Ao-Bl1~n7ZC)-N3a=)2|j!8XHnD8(fCG+hDgT?szaz=J0bIb4Jh3*0c`d z*}4Pe*F(;gkIPbz?|1Oqm9>$)UJvUUR=-$j>NK79x|&3&nE<*b>K#{AyvgVE^otXp zyBoK>bG~cGsJA0lo(!mQSJ`fLz3FGjz<4cHNg5BD_M3cJS)Rst0i%Zsq@qQjH*nnX zalh`Kt`L^BM0AU~kE585$h{Uj#f@CswrC9 zeo>a#=Cm*Psqoy>1&yBJ7jCe!#*(t(`6Zi|Oc#+4>&~>)AJpec;L?P;*ses+riJYn z?yXHq*tWUI_2{e_qA%+_pNn~lt(8s%4$LukTTNFa$$pyZ@t|+tdSsH#w!e1kzk}-H z%3k9Qp1QD~7XLkUYsl7i=Ds91DAHV+MoEYp=RCKk-nYrAt6w9XUs6(JyS1y#E$-R0 zh@8@S2M$jBedn2bzoEKvu0P!U@QZ}vbwzHH{PZOD&1pw3dq!v6z?_mWP7})?yjO{3 z85Y=1vbjGi%+g&S|tvueH-o^$=P$eZ+oP$8PRignQ>M;CJGI= zr*v}4ebcsS1FAgs9(h@7IFzSaIP+WLoTH5^Js-@z%B*WH>^Y;k YA>AGwocvlwv;Ko}=R~s)g)CnE57WRy3IG5A literal 0 HcmV?d00001 diff --git a/public/school.png b/public/school.png new file mode 100644 index 0000000000000000000000000000000000000000..efe035718ca7b4c4001b9b1320f74ace18a0c309 GIT binary patch literal 3809 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 Ig-`510Z6Gi<^TWy literal 0 HcmV?d00001 diff --git a/public/size.png b/public/size.png new file mode 100644 index 0000000000000000000000000000000000000000..15400ad2a14bd9dd57024078bfaa99bc668812a8 GIT binary patch literal 3454 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 arVKb@)vZdWoF+pNs(%qmR0, }, + { + path: "/id", + element: , + }, ], }, ]); diff --git a/src/lib/dummydata.js b/src/lib/dummydata.js new file mode 100644 index 00000000..ba66b901 --- /dev/null +++ b/src/lib/dummydata.js @@ -0,0 +1,211 @@ +export const listData = [ + { + id: 1, + title: "A Great Apartment Next to the Beach!", + img: "https://images.pexels.com/photos/1918291/pexels-photo-1918291.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 2, + bathroom: 1, + price: 150000, + address: "456 Macauley Street, nigeria", + latitude: 51.5074, + longitude: -0.1278, + }, + { + id: 2, + title: "An Awesome Apartment Near the Park! Almost too good to be true!", + img: "https://images.pexels.com/photos/1428348/pexels-photo-1428348.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 3, + bathroom: 2, + price: 15000, + address: "789 Adebowale Street, nigeria", + latitude: 52.4862, + longitude: -1.8904, + }, + { + id: 3, + title: "A New Apartment in the City!", + img: "https://images.pexels.com/photos/2062426/pexels-photo-2062426.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 1, + bathroom: 1, + price: 8000, + address: "101 Asaba street, nigeria", + latitude: 53.4808, + longitude: -2.2426, + }, + { + id: 4, + title: "Great Location! Great Price! Great Apartment!", + img: "https://images.pexels.com/photos/2467285/pexels-photo-2467285.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 2, + bathroom: 1, + price: 5000, + address: "234 Kingsway, nigeria,", + latitude: 53.8008, + longitude: -1.5491, + }, + { + id: 5, + title: "Apartment 5", + img: "https://images.pexels.com/photos/276625/pexels-photo-276625.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 3, + bathroom: 2, + price: 27000, + address: "567 Victoria Road, nigeria", + latitude: 53.4084, + longitude: -2.9916, + }, + { + id: 6, + title: "Apartment 6", + img: "https://images.pexels.com/photos/271816/pexels-photo-271816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 1, + bathroom: 1, + price: 8000, + address: "890 Regent Street, nigeria", + latitude: 54.9783, + longitude: -1.6174, + }, + { + id: 7, + title: "Apartment 7", + img: "https://images.pexels.com/photos/2029667/pexels-photo-2029667.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 2, + bathroom: 1, + price: 10000, + address: "112 Piccadilly, nigeria", + latitude: 53.3811, + longitude: -1.4701, + }, + { + id: 8, + title: "Apartment 8", + img: "https://images.pexels.com/photos/276724/pexels-photo-276724.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 3, + bathroom: 2, + price: 15000, + address: "8765 Main High Street, nigeria", + latitude: 51.4545, + longitude: -2.5879, + }, +]; + +export const itemsdata = [ + { + id: 1, + title: "A Great Apartment Next to the Beach!", + img: "https://images.pexels.com/photos/1918291/pexels-photo-1918291.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 2, + bathroom: 1, + price: 150000, + address: "456 Macauley Street, nigeria", + latitude: 51.5074, + longitude: -0.1278, + }, + { + id: 2, + title: "An Awesome Apartment Near the Park! Almost too good to be true!", + img: "https://images.pexels.com/photos/1428348/pexels-photo-1428348.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 3, + bathroom: 2, + price: 15000, + address: "789 Adebowale Street, nigeria", + latitude: 52.4862, + longitude: -1.8904, + }, + { + id: 3, + title: "A New Apartment in the City!", + img: "https://images.pexels.com/photos/2062426/pexels-photo-2062426.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 1, + bathroom: 1, + price: 8000, + address: "101 Asaba street, nigeria", + latitude: 53.4808, + longitude: -2.2426, + }, + { + id: 4, + title: "Great Location! Great Price! Great Apartment!", + img: "https://images.pexels.com/photos/2467285/pexels-photo-2467285.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 2, + bathroom: 1, + price: 5000, + address: "234 Kingsway, nigeria,", + latitude: 53.8008, + longitude: -1.5491, + }, + { + id: 5, + title: "Apartment 5", + img: "https://images.pexels.com/photos/276625/pexels-photo-276625.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 3, + bathroom: 2, + price: 27000, + address: "567 Victoria Road, nigeria", + latitude: 53.4084, + longitude: -2.9916, + }, + { + id: 6, + title: "Apartment 6", + img: "https://images.pexels.com/photos/271816/pexels-photo-271816.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 1, + bathroom: 1, + price: 8000, + address: "890 Regent Street, nigeria", + latitude: 54.9783, + longitude: -1.6174, + }, + { + id: 7, + title: "Apartment 7", + img: "https://images.pexels.com/photos/2029667/pexels-photo-2029667.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 2, + bathroom: 1, + price: 10000, + address: "112 Piccadilly, nigeria", + latitude: 53.3811, + longitude: -1.4701, + }, + { + id: 8, + title: "Apartment 8", + img: "https://images.pexels.com/photos/276724/pexels-photo-276724.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + bedroom: 3, + bathroom: 2, + price: 15000, + address: "8765 Main High Street, nigeria", + latitude: 51.4545, + longitude: -2.5879, + }, +]; + +export const singlePostData = { + id: 1, + title: "Beautiful Apartment", + price: 12000, + images: [ + "https://images.pexels.com/photos/1918291/pexels-photo-1918291.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + "https://images.pexels.com/photos/1428348/pexels-photo-1428348.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + "https://images.pexels.com/photos/2062426/pexels-photo-2062426.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + "https://images.pexels.com/photos/2467285/pexels-photo-2467285.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", + ], + bedRooms: 2, + bathroom: 1, + size: 861, + latitude: 51.5074, + longitude: -0.1278, + city: "nigeria", + address: "1234 Broadway St", + school: "250m away", + bus: "100m away", + restaurant: "50m away", + description: + "Future alike hill pull picture swim magic chain seed engineer nest outer raise bound easy poetry gain loud weigh me recognize farmer bare danger. actually put square leg vessels earth engine matter key cup indeed body film century shut place environment were stage vertical roof bottom lady function breeze darkness beside tin view local breathe carbon swam declared magnet escape has from pile apart route coffee storm someone hold space use ahead sheep jungle closely natural attached part top grain your grade trade corn salmon trouble new bend most teacher range anybody every seat fifteen eventually", +}; + +export const userData = { + id: 1, + name: "Prince Ojo", + img: "https://images.pexels.com/photos/91227/pexels-photo-91227.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2", +}; diff --git a/src/router/login/login.jsx b/src/router/login/login.jsx new file mode 100644 index 00000000..201fffbb --- /dev/null +++ b/src/router/login/login.jsx @@ -0,0 +1,7 @@ +import "./login.scss"; + +function Login() { + return

      Login
      ; +} + +export default Login; diff --git a/src/router/login/login.scss b/src/router/login/login.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/router/singlePage/singlePage.jsx b/src/router/singlePage/singlePage.jsx new file mode 100644 index 00000000..2941d96e --- /dev/null +++ b/src/router/singlePage/singlePage.jsx @@ -0,0 +1,7 @@ +import "./singlePage.scss"; + +function SinglePage() { + return
      SinglePage
      ; +} + +export default SinglePage; diff --git a/src/router/singlePage/singlePage.scss b/src/router/singlePage/singlePage.scss new file mode 100644 index 00000000..e69de29b From 7dbc2ce4782773ef35f569b351b99d72bb94e315 Mon Sep 17 00:00:00 2001 From: Otter Date: Tue, 27 Aug 2024 17:29:30 +0700 Subject: [PATCH 08/20] code list page --- src/components/filter/Filter.jsx | 7 +++++++ src/components/filter/filter.scss | 0 src/router/listPage/listPage.jsx | 14 +++++++++++++- src/router/listPage/listPage.scss | 17 +++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/components/filter/Filter.jsx create mode 100644 src/components/filter/filter.scss diff --git a/src/components/filter/Filter.jsx b/src/components/filter/Filter.jsx new file mode 100644 index 00000000..9dfdf9e6 --- /dev/null +++ b/src/components/filter/Filter.jsx @@ -0,0 +1,7 @@ +import "./filter.scss"; + +function Filter() { + return
      Filter
      ; +} + +export default Filter; diff --git a/src/components/filter/filter.scss b/src/components/filter/filter.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/router/listPage/listPage.jsx b/src/router/listPage/listPage.jsx index 6c93f0fe..8cfc3e92 100644 --- a/src/router/listPage/listPage.jsx +++ b/src/router/listPage/listPage.jsx @@ -1,7 +1,19 @@ +import Filter from "../../components/filter/Filter"; import "./listPage.scss"; +import { listData } from "../../lib/dummydata"; function ListPage() { - return
      ListPage
      ; + const data = listData; + return ( +
      +
      +
      + +
      +
      +
      Map
      +
      + ); } export default ListPage; diff --git a/src/router/listPage/listPage.scss b/src/router/listPage/listPage.scss index e69de29b..d1130ffe 100644 --- a/src/router/listPage/listPage.scss +++ b/src/router/listPage/listPage.scss @@ -0,0 +1,17 @@ +.listPage { + display: flex; + height: 100%; + + .listContainer { + flex: 3; + + .wrapper { + padding-right: 50px; + } + } + + .mapContainer { + flex: 2; + background-color: #fcf5f3; + } +} From 31b81e0641ce6d8ab08c08687331a702ff722fcd Mon Sep 17 00:00:00 2001 From: Ly Thanh Duy Date: Wed, 28 Aug 2024 06:57:26 +0700 Subject: [PATCH 09/20] css filter --- src/components/card/card.jsx | 7 ++++ src/components/card/card.scss | 0 src/components/filter/Filter.jsx | 64 ++++++++++++++++++++++++++++++- src/components/filter/filter.scss | 37 ++++++++++++++++++ src/router/listPage/listPage.jsx | 4 ++ 5 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 src/components/card/card.jsx create mode 100644 src/components/card/card.scss diff --git a/src/components/card/card.jsx b/src/components/card/card.jsx new file mode 100644 index 00000000..ab60b572 --- /dev/null +++ b/src/components/card/card.jsx @@ -0,0 +1,7 @@ +import "./card.scss"; + +function Card() { + return
      Card
      ; +} + +export default Card; diff --git a/src/components/card/card.scss b/src/components/card/card.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/components/filter/Filter.jsx b/src/components/filter/Filter.jsx index 9dfdf9e6..84e0b0dd 100644 --- a/src/components/filter/Filter.jsx +++ b/src/components/filter/Filter.jsx @@ -1,7 +1,69 @@ import "./filter.scss"; function Filter() { - return
      Filter
      ; + return ( +
      +

      + Search results for VietNam +

      +
      +
      + + +
      +
      +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      +
      + + +
      + +
      +
      + ); } export default Filter; diff --git a/src/components/filter/filter.scss b/src/components/filter/filter.scss index e69de29b..d6979c26 100644 --- a/src/components/filter/filter.scss +++ b/src/components/filter/filter.scss @@ -0,0 +1,37 @@ +.filter { + display: flex; + flex-direction: column; + gap: 10px; + h1 { + font-weight: 300; + font-size: 16px; + } + .top { + .item { + display: flex; + flex-direction: column; + + input { + padding: 20px; + } + } + } + .bottom { + display: flex; + gap: 25px; + .item { + display: flex; + flex-direction: column; + font-size: 10px; + font-weight: bold; + select { + padding: 10px 5px 10px 30px; + width: 100px; + } + input { + padding: 10px 5px 10px 30px; + width: 100px; + } + } + } +} diff --git a/src/router/listPage/listPage.jsx b/src/router/listPage/listPage.jsx index 8cfc3e92..130afb0c 100644 --- a/src/router/listPage/listPage.jsx +++ b/src/router/listPage/listPage.jsx @@ -1,6 +1,7 @@ import Filter from "../../components/filter/Filter"; import "./listPage.scss"; import { listData } from "../../lib/dummydata"; +import Card from "../../components/card/card"; function ListPage() { const data = listData; @@ -9,6 +10,9 @@ function ListPage() {
      + {data.map((item) => ( + + ))}
      Map
      From df554438dd8e035e8192bb4a19e81ed62233b49c Mon Sep 17 00:00:00 2001 From: Otter Date: Wed, 28 Aug 2024 11:23:17 +0700 Subject: [PATCH 10/20] =?UTF-8?q?xong=20c=C6=A1=20b=E1=BA=A3n=20c=E1=BB=A7?= =?UTF-8?q?a=20list=20card?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/card/card.jsx | 41 ++++++++++++- src/components/card/card.scss | 97 +++++++++++++++++++++++++++++++ src/components/filter/filter.scss | 61 ++++++++++++------- src/router/listPage/listPage.scss | 4 ++ 4 files changed, 179 insertions(+), 24 deletions(-) diff --git a/src/components/card/card.jsx b/src/components/card/card.jsx index ab60b572..f7e2e153 100644 --- a/src/components/card/card.jsx +++ b/src/components/card/card.jsx @@ -1,7 +1,44 @@ +import { Link } from "react-router-dom"; import "./card.scss"; -function Card() { - return
      Card
      ; +function Card({ item }) { + return ( +
      + + img + +
      +

      + {item.title} +

      +

      + + {item.address} +

      +

      ${item.price}

      +
      +
      +
      + bed + {item.bedroom} bedroom +
      +
      + bath + {item.bathroom} bathroom +
      +
      +
      +
      + save +
      +
      + save +
      +
      +
      +
      +
      + ); } export default Card; diff --git a/src/components/card/card.scss b/src/components/card/card.scss index e69de29b..fc2f836c 100644 --- a/src/components/card/card.scss +++ b/src/components/card/card.scss @@ -0,0 +1,97 @@ +.card { + display: flex; + gap: 20px; + + .imgContainer { + flex: 2; + height: 200px; + + img { + height: 100%; + width: 100%; + object-fit: cover; + border-radius: 10px; + } + } + + .textContainer { + flex: 3; + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 10px; + + img { + width: 16px; + height: 16px; + } + + .title { + font-size: 20px; + font-weight: 600; + color: #444; + transition: all 0.4 ease; + + &:hover { + color: #000; + scale: 1.01; + } + } + + .address { + font-size: 14px; + display: flex; + align-items: center; + gap: 5px; + + color: #888; + } + + .price { + font-size: 20px; + font-weight: 300px; + border-radius: 5px; + padding: 5px; + background-color: rgb(249, 245, 192); + max-width: max-content; + } + + .bottom { + display: flex; + justify-content: space-between; + gap: 10px; + + .features { + display: flex; + gap: 20px; + font-size: 14px; + + .feature { + display: flex; + align-items: center; + gap: 5px; + padding: 5px; + background: whitesmoke; + } + } + + .icons { + display: flex; + gap: 20px; + + .icon { + display: flex; + align-items: center; + border: 1px solid #999; + border-radius: 5px; + padding: 2px 5px; + cursor: pointer; + + &:hover { + background-color: lightgray; + } + } + } + } + } +} diff --git a/src/components/filter/filter.scss b/src/components/filter/filter.scss index d6979c26..f84fb791 100644 --- a/src/components/filter/filter.scss +++ b/src/components/filter/filter.scss @@ -2,36 +2,53 @@ display: flex; flex-direction: column; gap: 10px; + h1 { font-weight: 300; - font-size: 16px; + font-size: 24px; + } + + .item { + display: flex; + flex-direction: column; + gap: 2px; + + label { + font-size: 20px; + } + + input, + select { + width: 100px; + border: 1px solid #e0e0ee; + padding: 10px; + border-radius: 5px; + font-size: 14px; + } } - .top { - .item { - display: flex; - flex-direction: column; - input { - padding: 20px; - } + .top { + input { + width: 100%; } } + .bottom { display: flex; - gap: 25px; - .item { - display: flex; - flex-direction: column; - font-size: 10px; - font-weight: bold; - select { - padding: 10px 5px 10px 30px; - width: 100px; - } - input { - padding: 10px 5px 10px 30px; - width: 100px; - } + justify-content: space-between; + gap: 20px; + + button { + width: 100px; + padding: 10px; + cursor: pointer; + background-color: #fece51; + border: none; + } + + img { + width: 24px; + height: 24px; } } } diff --git a/src/router/listPage/listPage.scss b/src/router/listPage/listPage.scss index d1130ffe..2d6a08c8 100644 --- a/src/router/listPage/listPage.scss +++ b/src/router/listPage/listPage.scss @@ -7,6 +7,10 @@ .wrapper { padding-right: 50px; + display: flex; + flex-direction: column; + gap: 50px; + overflow-y: scroll; } } From 9b94de2e9cde18a66696a09cf0f3744dabc5848b Mon Sep 17 00:00:00 2001 From: Otter Date: Wed, 28 Aug 2024 11:59:12 +0700 Subject: [PATCH 11/20] fix scroll bar and css --- src/router/layout/layout.scss | 3 ++- src/router/listPage/listPage.scss | 36 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/router/layout/layout.scss b/src/router/layout/layout.scss index c248f2bd..70a13c7a 100644 --- a/src/router/layout/layout.scss +++ b/src/router/layout/layout.scss @@ -26,7 +26,8 @@ .content { // background: #ffeaea; + // flex: 1; // height: calc(100vh - 100px); phần nội dung toàn màn hình - flex: 1; + height: calc(100vh - 100px); } } diff --git a/src/router/listPage/listPage.scss b/src/router/listPage/listPage.scss index 2d6a08c8..a0571cf3 100644 --- a/src/router/listPage/listPage.scss +++ b/src/router/listPage/listPage.scss @@ -4,13 +4,49 @@ .listContainer { flex: 3; + height: 100%; .wrapper { + height: 100%; padding-right: 50px; display: flex; flex-direction: column; gap: 50px; + padding-bottom: 50px; overflow-y: scroll; + //scrollbar-width: none; /* Ẩn thanh cuộn trên Firefox */ + box-sizing: content-box; /* Đảm bảo padding không ảnh hưởng đến kích thước tổng thể */ + position: relative; + } + .wrapper::-webkit-scrollbar { + width: 12px; + background: transparent; /* Làm thanh cuộn trong suốt */ + } + + .wrapper::-webkit-scrollbar-thumb { + background-color: rgba( + 0, + 0, + 0, + 0.2 + ); /* Làm thanh trượt trong suốt ban đầu */ + border-radius: 6px; /* Bo góc cho thanh trượt */ + transition: background-color 0.3s ease; /* Hiệu ứng chuyển đổi màu sắc */ + position: absolute; + top: 0; /* Đặt thanh cuộn lên trên cùng */ + } + + .wrapper:hover::-webkit-scrollbar-thumb { + background-color: rgba( + 0, + 0, + 0, + 0.6 + ); /* Hiện thanh trượt rõ hơn khi cuộn */ + } + + .wrapper::-webkit-scrollbar-track { + background: transparent; /* Làm nền của thanh cuộn trong suốt */ } } From 58dbb09808ab1f795da79b32a143b810c52c8d18 Mon Sep 17 00:00:00 2001 From: Otter Date: Wed, 28 Aug 2024 16:42:09 +0700 Subject: [PATCH 12/20] base add map --- package-lock.json | 33 ++++++++++++++++ package.json | 2 + src/components/map/Map.jsx | 25 ++++++++++++ src/components/map/map.scss | 5 +++ src/components/pin/Pin.jsx | 22 +++++++++++ src/components/pin/pin.scss | 17 ++++++++ src/lib/dummydata.js | 64 +++++++++++++++---------------- src/router/listPage/listPage.jsx | 5 ++- src/router/listPage/listPage.scss | 5 +-- 9 files changed, 141 insertions(+), 37 deletions(-) create mode 100644 src/components/map/Map.jsx create mode 100644 src/components/map/map.scss create mode 100644 src/components/pin/Pin.jsx create mode 100644 src/components/pin/pin.scss diff --git a/package-lock.json b/package-lock.json index 390e6156..001df692 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,10 @@ "name": "estateui", "version": "0.0.0", "dependencies": { + "leaflet": "^1.9.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-leaflet": "^4.2.1", "react-router-dom": "^6.26.1", "sass": "^1.77.8" }, @@ -928,6 +930,17 @@ "node": ">= 8" } }, + "node_modules/@react-leaflet/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", + "integrity": "sha512-Qk7Pfu8BSarKGqILj4x7bCSZ1pjuAPZ+qmRwH5S7mDS91VSbVVsJSrW4qA+GPrro8t69gFYVMWb1Zc4yFmPiVg==", + "license": "Hippocratic-2.1", + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/@remix-run/router": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", @@ -3097,6 +3110,12 @@ "json-buffer": "3.0.1" } }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "license": "BSD-2-Clause" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3546,6 +3565,20 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, + "node_modules/react-leaflet": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/react-leaflet/-/react-leaflet-4.2.1.tgz", + "integrity": "sha512-p9chkvhcKrWn/H/1FFeVSqLdReGwn2qmiobOQGO3BifX+/vV/39qhY8dGqbdcPh1e6jxh/QHriLXr7a4eLFK4Q==", + "license": "Hippocratic-2.1", + "dependencies": { + "@react-leaflet/core": "^2.1.0" + }, + "peerDependencies": { + "leaflet": "^1.9.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", diff --git a/package.json b/package.json index d3e02411..588bd2d4 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,10 @@ "preview": "vite preview" }, "dependencies": { + "leaflet": "^1.9.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-leaflet": "^4.2.1", "react-router-dom": "^6.26.1", "sass": "^1.77.8" }, diff --git a/src/components/map/Map.jsx b/src/components/map/Map.jsx new file mode 100644 index 00000000..4c5bac1e --- /dev/null +++ b/src/components/map/Map.jsx @@ -0,0 +1,25 @@ +import { MapContainer, TileLayer } from "react-leaflet"; +import "./map.scss"; +import "leaflet/dist/leaflet.css"; //css cho map +import Pin from "../pin/Pin"; + +function Map({ items }) { + return ( + + + {items.map((item) => ( + + ))} + + ); +} + +export default Map; diff --git a/src/components/map/map.scss b/src/components/map/map.scss new file mode 100644 index 00000000..8e31bd1b --- /dev/null +++ b/src/components/map/map.scss @@ -0,0 +1,5 @@ +.map { + width: 100%; + height: 100%; + border-radius: 20px; +} diff --git a/src/components/pin/Pin.jsx b/src/components/pin/Pin.jsx new file mode 100644 index 00000000..b7731a40 --- /dev/null +++ b/src/components/pin/Pin.jsx @@ -0,0 +1,22 @@ +import { Marker, Popup } from "react-leaflet"; +import "./pin.scss"; +import { Link } from "react-router-dom"; + +function Pin({ item }) { + return ( + + +
      + house +
      + {item.title} + {item.bedroom} bedroom + $ {item.price} +
      +
      +
      +
      + ); +} + +export default Pin; diff --git a/src/components/pin/pin.scss b/src/components/pin/pin.scss new file mode 100644 index 00000000..fb2f8000 --- /dev/null +++ b/src/components/pin/pin.scss @@ -0,0 +1,17 @@ +.popupContainer { + display: flex; + gap: 20px; + + img { + width: 64px; + height: 48px; + object-fit: cover; + border-radius: 5px; + } + + .textContainer { + display: flex; + flex-direction: column; + justify-content: space-between; + } +} diff --git a/src/lib/dummydata.js b/src/lib/dummydata.js index ba66b901..7f3b4f2d 100644 --- a/src/lib/dummydata.js +++ b/src/lib/dummydata.js @@ -7,8 +7,8 @@ export const listData = [ bathroom: 1, price: 150000, address: "456 Macauley Street, nigeria", - latitude: 51.5074, - longitude: -0.1278, + latitude: 13.7666, + longitude: 109.21522, }, { id: 2, @@ -18,8 +18,8 @@ export const listData = [ bathroom: 2, price: 15000, address: "789 Adebowale Street, nigeria", - latitude: 52.4862, - longitude: -1.8904, + latitude: 13.77367, + longitude: 109.22534, }, { id: 3, @@ -29,8 +29,8 @@ export const listData = [ bathroom: 1, price: 8000, address: "101 Asaba street, nigeria", - latitude: 53.4808, - longitude: -2.2426, + latitude: 13.707, + longitude: 109.2142, }, { id: 4, @@ -40,8 +40,8 @@ export const listData = [ bathroom: 1, price: 5000, address: "234 Kingsway, nigeria,", - latitude: 53.8008, - longitude: -1.5491, + latitude: 13.77367, + longitude: 109.22534, }, { id: 5, @@ -51,8 +51,8 @@ export const listData = [ bathroom: 2, price: 27000, address: "567 Victoria Road, nigeria", - latitude: 53.4084, - longitude: -2.9916, + latitude: 13.76859, + longitude: 109.22668, }, { id: 6, @@ -62,8 +62,8 @@ export const listData = [ bathroom: 1, price: 8000, address: "890 Regent Street, nigeria", - latitude: 54.9783, - longitude: -1.6174, + latitude: 13.76859, + longitude: 109.2139, }, { id: 7, @@ -73,8 +73,8 @@ export const listData = [ bathroom: 1, price: 10000, address: "112 Piccadilly, nigeria", - latitude: 53.3811, - longitude: -1.4701, + latitude: 13.7022, + longitude: 109.22668, }, { id: 8, @@ -84,8 +84,8 @@ export const listData = [ bathroom: 2, price: 15000, address: "8765 Main High Street, nigeria", - latitude: 51.4545, - longitude: -2.5879, + latitude: 13.76859, + longitude: 109.22668, }, ]; @@ -98,8 +98,8 @@ export const itemsdata = [ bathroom: 1, price: 150000, address: "456 Macauley Street, nigeria", - latitude: 51.5074, - longitude: -0.1278, + latitude: 13.76859, + longitude: 109.22668, }, { id: 2, @@ -109,8 +109,8 @@ export const itemsdata = [ bathroom: 2, price: 15000, address: "789 Adebowale Street, nigeria", - latitude: 52.4862, - longitude: -1.8904, + latitude: 13.76784, + longitude: 109.22483, }, { id: 3, @@ -120,8 +120,8 @@ export const itemsdata = [ bathroom: 1, price: 8000, address: "101 Asaba street, nigeria", - latitude: 53.4808, - longitude: -2.2426, + latitude: 13.709, + longitude: 109.2147, }, { id: 4, @@ -131,8 +131,8 @@ export const itemsdata = [ bathroom: 1, price: 5000, address: "234 Kingsway, nigeria,", - latitude: 53.8008, - longitude: -1.5491, + latitude: 13.76784, + longitude: 109.22483, }, { id: 5, @@ -142,8 +142,8 @@ export const itemsdata = [ bathroom: 2, price: 27000, address: "567 Victoria Road, nigeria", - latitude: 53.4084, - longitude: -2.9916, + latitude: 13.702, + longitude: 109.2152, }, { id: 6, @@ -153,8 +153,8 @@ export const itemsdata = [ bathroom: 1, price: 8000, address: "890 Regent Street, nigeria", - latitude: 54.9783, - longitude: -1.6174, + latitude: 13.709, + longitude: 109.2153, }, { id: 7, @@ -164,8 +164,8 @@ export const itemsdata = [ bathroom: 1, price: 10000, address: "112 Piccadilly, nigeria", - latitude: 53.3811, - longitude: -1.4701, + latitude: 13.7019, + longitude: 109.2157, }, { id: 8, @@ -175,8 +175,8 @@ export const itemsdata = [ bathroom: 2, price: 15000, address: "8765 Main High Street, nigeria", - latitude: 51.4545, - longitude: -2.5879, + latitude: 13.701, + longitude: 109.216, }, ]; diff --git a/src/router/listPage/listPage.jsx b/src/router/listPage/listPage.jsx index 130afb0c..5876dd42 100644 --- a/src/router/listPage/listPage.jsx +++ b/src/router/listPage/listPage.jsx @@ -2,6 +2,7 @@ import Filter from "../../components/filter/Filter"; import "./listPage.scss"; import { listData } from "../../lib/dummydata"; import Card from "../../components/card/card"; +import Map from "../../components/map/Map"; function ListPage() { const data = listData; @@ -15,7 +16,9 @@ function ListPage() { ))} -
      Map
      +
      + +
      ); } diff --git a/src/router/listPage/listPage.scss b/src/router/listPage/listPage.scss index a0571cf3..616b0391 100644 --- a/src/router/listPage/listPage.scss +++ b/src/router/listPage/listPage.scss @@ -44,14 +44,11 @@ 0.6 ); /* Hiện thanh trượt rõ hơn khi cuộn */ } - - .wrapper::-webkit-scrollbar-track { - background: transparent; /* Làm nền của thanh cuộn trong suốt */ - } } .mapContainer { flex: 2; + height: 100%; background-color: #fcf5f3; } } From b9e76624e2aa1c8e778a92033c64c6fc7cc82609 Mon Sep 17 00:00:00 2001 From: Otter Date: Wed, 28 Aug 2024 17:28:25 +0700 Subject: [PATCH 13/20] fix path singlePage --- src/App.jsx | 8 ++++++-- src/router/singlePage/singlePage.jsx | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 67040abb..8df0d4c8 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2,7 +2,7 @@ import HomePage from "./router/homePage/homePage"; import { createBrowserRouter, RouterProvider } from "react-router-dom"; import ListPage from "./router/listPage/listPage"; import Layout from "./router/layout/layout"; -import SinglePage from "./router/singlePage/singlePage"; +import SinglePage from "./router/singlePage/singlePage.jsx"; function App() { const router = createBrowserRouter([ @@ -19,7 +19,11 @@ function App() { element: , }, { - path: "/id", + path: "/list/:id", + element: , + }, + { + path: "/:id", element: , }, ], diff --git a/src/router/singlePage/singlePage.jsx b/src/router/singlePage/singlePage.jsx index 2941d96e..ea308eb5 100644 --- a/src/router/singlePage/singlePage.jsx +++ b/src/router/singlePage/singlePage.jsx @@ -1,7 +1,13 @@ import "./singlePage.scss"; function SinglePage() { - return
      SinglePage
      ; + return ( +
      + singdle +
      +
      +
      + ); } export default SinglePage; From c917e5a2a98bc8b92f3c52427ef04b7b67cca022 Mon Sep 17 00:00:00 2001 From: Ly Thanh Duy Date: Fri, 30 Aug 2024 04:43:35 +0700 Subject: [PATCH 14/20] finish slider bar and base singlePage.jsx --- src/components/card/card.scss | 1 - src/components/slider/Slider.jsx | 66 ++++++++++++++++++++++ src/components/slider/slider.scss | 75 +++++++++++++++++++++++++ src/lib/dummydata.js | 4 +- src/router/singlePage/singlePage.jsx | 30 +++++++++- src/router/singlePage/singlePage.scss | 80 +++++++++++++++++++++++++++ 6 files changed, 250 insertions(+), 6 deletions(-) create mode 100644 src/components/slider/Slider.jsx create mode 100644 src/components/slider/slider.scss diff --git a/src/components/card/card.scss b/src/components/card/card.scss index fc2f836c..6fe78c7f 100644 --- a/src/components/card/card.scss +++ b/src/components/card/card.scss @@ -43,7 +43,6 @@ display: flex; align-items: center; gap: 5px; - color: #888; } diff --git a/src/components/slider/Slider.jsx b/src/components/slider/Slider.jsx new file mode 100644 index 00000000..c343f0d8 --- /dev/null +++ b/src/components/slider/Slider.jsx @@ -0,0 +1,66 @@ +import { useState } from "react"; +import "./slider.scss"; + +function Slider({ images }) { + const [imageIndex, setImageIndex] = useState(null); + + const changeSlider = (direction) => { + if (direction === "left") { + if (imageIndex === 0) { + setImageIndex(images.length - 1); + } else { + setImageIndex(imageIndex - 1); + } + } else { + if (imageIndex === images.length - 1) { + setImageIndex(0); + } else { + setImageIndex(imageIndex + 1); + } + } + }; + return ( +
      + {imageIndex !== null && ( +
      +
      + < changeSlider("left")} + /> +
      +
      + > +
      +
      + > changeSlider("right")} + /> +
      +
      setImageIndex(null)}> + X +
      +
      + )} +
      + setImageIndex(0)} /> +
      +
      + {images.slice(1).map((image, index) => ( + setImageIndex(index + 1)} + /> + ))} +
      +
      + ); +} + +export default Slider; diff --git a/src/components/slider/slider.scss b/src/components/slider/slider.scss new file mode 100644 index 00000000..d0c97fd8 --- /dev/null +++ b/src/components/slider/slider.scss @@ -0,0 +1,75 @@ +.slider { + width: 100%; + display: flex; + height: 350px; + gap: 20px; + + .fullSlider { + position: absolute; + width: 100vw; + height: 100vh; + top: 0; + left: 0; + background-color: black; + display: flex; + justify-content: space-between; + align-items: center; + + .arrow { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + + img { + width: 50px; + + &.right { + transform: rotate(180deg); + } + } + } + + .imgContainer { + flex: 10; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + } + + .close { + position: absolute; + top: 0; + right: 0; + font-size: 36; + font-weight: bold; + color: white; + padding: 50px; + cursor: pointer; + } + } + + img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 10px; + cursor: pointer; + } + + .bigImg { + flex: 3; + } + + .smallImgs { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; + gap: 20px; + height: 100px; + } +} diff --git a/src/lib/dummydata.js b/src/lib/dummydata.js index 7f3b4f2d..6eeeccc5 100644 --- a/src/lib/dummydata.js +++ b/src/lib/dummydata.js @@ -193,8 +193,8 @@ export const singlePostData = { bedRooms: 2, bathroom: 1, size: 861, - latitude: 51.5074, - longitude: -0.1278, + latitude: 13.7666, + longitude: 109.21522, city: "nigeria", address: "1234 Broadway St", school: "250m away", diff --git a/src/router/singlePage/singlePage.jsx b/src/router/singlePage/singlePage.jsx index ea308eb5..6d1a8130 100644 --- a/src/router/singlePage/singlePage.jsx +++ b/src/router/singlePage/singlePage.jsx @@ -1,11 +1,35 @@ +import Slider from "../../components/slider/Slider"; import "./singlePage.scss"; +import { singlePostData, userData } from "../../lib/dummydata"; function SinglePage() { return (
      - singdle -
      -
      +
      +
      + +
      +
      +
      +

      {singlePostData.title}

      +
      + + {singlePostData.address} +
      +
      $ {singlePostData.price}
      +
      +
      + + {userData.name} +
      +
      +
      {singlePostData.description}
      +
      +
      +
      +
      +
      +
      ); } diff --git a/src/router/singlePage/singlePage.scss b/src/router/singlePage/singlePage.scss index e69de29b..9297af46 100644 --- a/src/router/singlePage/singlePage.scss +++ b/src/router/singlePage/singlePage.scss @@ -0,0 +1,80 @@ +.singlePage { + display: flex; + height: 100%; + + .details { + flex: 3; + + .wrapper { + padding-right: 50px; + + .info { + margin-top: 50px; + .top { + display: flex; + justify-content: space-between; + .post { + display: flex; + flex-direction: column; + gap: 20px; + h1 { + font-weight: 400; + } + .adress { + display: flex; + flex-direction: column; + gap: 5px; + color: #888; + font-size: 14px; + + img { + width: 16px; + height: 16px; + } + } + .price { + padding: 5px; + border-radius: 5px; + background-color: #fddc9f; + font-size: 20px; + font-weight: 300; + width: max-content; + } + } + .user { + display: flex; + flex-direction: column; + padding: 0px 50px; + align-items: center; + justify-content: center; + gap: 20px; + border-radius: 10px; + background-color: rgb(255, 205, 81, 0.239); + font-weight: 600; + img { + width: 50px; + height: 50px; + border-radius: 50%; + object-fit: cover; + } + } + } + + .bottom { + margin-top: 50px; + color: #555; + line-height: 20px; + } + } + } + } + + .features { + flex: 2; + background: #fcd5f3; + + .wrapper { + padding: 0px 20px; + } + } +} From e46174c5a9b985576bfbd79f7cc3340ea14ebbfe Mon Sep 17 00:00:00 2001 From: Ly Thanh Duy Date: Fri, 30 Aug 2024 05:31:50 +0700 Subject: [PATCH 15/20] 5:30 --- src/router/singlePage/singlePage.jsx | 46 +++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/router/singlePage/singlePage.jsx b/src/router/singlePage/singlePage.jsx index 6d1a8130..5efcff01 100644 --- a/src/router/singlePage/singlePage.jsx +++ b/src/router/singlePage/singlePage.jsx @@ -28,7 +28,51 @@ function SinglePage() {
      -
      +
      +

      General

      +
      +
      + +
      + Utilities +

      Renter is responsible

      +
      +
      +
      + +
      + Pet Policy +

      Pets Allowed

      +
      +
      +
      + +
      + Property Fees +

      Must have 3x the rent in total household income

      +
      +
      +
      +

      Room Sizes

      +
      +

      Nearby Places

      +
      +

      Location

      +

      +
      +
      +
      + + +
      +
      +
      ); From acec0630280431ae1bf89bd2f1705d04476d460c Mon Sep 17 00:00:00 2001 From: Otter Date: Fri, 30 Aug 2024 11:51:44 +0700 Subject: [PATCH 16/20] base ui not chat --- src/components/navbar/navbar.scss | 4 +- src/components/slider/slider.scss | 12 +++ src/router/singlePage/singlePage.jsx | 65 ++++++++++++---- src/router/singlePage/singlePage.scss | 103 +++++++++++++++++++++++++- 4 files changed, 168 insertions(+), 16 deletions(-) diff --git a/src/components/navbar/navbar.scss b/src/components/navbar/navbar.scss index 07f7e00b..7f0aa25b 100644 --- a/src/components/navbar/navbar.scss +++ b/src/components/navbar/navbar.scss @@ -67,7 +67,7 @@ nav { .menuIcon { display: none; - z-index: 999; + z-index: 1000; img { width: 36px; @@ -94,9 +94,11 @@ nav { align-items: center; justify-content: center; font-size: 24px; + z-index: 999; &.active { right: 0; + z-index: 999; } @include sm { diff --git a/src/components/slider/slider.scss b/src/components/slider/slider.scss index d0c97fd8..14bf6166 100644 --- a/src/components/slider/slider.scss +++ b/src/components/slider/slider.scss @@ -1,3 +1,5 @@ +@import "../../responsive.scss"; + .slider { width: 100%; display: flex; @@ -9,11 +11,13 @@ width: 100vw; height: 100vh; top: 0; + height: 100%; left: 0; background-color: black; display: flex; justify-content: space-between; align-items: center; + z-index: 9999; .arrow { flex: 1; @@ -24,6 +28,14 @@ img { width: 50px; + @include md { + width: 30px; + } + + @include sm { + width: 20px; + } + &.right { transform: rotate(180deg); } diff --git a/src/router/singlePage/singlePage.jsx b/src/router/singlePage/singlePage.jsx index 5efcff01..72c558a2 100644 --- a/src/router/singlePage/singlePage.jsx +++ b/src/router/singlePage/singlePage.jsx @@ -1,4 +1,5 @@ import Slider from "../../components/slider/Slider"; +import Map from "../../components/map/Map.jsx"; import "./singlePage.scss"; import { singlePostData, userData } from "../../lib/dummydata"; @@ -54,23 +55,59 @@ function SinglePage() {

      Room Sizes

      -
      -

      Nearby Places

      -
      +
      +
      + + 80 sqft +
      +
      + + 2 bedroom +
      +
      + + 1 bathroom +
      +
      +

      Nearby place

      +
      +
      + +
      + School +

      200m away

      +
      +
      +
      + +
      + Bus stop +

      100m away

      +
      +
      +
      + +
      + Restaurant +

      100m away

      +
      +
      +
      +

      Location

      -
      +
      + +
      -
      - - -
      + +
      diff --git a/src/router/singlePage/singlePage.scss b/src/router/singlePage/singlePage.scss index 9297af46..86cb079e 100644 --- a/src/router/singlePage/singlePage.scss +++ b/src/router/singlePage/singlePage.scss @@ -1,9 +1,17 @@ +@import "../../responsive.scss"; + .singlePage { display: flex; height: 100%; + overflow-y: scroll; + + @include md { + flex-direction: column; + } .details { flex: 3; + height: 100%; .wrapper { padding-right: 50px; @@ -71,10 +79,103 @@ .features { flex: 2; - background: #fcd5f3; + background: #fcf5f3; + + // @include md { + // margin-bottom: 50px; + // } .wrapper { padding: 0px 20px; + display: flex; + flex-direction: column; + gap: 20px; + + img { + height: 24px; + width: 24px; + } + + .title { + font-size: 18px; + font-weight: bold; + margin-bottom: 10px; + } + .feature { + display: flex; + align-items: center; + gap: 10px; + + img { + background-color: rgb(254, 205, 81, 0.209); + } + .featureText { + span { + font-weight: bold; + } + p { + font-size: 14px; + } + } + } + + .listVertical { + display: flex; + flex-direction: column; + gap: 20px; + padding: 20px 10px; + background-color: white; + border-radius: 10px; + } + + .listHorizontal { + display: flex; + gap: 20px; + padding: 20px 10px; + align-items: center; + justify-content: space-between; + background-color: white; + border-radius: 10px; + } + + .sizes { + display: flex; + gap: 10px; + justify-content: space-between; + + @include lg { + font-size: 12px; + } + + .size { + display: flex; + gap: 10px; + padding: 10px; + background-color: white; + border-radius: 5px; + } + } + + .mapContainer { + width: 100%; + height: 200px; + } + + .buttons { + display: flex; + justify-content: space-between; + + button { + display: flex; + align-items: center; + gap: 5px; + padding: 20px; + background-color: white; + border-radius: 5px; + border: 1px solid #fece51; + cursor: pointer; + } + } } } } From ddb104f2bb1d45170557a163b47bc758c9875d8a Mon Sep 17 00:00:00 2001 From: Otter Date: Fri, 30 Aug 2024 17:09:09 +0700 Subject: [PATCH 17/20] profile.scss --- src/App.jsx | 5 +++ src/components/list/List.jsx | 15 +++++++ src/components/list/list.scss | 0 src/components/navbar/Navbar.jsx | 29 ++++++++++-- src/components/navbar/navbar.scss | 41 +++++++++++++++++ src/router/profilePage/profilePage.jsx | 44 ++++++++++++++++++ src/router/profilePage/profilePage.scss | 60 +++++++++++++++++++++++++ 7 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 src/components/list/List.jsx create mode 100644 src/components/list/list.scss create mode 100644 src/router/profilePage/profilePage.jsx create mode 100644 src/router/profilePage/profilePage.scss diff --git a/src/App.jsx b/src/App.jsx index 8df0d4c8..51e41202 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,6 +3,7 @@ import { createBrowserRouter, RouterProvider } from "react-router-dom"; import ListPage from "./router/listPage/listPage"; import Layout from "./router/layout/layout"; import SinglePage from "./router/singlePage/singlePage.jsx"; +import ProfilePage from "./router/profilePage/profilePage.jsx"; function App() { const router = createBrowserRouter([ @@ -26,6 +27,10 @@ function App() { path: "/:id", element: , }, + { + path: "/profile", + element: , + }, ], }, ]); diff --git a/src/components/list/List.jsx b/src/components/list/List.jsx new file mode 100644 index 00000000..787169fb --- /dev/null +++ b/src/components/list/List.jsx @@ -0,0 +1,15 @@ +import "./list.scss"; +import Card from "../card/card.jsx"; +import { listData } from "../../lib/dummydata.js"; + +function List() { + return ( +
      + {listData.map((item) => ( + + ))} +
      + ); +} + +export default List; diff --git a/src/components/list/list.scss b/src/components/list/list.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/components/navbar/Navbar.jsx b/src/components/navbar/Navbar.jsx index 3dc1b2ca..d6f8de75 100644 --- a/src/components/navbar/Navbar.jsx +++ b/src/components/navbar/Navbar.jsx @@ -1,7 +1,11 @@ +import { Link } from "react-router-dom"; import { useState } from "react"; + import "./navbar.scss"; function Navbar() { const [open, setOpen] = useState(false); + + const user = true; return (