diff --git a/app/Enums/SeasonalSections/BackgroundEnum.php b/app/Enums/SeasonalSections/BackgroundEnum.php index daa6790..b0bbc50 100644 --- a/app/Enums/SeasonalSections/BackgroundEnum.php +++ b/app/Enums/SeasonalSections/BackgroundEnum.php @@ -20,4 +20,23 @@ enum BackgroundEnum: int self::chinesenewyear->name => 'Nouvel an chinois', self::endofyear->name => 'Fin d\'année', ]; + + /** + * Custom added classes definition + */ + private const BOOTSTRAPCLASS = [ + self::candlemas->name => 'seasonal-sections-candlemas', + self::chinesenewyear->name => 'seasonal-sections-chinesenewyear', + self::endofyear->name => 'seasonal-sections-endofyear', + ]; + + /** + * Get Class + * + * @return string + */ + public function bootstrapClass(): string + { + return self::BOOTSTRAPCLASS[$this->name]; + } } diff --git a/app/Http/Controllers/Fo/HomeController.php b/app/Http/Controllers/Fo/HomeController.php deleted file mode 100644 index 9be2fe3..0000000 --- a/app/Http/Controllers/Fo/HomeController.php +++ /dev/null @@ -1,18 +0,0 @@ -get(); return view('fo.pages.legals', ['staticPageModel' => $policiesPage[0]]); } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Contracts\View\View + */ + public function homepage(): \Illuminate\Contracts\View\View + { + /** @var \App\Models\Homepage $homepageModel */ + $homepageModel = Homepage::query()->firstOrFail(); + + /** @var \App\Models\StaticPage $staticPageModel */ + $staticPageModel = StaticPage::query()->where('type', StaticPageType::home)->firstOrFail(); + + /** @var \App\Models\SeasonalSection $seasonalSectionsModel */ + $seasonalSectionsModel = SeasonalSection::query()->where('published', true)->first(); + + /** @var \App\Models\News $newsModels */ + $newsModels = News::query()->where('published', true)->latest('publish_at')->limit(2)->get(); + + /** @var \App\Models\Range $rangeModels */ + $rangeModels = Range::query()->where('published', true)->orderBy('order')->get(); + + return view('fo.pages.home', compact( + 'homepageModel', + 'staticPageModel', + 'seasonalSectionsModel', + 'newsModels', + 'rangeModels', + )); + } } diff --git a/package-lock.json b/package-lock.json index 1c3b857..d32286a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,6 +45,7 @@ "stylelint-config-standard-scss": "latest", "stylelint-scss": "latest", "sweetalert2": "^11.7.31", + "swiper": "^10.2.0", "terser": "latest", "toastify-js": "^1.12.0", "ts-loader": "^9.3.1", @@ -2240,9 +2241,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2321,12 +2322,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.12.tgz", - "integrity": "sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.0", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -2348,9 +2349,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.0.tgz", - "integrity": "sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@jridgewell/gen-mapping": { @@ -2549,9 +2550,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", - "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "version": "20.8.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.8.tgz", + "integrity": "sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==", "dev": true, "dependencies": { "undici-types": "~5.25.1" @@ -2862,6 +2863,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitejs/plugin-basic-ssl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", @@ -2998,39 +3005,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.5.tgz", - "integrity": "sha512-S8Ma+eICI40Y4UotR+iKR729Bma+wERn/xLc+Jz203s5WIW1Sx3qoiONqXGg3Q4vBMa+QHDncULya19ZSJuhog==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.7.tgz", + "integrity": "sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==", "dev": true, "dependencies": { "@babel/parser": "^7.23.0", - "@vue/shared": "3.3.5", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.5.tgz", - "integrity": "sha512-dxt6QntN9T/NtnV6Pz+/nmcoo3ULnsYCnRpvEyY73wbk1tzzx7dnwngUN1cXkyGNu9c3UE7llhq/5T54lKwyhQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.7.tgz", + "integrity": "sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.3.5", - "@vue/shared": "3.3.5" + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.5.tgz", - "integrity": "sha512-M6ys4iReSbrF4NTcMCnJiBioCpzXjfkfXwkdziknRyps+pG0DkwpDfQT7zQ0q91/rCR/Ejz64b5H6C4HBhX41w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.7.tgz", + "integrity": "sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==", "dev": true, "dependencies": { "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.5", - "@vue/compiler-dom": "3.3.5", - "@vue/compiler-ssr": "3.3.5", - "@vue/reactivity-transform": "3.3.5", - "@vue/shared": "3.3.5", + "@vue/compiler-core": "3.3.7", + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-ssr": "3.3.7", + "@vue/reactivity-transform": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", "magic-string": "^0.30.5", "postcss": "^8.4.31", @@ -3038,13 +3045,13 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.5.tgz", - "integrity": "sha512-v7p2XuEpOcgjd6c49NqOnq3UTJOv5Uo9tirOyGnEadwxTov2O1J3/TUt4SgAAnwA+9gcUyH5c3lIOFsBe+UIyw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.7.tgz", + "integrity": "sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.3.5", - "@vue/shared": "3.3.5" + "@vue/compiler-dom": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/eslint-config-typescript": { @@ -3072,16 +3079,16 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/type-utils": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3107,15 +3114,15 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/parser": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", - "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4" }, "engines": { @@ -3135,13 +3142,13 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/scope-manager": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", - "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3152,13 +3159,13 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/type-utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3179,9 +3186,9 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/types": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", - "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3192,13 +3199,13 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", - "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3219,17 +3226,17 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", "semver": "^7.5.4" }, "engines": { @@ -3244,12 +3251,12 @@ } }, "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", - "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/types": "6.9.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3294,65 +3301,65 @@ "dev": true }, "node_modules/@vue/reactivity": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.5.tgz", - "integrity": "sha512-P7OBfPjsbV5lDCwZQDtWFqPh3uAP3Q6bRqYVgsYr6ki7jiaiHGSLmeaevUi+Nkev8nhublUpApnWevNiACN3sw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.7.tgz", + "integrity": "sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==", "dev": true, "dependencies": { - "@vue/shared": "3.3.5" + "@vue/shared": "3.3.7" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.5.tgz", - "integrity": "sha512-OhpBD1H32pIapRzqy31hWwTFLf9STP+0uk5bVOQWXACTa2Rt/RPhvX4zixbPgMGo6iP+S+tFpZzUdcG8AASn8A==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.7.tgz", + "integrity": "sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==", "dev": true, "dependencies": { "@babel/parser": "^7.23.0", - "@vue/compiler-core": "3.3.5", - "@vue/shared": "3.3.5", + "@vue/compiler-core": "3.3.7", + "@vue/shared": "3.3.7", "estree-walker": "^2.0.2", "magic-string": "^0.30.5" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.5.tgz", - "integrity": "sha512-kxAW3fTzwzZQqiHV1SndTtLMlNfJ/bsvcYku6NDuPzTeG6sMOAIXvuz6N5NUox+P7sNCInESbSOrPMMvtWx3vA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.7.tgz", + "integrity": "sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==", "dev": true, "dependencies": { - "@vue/reactivity": "3.3.5", - "@vue/shared": "3.3.5" + "@vue/reactivity": "3.3.7", + "@vue/shared": "3.3.7" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.5.tgz", - "integrity": "sha512-seYSeHmBNlTrR0eFyQFocEBtzljNlKzC2JfdebfBqoEmikyNYzLWTouv71DignLFXEXZKWNTqCIs4d7dk5Q3Ng==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.7.tgz", + "integrity": "sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==", "dev": true, "dependencies": { - "@vue/runtime-core": "3.3.5", - "@vue/shared": "3.3.5", + "@vue/runtime-core": "3.3.7", + "@vue/shared": "3.3.7", "csstype": "^3.1.2" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.5.tgz", - "integrity": "sha512-7VIZkohYn8GAnNT9chrm0vDpHJ6mWPL+TmUBKtDWcWxYcq33YJP/VHCPQN5TazkxXCtv3c1KfXAMZowX4giLoQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.7.tgz", + "integrity": "sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==", "dev": true, "dependencies": { - "@vue/compiler-ssr": "3.3.5", - "@vue/shared": "3.3.5" + "@vue/compiler-ssr": "3.3.7", + "@vue/shared": "3.3.7" }, "peerDependencies": { - "vue": "3.3.5" + "vue": "3.3.7" } }, "node_modules/@vue/shared": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.5.tgz", - "integrity": "sha512-oNJN1rCtkqm1cIxU1BuZVEVRWIp4DhaxXucEzzZ/iDKHP71ZxhkBPNK+URySiECH6aiOZzC60PS2bd6JFznvNA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.7.tgz", + "integrity": "sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==", "dev": true }, "node_modules/@vue/tsconfig": { @@ -3847,13 +3854,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", - "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", + "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.32.2" + "core-js-compat": "^3.33.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4035,9 +4042,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001551", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", - "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", + "version": "1.0.30001554", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz", + "integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==", "dev": true, "funding": [ { @@ -4420,9 +4427,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.561", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz", - "integrity": "sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ==", + "version": "1.4.566", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.566.tgz", + "integrity": "sha512-mv+fAy27uOmTVlUULy15U3DVJ+jg+8iyKH1bpwboCRhtDC69GKf1PPTZvEIhCyDr81RFqfxZJYrbgp933a1vtg==", "dev": true }, "node_modules/emoji-regex": { @@ -4463,27 +4470,27 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "peer": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -4493,7 +4500,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -4507,7 +4514,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -4524,28 +4531,28 @@ "peer": true }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "peer": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "peer": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -4622,18 +4629,19 @@ } }, "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -4738,27 +4746,27 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "peer": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -4793,9 +4801,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.0.tgz", + "integrity": "sha512-yUM8a2OD/7Qs0PiugkRaxgz5KBRvzMvWShity2UvVFAN0yk8029mGpTdg/TNARPiYzp335mEwDHwcAR8tQNe4g==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -5305,7 +5313,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5349,16 +5356,16 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5543,15 +5550,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -5572,13 +5570,13 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "peer": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5632,6 +5630,18 @@ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", "dev": true }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -5766,14 +5776,14 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "peer": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -5857,12 +5867,12 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8421,6 +8431,25 @@ "url": "https://github.com/sponsors/limonte" } }, + "node_modules/swiper": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-10.3.1.tgz", + "integrity": "sha512-24Wk3YUdZHxjc9faID97GTu6xnLNia+adMt6qMTZG/HgdSUt4fS0REsGUXJOgpTED0Amh/j+gRGQxsLayJUlBQ==", + "dev": true, + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/systemjs": { "version": "6.14.2", "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.14.2.tgz", @@ -9292,12 +9321,12 @@ } }, "node_modules/vite-plugin-stylelint": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/vite-plugin-stylelint/-/vite-plugin-stylelint-5.1.1.tgz", - "integrity": "sha512-+BGLJG51Sx5YRg1zZX2MR0rWHzWUcxGSHUcKJW7zz5Lku/WrqGDRlU9atKcg6rhhXZMQgELj2/sFjKRoaNhgLA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-stylelint/-/vite-plugin-stylelint-5.2.0.tgz", + "integrity": "sha512-Qv5i7v3DqtICuAGApkHAjf0KfUESp6U47W8LcMVZLywiaE4iT9bH8SMdzhaklJ21ejKl8satnj6znbvr8xJ23Q==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^5.0.3", + "@rollup/pluginutils": "^5.0.5", "chokidar": "^3.5.3", "debug": "^4.3.4" }, @@ -9307,9 +9336,9 @@ "peerDependencies": { "@types/stylelint": "^13.0.0", "postcss": "^7.0.0 || ^8.0.0", - "rollup": "^2.0.0 || ^3.0.0", + "rollup": "^2.0.0 || ^3.0.0 || ^4.0.0", "stylelint": "^13.0.0 || ^14.0.0 || ^15.0.0", - "vite": "^2.0.0 || ^3.0.0 || ^4.0.0" + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || 5.0.0-0" }, "peerDependenciesMeta": { "@types/stylelint": { @@ -9442,16 +9471,16 @@ "dev": true }, "node_modules/vue": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.5.tgz", - "integrity": "sha512-xYpLEGb25yYU1ul9ZhCcavNZ4YW6PS7YTDdDAd0yc/3w69Tra2BwY4EpKguKddfD56QApXQ17XHq+fJJwEP+UQ==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.7.tgz", + "integrity": "sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.3.5", - "@vue/compiler-sfc": "3.3.5", - "@vue/runtime-dom": "3.3.5", - "@vue/server-renderer": "3.3.5", - "@vue/shared": "3.3.5" + "@vue/compiler-dom": "3.3.7", + "@vue/compiler-sfc": "3.3.7", + "@vue/runtime-dom": "3.3.7", + "@vue/server-renderer": "3.3.7", + "@vue/shared": "3.3.7" }, "peerDependencies": { "typescript": "*" @@ -9629,9 +9658,9 @@ } }, "node_modules/vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "version": "2.7.15", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", + "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", "dev": true, "dependencies": { "de-indent": "^1.0.2", diff --git a/package.json b/package.json index ef9ea56..85204b0 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "stylelint-config-standard-scss": "latest", "stylelint-scss": "latest", "sweetalert2": "^11.7.31", + "swiper": "^10.2.0", "terser": "latest", "toastify-js": "^1.12.0", "ts-loader": "^9.3.1", diff --git a/resources/assets/images/global/bg-grey-desktop.png b/resources/assets/images/global/bg-grey-desktop.png new file mode 100644 index 0000000..8adf63f Binary files /dev/null and b/resources/assets/images/global/bg-grey-desktop.png differ diff --git a/resources/assets/images/global/bg-white-desktop.png b/resources/assets/images/global/bg-white-desktop.png new file mode 100644 index 0000000..0660ab9 Binary files /dev/null and b/resources/assets/images/global/bg-white-desktop.png differ diff --git a/resources/assets/images/global/bg-yellow.svg b/resources/assets/images/global/bg-yellow.svg new file mode 100644 index 0000000..3fbf1a2 --- /dev/null +++ b/resources/assets/images/global/bg-yellow.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/resources/assets/images/logo.png b/resources/assets/images/global/logo.png similarity index 100% rename from resources/assets/images/logo.png rename to resources/assets/images/global/logo.png diff --git a/resources/assets/images/homepage/agis-agence.png b/resources/assets/images/homepage/agis-agence.png new file mode 100644 index 0000000..f89fc9e Binary files /dev/null and b/resources/assets/images/homepage/agis-agence.png differ diff --git a/resources/assets/images/homepage/candlemas-1.png b/resources/assets/images/homepage/candlemas-1.png new file mode 100644 index 0000000..15d4042 Binary files /dev/null and b/resources/assets/images/homepage/candlemas-1.png differ diff --git a/resources/assets/images/homepage/candlemas-2.png b/resources/assets/images/homepage/candlemas-2.png new file mode 100644 index 0000000..30d6f3c Binary files /dev/null and b/resources/assets/images/homepage/candlemas-2.png differ diff --git a/resources/assets/images/homepage/candlemas-3.png b/resources/assets/images/homepage/candlemas-3.png new file mode 100644 index 0000000..2bb9f61 Binary files /dev/null and b/resources/assets/images/homepage/candlemas-3.png differ diff --git a/resources/assets/images/homepage/candlemas-4.png b/resources/assets/images/homepage/candlemas-4.png new file mode 100644 index 0000000..ce715a6 Binary files /dev/null and b/resources/assets/images/homepage/candlemas-4.png differ diff --git a/resources/assets/images/homepage/chinesenewyear-1.png b/resources/assets/images/homepage/chinesenewyear-1.png new file mode 100644 index 0000000..5b029ed Binary files /dev/null and b/resources/assets/images/homepage/chinesenewyear-1.png differ diff --git a/resources/assets/images/homepage/chinesenewyear-2.png b/resources/assets/images/homepage/chinesenewyear-2.png new file mode 100644 index 0000000..d8bad9c Binary files /dev/null and b/resources/assets/images/homepage/chinesenewyear-2.png differ diff --git a/resources/assets/images/homepage/chinesenewyear-3.png b/resources/assets/images/homepage/chinesenewyear-3.png new file mode 100644 index 0000000..b3c8e15 Binary files /dev/null and b/resources/assets/images/homepage/chinesenewyear-3.png differ diff --git a/resources/assets/images/homepage/chinesenewyear-4.png b/resources/assets/images/homepage/chinesenewyear-4.png new file mode 100644 index 0000000..cc06389 Binary files /dev/null and b/resources/assets/images/homepage/chinesenewyear-4.png differ diff --git a/resources/assets/images/homepage/endofyear-1.png b/resources/assets/images/homepage/endofyear-1.png new file mode 100644 index 0000000..847b686 Binary files /dev/null and b/resources/assets/images/homepage/endofyear-1.png differ diff --git a/resources/assets/images/homepage/endofyear-2.png b/resources/assets/images/homepage/endofyear-2.png new file mode 100644 index 0000000..6a30225 Binary files /dev/null and b/resources/assets/images/homepage/endofyear-2.png differ diff --git a/resources/assets/images/homepage/frame-line.svg b/resources/assets/images/homepage/frame-line.svg new file mode 100644 index 0000000..33203d6 --- /dev/null +++ b/resources/assets/images/homepage/frame-line.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/assets/images/homepage/h-bar.svg b/resources/assets/images/homepage/h-bar.svg new file mode 100644 index 0000000..435d822 --- /dev/null +++ b/resources/assets/images/homepage/h-bar.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/resources/assets/images/homepage/news.png b/resources/assets/images/homepage/news.png new file mode 100644 index 0000000..a0ffdb5 Binary files /dev/null and b/resources/assets/images/homepage/news.png differ diff --git a/resources/assets/images/homepage/swiper-nav.png b/resources/assets/images/homepage/swiper-nav.png new file mode 100644 index 0000000..fcb13b5 Binary files /dev/null and b/resources/assets/images/homepage/swiper-nav.png differ diff --git a/resources/sass/fo/base/_common.scss b/resources/sass/fo/base/_common.scss index 2bd6dce..274fe08 100644 --- a/resources/sass/fo/base/_common.scss +++ b/resources/sass/fo/base/_common.scss @@ -1 +1,14 @@ -// Empty. +.w-fit { + width: fit-content; +} + +img { + max-width: 100%; +} + +.bg-agis-yellow { + background-image: url('@/images/global/bg-yellow.svg'); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; +} diff --git a/resources/sass/fo/fo.scss b/resources/sass/fo/fo.scss index ab3e017..8b5ea9f 100644 --- a/resources/sass/fo/fo.scss +++ b/resources/sass/fo/fo.scss @@ -7,9 +7,13 @@ @import './vendor/ckEditorContent'; @import './vendor/bootstrap'; @import "./vendor/cookie-notice"; +@import "./vendor/swiper"; // * BASE @import './base/bootstrap-overload'; @import './base/fonts'; @import './base/common'; @import './base/layout'; + +// * PAGES. +@import './pages/homepage'; diff --git a/resources/sass/fo/pages/.gitkeep b/resources/sass/fo/pages/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/resources/sass/fo/pages/_homepage.scss b/resources/sass/fo/pages/_homepage.scss new file mode 100644 index 0000000..bb16a8a --- /dev/null +++ b/resources/sass/fo/pages/_homepage.scss @@ -0,0 +1,391 @@ +.homepage { + .title-card { + .bg-agis-yellow { + width: 327px; + } + + .f-sheldon { + font-size: 2.5rem; + } + + .f-readex-pro { + font-size: 1.5rem; + } + + .f-rufina { + font-size: 1.2rem; + } + + .divide { + height: 4px; + background-image: url('@/images/homepage/h-bar.svg'); + background-position: center bottom; + background-repeat: no-repeat; + background-size: 100% .2rem; + } + } + + .seasonal-sections { + .seasonal-sections-image { + height: min-content; + } + + &-candlemas { + &::after { + position: absolute; + right: 0; + bottom: 1rem; + display: none; + width: 100%; + height: 120px; + background: url("@/images/homepage/candlemas-4.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + + h2 { + &::before { + position: absolute; + top: -1rem; + right: -10rem; + display: none; + width: 100px; + height: 100px; + background: url("@/images/homepage/candlemas-2.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + + &::after { + position: absolute; + top: -4rem; + right: -4rem; + display: none; + width: 50px; + height: 50px; + background: url("@/images/homepage/candlemas-1.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + } + + .seasonal-sections-image::after { + position: absolute; + top: 50%; + right: -4rem; + display: none; + width: 60px; + height: 60px; + background: url("@/images/homepage/candlemas-3.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + } + + &-endofyear { + .seasonal-sections-image { + &::before { + position: absolute; + z-index: -1; + top: 0; + left: -20rem; + display: none; + width: 500px; + height: 500px; + background: url("@/images/homepage/endofyear-1.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + + &::after { + position: absolute; + z-index: -1; + top: 6rem; + right: -20rem; + display: none; + width: 500px; + height: 500px; + background: url("@/images/homepage/endofyear-2.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + } + } + + &-chinesenewyear { + h2 { + &::after { + position: absolute; + top: -4rem; + right: -4rem; + display: none; + width: 80px; + height: 80px; + background: url("@/images/homepage/chinesenewyear-1.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + } + + p { + &::before { + position: absolute; + bottom: -8rem; + left: 2rem; + display: none; + width: 200px; + height: 200px; + background: url("@/images/homepage/chinesenewyear-2.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + + &::after { + position: absolute; + right: -1rem; + bottom: -4rem; + display: none; + width: 100px; + height: 100px; + background: url("@/images/homepage/chinesenewyear-3.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + } + } + + .seasonal-sections-image { + &::after { + position: absolute; + right: -6rem; + bottom: 1rem; + display: none; + width: 80px; + height: 80px; + background: url("@/images/homepage/chinesenewyear-4.png"); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + content: ""; + pointer-events: none; + transform: translateY(-50%); + } + } + } + } + + .description { + &-subtitle { + max-width: 20rem; + } + + button { + width: 100%; + } + } + + .news .swiper-news, + .ranges .swiper-ranges { + .swiper-button { + &-prev, + &-next { width: 3rem; } + + &-next { rotate: 180deg; } + + &-disabled { opacity: .5; } + } + } + + .news { + &-frame { + padding-top: 4rem; + padding-bottom: 2rem; + + div { + border: 5px solid transparent; + border-image: url("@/images/homepage/frame-line.svg") 1 stretch; + } + } + + .swiper-news { + border: 5px solid transparent; + + .swiper-slide { + &-content { + width: 265px; + } + } + } + } + + .ranges { + .swiper-ranges { + position: relative; + + .swiper-slide { + &-content { + width: 246px; + + p { + hyphens: auto; + line-height: 1.2em; + word-break: break-word; + } + } + } + } + } +} + +// MMMMMMMM MMMMMMMMDDDDDDDDDDDDD +// M:::::::M M:::::::MD::::::::::::DDD +// M::::::::M M::::::::MD:::::::::::::::DD +// M:::::::::M M:::::::::MDDD:::::DDDDD:::::D +// M::::::::::M M::::::::::M D:::::D D:::::D +// M:::::::::::M M:::::::::::M D:::::D D:::::D +// M:::::::M::::M M::::M:::::::M D:::::D D:::::D +// M::::::M M::::M M::::M M::::::M D:::::D D:::::D +// M::::::M M::::M::::M M::::::M D:::::D D:::::D +// M::::::M M:::::::M M::::::M D:::::D D:::::D +// M::::::M M:::::M M::::::M D:::::D D:::::D +// M::::::M MMMMM M::::::M D:::::D D:::::D +// M::::::M M::::::MDDD:::::DDDDD:::::D +// M::::::M M::::::MD:::::::::::::::DD +// M::::::M M::::::MD::::::::::::DDD +// MMMMMMMM MMMMMMMMDDDDDDDDDDDDD +@include media-breakpoint-up(md) { + .homepage { + .description { + button { + width: fit-content; + } + + &-paragraph { + max-width: 25rem; + } + } + } +} + +// XXXXXXX XXXXXXXLLLLLLLLLLL +// X:::::X X:::::XL:::::::::L +// X:::::X X:::::XL:::::::::L +// X::::::X X::::::XLL:::::::LL +// XXX:::::X X:::::XXX L:::::L +// X:::::X X:::::X L:::::L +// X:::::X:::::X L:::::L +// X:::::::::X L:::::L +// X:::::::::X L:::::L +// X:::::X:::::X L:::::L +// X:::::X X:::::X L:::::L +// XXX:::::X X:::::XXX L:::::L LLLLLL +// X::::::X X::::::XLL:::::::LLLLLLLLL:::::L +// X:::::X X:::::XL::::::::::::::::::::::L +// X:::::X X:::::XL::::::::::::::::::::::L +// XXXXXXX XXXXXXXLLLLLLLLLLLLLLLLLLLLLLLL +@include media-breakpoint-up(xl) { + .homepage { + .title-card { + img { + transform: translateX(-3px); + } + + .bg-agis-yellow { + width: 550px; + } + + .f-sheldon { + font-size: 5rem; + } + + .f-readex-pro { + font-size: 2.9rem; + } + + .f-rufina { + font-size: 2.4rem; + } + } + + .seasonal-sections { + &-candlemas::after, + h2::after, + h2::before, + p::after, + p::before, + &-image::after, + &-image::before { + display: block !important; + } + } + + .news { + &-frame { + padding-top: 5rem; + padding-bottom: 2rem; + + div { + border: 5px solid transparent; + border-image: url("@/images/homepage/frame-line.svg") 3 stretch; + } + } + } + + .ranges { + .swiper-ranges { + position: static; + margin: 0 4rem; + + .swiper-slide-content { + width: 100%; + + &-details { + position: absolute !important; + left: 0; + width: calc(100% - 243px); + height: 337px; + } + + &-translate { + width: calc(100% - 240px) !important; + transform: translateX(-3px) !important; + } + } + + .navigation { + position: absolute; + top: 50%; + left: 0; + width: 100%; + transform: translateY(-50%); + } + } + } + } +} diff --git a/resources/sass/fo/utilities/_bootstrap-variables.scss b/resources/sass/fo/utilities/_bootstrap-variables.scss index 471d857..e94fb5a 100644 --- a/resources/sass/fo/utilities/_bootstrap-variables.scss +++ b/resources/sass/fo/utilities/_bootstrap-variables.scss @@ -41,13 +41,13 @@ $font-size-base: $font-default-size-base; $line-height-base: $line-default-height-base; // Add font-size variable -$h1-font-size: $font-size-base * 2.5; -$h2-font-size: $font-size-base * 2; -$h3-font-size: $font-size-base * 1.75; -$h4-font-size: $font-size-base * 1.5; -$h5-font-size: $font-size-base * 1.25; -$h6-font-size: $font-size-base * 1.125; -$h7-font-size: $font-size-base; +$heading-multiplicator: 1.25; +$h1-font-size: $font-size-base * $heading-multiplicator * 2.5; +$h2-font-size: $font-size-base * $heading-multiplicator * 2; +$h3-font-size: $font-size-base * $heading-multiplicator * 1.75; +$h4-font-size: $font-size-base * $heading-multiplicator * 1.5; +$h5-font-size: $font-size-base * $heading-multiplicator * 1.25; +$h6-font-size: $font-size-base * $heading-multiplicator; // Add the new font-size in this map $font-sizes: ( @@ -57,5 +57,4 @@ $font-sizes: ( 4: $h4-font-size, 5: $h5-font-size, 6: $h6-font-size, - 7: $h7-font-size ); diff --git a/resources/sass/fo/utilities/_variables.scss b/resources/sass/fo/utilities/_variables.scss index 5e2800f..e40171b 100644 --- a/resources/sass/fo/utilities/_variables.scss +++ b/resources/sass/fo/utilities/_variables.scss @@ -23,8 +23,10 @@ $color-default-titles: $color-primary; $color-default-texts: $color-dark; // * FONTS +// * Keep Bs assumption +// $font-size-root: 16px; $font-default-family-base: 'Rufina', serif; // - The default site font family. -$font-default-size-base: 1rem; // Assumes the browser default, typically `16px` +$font-default-size-base: 1.125rem; // Follow crea $line-default-height-base: 1.65; // * Layout Main Menu backdrop diff --git a/resources/sass/fo/vendor/_bootstrap.scss b/resources/sass/fo/vendor/_bootstrap.scss index e72e831..15e8f10 100644 --- a/resources/sass/fo/vendor/_bootstrap.scss +++ b/resources/sass/fo/vendor/_bootstrap.scss @@ -37,6 +37,7 @@ @import "bootstrap/scss/close"; @import "bootstrap/scss/breadcrumb"; @import "bootstrap/scss/offcanvas"; +@import "bootstrap/scss/card"; // 6. Overload bootstrap classes @import "./../utilities/bootstrap-custom"; diff --git a/resources/sass/fo/vendor/_swiper.scss b/resources/sass/fo/vendor/_swiper.scss new file mode 100644 index 0000000..bd865b0 --- /dev/null +++ b/resources/sass/fo/vendor/_swiper.scss @@ -0,0 +1 @@ +@import '~/swiper/swiper.min.css' diff --git a/resources/ts/fo/base/common.ts b/resources/ts/fo/base/common.ts index 696ea68..5a33f92 100644 --- a/resources/ts/fo/base/common.ts +++ b/resources/ts/fo/base/common.ts @@ -1,3 +1,6 @@ +import Swiper from "swiper"; +import { Navigation } from "swiper/modules"; + // * Video frames. document.addEventListener("DOMContentLoaded", function () { const videoFrameList = document.querySelectorAll( @@ -41,4 +44,63 @@ document.addEventListener("DOMContentLoaded", function () { }); }, 300); } + // SWIPER + const swiperConfig = { + "swiper-news": { + modules: [Navigation], + grabCursor: true, + slidesPerView: 1, + spaceBetween: 60, + // Navigation arrows + navigation: { + nextEl: ".swiper-button-next", + prevEl: ".swiper-button-prev", + }, + breakpoints: { + // when window width is >= 1200px + 1200: { + slidesPerView: 3, + }, + }, + }, + "swiper-ranges": { + modules: [Navigation], + grabCursor: true, + slidesPerView: 1, + spaceBetween: 60, + // Navigation arrows + navigation: { + nextEl: ".swiper-button-next", + prevEl: ".swiper-button-prev", + }, + breakpoints: { + // when window width is >= 1200px + 1200: { + slidesPerView: 3, + spaceBetween: 0, + }, + }, + }, + }; + type SwiperSlider = { + element: HTMLElement; + swiper: Swiper; + }; + const swiperVol = document.getElementsByClassName("swiper") as HTMLCollectionOf, + sliders: SwiperSlider[] = []; + + for (const htmlElt of swiperVol) { + if (!swiperConfig[htmlElt.id as keyof typeof swiperConfig]) { + throw new Error(`Undefined swiper id ${htmlElt.id}`); + } + + sliders.push({ + element: htmlElt, + swiper: new Swiper( + htmlElt, + // @ts-ignore + swiperConfig[htmlElt.id as keyof typeof swiperConfig] + ), + }); + } }); diff --git a/resources/views/fo/layout.blade.php b/resources/views/fo/layout.blade.php index 5706ae9..2cba7fe 100644 --- a/resources/views/fo/layout.blade.php +++ b/resources/views/fo/layout.blade.php @@ -7,7 +7,7 @@ @include('fo.layouts.header') -
+
@include('modules.flash-messages') @@ -18,11 +18,7 @@ @include('modules.breadcrumbs.breadcrumb-body')
-
-
- @yield('content') -
-
+ @yield('content')
@include('fo.layouts.footer') @stack('scripts-constants') diff --git a/resources/views/fo/pages/home.blade.php b/resources/views/fo/pages/home.blade.php index 198a66f..1c01233 100644 --- a/resources/views/fo/pages/home.blade.php +++ b/resources/views/fo/pages/home.blade.php @@ -1,1908 +1,171 @@ @extends('fo.layout') -@section('title', __('Accueil')) -@section('description', __('Description site')) +@section('title', $staticPageModel->seo_title ?? __('Accueil')) +@section('description', $staticPageModel->seo_description ?? __('Description site')) @section('breadcrumb', request()->route()->getName()) @section('content') -
-
-
-

{{ __('Hello world !') }}

- +
+ +
+
+
+

+

{{ $homepageModel->title_part1 }}

+ +

{{ $homepageModel->title_part2 }}

+ +

{{ Str::of($homepageModel->title_part3)->ucFirst()->value() }}

+

+
+
+ {{ $homepageModel->picture_alt }} +
-
-
-