feat: implement PWA, manifest, service worker and offline indicator

This commit is contained in:
2025-12-17 23:15:51 +01:00
parent 5807d949ef
commit 19689ffd2f
71 changed files with 1573 additions and 112 deletions

View File

@@ -231,6 +231,16 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ }),
/***/ "(ssr)/./node_modules/lucide-react/dist/esm/icons/wifi-off.js":
/*!**************************************************************!*\
!*** ./node_modules/lucide-react/dist/esm/icons/wifi-off.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ WifiOff)\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(ssr)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\n * @license lucide-react v0.300.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */ \nconst WifiOff = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"WifiOff\", [\n [\n \"line\",\n {\n x1: \"2\",\n x2: \"22\",\n y1: \"2\",\n y2: \"22\",\n key: \"a6p6uj\"\n }\n ],\n [\n \"path\",\n {\n d: \"M8.5 16.5a5 5 0 0 1 7 0\",\n key: \"sej527\"\n }\n ],\n [\n \"path\",\n {\n d: \"M2 8.82a15 15 0 0 1 4.17-2.65\",\n key: \"11utq1\"\n }\n ],\n [\n \"path\",\n {\n d: \"M10.66 5c4.01-.36 8.14.9 11.34 3.76\",\n key: \"hxefdu\"\n }\n ],\n [\n \"path\",\n {\n d: \"M16.85 11.25a10 10 0 0 1 2.22 1.68\",\n key: \"q734kn\"\n }\n ],\n [\n \"path\",\n {\n d: \"M5 13a10 10 0 0 1 5.24-2.76\",\n key: \"piq4yl\"\n }\n ],\n [\n \"line\",\n {\n x1: \"12\",\n x2: \"12.01\",\n y1: \"20\",\n y2: \"20\",\n key: \"of4bc4\"\n }\n ]\n]);\n //# sourceMappingURL=wifi-off.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L2Rpc3QvZXNtL2ljb25zL3dpZmktb2ZmLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7O0NBS0MsR0FFcUQ7QUFFdEQsTUFBTUMsVUFBVUQsZ0VBQWdCQSxDQUFDLFdBQVc7SUFDMUM7UUFBQztRQUFRO1lBQUVFLElBQUk7WUFBS0MsSUFBSTtZQUFNQyxJQUFJO1lBQUtDLElBQUk7WUFBTUMsS0FBSztRQUFTO0tBQUU7SUFDakU7UUFBQztRQUFRO1lBQUVDLEdBQUc7WUFBMkJELEtBQUs7UUFBUztLQUFFO0lBQ3pEO1FBQUM7UUFBUTtZQUFFQyxHQUFHO1lBQWlDRCxLQUFLO1FBQVM7S0FBRTtJQUMvRDtRQUFDO1FBQVE7WUFBRUMsR0FBRztZQUF1Q0QsS0FBSztRQUFTO0tBQUU7SUFDckU7UUFBQztRQUFRO1lBQUVDLEdBQUc7WUFBc0NELEtBQUs7UUFBUztLQUFFO0lBQ3BFO1FBQUM7UUFBUTtZQUFFQyxHQUFHO1lBQStCRCxLQUFLO1FBQVM7S0FBRTtJQUM3RDtRQUFDO1FBQVE7WUFBRUosSUFBSTtZQUFNQyxJQUFJO1lBQVNDLElBQUk7WUFBTUMsSUFBSTtZQUFNQyxLQUFLO1FBQVM7S0FBRTtDQUN2RTtBQUU2QixDQUM5QixvQ0FBb0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93aGlza3ktdmF1bHQvLi9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L2Rpc3QvZXNtL2ljb25zL3dpZmktb2ZmLmpzPzVhNzYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuMzAwLjAgLSBJU0NcbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBJU0MgbGljZW5zZS5cbiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmltcG9ydCBjcmVhdGVMdWNpZGVJY29uIGZyb20gJy4uL2NyZWF0ZUx1Y2lkZUljb24uanMnO1xuXG5jb25zdCBXaWZpT2ZmID0gY3JlYXRlTHVjaWRlSWNvbihcIldpZmlPZmZcIiwgW1xuICBbXCJsaW5lXCIsIHsgeDE6IFwiMlwiLCB4MjogXCIyMlwiLCB5MTogXCIyXCIsIHkyOiBcIjIyXCIsIGtleTogXCJhNnA2dWpcIiB9XSxcbiAgW1wicGF0aFwiLCB7IGQ6IFwiTTguNSAxNi41YTUgNSAwIDAgMSA3IDBcIiwga2V5OiBcInNlajUyN1wiIH1dLFxuICBbXCJwYXRoXCIsIHsgZDogXCJNMiA4LjgyYTE1IDE1IDAgMCAxIDQuMTctMi42NVwiLCBrZXk6IFwiMTF1dHExXCIgfV0sXG4gIFtcInBhdGhcIiwgeyBkOiBcIk0xMC42NiA1YzQuMDEtLjM2IDguMTQuOSAxMS4zNCAzLjc2XCIsIGtleTogXCJoeGVmZHVcIiB9XSxcbiAgW1wicGF0aFwiLCB7IGQ6IFwiTTE2Ljg1IDExLjI1YTEwIDEwIDAgMCAxIDIuMjIgMS42OFwiLCBrZXk6IFwicTczNGtuXCIgfV0sXG4gIFtcInBhdGhcIiwgeyBkOiBcIk01IDEzYTEwIDEwIDAgMCAxIDUuMjQtMi43NlwiLCBrZXk6IFwicGlxNHlsXCIgfV0sXG4gIFtcImxpbmVcIiwgeyB4MTogXCIxMlwiLCB4MjogXCIxMi4wMVwiLCB5MTogXCIyMFwiLCB5MjogXCIyMFwiLCBrZXk6IFwib2Y0YmM0XCIgfV1cbl0pO1xuXG5leHBvcnQgeyBXaWZpT2ZmIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXdpZmktb2ZmLmpzLm1hcFxuIl0sIm5hbWVzIjpbImNyZWF0ZUx1Y2lkZUljb24iLCJXaWZpT2ZmIiwieDEiLCJ4MiIsInkxIiwieTIiLCJrZXkiLCJkIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/lucide-react/dist/esm/icons/wifi-off.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/lucide-react/dist/esm/icons/x.js":
/*!*******************************************************!*\
!*** ./node_modules/lucide-react/dist/esm/icons/x.js ***!

File diff suppressed because one or more lines are too long