From 338c249e493a39ebd44a00748120f21e4cedcf1b Mon Sep 17 00:00:00 2001 From: lfirmin Date: Wed, 25 Feb 2026 19:32:34 +0100 Subject: [PATCH] maj --- package-lock.json | 672 ++++++++++++++++++++++++++- package.json | 5 +- postcss.config.cjs | 6 + src/App.jsx | 48 +- src/components/ComparisonSection.jsx | 143 ++++++ src/components/Footer.jsx | 157 +++++++ src/components/GuideSection.jsx | 134 ++++++ src/components/Hero.jsx | 85 ++++ src/components/MutuelleCard.jsx | 142 ++++++ src/components/Navbar.jsx | 98 ++++ src/components/Testimonials.jsx | 116 +++++ src/data/mutuelles.js | 199 ++++++++ src/index.css | 73 +-- tailwind.config.cjs | 7 + 14 files changed, 1789 insertions(+), 96 deletions(-) create mode 100644 postcss.config.cjs create mode 100644 src/components/ComparisonSection.jsx create mode 100644 src/components/Footer.jsx create mode 100644 src/components/GuideSection.jsx create mode 100644 src/components/Hero.jsx create mode 100644 src/components/MutuelleCard.jsx create mode 100644 src/components/Navbar.jsx create mode 100644 src/components/Testimonials.jsx create mode 100644 src/data/mutuelles.js create mode 100644 tailwind.config.cjs diff --git a/package-lock.json b/package-lock.json index 03a848e..bb94c88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,14 @@ "name": "amado-redesign", "version": "0.0.0", "dependencies": { + "framer-motion": "^12.34.3", "react": "^19.2.0", - "react-dom": "^19.2.0" + "react-dom": "^19.2.0", + "react-icons": "^5.5.0" }, "devDependencies": { "@eslint/js": "^9.39.1", + "@tailwindcss/postcss": "^4.2.1", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", @@ -26,6 +29,19 @@ "vite": "^7.3.1" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -1366,6 +1382,277 @@ "win32" ] }, + "node_modules/@tailwindcss/node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz", + "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.31.1", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.1.tgz", + "integrity": "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-x64": "4.2.1", + "@tailwindcss/oxide-freebsd-x64": "4.2.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-x64-musl": "4.2.1", + "@tailwindcss/oxide-wasm32-wasi": "4.2.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", + "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", + "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", + "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", + "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", + "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", + "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", + "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", + "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", + "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", + "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", + "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", + "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.1.tgz", + "integrity": "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.2.1", + "@tailwindcss/oxide": "4.2.1", + "postcss": "^8.5.6", + "tailwindcss": "4.2.1" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1760,6 +2047,16 @@ "dev": true, "license": "MIT" }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.302", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", @@ -1767,6 +2064,20 @@ "dev": true, "license": "ISC" }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/esbuild": { "version": "0.27.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", @@ -2120,6 +2431,33 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/framer-motion": { + "version": "12.34.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.34.3.tgz", + "integrity": "sha512-v81ecyZKYO/DfpTwHivqkxSUBzvceOpoI+wLfgCgoUIKxlFKEXdg0oR9imxwXumT4SFy8vRk9xzJ5l3/Du/55Q==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.34.3", + "motion-utils": "^12.29.2", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2171,6 +2509,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2265,6 +2610,16 @@ "dev": true, "license": "ISC" }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2356,6 +2711,267 @@ "node": ">= 0.8.0" } }, + "node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2389,6 +3005,16 @@ "yallist": "^3.0.2" } }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "node_modules/minimatch": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", @@ -2402,6 +3028,21 @@ "node": "*" } }, + "node_modules/motion-dom": { + "version": "12.34.3", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.34.3.tgz", + "integrity": "sha512-sYgFe+pR9aIM7o4fhs2aXtOI+oqlUd33N9Yoxcgo1Fv7M20sRkHtCmzE/VRNIcq7uNJ+qio+Xubt1FXH3pQ+eQ==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.29.2" + } + }, + "node_modules/motion-utils": { + "version": "12.29.2", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz", + "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2622,6 +3263,15 @@ "react": "^19.2.4" } }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-refresh": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", @@ -2769,6 +3419,20 @@ "dev": true, "license": "MIT" }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -2786,6 +3450,12 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 2618e4a..6d4c50a 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,14 @@ "preview": "vite preview" }, "dependencies": { + "framer-motion": "^12.34.3", "react": "^19.2.0", - "react-dom": "^19.2.0" + "react-dom": "^19.2.0", + "react-icons": "^5.5.0" }, "devDependencies": { "@eslint/js": "^9.39.1", + "@tailwindcss/postcss": "^4.2.1", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..668a5b9 --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + '@tailwindcss/postcss': {}, + autoprefixer: {}, + }, +} diff --git a/src/App.jsx b/src/App.jsx index f67355a..6ecd2a3 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,35 +1,21 @@ -import { useState } from 'react' -import reactLogo from './assets/react.svg' -import viteLogo from '/vite.svg' -import './App.css' - -function App() { - const [count, setCount] = useState(0) +import Navbar from './components/Navbar' +import Hero from './components/Hero' +import ComparisonSection from './components/ComparisonSection' +import Testimonials from './components/Testimonials' +import GuideSection from './components/GuideSection' +import Footer from './components/Footer' +export default function App() { return ( - <> -
- - Vite logo - - - React logo - -
-

Vite + React

-
- -

- Edit src/App.jsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- +
+ +
+ + + + +
+
+
) } - -export default App diff --git a/src/components/ComparisonSection.jsx b/src/components/ComparisonSection.jsx new file mode 100644 index 0000000..bda99ca --- /dev/null +++ b/src/components/ComparisonSection.jsx @@ -0,0 +1,143 @@ +import { motion } from 'framer-motion' +import { FiAward, FiArrowRight } from 'react-icons/fi' +import { mutuelles } from '../data/mutuelles' +import MutuelleCard from './MutuelleCard' + +const medals = ['🏆', 'đŸ„ˆ', 'đŸ„‰'] + +function TopCard({ mutuelle, index }) { + const isFirst = index === 0 + + return ( +
+ {/* Badge */} + {isFirst && ( +
+ ⭐ Meilleur Choix 2026 +
+ )} + +
+ {/* Logo */} +
+ {mutuelle.initials} +
+ + {/* Medal + rank */} + {medals[index]} +
+ +
{mutuelle.name}
+
{mutuelle.tagline}
+ + {/* Tags */} +
+ {mutuelle.idealFor.map((tag) => ( + + {tag} + + ))} +
+ + {/* Promo */} + {mutuelle.offer && ( +
+ 🎁 {mutuelle.offer} +
+ )} + + {/* Score + CTA */} +
+
+
+ {mutuelle.score} + /10 +
+
Score Mon Gaston
+
+ +
+
+ ) +} + +export default function ComparisonSection() { + return ( +
+
+ + {/* Header */} +
+
+ + Classement officiel 2026 +
+

+ Les meilleures mutuelles santé +

+

+ Classement mis Ă  jour chaque mois — basĂ© sur les garanties, les tarifs + et les avis clients de plus de 186 mutuelles analysĂ©es. +

+
+ + {/* Top 3 grid */} +
+ {mutuelles.slice(0, 3).map((m, i) => ( + + + + ))} +
+ + {/* Divider */} +
+
+ + Classement complet + +
+
+ + {/* Full list */} +
+ {mutuelles.map((m, i) => ( + + + + ))} +
+
+
+ ) +} diff --git a/src/components/Footer.jsx b/src/components/Footer.jsx new file mode 100644 index 0000000..3e38984 --- /dev/null +++ b/src/components/Footer.jsx @@ -0,0 +1,157 @@ +import { MdPets } from 'react-icons/md' +import { + FiFacebook, + FiTwitter, + FiInstagram, + FiLinkedin, + FiYoutube, + FiArrowUpRight, +} from 'react-icons/fi' + +const colResources = ['FAQ', 'Guides', 'Lexique', 'Documents'] + +const colDiscover = [ + 'À propos', + 'Fonctionnement', + 'Revue de presse', + 'Nous rejoindre', + 'Nos partenaires', + 'Espace presse', +] + +const colLegal = [ + 'Mentions lĂ©gales', + 'Politique de confidentialitĂ©', + 'Gestion des cookies', + "Conditions gĂ©nĂ©rales d'utilisation", +] + +const socials = [ + { Icon: FiFacebook, label: 'Facebook' }, + { Icon: FiTwitter, label: 'Twitter / X' }, + { Icon: FiInstagram, label: 'Instagram' }, + { Icon: FiLinkedin, label: 'LinkedIn' }, + { Icon: FiYoutube, label: 'YouTube' }, +] + +export default function Footer() { + return ( + + ) +} diff --git a/src/components/GuideSection.jsx b/src/components/GuideSection.jsx new file mode 100644 index 0000000..c1998e6 --- /dev/null +++ b/src/components/GuideSection.jsx @@ -0,0 +1,134 @@ +import { useState } from 'react' +import { motion, AnimatePresence } from 'framer-motion' +import { FiChevronDown, FiBookOpen, FiChevronRight } from 'react-icons/fi' +import { faqs, guides } from '../data/mutuelles' + +function FaqItem({ faq, index }) { + const [open, setOpen] = useState(index === 0) + + return ( +
+ + + + {open && ( + +
+ {faq.content.map((para, i) => ( +

+ {para} +

+ ))} +
+
+ )} +
+
+ ) +} + +export default function GuideSection() { + return ( +
+
+ +
+

+ Tout savoir sur la mutuelle santé +

+

+ Nos guides répondent à toutes vos questions pour faire le bon choix. +

+
+ +
+ + {/* FAQ accordéon */} +
+ {faqs.map((faq, i) => ( + + + + ))} +
+ + {/* Sidebar */} +
+
+ + {/* Guides card */} +
+
+
+ +
+

Tous nos guides

+
+ +
+ + {/* CTA card */} +
+
+ Besoin d'un conseil personnalisé ? +
+

+ Nos experts répondent à toutes vos questions gratuitement, sans engagement. +

+ + 📞 01 80 89 10 30 + +
+ +
+
+ +
+
+
+ ) +} diff --git a/src/components/Hero.jsx b/src/components/Hero.jsx new file mode 100644 index 0000000..3f4c827 --- /dev/null +++ b/src/components/Hero.jsx @@ -0,0 +1,85 @@ +import { motion } from 'framer-motion' +import { FiArrowRight, FiShield, FiStar, FiUsers, FiCheckCircle } from 'react-icons/fi' + +const stats = [ + { value: '186', label: 'mutuelles analysées', icon: FiShield }, + { value: '4.9 / 5', label: 'note clients', icon: FiStar }, + { value: '250 000+', label: 'utilisateurs', icon: FiUsers }, +] + +export default function Hero() { + return ( +
+ {/* Decorative blobs */} +
+
+
+
+ +
+ +

+ Mutuelle santé{' '} + + + pour tous + + + +

+ +

+ Jeune actif, parent, senior — comparez les garanties utiles et trouvez + la couverture parfaite au meilleur prix, sans engagement. +

+ + {/* Trust points */} +
    + {['Comparaison 100% gratuite', 'Sans engagement', 'Réponse en 2 min'].map((t) => ( +
  • + + {t} +
  • + ))} +
+ + {/* CTA */} +
+ + Comparer les mutuelles + + + +
+
+ + {/* Stats bar */} + + {stats.map(({ value, label, icon: Icon }) => ( +
+ +
{value}
+
{label}
+
+ ))} +
+
+
+ ) +} diff --git a/src/components/MutuelleCard.jsx b/src/components/MutuelleCard.jsx new file mode 100644 index 0000000..51670c7 --- /dev/null +++ b/src/components/MutuelleCard.jsx @@ -0,0 +1,142 @@ +import { FiArrowRight, FiActivity, FiEye, FiSmile } from 'react-icons/fi' +import { MdLocalHospital } from 'react-icons/md' + +const hospConfig = { + orange: { + bg: 'bg-orange-50', + text: 'text-orange-700', + border: 'border-orange-200', + }, + green: { + bg: 'bg-emerald-50', + text: 'text-emerald-700', + border: 'border-emerald-200', + }, + teal: { + bg: 'bg-teal-50', + text: 'text-teal-700', + border: 'border-teal-200', + }, +} + +function FeatureDots({ count }) { + return ( +
+ {[1, 2, 3].map((i) => ( +
+ ))} +
+ ) +} + +function ScoreBar({ score, color }) { + return ( +
+
+ {score} +
+
+
+
+
+ Score Mon Gaston +
+
+ ) +} + +export default function MutuelleCard({ mutuelle }) { + const hosp = hospConfig[mutuelle.hospColor] || hospConfig.teal + const isFirst = mutuelle.rank === 1 + + return ( +
+ {/* Rank badge */} +
+ {mutuelle.rank} +
+ + {/* Logo */} +
+ {mutuelle.initials} +
+ + {/* Name + tags */} +
+
+ {mutuelle.name} + {isFirst && ( + + ⭐ Meilleur Choix + + )} +
+
+ {mutuelle.idealFor.map((tag) => ( + + {tag} + + ))} +
+
+ + {/* Features */} +
+
+ + Soins + +
+
+ + Dentaire + +
+
+ + Optique + +
+
+ + + {/* Score */} +
+ +
+ + {/* CTA */} + +
+ ) +} diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx new file mode 100644 index 0000000..0fd1ea3 --- /dev/null +++ b/src/components/Navbar.jsx @@ -0,0 +1,98 @@ +import { useState } from 'react' +import { motion, AnimatePresence } from 'framer-motion' +import { FiPhone, FiMenu, FiX } from 'react-icons/fi' +import { MdPets } from 'react-icons/md' + +const navLinks = [ + { label: 'Mutuelle santé', href: '#' }, + { label: 'Assurance animaux', href: '#' }, + { label: 'Assurance auto', href: '#' }, + { label: 'Assurance habitation', href: '#' }, + { label: 'Assurance Emprunteur', href: '#' }, + { label: 'Contact', href: '#' }, +] + +export default function Navbar() { + const [open, setOpen] = useState(false) + + return ( +
+
+
+ {/* Logo */} + +
+ +
+ + Mon Gaston + +
+ + {/* Desktop nav */} + + + {/* Phone CTA */} + + + {/* Mobile toggle */} + +
+
+ + {/* Mobile menu */} + + {open && ( + + {navLinks.map((link) => ( + + {link.label} + + ))} + + + 01 80 89 10 30 + + + )} + +
+ ) +} diff --git a/src/components/Testimonials.jsx b/src/components/Testimonials.jsx new file mode 100644 index 0000000..b7e64ac --- /dev/null +++ b/src/components/Testimonials.jsx @@ -0,0 +1,116 @@ +import { motion } from 'framer-motion' +import { FiStar } from 'react-icons/fi' +import { testimonials } from '../data/mutuelles' + +function Stars({ rating }) { + return ( +
+ {[1, 2, 3, 4, 5].map((i) => ( + + ))} +
+ ) +} + +export default function Testimonials() { + return ( +
+
+ +
+

+ Ce que nos clients disent de nous +

+

+ Découvrez les témoignages de clients satisfaits qui nous font confiance + pour leurs assurances santé. +

+
+ +
+ {testimonials.map((t, i) => ( + + {/* Quote mark */} +
+ " +
+ +

+ {t.text} +

+ + {/* Footer */} +
+
+
+ {t.avatar} +
+
+
{t.name}
+
{t.role}
+
+
+ +
+
+ ))} +
+ + {/* Trust bar */} + +
+
+ {[ + { initials: 'AB', color: '#2563EB' }, + { initials: 'CL', color: '#DC2626' }, + { initials: 'MK', color: '#059669' }, + { initials: 'JD', color: '#7C3AED' }, + ].map((a) => ( +
+ {a.initials} +
+ ))} +
+ 250 000+ + utilisateurs satisfaits +
+
+
+
+ {[1,2,3,4,5].map((i) => ( + + ))} +
+ 4.9 / 5 + note moyenne +
+ +
+
+ ) +} diff --git a/src/data/mutuelles.js b/src/data/mutuelles.js new file mode 100644 index 0000000..ac6da83 --- /dev/null +++ b/src/data/mutuelles.js @@ -0,0 +1,199 @@ +export const mutuelles = [ + { + id: 1, + rank: 1, + name: "Mon SantĂ©", + initials: "MS", + tagline: "La rĂ©fĂ©rence 2026", + primaryColor: "#DC2626", + lightBg: "#FEF2F2", + badge: "Meilleur Choix 2026", + idealFor: ["Actifs", "Seniors"], + soins: 3, + dentaire: 2, + optique: 3, + hospitalization: "ÉlevĂ©e", + hospColor: "orange", + score: 9.8, + offer: null, + }, + { + id: 2, + rank: 2, + name: "IdentitĂ©s Mutuelle", + initials: "ID", + tagline: "IdĂ©al pour les actifs", + primaryColor: "#2563EB", + lightBg: "#EFF6FF", + badge: null, + idealFor: ["Actifs"], + soins: 3, + dentaire: 2, + optique: 3, + hospitalization: "ÉlevĂ©e", + hospColor: "orange", + score: 9.5, + offer: null, + }, + { + id: 3, + rank: 3, + name: "Yeomi", + initials: "YE", + tagline: "Excellent rapport qualitĂ©-prix", + primaryColor: "#F97316", + lightBg: "#FFF7ED", + badge: null, + idealFor: ["Actifs", "Familles"], + soins: 3, + dentaire: 3, + optique: 2, + hospitalization: "ÉlevĂ©e", + hospColor: "orange", + score: 9.3, + offer: "3 MOIS OFFERTS", + }, + { + id: 4, + rank: 4, + name: "Smatis", + initials: "SM", + tagline: "Excellence pour seniors", + primaryColor: "#7C3AED", + lightBg: "#F5F3FF", + badge: null, + idealFor: ["Seniors"], + soins: 3, + dentaire: 3, + optique: 3, + hospitalization: "Excellente", + hospColor: "green", + score: 9.1, + offer: null, + }, + { + id: 5, + rank: 5, + name: "April", + initials: "AP", + tagline: "FlexibilitĂ© maximale", + primaryColor: "#0891B2", + lightBg: "#ECFEFF", + badge: null, + idealFor: ["Seniors", "IndĂ©pendants"], + soins: 2, + dentaire: 3, + optique: 3, + hospitalization: "Excellente", + hospColor: "green", + score: 8.9, + offer: null, + }, + { + id: 6, + rank: 6, + name: "Helse", + initials: "HE", + tagline: "Rapport qualitĂ©-prix optimal", + primaryColor: "#059669", + lightBg: "#ECFDF5", + badge: null, + idealFor: ["Actifs", "Étudiants"], + soins: 2, + dentaire: 2, + optique: 3, + hospitalization: "TrĂšs bonne", + hospColor: "teal", + score: 8.7, + offer: null, + }, +] + +export const testimonials = [ + { + id: 1, + name: "Fabienne Delat", + role: "RetraitĂ©e, 67 ans", + avatar: "FD", + avatarColor: "#7C3AED", + rating: 5, + text: "Je suis ravie des Ă©conomies que j'ai pu rĂ©aliser en changeant de mutuelle grĂące Ă  Mon Gaston. Le comparateur est simple et les conseils trĂšs utiles. Je recommande Ă  tous !", + }, + { + id: 2, + name: "Nelly Skrzyniarz", + role: "Cadre, 41 ans", + avatar: "NS", + avatarColor: "#2563EB", + rating: 5, + text: "Mon conseiller Ă©tait vraiment Ă  l'Ă©coute, sans pression. Il a pris le temps de comprendre mes besoins et m'a orientĂ© vers la solution parfaite pour moi. TrĂšs satisfaite !", + }, + { + id: 3, + name: "JoĂ«lle Viot", + role: "InfirmiĂšre, 34 ans", + avatar: "JV", + avatarColor: "#DC2626", + rating: 5, + text: "J'ai un diabĂšte et j'avais besoin de bons remboursements sur mes soins spĂ©cialisĂ©s. Mon Gaston m'a trouvĂ© exactement ce qu'il fallait, rapidement et sans tracas.", + }, +] + +export const guides = [ + "Pourquoi souscrire Ă  une mutuelle santĂ© ?", + "Quels sont les avantages de souscrire Ă  une mutuelle santĂ© ?", + "Quels sont les types de complĂ©mentaires santĂ© ?", + "Comment bien choisir une mutuelle santĂ© ?", + "Comment rĂ©silier sa mutuelle santĂ© ?", + "Pourquoi choisir une mutuelle santĂ© via un comparateur en ligne ?", +] + +export const faqs = [ + { + question: "Pourquoi souscrire Ă  une mutuelle santĂ© ?", + content: [ + "La premiĂšre mission de la mutuelle santĂ© est d'indemniser la valeur du ticket modĂ©rateur — la partie non remboursĂ©e par la SĂ©curitĂ© sociale. Il est possible de classer les soins en 3 catĂ©gories selon leur niveau de remboursement.", + "Soins remboursĂ©s Ă  80 % : il s'agit par exemple des honoraires mĂ©dicaux en cas d'hospitalisation. Une mutuelle couvre le reste des 20 % Ă  votre charge.", + "Soins pris en charge Ă  70 % : consultations chez un mĂ©decin gĂ©nĂ©raliste ou un spĂ©cialiste. La consultation coĂ»te 25 €, la SĂ©cu rembourse 16,50 € — la mutuelle couvre le solde.", + "Soins remboursĂ©s Ă  60 % : soins infirmiers, kinĂ©sithĂ©rapie et certains actes effectuĂ©s en laboratoire.", + ], + }, + { + question: "Quels sont les avantages de souscrire Ă  une mutuelle santĂ© ?", + content: [ + "La seconde mission d'une assurance santĂ© est de rembourser les soins qui ne bĂ©nĂ©ficient d'aucun remboursement de la SĂ©curitĂ© sociale (actes hors AMO) : frais d'hospitalisation, sĂ©ances d'ostĂ©opathie, phytothĂ©rapie, mĂ©decines douces...", + "AccĂ©der au tiers payant : vous n'avancez plus les frais mĂ©dicaux. Un avantage considĂ©rable pour gĂ©rer votre budget de santĂ© sereinement.", + "BĂ©nĂ©ficier de services d'assistance : prise en charge en cas de difficultĂ©s liĂ©es Ă  la santĂ© — aide-mĂ©nagĂšre, soutien scolaire, garde d'animaux, accompagnement. C'est un contrat central pour connaĂźtre les conditions.", + ], + }, + { + question: "Quels sont les types de complĂ©mentaire santĂ© ?", + content: [ + "Depuis le 1er janvier 2016, chaque employeur doit proposer une complĂ©mentaire santĂ© collective Ă  ses salariĂ©s — avec une prise en charge minimale de 50 % de la cotisation.", + "Si vous ĂȘtes salariĂ© mais pas satisfait, ou si vous travaillez Ă  votre compte, vous devrez souscrire une assurance santĂ© individuelle. Elle est plus chĂšre mais s'adapte entiĂšrement Ă  votre situation.", + ], + }, + { + question: "Comment bien choisir une mutuelle santĂ© ?", + content: [ + "Analysez vos besoins rĂ©els en matiĂšre de santĂ© et ceux de vos ayants droit. Sans cette Ă©tape, vous risquez de payer trop cher ou d'ĂȘtre sous-couvert par rapport Ă  vos dĂ©penses de santĂ© habituelles.", + "Soyez attentif aux exclusions de garanties : certains contrats ne prennent pas en charge les lunettes, les frais funĂ©raires, la chirurgie esthĂ©tique, ou certains actes aprĂšs une tentative de suicide.", + "Adaptez votre couverture Ă  votre budget — les contrats de mutuelle sont conçus pour s'adapter Ă  tous les profils, y compris les plus serrĂ©s.", + ], + }, + { + question: "Comment rĂ©silier sa mutuelle santĂ© ?", + content: [ + "Depuis le 1er dĂ©cembre 2020, tout assurĂ© peut rĂ©silier sa mutuelle santĂ© Ă  tout moment, Ă  condition de bĂ©nĂ©ficier d'un contrat depuis plus d'un an. Par exemple, signĂ© le 1er mars 2021, vous pouvez rĂ©silier Ă  partir du 1er mars 2022, sans justification.", + "Il suffit d'envoyer une lettre de rĂ©siliation en recommandĂ©. Et si vous souscrivez une nouvelle mutuelle, celle-ci peut se charger des dĂ©marches de rĂ©siliation Ă  votre place.", + ], + }, + { + question: "Pourquoi choisir une mutuelle santĂ© via un comparateur en ligne ?", + content: [ + "Mon Gaston facilite les dĂ©marches des demandeurs de mutuelles santĂ© en France. Face Ă  la complexitĂ© de l'offre, il est difficile de choisir une mutuelle parfaitement adaptĂ©e Ă  ses besoins et Ă  son budget sans aide.", + "Pour vous aider Ă  faire le tri dans cet ocĂ©an d'offres, notre comparateur en ligne recense les meilleures offres de mutuelles santĂ©. Cela permet de comparer sereinement sans perdre des heures.", + "DĂ©couvrez les formules Mon Gaston adaptĂ©es Ă  votre profil — tirez parti de la concurrence pour bĂ©nĂ©ficier du meilleur rapport qualitĂ©-prix proposĂ©.", + ], + }, +] diff --git a/src/index.css b/src/index.css index 08a3ac9..ced7795 100644 --- a/src/index.css +++ b/src/index.css @@ -1,68 +1,15 @@ -:root { - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; +@import "tailwindcss"; - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; +@layer base { + html { + scroll-behavior: smooth; } - a:hover { - color: #747bff; + body { + font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } - button { - background-color: #f9f9f9; + * { + box-sizing: border-box; } } diff --git a/tailwind.config.cjs b/tailwind.config.cjs new file mode 100644 index 0000000..c2c108e --- /dev/null +++ b/tailwind.config.cjs @@ -0,0 +1,7 @@ +module.exports = { + content: ['./index.html', './src/**/*.{js,jsx,ts,tsx}'], + theme: { + extend: {}, + }, + plugins: [], +}