diff --git a/package-lock.json b/package-lock.json index ec8d04b63..c1c6837e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,6 @@ "@navikt/fnrvalidator": "^1.3.3", "@navikt/land-verktoy": "3.2.15", "@portabletext/react": "^3.0.11", - "@sanity/client": "^6.8.0", "@sentry/browser": "^7.80.0", "@types/amplitude-js": "^8.16.5", "@types/body-parser": "^1.19.5", @@ -118,7 +117,7 @@ "style-loader": "^3.3.3", "svg-inline-loader": "^0.8.2", "terser-webpack-plugin": "^5.3.9", - "testcafe": "^3.4.0", + "testcafe": "^3.3.0", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", "typescript": "^5.2.2", @@ -3897,44 +3896,6 @@ } } }, - "node_modules/@sanity/client": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@sanity/client/-/client-6.8.0.tgz", - "integrity": "sha512-SshNs8WfL3PxStBLqgq5FZJAmJO/Nj2IPynPYa+ze+h4SUZU6L/LyIj6848C91nHABICocuUJ3gwZRhK6YNNdw==", - "dependencies": { - "@sanity/eventsource": "^5.0.0", - "@vercel/stega": "0.1.0", - "get-it": "^8.4.4", - "rxjs": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sanity/client/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@sanity/client/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/@sanity/eventsource": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-5.0.0.tgz", - "integrity": "sha512-0ewT+BDzfiamHwitUfRcwsl/RREHjWv6VNZvQ8Q4OnnNKXfEEGXbWmqzof0okOTkp4XELgyliht4Qj28o9AU2g==", - "dependencies": { - "@types/event-source-polyfill": "1.0.1", - "@types/eventsource": "1.1.11", - "event-source-polyfill": "1.0.31", - "eventsource": "2.0.2" - } - }, "node_modules/@sentry-internal/tracing": { "version": "7.80.0", "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.80.0.tgz", @@ -4507,16 +4468,6 @@ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, - "node_modules/@types/event-source-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/event-source-polyfill/-/event-source-polyfill-1.0.1.tgz", - "integrity": "sha512-dls8b0lUgJ/miRApF0efboQ9QZnAm7ofTO6P1ILu8bRPxUFKDxVwFf8+TeuuErmNui6blpltyr7+eV72dbQXlQ==" - }, - "node_modules/@types/eventsource": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.11.tgz", - "integrity": "sha512-L7wLDZlWm5mROzv87W0ofIYeQP5K2UhoFnnUyEWLKM6UBb0ZNRgAqp98qE5DkgfBXdWfc2kYmw9KZm4NLjRbsw==" - }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -5119,11 +5070,6 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, - "node_modules/@vercel/stega": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@vercel/stega/-/stega-0.1.0.tgz", - "integrity": "sha512-5b0PkOJsFBX5alChuIO3qpkt5vIZBevzLPhUQ1UP8UzVjL3F1VllnZxp/thfD8R5ol7D7WHkgZHIjdUBX4tDpQ==" - }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -7055,7 +7001,8 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -7299,20 +7246,6 @@ "ms": "2.0.0" } }, - "node_modules/decompress-response": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-7.0.0.tgz", - "integrity": "sha512-6IvPrADQyyPGLpMnUh6kfKiqy7SrbXbjoUuZ90WMBJKErzv2pCiwlGEXjRX9/54OnTq+XFVnkOnOMzclLI5aEA==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -8394,11 +8327,6 @@ "node": ">= 0.6" } }, - "node_modules/event-source-polyfill": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz", - "integrity": "sha512-4IJSItgS/41IxN5UVAVuAyczwZF7ZIEsM1XAoUzIHA6A+xzusEZUutdXz2Nr+MQPLxfTiCvqE79/C8HT8fKFvA==" - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -8414,14 +8342,6 @@ "node": ">=0.8.x" } }, - "node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -9018,15 +8938,6 @@ "node": ">= 0.6" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -9137,55 +9048,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-it": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/get-it/-/get-it-8.4.4.tgz", - "integrity": "sha512-Pu3pnJfnYuLEhwJgMlFqk19ugvtazzTxh7rg8wATaBL4c5Fy4ahM5B+bGdluiNSNYYK89F5vSa+N3sTa/qqtlg==", - "dependencies": { - "debug": "^4.3.4", - "decompress-response": "^7.0.0", - "follow-redirects": "^1.15.2", - "into-stream": "^6.0.0", - "is-plain-object": "^5.0.0", - "is-retry-allowed": "^2.2.0", - "is-stream": "^2.0.1", - "parse-headers": "^2.0.5", - "progress-stream": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/get-it/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/get-it/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/get-it/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, "node_modules/get-os-info": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-os-info/-/get-os-info-1.0.2.tgz", @@ -9948,21 +9810,6 @@ "node": ">=10.13.0" } }, - "node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ip": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", @@ -10311,17 +10158,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-retry-allowed": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", - "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -10430,7 +10266,8 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -12106,17 +11943,6 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mini-css-extract-plugin": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", @@ -15854,14 +15680,6 @@ "node": ">=8" } }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -15947,11 +15765,6 @@ "node": ">=6" } }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -16550,16 +16363,8 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz", - "integrity": "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==", - "dependencies": { - "speedometer": "~1.0.0", - "through2": "~2.0.3" - } + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/promise": { "version": "8.1.0", @@ -17073,6 +16878,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -17436,7 +17242,8 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/safe-regex-test": { "version": "1.0.0", @@ -17958,11 +17765,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/speedometer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", - "integrity": "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==" - }, "node_modules/split-on-first": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-3.0.0.tgz", @@ -18019,6 +17821,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -19343,15 +19146,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -19573,6 +19367,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -19857,7 +19652,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/utila": { "version": "0.4.0", @@ -20565,14 +20361,6 @@ } } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -23409,43 +23197,6 @@ "any-observable": "^0.3.0" } }, - "@sanity/client": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@sanity/client/-/client-6.8.0.tgz", - "integrity": "sha512-SshNs8WfL3PxStBLqgq5FZJAmJO/Nj2IPynPYa+ze+h4SUZU6L/LyIj6848C91nHABICocuUJ3gwZRhK6YNNdw==", - "requires": { - "@sanity/eventsource": "^5.0.0", - "@vercel/stega": "0.1.0", - "get-it": "^8.4.4", - "rxjs": "^7.0.0" - }, - "dependencies": { - "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "requires": { - "tslib": "^2.1.0" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - } - } - }, - "@sanity/eventsource": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-5.0.0.tgz", - "integrity": "sha512-0ewT+BDzfiamHwitUfRcwsl/RREHjWv6VNZvQ8Q4OnnNKXfEEGXbWmqzof0okOTkp4XELgyliht4Qj28o9AU2g==", - "requires": { - "@types/event-source-polyfill": "1.0.1", - "@types/eventsource": "1.1.11", - "event-source-polyfill": "1.0.31", - "eventsource": "2.0.2" - } - }, "@sentry-internal/tracing": { "version": "7.80.0", "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.80.0.tgz", @@ -23844,16 +23595,6 @@ "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", "dev": true }, - "@types/event-source-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/event-source-polyfill/-/event-source-polyfill-1.0.1.tgz", - "integrity": "sha512-dls8b0lUgJ/miRApF0efboQ9QZnAm7ofTO6P1ILu8bRPxUFKDxVwFf8+TeuuErmNui6blpltyr7+eV72dbQXlQ==" - }, - "@types/eventsource": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@types/eventsource/-/eventsource-1.1.11.tgz", - "integrity": "sha512-L7wLDZlWm5mROzv87W0ofIYeQP5K2UhoFnnUyEWLKM6UBb0ZNRgAqp98qE5DkgfBXdWfc2kYmw9KZm4NLjRbsw==" - }, "@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -24346,11 +24087,6 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, - "@vercel/stega": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@vercel/stega/-/stega-0.1.0.tgz", - "integrity": "sha512-5b0PkOJsFBX5alChuIO3qpkt5vIZBevzLPhUQ1UP8UzVjL3F1VllnZxp/thfD8R5ol7D7WHkgZHIjdUBX4tDpQ==" - }, "@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -25810,7 +25546,8 @@ "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "cosmiconfig": { "version": "7.0.1", @@ -25994,14 +25731,6 @@ "ms": "2.0.0" } }, - "decompress-response": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-7.0.0.tgz", - "integrity": "sha512-6IvPrADQyyPGLpMnUh6kfKiqy7SrbXbjoUuZ90WMBJKErzv2pCiwlGEXjRX9/54OnTq+XFVnkOnOMzclLI5aEA==", - "requires": { - "mimic-response": "^3.1.0" - } - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -26806,11 +26535,6 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, - "event-source-polyfill": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz", - "integrity": "sha512-4IJSItgS/41IxN5UVAVuAyczwZF7ZIEsM1XAoUzIHA6A+xzusEZUutdXz2Nr+MQPLxfTiCvqE79/C8HT8fKFvA==" - }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -26823,11 +26547,6 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, - "eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -27262,15 +26981,6 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -27350,43 +27060,6 @@ "has-symbols": "^1.0.3" } }, - "get-it": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/get-it/-/get-it-8.4.4.tgz", - "integrity": "sha512-Pu3pnJfnYuLEhwJgMlFqk19ugvtazzTxh7rg8wATaBL4c5Fy4ahM5B+bGdluiNSNYYK89F5vSa+N3sTa/qqtlg==", - "requires": { - "debug": "^4.3.4", - "decompress-response": "^7.0.0", - "follow-redirects": "^1.15.2", - "into-stream": "^6.0.0", - "is-plain-object": "^5.0.0", - "is-retry-allowed": "^2.2.0", - "is-stream": "^2.0.1", - "parse-headers": "^2.0.5", - "progress-stream": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, "get-os-info": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-os-info/-/get-os-info-1.0.2.tgz", @@ -27938,15 +27611,6 @@ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, - "into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "requires": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - } - }, "ip": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", @@ -28178,11 +27842,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-retry-allowed": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", - "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==" - }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -28258,7 +27917,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "isexe": { "version": "2.0.0", @@ -29556,11 +29216,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, "mini-css-extract-plugin": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", @@ -32105,11 +31760,6 @@ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", "dev": true }, - "p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==" - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -32176,11 +31826,6 @@ "callsites": "^3.0.0" } }, - "parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -32599,16 +32244,8 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz", - "integrity": "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==", - "requires": { - "speedometer": "~1.0.0", - "through2": "~2.0.3" - } + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "promise": { "version": "8.1.0", @@ -32990,6 +32627,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -33262,7 +32900,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex-test": { "version": "1.0.0", @@ -33709,11 +33348,6 @@ } } }, - "speedometer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", - "integrity": "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==" - }, "split-on-first": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-3.0.0.tgz", @@ -33757,6 +33391,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -34776,15 +34411,6 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -34930,6 +34556,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -35111,7 +34738,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "utila": { "version": "0.4.0", @@ -35611,11 +35239,6 @@ "dev": true, "requires": {} }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index bf4c76f56..6bbf23e59 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "@navikt/fnrvalidator": "^1.3.3", "@navikt/land-verktoy": "3.2.15", "@portabletext/react": "^3.0.11", - "@sanity/client": "^6.8.0", "@sentry/browser": "^7.80.0", "@types/amplitude-js": "^8.16.5", "@types/body-parser": "^1.19.5", @@ -139,15 +138,15 @@ "style-loader": "^3.3.3", "svg-inline-loader": "^0.8.2", "terser-webpack-plugin": "^5.3.9", - "testcafe": "^3.4.0", - "ts-node": "^10.9.1", + "testcafe": "^3.3.0", "ts-jest": "^29.1.1", + "ts-node": "^10.9.1", "typescript": "^5.2.2", - "util": "^0.12.5", "url-loader": "^4.1.1", + "util": "^0.12.5", "webpack": "^5.89.0", - "webpack-dev-server": "^4.15.1", - "webpack-cli": "^5.1.4" + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1" }, "overrides": { "react-day-picker": { diff --git a/server/csp.ts b/server/csp.ts index a94bc150e..4451052f1 100644 --- a/server/csp.ts +++ b/server/csp.ts @@ -1,61 +1,66 @@ // CSP eller Content-Security-Policy er en HTTP-Header som lar oss spesifisere hvor appen kan kjøre REST-kall mot og hvor den kan hente diverse innhold fra (fonter, bilder, javascript, stylesheets mm). export const cspMap = (): Record => { - return { - 'default-src': ["'self'", '*.nav.no'], - // Hvor vi kan hente .js filer fra. - 'script-src': [ - "'self'", - "'unsafe-inline'", - "'unsafe-eval'", // vergic - '*.nav.no', - '*.psplugin.com', - '*.taskanalytics.com', - '*.hotjar.com', - ], - // Hvor vi kan hente .css filer fra. - 'style-src': [ - "'self'", - "'unsafe-inline'", - '*.nav.no', - '*.psplugin.com', - ], - // Hvor vi kan kjøre XHR/REST-kall mot. - 'connect-src': [ - "'self'", - '*.nav.no', - 'm3pb011r.apicdn.sanity.io', - 'amplitude.nav.no', - '*.psplugin.com', - '*.hotjar.com', - '*.hotjar.io', - '*.boost.ai', - '*.taskanalytics.com', - ], - // Kan kun submitte forms til seg selv. - 'form-action': ["'self'"], - // Hvor fonter kan hentes fra. - 'font-src': ["'self'", 'data:', '*.psplugin.com', '*.hotjar.com', 'cdn.nav.no'], - // Hvor vi hente innhold til iFrames fra. - 'frame-src': ['*.hotjar.com', 'video.qbrick.com', 'player.vimeo.com'], - // Hvor bilder kan hentes fra. - 'img-src': [ - "'self'", - '*.nav.no', - 'data:', - '*.psplugin.com', - '*.vimeocdn.com', // used for video preview images - '*.hotjar.com', - 'www.vergic.com', // seems to only be used for a single placeholder image - ], - 'worker-src': ["'self'", 'blob:'], - 'child-src': ["'self'", 'blob:'], - // Hvor manifest-filer kan hentes fra - 'manifest-src': ["'self'", 'www.nav.no', 'oidc-ver2.difi.no', 'idporten-ver2.difi.no'], - }; + return { + 'default-src': ["'self'", '*.nav.no'], + // Hvor vi kan hente .js filer fra. + 'script-src': [ + "'self'", + "'unsafe-inline'", + "'unsafe-eval'", // vergic + '*.nav.no', + '*.psplugin.com', + '*.taskanalytics.com', + '*.hotjar.com', + ], + // Hvor vi kan hente .css filer fra. + 'style-src': ["'self'", "'unsafe-inline'", '*.nav.no', '*.psplugin.com'], + // Hvor vi kan kjøre XHR/REST-kall mot. + 'connect-src': [ + "'self'", + '*.nav.no', + 'amplitude.nav.no', + '*.psplugin.com', + '*.hotjar.com', + '*.hotjar.io', + '*.boost.ai', + '*.taskanalytics.com', + ], + // Kan kun submitte forms til seg selv. + 'form-action': ["'self'"], + // Hvor fonter kan hentes fra. + 'font-src': [ + "'self'", + 'data:', + '*.psplugin.com', + '*.hotjar.com', + 'cdn.nav.no', + ], + // Hvor vi hente innhold til iFrames fra. + 'frame-src': ['*.hotjar.com', 'video.qbrick.com', 'player.vimeo.com'], + // Hvor bilder kan hentes fra. + 'img-src': [ + "'self'", + '*.nav.no', + 'data:', + '*.psplugin.com', + '*.vimeocdn.com', // used for video preview images + '*.hotjar.com', + 'www.vergic.com', // seems to only be used for a single placeholder image + ], + 'worker-src': ["'self'", 'blob:'], + 'child-src': ["'self'", 'blob:'], + // Hvor manifest-filer kan hentes fra + 'manifest-src': [ + "'self'", + 'www.nav.no', + 'oidc-ver2.difi.no', + 'idporten-ver2.difi.no', + ], + }; }; export const cspString = () => { - return Object.entries(cspMap()) - .map((entry) => `${entry[0]} ${entry[1].join(' ')}`) - .join('; '); + return Object.entries(cspMap()) + .map((entry) => `${entry[0]} ${entry[1].join(' ')}`) + .join('; '); }; diff --git a/src/App.tsx b/src/App.tsx index add867bb4..0904bf703 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -76,7 +76,7 @@ const App = () => { }; const fetchToggles = () => { - return hentToggles(settToggles).catch((err: Error) => { + return hentToggles(settToggles).catch(() => { settError(true); }); }; diff --git "a/src/arbeidss\303\270kerskjema/Forside.tsx" "b/src/arbeidss\303\270kerskjema/Forside.tsx" index c66d3f08c..dba6e5ecf 100644 --- "a/src/arbeidss\303\270kerskjema/Forside.tsx" +++ "b/src/arbeidss\303\270kerskjema/Forside.tsx" @@ -1,46 +1,25 @@ import React from 'react'; import FeltGruppe from '../components/gruppe/FeltGruppe'; -import { useSpråkContext } from '../context/SpråkContext'; -import { hentBeskjedMedNavn } from '../utils/språk'; -import { hentTekst } from '../utils/søknad'; -import { useNavigate } from 'react-router-dom'; import LocaleTekst from '../language/LocaleTekst'; import { ERouteArbeidssøkerskjema, RoutesArbeidssokerskjema, } from './routes/routesArbeidssokerskjema'; import { useSkjema } from './SkjemaContext'; -import { useForsideInnhold, useMount } from '../utils/hooks'; -import { ForsideType } from '../models/søknad/stønadstyper'; +import { useMount } from '../utils/hooks'; import { hentPath } from '../utils/routing'; import Språkvelger from '../components/språkvelger/Språkvelger'; import { logSidevisningArbeidssokerskjema } from '../utils/amplitude'; -import { useLokalIntlContext } from '../context/LokalIntlContext'; -import { - Accordion, - BodyShort, - Button, - ConfirmationPanel, - Heading, - Panel, -} from '@navikt/ds-react'; -import styled from 'styled-components'; -import { PortableText } from '@portabletext/react'; -import VeilederSnakkeboble from '../assets/VeilederSnakkeboble'; - -const DisclaimerTittel = styled(Heading)` - margin-bottom: 1rem; -`; - -const StyledConfirmationPanel = styled(ConfirmationPanel)` - margin-bottom: 2rem; -`; +import { Heading, Panel } from '@navikt/ds-react'; +import { VeilederBoks } from '../components/forside/VeilederBoks'; +import { StartSøknadKnapp } from '../components/forside/KnappStartSøknad'; +import { DisclaimerBoks } from '../components/forside/DisclaimerBoks'; +import { Seksjon } from '../components/forside/Seksjon'; +import { Overskrift } from '../components/forside/Overskrift'; +import { Tekst } from '../components/forside/Tekst'; +import { isIE } from 'react-device-detect'; const Forside: React.FC<{ visningsnavn: string }> = ({ visningsnavn }) => { - const [locale] = useSpråkContext(); - const navigate = useNavigate(); - const intl = useLokalIntlContext(); - const { skjema, settSkjema } = useSkjema(); useMount(() => logSidevisningArbeidssokerskjema('Forside')); @@ -51,95 +30,49 @@ const Forside: React.FC<{ visningsnavn: string }> = ({ visningsnavn }) => { harBekreftet: bekreftelse, }); }; - const forside = useForsideInnhold(ForsideType.arbeidssøker); - const disclaimer = forside['disclaimer_' + locale]; - const seksjon = forside['seksjon_' + locale]; + const nesteSide = + hentPath(RoutesArbeidssokerskjema, ERouteArbeidssøkerskjema.Spørsmål) || ''; return (
-
- -
+ + - + + - {seksjon && - seksjon.map((blokk: any, index: number) => { - return blokk._type === 'dokumentasjonskrav' ? ( -
- - - {blokk.tittel} - - - - - - - -
- ) : ( -
- {blokk.tittel && ( - - {blokk.tittel} - - )} - - - -
- ); - })} - {disclaimer && ( - <> - - {hentTekst('skjema.forside.disclaimer.tittel', intl)} - - settBekreftelse(!skjema.harBekreftet)} - > - - - - - + + + + + + + + + + + + + + {!isIE && ( + )} - {skjema.harBekreftet ? ( - - - - ) : null} + {skjema.harBekreftet && }
diff --git a/src/barnetilsyn/BarnetilsynContext.tsx b/src/barnetilsyn/BarnetilsynContext.tsx index 1f64f3d09..88db9c075 100644 --- a/src/barnetilsyn/BarnetilsynContext.tsx +++ b/src/barnetilsyn/BarnetilsynContext.tsx @@ -25,6 +25,7 @@ import { useSpråkContext } from '../context/SpråkContext'; import { LokalIntlShape } from '../language/typer'; import { useLokalIntlContext } from '../context/LokalIntlContext'; import { oppdaterBarneliste, oppdaterBarnIBarneliste } from '../utils/barn'; +import { LocaleType } from '../language/typer'; // ----------- CONTEXT ----------- const initialState = (intl: LokalIntlShape): ISøknad => { @@ -70,7 +71,7 @@ const [BarnetilsynSøknadProvider, useBarnetilsynSøknad] = createUseContext( mellomlagretBarnetilsyn?.locale && mellomlagretBarnetilsyn?.locale !== locale ) { - setLocale(mellomlagretBarnetilsyn.locale); + setLocale(mellomlagretBarnetilsyn.locale as LocaleType); } }, [mellomlagretBarnetilsyn, locale, setLocale]); diff --git a/src/barnetilsyn/BarnetilsynInformasjon.tsx b/src/barnetilsyn/BarnetilsynInformasjon.tsx new file mode 100644 index 000000000..a8edf449b --- /dev/null +++ b/src/barnetilsyn/BarnetilsynInformasjon.tsx @@ -0,0 +1,84 @@ +import FeltGruppe from '../components/gruppe/FeltGruppe'; +import Språkvelger from '../components/språkvelger/Språkvelger'; +import LocaleTekst from '../language/LocaleTekst'; +import { isIE } from 'react-device-detect'; +import { OversettelseAlert } from '../components/forside/AlertOversettelse'; +import { DisclaimerBoks } from '../components/forside/DisclaimerBoks'; +import { StartSøknadKnapp } from '../components/forside/KnappStartSøknad'; +import { Tekst } from '../components/forside/Tekst'; +import { Seksjon } from '../components/forside/Seksjon'; +import { Overskrift } from '../components/forside/Overskrift'; +import { InformasjonProps } from '../components/forside/typer'; +import { hentPath } from '../utils/routing'; +import { + RoutesBarnetilsyn, + ERouteBarnetilsyn, +} from './routing/routesBarnetilsyn'; + +export const BarnetilsynInformasjon: React.FC = ({ + person, + harBekreftet, + settBekreftelse, +}) => { + const nesteSide = hentPath(RoutesBarnetilsyn, ERouteBarnetilsyn.OmDeg) || ''; + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {!isIE && ( + + )} + + {harBekreftet && } + + ); +}; diff --git a/src/barnetilsyn/Forside.tsx b/src/barnetilsyn/Forside.tsx index c0072cc31..a361edd46 100644 --- a/src/barnetilsyn/Forside.tsx +++ b/src/barnetilsyn/Forside.tsx @@ -1,18 +1,9 @@ import React from 'react'; import { usePersonContext } from '../context/PersonContext'; -import { useSpråkContext } from '../context/SpråkContext'; -import { hentBeskjedMedNavn } from '../utils/språk'; import { useBarnetilsynSøknad } from './BarnetilsynContext'; import Environment from '../Environment'; -import FortsettSøknad from '../søknad/forside/FortsettSøknad'; -import { useForsideInnhold, useMount } from '../utils/hooks'; -import { ForsideType } from '../models/søknad/stønadstyper'; -import { - ERouteBarnetilsyn, - RoutesBarnetilsyn, -} from './routing/routesBarnetilsyn'; -import Forsideinformasjon from '../søknad/forside/Forsideinformasjon'; -import { hentPath } from '../utils/routing'; +import FortsettSøknad from '../components/forside/FortsettSøknad'; +import { useMount } from '../utils/hooks'; import LocaleTekst from '../language/LocaleTekst'; import { logSidevisningBarnetilsyn } from '../utils/amplitude'; import { ESkjemanavn } from '../utils/skjemanavn'; @@ -20,15 +11,18 @@ import { FnrOgDnrTilAlder } from '../overgangsstønad/utils'; import { isIE } from 'react-device-detect'; import { useLokalIntlContext } from '../context/LokalIntlContext'; import { Alert, Panel, Heading } from '@navikt/ds-react'; -import VeilederSnakkeboble from '../assets/VeilederSnakkeboble'; import styled from 'styled-components'; import { erNåværendeMånedMellomMåneder, nåværendeÅr } from '../utils/dato'; +import { BarnetilsynInformasjon } from './BarnetilsynInformasjon'; +import { AlertIE } from '../components/forside/AlertIE'; +import { AlertUnderAtten } from '../components/forside/AlertUnderAtten'; +import { VeilederBoks } from '../components/forside/VeilederBoks'; const StyledAlert = styled(Alert)` margin-bottom: 2rem; `; -const Forside: React.FC = () => { +const Forside: React.FC = () => { const intl = useLokalIntlContext(); const erDagensDatoMellomMaiOgAugust = erNåværendeMånedMellomMåneder(5, 8); @@ -41,7 +35,6 @@ const Forside: React.FC = () => { }); const { person } = usePersonContext(); - const [locale] = useSpråkContext(); const { mellomlagretBarnetilsyn, brukMellomlagretBarnetilsyn, @@ -58,51 +51,27 @@ const Forside: React.FC = () => { const alder = FnrOgDnrTilAlder(person.søker.fnr); - const forside: any = useForsideInnhold(ForsideType.barnetilsyn); - const kanBrukeMellomlagretSøknad = mellomlagretBarnetilsyn !== undefined && mellomlagretBarnetilsyn.søknad.person.hash === person.hash && mellomlagretBarnetilsyn.modellVersjon === Environment().modellVersjon.barnetilsyn; - const disclaimer = forside['disclaimer_' + locale]; - const seksjon = forside['seksjon_' + locale]; - return (
-
- -
+ - {alder < 18 && ( -
- - - -
- )} + {alder < 18 && } - {isIE && ( -
- - - -
- )} + {isIE && } - {erDagensDatoMellomMaiOgAugust ? ( + {erDagensDatoMellomMaiOgAugust && ( Søker du om stønad til barnetilsyn fra august {nåværendeÅr}? @@ -111,7 +80,7 @@ const Forside: React.FC = () => { barnepass med faktura for denne måneden. Vi anbefaler derfor at du venter med å søke frem til du får fakturaen. - ) : null} + )} {kanBrukeMellomlagretSøknad && mellomlagretBarnetilsyn ? ( = () => { /> ) : ( alder > 17 && ( - ) )} diff --git a/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx b/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx index 82cdcaf36..ff21fb3ec 100644 --- a/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx +++ b/src/barnetilsyn/steg/9-kvittering/Kvittering.tsx @@ -26,7 +26,7 @@ import { Alert } from '@navikt/ds-react'; const Kvittering: React.FC = () => { const intl = useLokalIntlContext(); - const { locale } = useSpråkContext(); + const [locale] = useSpråkContext(); const { søknad, nullstillMellomlagretBarnetilsyn, diff --git a/src/components/Modal/ModalWrapper.tsx b/src/components/Modal/ModalWrapper.tsx index 79d18b9a6..be076854e 100644 --- a/src/components/Modal/ModalWrapper.tsx +++ b/src/components/Modal/ModalWrapper.tsx @@ -1,5 +1,5 @@ import styled from 'styled-components'; -import { Button, Heading, Modal } from '@navikt/ds-react'; +import { Button, Modal } from '@navikt/ds-react'; import React from 'react'; const ModalContainer = styled(Modal)<{ maxWidth?: number }>` diff --git a/src/components/forside/AlertIE.tsx b/src/components/forside/AlertIE.tsx new file mode 100644 index 000000000..4f097fd09 --- /dev/null +++ b/src/components/forside/AlertIE.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import LocaleTekst from '../../language/LocaleTekst'; +import { Alert } from '@navikt/ds-react'; + +export const AlertIE: React.FC = () => { + return ( +
+ + + +
+ ); +}; diff --git a/src/components/forside/AlertOversettelse.tsx b/src/components/forside/AlertOversettelse.tsx new file mode 100644 index 000000000..b55d5c08c --- /dev/null +++ b/src/components/forside/AlertOversettelse.tsx @@ -0,0 +1,17 @@ +import { Alert } from '@navikt/ds-react'; +import { useSpråkContext } from '../../context/SpråkContext'; +import LocaleTekst from '../../language/LocaleTekst'; + +export const OversettelseAlert = () => { + const [locale] = useSpråkContext(); + + if (locale === 'en') { + return ( + + + + ); + } + + return <>; +}; diff --git a/src/components/forside/AlertUnderAtten.tsx b/src/components/forside/AlertUnderAtten.tsx new file mode 100644 index 000000000..b99f91510 --- /dev/null +++ b/src/components/forside/AlertUnderAtten.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import LocaleTekst from '../../language/LocaleTekst'; +import { Alert } from '@navikt/ds-react'; + +export const AlertUnderAtten: React.FC = () => { + return ( +
+ + + +
+ ); +}; diff --git a/src/components/forside/DisclaimerBoks.tsx b/src/components/forside/DisclaimerBoks.tsx new file mode 100644 index 000000000..f7f8cb877 --- /dev/null +++ b/src/components/forside/DisclaimerBoks.tsx @@ -0,0 +1,40 @@ +import { ConfirmationPanel, Heading, BodyShort } from '@navikt/ds-react'; +import styled from 'styled-components'; +import { hentBeskjedMedNavn } from '../../utils/språk'; +import { hentTekst } from '../../utils/søknad'; +import React from 'react'; +import { useLokalIntlContext } from '../../context/LokalIntlContext'; + +const StyledConfirmationPanel = styled(ConfirmationPanel)` + margin-bottom: 2rem; +`; + +const DisclaimerTittel = styled(Heading)` + margin-bottom: 1rem; +`; + +export const DisclaimerBoks: React.FC<{ + navn: string; + tekst: string; + harBekreftet: boolean; + settBekreftelse: (bekreftet: boolean) => void; +}> = ({ navn, tekst, harBekreftet, settBekreftelse }) => { + const intl = useLokalIntlContext(); + return ( + <> + + {hentTekst('skjema.forside.disclaimer.tittel', intl)} + + settBekreftelse(!harBekreftet)} + > + {hentTekst(tekst, intl)} + + + ); +}; diff --git "a/src/s\303\270knad/forside/FortsettS\303\270knad.tsx" "b/src/components/forside/FortsettS\303\270knad.tsx" similarity index 96% rename from "src/s\303\270knad/forside/FortsettS\303\270knad.tsx" rename to "src/components/forside/FortsettS\303\270knad.tsx" index 385a4429c..5a3b1cf80 100644 --- "a/src/s\303\270knad/forside/FortsettS\303\270knad.tsx" +++ "b/src/components/forside/FortsettS\303\270knad.tsx" @@ -1,6 +1,6 @@ import React from 'react'; import LocaleTekst from '../../language/LocaleTekst'; -import SeksjonGruppe from '../../components/gruppe/SeksjonGruppe'; +import SeksjonGruppe from '../gruppe/SeksjonGruppe'; import { FortsettSøknadKnappWrapper } from './FortsettSøknadKnapper'; import { logEvent } from '../../utils/amplitude'; import { useNavigate } from 'react-router-dom'; diff --git "a/src/s\303\270knad/forside/FortsettS\303\270knadKnapper.tsx" "b/src/components/forside/FortsettS\303\270knadKnapper.tsx" similarity index 100% rename from "src/s\303\270knad/forside/FortsettS\303\270knadKnapper.tsx" rename to "src/components/forside/FortsettS\303\270knadKnapper.tsx" diff --git "a/src/components/forside/KnappStartS\303\270knad.tsx" "b/src/components/forside/KnappStartS\303\270knad.tsx" new file mode 100644 index 000000000..b6434cda5 --- /dev/null +++ "b/src/components/forside/KnappStartS\303\270knad.tsx" @@ -0,0 +1,17 @@ +import LocaleTekst from '../../language/LocaleTekst'; +import FeltGruppe from '../gruppe/FeltGruppe'; +import { useNavigate } from 'react-router-dom'; +import { Button } from '@navikt/ds-react'; + +export const StartSøknadKnapp: React.FC<{ nesteSide: string }> = ({ + nesteSide, +}) => { + const navigate = useNavigate(); + return ( + + + + ); +}; diff --git a/src/components/forside/Overskrift.tsx b/src/components/forside/Overskrift.tsx new file mode 100644 index 000000000..b8988f46a --- /dev/null +++ b/src/components/forside/Overskrift.tsx @@ -0,0 +1,12 @@ +import { hentTekst } from '../../utils/søknad'; +import { useLokalIntlContext } from '../../context/LokalIntlContext'; +import { Heading } from '@navikt/ds-react'; + +export const Overskrift: React.FC<{ tekst: string }> = ({ tekst }) => { + const intl = useLokalIntlContext(); + return ( + + {hentTekst(tekst, intl)} + + ); +}; diff --git a/src/components/forside/Seksjon.tsx b/src/components/forside/Seksjon.tsx new file mode 100644 index 000000000..8da8be942 --- /dev/null +++ b/src/components/forside/Seksjon.tsx @@ -0,0 +1,18 @@ +import { ReactNode } from 'react'; +import styled from 'styled-components'; + +const StyledSeksjon = styled.div` + margin-bottom: 3rem; + + & > *:nth-child(n + 1) { + margin-top: 1.3rem; + } +`; + +type SeksjonProps = { + children: ReactNode; +}; + +export const Seksjon: React.FC = ({ children }) => { + return {children}; +}; diff --git a/src/components/forside/Tekst.tsx b/src/components/forside/Tekst.tsx new file mode 100644 index 000000000..a887b9b8e --- /dev/null +++ b/src/components/forside/Tekst.tsx @@ -0,0 +1,8 @@ +import { BodyShort } from '@navikt/ds-react'; +import { hentTekst } from '../../utils/søknad'; +import { useLokalIntlContext } from '../../context/LokalIntlContext'; + +export const Tekst: React.FC<{ tekst: string }> = ({ tekst }) => { + const intl = useLokalIntlContext(); + return {hentTekst(tekst, intl)}; +}; diff --git a/src/components/forside/VeilederBoks.tsx b/src/components/forside/VeilederBoks.tsx new file mode 100644 index 000000000..4ffdbe613 --- /dev/null +++ b/src/components/forside/VeilederBoks.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import VeilederSnakkeboble from '../../assets/VeilederSnakkeboble'; +import { useLokalIntlContext } from '../../context/LokalIntlContext'; +import { hentBeskjedMedNavn } from '../../utils/språk'; +import { usePersonContext } from '../../context/PersonContext'; +import styled from 'styled-components'; + +const VeilederContainer = styled.div` + margin-bottom: 4rem; +`; + +export interface VeilederBoksProps { + navn?: string; +} + +export const VeilederBoks: React.FC = ({ navn }) => { + const intl = useLokalIntlContext(); + const { person } = usePersonContext(); + + const søkerNavn = navn ? navn : person.søker.forkortetNavn; + + return ( + + + + ); +}; diff --git a/src/components/forside/typer.ts b/src/components/forside/typer.ts new file mode 100644 index 000000000..026c45884 --- /dev/null +++ b/src/components/forside/typer.ts @@ -0,0 +1,7 @@ +import { IPerson } from '../../models/søknad/person'; + +export interface InformasjonProps { + person: IPerson; + harBekreftet: boolean; + settBekreftelse: (bekreftet: boolean) => void; +} diff --git a/src/components/side/Side.tsx b/src/components/side/Side.tsx index 9b98a98d3..a15a8dffc 100644 --- a/src/components/side/Side.tsx +++ b/src/components/side/Side.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import { Stegindikator } from '../../components/stegindikator/Stegindikator'; -import Banner from '../../components/Banner'; +import { Stegindikator } from '../stegindikator/Stegindikator'; +import Banner from '../Banner'; import { useLocation, useNavigate } from 'react-router-dom'; import SendBrevSVG from '../../assets/SendSøknadSVG'; import { hentTekst } from '../../utils/søknad'; -import TilbakeNesteAvbrytKnapper from '../../components/knapper/TilbakeNesteAvbrytKnapper'; +import TilbakeNesteAvbrytKnapper from '../knapper/TilbakeNesteAvbrytKnapper'; import { IRoute } from '../../models/routes'; import { Stønadstype } from '../../models/søknad/stønadstyper'; import { hentBannertittel } from '../../utils/stønadstype'; diff --git "a/src/components/spr\303\245kvelger/Spr\303\245kvelger.tsx" "b/src/components/spr\303\245kvelger/Spr\303\245kvelger.tsx" index 3a334a373..71ead1d31 100644 --- "a/src/components/spr\303\245kvelger/Spr\303\245kvelger.tsx" +++ "b/src/components/spr\303\245kvelger/Spr\303\245kvelger.tsx" @@ -15,6 +15,7 @@ import { useToggles } from '../../context/TogglesContext'; import { ToggleName } from '../../models/søknad/toggles'; import { BodyShort } from '@navikt/ds-react'; import { ChevronDownIcon } from '@navikt/aksel-icons'; +import { LocaleType } from '../../language/typer'; const StyledSpråkvelger = styled.div` width: 100%; @@ -67,11 +68,11 @@ const Språkvelger: React.FC = () => { ? hentListeMedSpråk() : hentListeMedSpråkUtenNynorsk(); - const handleSelection = (value: JSX.Element[]) => { - const språk = value[1].props.children; + const handleSelection = (value: React.ReactElement[]) => { + const språk = value[1].props.children as string; const loc = språkObjekter.find((språkobj) => språkobj.tittel === språk); if (loc) { - setLocale(loc.locale); + setLocale(loc.locale as LocaleType); } }; diff --git "a/src/context/Spr\303\245kContext.tsx" "b/src/context/Spr\303\245kContext.tsx" index 825158f6d..b185525e1 100644 --- "a/src/context/Spr\303\245kContext.tsx" +++ "b/src/context/Spr\303\245kContext.tsx" @@ -1,9 +1,18 @@ -import React, { createContext, useContext, useState } from 'react'; +import React, { + createContext, + useContext, + useState, + Dispatch, + SetStateAction, +} from 'react'; import { getMessages } from '../language/utils'; import { LocaleType } from '../language/typer'; import { LokalIntlProvider } from './LokalIntlContext'; -const SpråkContext = createContext(['', () => {}]); +const SpråkContext = createContext< + [LocaleType, Dispatch>] +>([LocaleType.nb, () => {}]); + const useSpråkContext = () => useContext(SpråkContext); const SpråkProvider: React.FC<{ children?: React.ReactNode }> = ({ diff --git "a/src/context/S\303\270knadContext.tsx" "b/src/context/S\303\270knadContext.tsx" index 03fbae21e..6bffca06b 100644 --- "a/src/context/S\303\270knadContext.tsx" +++ "b/src/context/S\303\270knadContext.tsx" @@ -27,6 +27,7 @@ import { hvaErDinArbeidssituasjonSpm } from '../søknad/steg/5-aktivitet/Aktivit import { useSpråkContext } from './SpråkContext'; import { LokalIntlShape } from '../language/typer'; import { useLokalIntlContext } from './LokalIntlContext'; +import { LocaleType } from '../language/typer'; // ----------- CONTEXT ----------- const initialState = (intl: LokalIntlShape): ISøknad => { @@ -83,7 +84,7 @@ const [SøknadProvider, useSøknad] = createUseContext(() => { mellomlagretOvergangsstønad?.locale && mellomlagretOvergangsstønad?.locale !== locale ) { - setLocale(mellomlagretOvergangsstønad.locale); + setLocale(mellomlagretOvergangsstønad.locale as LocaleType); } }, [mellomlagretOvergangsstønad, locale, setLocale]); @@ -212,7 +213,9 @@ const [SøknadProvider, useSøknad] = createUseContext(() => { const fjernBarnFraSøknad = (id: string) => { settSøknad((prevSoknad: ISøknad) => { - const nyBarneListe = prevSoknad.person.barn.filter((b: IBarn) => b.id !== id); + const nyBarneListe = prevSoknad.person.barn.filter( + (b: IBarn) => b.id !== id + ); return { ...prevSoknad, person: { ...søknad.person, barn: nyBarneListe }, diff --git a/src/language/tekster_en.ts b/src/language/tekster_en.ts index af4f85d6a..7038a2728 100644 --- a/src/language/tekster_en.ts +++ b/src/language/tekster_en.ts @@ -391,7 +391,7 @@ export default { 'arbeidssituasjon.spm.hjelpetekst': 'You can select more than one answer', 'arbeidssituasjon.spm.hjelpetekst-åpne': 'The reason we ask about this', 'arbeidssituasjon.spm.hjelpetekst-innhold': - 'We need information about your work situation in order to assess whether you are qualified to receive transitional benefit for single parents. You must be at least 50 per cent engaged in some form of occupational activity to qualify. However, there are some exceptions to the general rule.

Read more about these requirements here.', + 'We need information about your work situation in order to assess whether you are qualified to receive transitional benefit for single parents. You must be at least 50 per cent engaged in some form of occupational activity to qualify. However, there are some exceptions to the general rule.

Read more about these requirements here.', 'arbeidssituasjon.svar.erHjemmeMedBarnUnderEttÅr': 'I am at home with children under the age of 1 year', 'arbeidssituasjon.svar.erArbeidstakerOgEllerLønnsmottakerFrilanser': @@ -908,4 +908,138 @@ export default { 'skjema.takk': 'Thank you', 'skjema.alert.mottatt': 'Information about you as a job seeker has been received', + 'alert.warning.oversettingUnderArbeid': + "We are in the process of translating this application. The few missingtranslations will appear in Norwegian until we've translated them.", + + 'forside.overgangsstønad.erDuEnsligMorEllerFar': + 'If you are a single parent and have children under the age of 8 years, transitional benefit will ensure you have income for up to three years. In some cases, this period can be extended.\n\nYour income determines how much benefit you are entitled to.', + 'forside.overgangsstønad.sammeSøknad': + 'You use the same application whether you are applying for the first time or seeking an extension or an increase in your benefit period.', + 'forside.overgangsstønad.merOmOvergangsstønad': + 'Transitional Benefit in more detail', + 'forside.overgangsstønad.overskrift.riktigeOpplysninger': + 'It is important that the information you give us is correct', + 'forside.overgangsstønad.riktigeOpplysninger': + 'In order for us to be able to process your application, you must provide us with the correct information.', + 'forside.overgangsstønad.meldeEndringer': + 'If you receive transitional benefit, you must inform us of any major changes in your life, such as changes in your living and family situation, or changes in your work or education. The same applies if there are any changes in your income.', + 'forside.overgangsstønad.overskrift.sendeDokumentasjon': + 'You may need to submit documentation', + 'forside.overgangsstønad.beskjedDokumentere': + 'You will be notified as you fill in the application if you need to provide documentation of any of the information you have provided. In some cases, we may also need more information. We will let you know if we do.', + 'forside.overgangsstønad.merInformasjon': '', + 'forside.overgangsstønad.oversiktDokumentasjon': + 'Overview of what must be documented', + 'forside.overgangsstønad.overskrift.henteInformasjon': + 'We will collect information about you', + 'forside.overgangsstønad.henteInformasjon': + 'In addition to the information you provide in the application, we collect information about you in order to determine whether you are entitled to benefit.', + 'forside.overgangsstønad.viHenter': 'We collect:', + 'forside.overgangsstønad.henterPunktliste': + '
  • personal information about you, your child(ren) and the other parent of your children from the National Registry
  • ininformation about your income from the Norwegian Tax Administration
  • information about your work situation from the State Register of Employers and Employees
', + 'forside.overgangsstønad.tidligereOpplysninger': + 'We may also use information you have given us in the past, or information you have given us in other contexts, if this is relevant and necessary.', + 'forside.overgangsstønad.personopplysningeneDine': + 'About how we process your personal data', + 'forside.overgangsstønad.overskrift.slikSøkerDu': 'How to apply', + 'forside.overgangsstønad.slikSøkerDu': + 'We will save your application until the end of tomorrow. This means you can take breaks while filling it in. You can also delete information during this period.', + 'forside.overgangsstønad.viLagrerSøknadenDin': '', + 'forside.overgangsstønad.manglerDuDokumentasjon': + 'If you do not have all the documentation you need, you can submit it later.', + 'forside.overgangsstønad.disclaimerTekst': + 'I am aware that I may lose my right to transitional benefit if I have not provided the correct information. I am also aware that I will have to pay back any money I receive that I am not entitled to and that I have received because I have failed to provide information or have provided incorrect information.', + + 'forside.barnetilsyn.info': + 'This benefit covers part of the cost of child minding for working single parents who have sole care of a child.', + 'forside.barnetilsyn.fåStønadSkoleår': + 'You can receive this benefit until the child finishes their fourth year of school. In some cases, you may be entitled to receive it after the child has completed their fourth year of school.', + 'forside.barnetilsyn.merOmStønad': + 'Child minding benefit in more detail', + 'forside.barnetilsyn.arbeidssøkerUtdanning': + 'If you are currently not in work, but are registered with NAV as a job seeker or taking education that NAV has approved, as a general rule you will not be entitled to this benefit. In this case, you can apply for benefit for child minding.', + 'forside.barnetilsyn.overskrift.riktigeOpplysninger': + 'It is important that the information you give us is correct', + 'forside.barnetilsyn.riktigeOpplysninger': + 'In order for us to be able to process your application, you must provide us with the correct information.', + 'forside.barnetilsyn.meldeEndringer': + 'If you receive child care benefit, you must inform us of any major changes in your life, such as changes in your living and family situation or changes in your work situation. The same applies if there are any changes in your child minding expenses or your income.', + 'forside.barnetilsyn.overskrift.sendeDokumentasjon': + 'You may need to submit documentation', + 'forside.barnetilsyn.beskjedDokumentere': + 'You will be notified as you fill in the application if you need to provide documentation of any of the information you have provided. In some cases, we may also need more information. We will let you know if we do.', + 'forside.barnetilsyn.merInformasjon': '', + 'forside.barnetilsyn.oversiktDokumentasjon': + ' Overview of what must be documented ', + 'forside.barnetilsyn.overskrift.henteInformasjon': + 'We will collect information about you', + 'forside.barnetilsyn.henteInformasjon': + 'In addition to the information you provide in the application, we collect information about you in order to determine whether you are entitled to benefit.', + 'forside.barnetilsyn.viHenter': 'We collect:', + 'forside.barnetilsyn.henterPunktliste': + '
  • personal information about you, your child(ren) and the other parent of your children from the National Registry
  • information about your income from the Norwegian Tax Administration
  • information about your work situation from the State Register of Employers and Employees
', + 'forside.barnetilsyn.tidligereOpplysninger': + 'We may also use information you have given us in the past, or information you have given us in other contexts, if this is relevant and necessary.', + 'forside.barnetilsyn.personopplysningeneDine': + 'About how we process your personal data', + 'forside.barnetilsyn.overskrift.slikSøkerDu': 'How to apply', + 'forside.barnetilsyn.slikSøkerDu': + 'We will save your application until the end of tomorrow. This means you can take breaks while filling it in. You can also delete information during this period.', + 'forside.barnetilsyn.slikSøkerDu2': + 'If you do not have all the documentation you need, you can submit it later.', + 'forside.barnetilsyn.slikSøkerDu3': '', + 'forside.barnetilsyn.slikSøkerDu4': '', + 'forside.barnetilsyn.disclaimerTekst': + 'I am aware that I may lose my right to child care benefit if I have not provided the correct information. I am also aware that I will have to pay back any money I receive that I am not entitled to and that I have received because I have failed to provide information or have provided incorrect information.', + + 'forside.skolepenger.innledning': + 'This benefit covers actual expenses related to tuition fees, semester fees and examination fees for single parents taking education. The benefit covers your expenses up to a defined upper limit.', + 'forside.skolepenger.merInfoLenke': + 'Support for school fees in more detail', + 'forside.skolepenger.overskrift.riktigeOpplysninger': + 'It is important that the information you give us is correct', + 'forside.skolepenger.riktigeOpplysninger': + 'In order for us to be able to process your application, you must provide us with the correct information.', + 'forside.skolepenger.meldeEndringer': + 'If you receive support for school fees, you must inform us of any major changes in your life, such as changes in your living and family situation or changes in your education situation.', + 'forside.skolepenger.overskrift.sendeDokumentasjon': + 'You may need to submit documentation', + 'forside.skolepenger.beskjedDokumentere': + 'You will be notified as you fill in the application if you need to provide documentation of any of the information you have provided. In some cases, we may also need more information. We will let you know if we do.', + 'forside.skolepenger.dokumentasjonsOversiktLenke': + 'Overview of what must be documented', + 'forside.skolepenger.overskrift.henteInformasjon': + 'We will collect information about you', + 'forside.skolepenger.henteInformasjon': + 'In addition to the information you provide in the application, we collect information about you in order to determine whether you are entitled to benefit.', + 'forside.skolepenger.viHenter': 'We collect:', + 'forside.skolepenger.informasjonHentet': + '
  • personal information about you, your child(ren) and the other parent of your children from the National Registry
', + 'forside.skolepenger.tidligereOpplysninger': + 'We may also use information you have given us in the past, or information you have given us in other contexts, if this is relevant and necessary.', + 'forside.skolepenger.personopplysningeneDineLenke': + 'About how we process your personal data', + 'forside.skolepenger.overskrift.slikSøkerDu': 'How to apply', + 'forside.skolepenger.slikSøkerDu': + 'We will save your application until the end of tomorrow. This means you can take breaks while filling it in. You can also delete information during this period.', + 'forside.skolepenger.lagringSøknad': '', + 'forside.skolepenger.manglerDuDokumentasjon': + 'If you do not have all the documentation you need, you can submit it later.', + 'forside.skolepenger.disclaimerTekst': + 'I am aware that I may lose my right to support for school fees if I have not provided the correct information. I am also aware that I will have to pay back any money I receive that I am not entitled to and that I have received because I have failed to provide information or have provided incorrect information.', + + 'forside.arbeidssøker.info': + 'If you are applying for jobs at the same time as you are applying for or receiving transitional benefit, you must provide information about your ability to work so that we can assess you as a job seeker.', + 'forside.arbeidssøker.krav': + 'We may require that you are either in work, registered with NAV as a job seeker, or in education while you are receiving transitional benefit.', + 'forside.arbeidssøker.lerMer': + 'Read more about receiving transitional benefit while you are a job seeker', + 'forside.arbeidssøker.overskrift.riktigeOpplysninger': + 'It is important that the information you give us is correct', + 'forside.arbeidssøker.riktigeOpplysninger': + 'In order for us to be able to process your application, you must provide us with the correct information.', + 'forside.arbeidssøker.meldeEndringer': + 'If you receive transitional benefit, you must inform us of any major changes in your life, such as changes in your living and family situation, or changes in your work or education. The same applies if there are any changes in your income.', + 'forside.arbeidssøker.personopplysningeneDineLenke': + 'About how we process your personal data', }; diff --git a/src/language/tekster_nb.ts b/src/language/tekster_nb.ts index 88e9ded70..02165014f 100644 --- a/src/language/tekster_nb.ts +++ b/src/language/tekster_nb.ts @@ -379,8 +379,7 @@ export default { 'arbeidssituasjon.spm': 'Hvordan er situasjonen din?', 'arbeidssituasjon.spm.hjelpetekst': 'Du kan velge flere alternativer', 'arbeidssituasjon.spm.hjelpetekst-åpne': 'Grunnen til at vi spør om dette', - 'arbeidssituasjon.spm.hjelpetekst-innhold': - `Vi trenger opplysninger om hvilken aktivitet du er i for å vurdere om du har rett til stønad. Du må som hovedregel være i minst 50 prosent yrkesrettet aktivitet. I noen tilfeller kan vi gjøre unntak fra aktivitetsplikten.

Du kan lese mer om aktivitetsplikten på nav.no/overgangsstonad-enslig#aktivitet.`, + 'arbeidssituasjon.spm.hjelpetekst-innhold': `Vi trenger opplysninger om hvilken aktivitet du er i for å vurdere om du har rett til stønad. Du må som hovedregel være i minst 50 prosent yrkesrettet aktivitet. I noen tilfeller kan vi gjøre unntak fra aktivitetsplikten.

Du kan lese mer om aktivitetsplikten på nav.no/overgangsstonad-enslig#aktivitet.`, 'arbeidssituasjon.svar.erHjemmeMedBarnUnderEttÅr': 'Jeg er hjemme med barn under 1 år', 'arbeidssituasjon.svar.erArbeidstakerOgEllerLønnsmottakerFrilanser': @@ -869,4 +868,144 @@ export default { 'skjema.oppsummering.omdeg': 'Om deg som arbeidssøker', 'skjema.takk': 'Takk', 'skjema.alert.mottatt': 'Opplysningene om deg som arbeidssøker er mottatt', + + 'forside.overgangsstønad.erDuEnsligMorEllerFar': + 'Er du enslig mor eller far og har barn under 8 år, vil overgangsstønaden sikre deg inntekt i inntil 3 år. I noen tilfeller kan vi forlenge denne perioden. Inntekten din avgjør hvor mye du harrett til i stønad.', + 'forside.overgangsstønad.sammeSøknad': + 'Du bruker samme søknad både hvis du søker for første gang og hvis du søker forlengelse eller utvidelse av stønadstiden din.', + 'forside.overgangsstønad.merOmOvergangsstønad': + 'Mer om overgangsstønad', + 'forside.overgangsstønad.overskrift.riktigeOpplysninger': + 'Det er viktig at du gir oss riktige opplysninger', + 'forside.overgangsstønad.riktigeOpplysninger': + 'For at vi skal kunne behandle søknaden din, må du gi oss riktige opplysninger.', + 'forside.overgangsstønad.meldeEndringer': + 'Hvis du får overgangsstønad, må du melde fra når det skjer viktige endringer i livet ditt, for eksempel bo- og familiesituasjonen eller arbeid og utdanning. Det samme gjelder dersom inntekten din endrer seg.', + 'forside.overgangsstønad.overskrift.sendeDokumentasjon': + 'Det kan hende du må sende inn dokumentasjon', + 'forside.overgangsstønad.beskjedDokumentere': + 'Du får beskjed underveis i søknaden hvis du må dokumentere noen av opplysningene dine. Dokumentasjon du har sendt inn tidligere trenger du ikke sende på nytt.', + 'forside.overgangsstønad.merInformasjon': + 'Noen ganger kan vi også trenge mer informasjon. Da gir vi deg beskjed om dette.', + 'forside.overgangsstønad.oversiktDokumentasjon': + ' Oversikt over hva som krever dokumentasjon ', + 'forside.overgangsstønad.overskrift.henteInformasjon': + 'Vi vil hente informasjon om deg', + 'forside.overgangsstønad.henteInformasjon': + 'I tillegg til den informasjonen du oppgir i søknaden, henter vi inn informasjon om deg for å avgjøre om du har rett til stønad.', + 'forside.overgangsstønad.viHenter': 'Vi henter:', + 'forside.overgangsstønad.henterPunktliste': + '
  • personinformasjon om deg, barnet/barna dine og den andre forelderen til barna dine fra Folkeregisteret
  • inntektsinformasjon fra Skatteetaten
  • opplysninger om arbeidsforholdet ditt fra arbeidsgiver- og arbeidstakerregisteret
', + 'forside.overgangsstønad.tidligereOpplysninger': + 'Vi kan også bruke tidligere opplysninger du har gitt oss, eller opplysninger du gir oss i andre sammenhenger, hvis det er relevant og nødvendig.', + 'forside.overgangsstønad.personopplysningeneDine': + 'Slik behandler vi personopplysningene dine', + 'forside.overgangsstønad.overskrift.slikSøkerDu': 'Slik søker du', + 'forside.overgangsstønad.slikSøkerDu': + 'I søknaden stiller vi kun spørsmål som er relevante i din situasjon. Antall spørsmål og tiden det tar å søke vil derfor kunne variere. De fleste bruker 10 minutter.', + 'forside.overgangsstønad.viLagrerSøknadenDin': + 'Vi lagrer søknaden din ut morgendagen. Derfor kan du ta pauser når du fyller ut. Du kan også slette i denne perioden.', + 'forside.overgangsstønad.manglerDuDokumentasjon': + 'Mangler du dokumentasjon, kan du ettersende dette.', + 'forside.overgangsstønad.disclaimerTekst': + 'Jeg er klar over at jeg kan miste retten til overgangsstønad dersom jeg ikke har gitt riktige opplysninger. Jeg er også klar over at jeg må betale tilbake dersom jeg får penger jeg ikke har rett til og som skyldes at jeg har latt være å informere eller gitt feil opplysninger.', + + 'forside.barnetilsyn.info': + 'Stønaden dekker deler av utgiftene til barnepass, når du er enslig mor eller far som er alene om omsorgen for barnet ditt og er i arbeid.', + 'forside.barnetilsyn.fåStønadSkoleår': + 'Du kan få stønaden til barnet er ferdig med 4. skoleår. I noen tilfeller kan du få stønad etter at barnet er ferdig med 4. skoleår.', + 'forside.barnetilsyn.merOmStønad': + 'Mer om stønad til barnetilsyn', + 'forside.barnetilsyn.arbeidssøkerUtdanning': + 'Hvis du ikke er i arbeid, men er registrert som arbeidssøker hos NAV eller tar utdanning som NAV har godkjent, har du som hovedregel ikke rett til denne stønaden. Da kan du i stedet søke om stønad til pass av barn.', + 'forside.barnetilsyn.overskrift.riktigeOpplysninger': + 'Det er viktig at du gir oss riktige opplysninger', + 'forside.barnetilsyn.riktigeOpplysninger': + 'For at vi skal kunne behandle søknaden din, må du gi oss riktige opplysninger.', + 'forside.barnetilsyn.meldeEndringer': + 'Hvis du får stønad til barnetilsyn, må du melde fra når det skjer viktige endringer i livet ditt, for eksempel bo-og familiesituasjonen eller arbeidssituasjonen din. Det samme gjelder dersom utgiftene dine til barnepass endrer seg eller inntekten din endrer seg.', + 'forside.barnetilsyn.overskrift.sendeDokumentasjon': + 'Det kan hende du må sende inn dokumentasjon', + 'forside.barnetilsyn.beskjedDokumentere': + 'Du får beskjed underveis i søknaden hvis du må dokumentere noen av opplysningene dine. Dokumentasjon du har sendt inn tidligere trenger du ikke sende på nytt.', + 'forside.barnetilsyn.merInformasjon': + 'Noen ganger kan vi også trenge mer informasjon. Da gir vi deg beskjed om dette.', + 'forside.barnetilsyn.oversiktDokumentasjon': + ' Oversikt over hva som krever dokumentasjon ', + 'forside.barnetilsyn.overskrift.henteInformasjon': + 'Vi vil hente informasjon om deg', + 'forside.barnetilsyn.henteInformasjon': + 'I tillegg til den informasjonen du oppgir i søknaden, henter vi inn informasjon om deg for å avgjøre om du har rett til stønad.', + 'forside.barnetilsyn.viHenter': 'Vi henter:', + 'forside.barnetilsyn.henterPunktliste': + '
  • personinformasjon om deg, barnet/barna dine og den andre forelderen til barna dine fra Folkeregisteret
  • inntektsinformasjon fra Skatteetaten
  • opplysninger om arbeidsforholdet ditt fra arbeidsgiver- og arbeidstakerregisteret
', + 'forside.barnetilsyn.tidligereOpplysninger': + 'Vi kan også bruke tidligere opplysninger du har gitt oss, eller opplysninger du gir oss i andre sammenhenger, hvis det er relevant og nødvendig.', + 'forside.barnetilsyn.personopplysningeneDine': + 'Slik behandler vi personopplysningene dine', + 'forside.barnetilsyn.overskrift.slikSøkerDu': 'Slik søker du', + 'forside.barnetilsyn.slikSøkerDu': + 'Du kan søke så snart du har fått faktura fra barnepassordningen. Søker du for et nytt barnehage- eller SFO-år, kan du søke så snart du har fått faktura for den første måneden i det nye året.', + 'forside.barnetilsyn.slikSøkerDu2': + 'I søknaden stiller vi kun spørsmål som er relevante i din situasjon. Antall spørsmål og tiden det tar å søke vil derfor kunne variere. De fleste bruker 10 minutter.', + 'forside.barnetilsyn.slikSøkerDu3': + 'Vi lagrer søknaden din ut morgendagen. Derfor kan du ta pauser når du fyller ut. Du kan også slette i denne perioden.', + 'forside.barnetilsyn.slikSøkerDu4': + 'Mangler du dokumentasjon, kan du ettersende dette.', + 'forside.barnetilsyn.disclaimerTekst': + 'Jeg er klar over at jeg kan miste retten til stønad til barnetilsyn dersom jeg ikke har gitt riktige opplysninger. Jeg er også klar over at jeg må betale tilbake dersom jeg får penger jeg ikke har rett til og som skyldes at jeg har latt være å informere eller gitt feil opplysninger.', + + 'forside.skolepenger.innledning': + 'Stønaden dekker de faktiske utgiftene du har til studieavgift, semesteravgift og eksamensgebyr når du er enslig mor eller far som tar utdanning. Stønaden dekker utgiftene dine opp til en maksimumsats.', + 'forside.skolepenger.merInfoLenke': + 'Mer om stønad til skolepenger', + 'forside.skolepenger.overskrift.riktigeOpplysninger': + 'Det er viktig at du gir oss riktige opplysninger', + 'forside.skolepenger.riktigeOpplysninger': + 'For at vi skal kunne behandle søknaden din, må du gi oss riktige opplysninger.', + 'forside.skolepenger.meldeEndringer': + 'Hvis du får stønad til skolepenger, må du melde fra når det skjer viktige endringer i livet ditt, for eksempel bo-og familiesituasjonen eller utdanningssituasjonen din.', + 'forside.skolepenger.overskrift.sendeDokumentasjon': + 'Det kan hende du må sende inn dokumentasjon', + 'forside.skolepenger.beskjedDokumentere': + 'Du får beskjed underveis i søknaden hvis du må dokumentere noen av opplysningene dine. Dokumentasjon du har sendt inn tidligere trenger du ikke sende på nytt.', + 'forside.skolepenger.merInformasjon': + 'Noen ganger kan vi også trenge mer informasjon. Da gir vi deg beskjed om dette.', + 'forside.skolepenger.dokumentasjonsOversiktLenke': + 'Oversikt over hva som krever dokumentasjon', + 'forside.skolepenger.overskrift.henteInformasjon': + 'Vi vil hente informasjon om deg', + 'forside.skolepenger.henteInformasjon': + 'I tillegg til den informasjonen du oppgir i søknaden, henter vi inn informasjon om deg for å avgjøre om du har rett til stønad.', + 'forside.skolepenger.viHenter': 'Vi henter:', + 'forside.skolepenger.informasjonHentet': + '
  • personinformasjon om deg, barnet/barna dine og den andre forelderen til barna dine fra Folkeregisteret
', + 'forside.skolepenger.tidligereOpplysninger': + 'Vi kan også bruke tidligere opplysninger du har gitt oss, eller opplysninger du gir oss i andre sammenhenger, hvis det er relevant og nødvendig.', + 'forside.skolepenger.personopplysningeneDineLenke': + 'Slik behandler vi personopplysningene dine', + 'forside.skolepenger.overskrift.slikSøkerDu': 'Slik søker du', + 'forside.skolepenger.slikSøkerDu': + 'I søknaden stiller vi kun spørsmål som er relevante i din situasjon. Antall spørsmål og tiden det tar å søke vil derfor kunne variere. De fleste bruker 10 minutter.', + 'forside.skolepenger.lagringSøknad': + 'Vi lagrer søknaden din ut morgendagen. Derfor kan du ta pauser når du fyller ut. Du kan også slette i denne perioden.', + 'forside.skolepenger.manglerDuDokumentasjon': + 'Hvis du mangler dokumentasjon, kan du legge ved dette senere.', + 'forside.skolepenger.disclaimerTekst': + 'Jeg er klar over at jeg kan miste retten til stønad til skolepenger dersom jeg ikke har gitt riktige opplysninger. Jeg er også klar over at jeg må betale tilbake dersom jeg får penger jeg ikke har rett til og som skyldes at jeg har latt være å informere eller gitt feil opplysninger.', + + 'forside.arbeidssøker.info': + 'Hvis du søker arbeid samtidig som du søker om eller får overgangsstønad, må du opplyse om mulighetene dine til å ta arbeid slik at vi kan vurdere deg som arbeidssøker.', + 'forside.arbeidssøker.krav': + 'Vi kan kreve at du enten er i arbeid, registrert som arbeidssøker hos NAV eller utdanner deg når du mottar overgangsstønad.', + 'forside.arbeidssøker.lerMer': + 'Les mer om å motta overgangsstønad når du er arbeidssøker', + 'forside.arbeidssøker.overskrift.riktigeOpplysninger': + 'Det er viktig at du gir oss riktige opplysninger', + 'forside.arbeidssøker.riktigeOpplysninger': + 'For at vi skal kunne behandle saken din, må du gi oss riktige opplysninger.', + 'forside.arbeidssøker.meldeEndringer': + 'Hvis du får overgangsstønad, må du melde fra når det skjer viktige endringer i livet ditt, for eksempel bo- og familiesituasjonen eller arbeid og utdanning. Det samme gjelder dersom inntekten din endrer seg.', + 'forside.arbeidssøker.personopplysningeneDineLenke': + 'Slik behandler vi personopplysningene dine', }; diff --git a/src/language/tekster_nn.ts b/src/language/tekster_nn.ts index 01d96f1f2..e8cb486b1 100644 --- a/src/language/tekster_nn.ts +++ b/src/language/tekster_nn.ts @@ -58,7 +58,7 @@ export default { 'skjema.alert.mottatt': 'Information about you as a job seeker has been received', - 'banner.tittel.overgangsstønad': 'Application for transitional benefit', + 'banner.tittel.overgangsstønad': 'Søknad om overgangsstønad', 'banner.tittel.barnetilsyn': 'Application for child care benefit for working single parents', 'banner.tittel.skolepenger': 'Application for support for school fees', diff --git "a/src/overgangsst\303\270nad/Forside.tsx" "b/src/overgangsst\303\270nad/Forside.tsx" index 71fe0eabd..0f75d0161 100644 --- "a/src/overgangsst\303\270nad/Forside.tsx" +++ "b/src/overgangsst\303\270nad/Forside.tsx" @@ -1,27 +1,20 @@ import React from 'react'; import { usePersonContext } from '../context/PersonContext'; -import { useSpråkContext } from '../context/SpråkContext'; import { useSøknad } from '../context/SøknadContext'; -import Forsideinformasjon from '../søknad/forside/Forsideinformasjon'; -import { hentBeskjedMedNavn } from '../utils/språk'; -import FortsettSøknad from '../søknad/forside/FortsettSøknad'; -import VeilederSnakkeboble from '../assets/VeilederSnakkeboble'; +import FortsettSøknad from '../components/forside/FortsettSøknad'; import Environment from '../Environment'; import { isIE } from 'react-device-detect'; -import { - ERouteOvergangsstønad, - RoutesOvergangsstonad, -} from './routing/routesOvergangsstonad'; -import { useForsideInnhold } from '../utils/hooks'; -import { ForsideType } from '../models/søknad/stønadstyper'; -import { hentPath } from '../utils/routing'; import { logSidevisningOvergangsstonad } from '../utils/amplitude'; import LocaleTekst from '../language/LocaleTekst'; import { useMount } from '../utils/hooks'; import { ESkjemanavn } from '../utils/skjemanavn'; import { FnrOgDnrTilAlder } from './utils'; import { useLokalIntlContext } from '../context/LokalIntlContext'; -import { Alert, Panel, Heading } from '@navikt/ds-react'; +import { Panel, Heading } from '@navikt/ds-react'; +import { OvergangsstønadInformasjon } from './OvergangsstønadInformasjon'; +import { AlertIE } from '../components/forside/AlertIE'; +import { AlertUnderAtten } from '../components/forside/AlertUnderAtten'; +import { VeilederBoks } from '../components/forside/VeilederBoks'; const Forside: React.FC = () => { useMount(() => { @@ -41,8 +34,6 @@ const Forside: React.FC = () => { søknad, settSøknad, } = useSøknad(); - const [locale] = useSpråkContext(); - const forside = useForsideInnhold(ForsideType.overgangsstønad); const settBekreftelse = (bekreftelse: boolean) => { settSøknad({ @@ -51,9 +42,6 @@ const Forside: React.FC = () => { }); }; - const disclaimer = forside['disclaimer_' + locale]; - const seksjon = forside['seksjon_' + locale]; - const kanBrukeMellomlagretSøknad = mellomlagretOvergangsstønad !== undefined && mellomlagretOvergangsstønad.søknad.person.hash === person.hash && @@ -66,30 +54,11 @@ const Forside: React.FC = () => {
-
- -
+ - {alder < 18 && ( -
- - - -
- )} + {alder < 18 && } - {isIE && ( -
- - - -
- )} + {isIE && } @@ -104,19 +73,10 @@ const Forside: React.FC = () => { /> ) : ( alder > 17 && ( - ) )} diff --git "a/src/overgangsst\303\270nad/Overgangsst\303\270nadInformasjon.tsx" "b/src/overgangsst\303\270nad/Overgangsst\303\270nadInformasjon.tsx" new file mode 100644 index 000000000..7371909dd --- /dev/null +++ "b/src/overgangsst\303\270nad/Overgangsst\303\270nadInformasjon.tsx" @@ -0,0 +1,81 @@ +import FeltGruppe from '../components/gruppe/FeltGruppe'; +import Språkvelger from '../components/språkvelger/Språkvelger'; +import LocaleTekst from '../language/LocaleTekst'; +import { isIE } from 'react-device-detect'; +import { OversettelseAlert } from '../components/forside/AlertOversettelse'; +import { DisclaimerBoks } from '../components/forside/DisclaimerBoks'; +import { StartSøknadKnapp } from '../components/forside/KnappStartSøknad'; +import { Tekst } from '../components/forside/Tekst'; +import { Seksjon } from '../components/forside/Seksjon'; +import { Overskrift } from '../components/forside/Overskrift'; +import { InformasjonProps } from '../components/forside/typer'; +import { hentPath } from '../utils/routing'; +import { + RoutesOvergangsstonad, + ERouteOvergangsstønad, +} from './routing/routesOvergangsstonad'; + +export const OvergangsstønadInformasjon: React.FC = ({ + person, + harBekreftet, + settBekreftelse, +}) => { + const nesteSide = + hentPath(RoutesOvergangsstonad, ERouteOvergangsstønad.OmDeg) || ''; + + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {!isIE && ( + + )} + + {harBekreftet && } + + ); +}; diff --git "a/src/overgangsst\303\270nad/steg/9-kvittering/Kvittering.tsx" "b/src/overgangsst\303\270nad/steg/9-kvittering/Kvittering.tsx" index f1e72d569..f67ba29e0 100644 --- "a/src/overgangsst\303\270nad/steg/9-kvittering/Kvittering.tsx" +++ "b/src/overgangsst\303\270nad/steg/9-kvittering/Kvittering.tsx" @@ -39,7 +39,7 @@ const Kvittering: React.FC = () => { useMount(() => logSidevisningOvergangsstonad('Kvittering')); const { person } = usePersonContext(); - const { locale } = useSpråkContext(); + const [locale] = useSpråkContext(); const { arbeidssøker, underUtdanning, diff --git a/src/skolepenger/Forside.tsx b/src/skolepenger/Forside.tsx index 06f9feb58..2a4a1d710 100644 --- a/src/skolepenger/Forside.tsx +++ b/src/skolepenger/Forside.tsx @@ -1,16 +1,9 @@ import React from 'react'; import { usePersonContext } from '../context/PersonContext'; -import { useSpråkContext } from '../context/SpråkContext'; -import { hentBeskjedMedNavn } from '../utils/språk'; import { useSkolepengerSøknad } from './SkolepengerContext'; import Environment from '../Environment'; -import FortsettSøknad from '../søknad/forside/FortsettSøknad'; +import FortsettSøknad from '../components/forside/FortsettSøknad'; import LocaleTekst from '../language/LocaleTekst'; -import { useForsideInnhold } from '../utils/hooks'; -import { ForsideType } from '../models/søknad/stønadstyper'; -import Forsideinformasjon from '../søknad/forside/Forsideinformasjon'; -import { ERouteSkolepenger, RoutesSkolepenger } from './routing/routes'; -import { hentPath } from '../utils/routing'; import { logSidevisningSkolepenger } from '../utils/amplitude'; import { useMount } from '../utils/hooks'; import { ESkjemanavn } from '../utils/skjemanavn'; @@ -18,16 +11,19 @@ import { FnrOgDnrTilAlder } from '../overgangsstønad/utils'; import { useLokalIntlContext } from '../context/LokalIntlContext'; import { Alert, Panel, Heading } from '@navikt/ds-react'; import { isIE } from 'react-device-detect'; -import VeilederSnakkeboble from '../assets/VeilederSnakkeboble'; import styled from 'styled-components'; import { erNåværendeMånedMellomMåneder, nåværendeÅr } from '../utils/dato'; +import { AlertIE } from '../components/forside/AlertIE'; +import { AlertUnderAtten } from '../components/forside/AlertUnderAtten'; +import { VeilederBoks } from '../components/forside/VeilederBoks'; +import SkolepengerInformasjon from './SkolepengerInformasjon'; const StyledAlert = styled(Alert)` margin-bottom: 2rem; `; + const Forside: React.FC = () => { const { person } = usePersonContext(); - const [locale] = useSpråkContext(); const intl = useLokalIntlContext(); const { mellomlagretSkolepenger, @@ -55,51 +51,27 @@ const Forside: React.FC = () => { const alder = FnrOgDnrTilAlder(person.søker.fnr); - const forside = useForsideInnhold(ForsideType.skolepenger); - const kanBrukeMellomlagretSøknad = mellomlagretSkolepenger !== undefined && mellomlagretSkolepenger.søknad.person.hash === person.hash && mellomlagretSkolepenger.modellVersjon === Environment().modellVersjon.skolepenger; - const disclaimer = forside['disclaimer_' + locale]; - const seksjon = forside['seksjon_' + locale]; - return (
-
- -
+ - {alder < 18 && ( -
- - - -
- )} + {alder < 18 && } - {isIE && ( -
- - - -
- )} + {isIE && } - {erDagensDatoMellomMaiOgAugust ? ( + {erDagensDatoMellomMaiOgAugust && ( Søker du om stønad til skolepenger fra august {nåværendeÅr}? @@ -108,7 +80,7 @@ const Forside: React.FC = () => { til skolepenger med faktura. Vi anbefaler derfor at du venter med å søke frem til du får fakturaen. - ) : null} + )} {kanBrukeMellomlagretSøknad && mellomlagretSkolepenger ? ( { /> ) : ( alder > 17 && ( - ) )} diff --git a/src/skolepenger/SkolepengerContext.tsx b/src/skolepenger/SkolepengerContext.tsx index 1d8d5b04b..d93db70ae 100644 --- a/src/skolepenger/SkolepengerContext.tsx +++ b/src/skolepenger/SkolepengerContext.tsx @@ -30,6 +30,7 @@ import { useSpråkContext } from '../context/SpråkContext'; import { LokalIntlShape } from '../language/typer'; import { useLokalIntlContext } from '../context/LokalIntlContext'; import { oppdaterBarneliste, oppdaterBarnIBarneliste } from '../utils/barn'; +import { LocaleType } from '../language/typer'; // ----------- CONTEXT ----------- const initialState = (intl: LokalIntlShape): ISøknad => { @@ -79,7 +80,7 @@ const [SkolepengerSøknadProvider, useSkolepengerSøknad] = createUseContext( mellomlagretSkolepenger?.locale && mellomlagretSkolepenger?.locale !== locale ) { - setLocale(mellomlagretSkolepenger.locale); + setLocale(mellomlagretSkolepenger.locale as LocaleType); } }, [mellomlagretSkolepenger, locale, setLocale]); diff --git a/src/skolepenger/SkolepengerInformasjon.tsx b/src/skolepenger/SkolepengerInformasjon.tsx new file mode 100644 index 000000000..c1b274c0d --- /dev/null +++ b/src/skolepenger/SkolepengerInformasjon.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { InformasjonProps } from '../components/forside/typer'; +import { hentPath } from '../utils/routing'; +import { RoutesSkolepenger, ERouteSkolepenger } from './routing/routes'; +import { isIE } from 'react-device-detect'; +import { OversettelseAlert } from '../components/forside/AlertOversettelse'; +import { DisclaimerBoks } from '../components/forside/DisclaimerBoks'; +import { StartSøknadKnapp } from '../components/forside/KnappStartSøknad'; +import { Overskrift } from '../components/forside/Overskrift'; +import { Seksjon } from '../components/forside/Seksjon'; +import { Tekst } from '../components/forside/Tekst'; +import FeltGruppe from '../components/gruppe/FeltGruppe'; +import Språkvelger from '../components/språkvelger/Språkvelger'; +import LocaleTekst from '../language/LocaleTekst'; + +export const SkolepengerInformasjon: React.FC = ({ + person, + harBekreftet, + settBekreftelse, +}) => { + const nesteSide = hentPath(RoutesSkolepenger, ERouteSkolepenger.OmDeg) || ''; + + return ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {!isIE && ( + + )} + + {harBekreftet && } + + ); +}; + +export default SkolepengerInformasjon; diff --git "a/src/s\303\270knad/forside/Forsideinformasjon.tsx" "b/src/s\303\270knad/forside/Forsideinformasjon.tsx" deleted file mode 100644 index 0346bb6a5..000000000 --- "a/src/s\303\270knad/forside/Forsideinformasjon.tsx" +++ /dev/null @@ -1,139 +0,0 @@ -import { hentBeskjedMedNavn } from '../../utils/språk'; -import FeltGruppe from '../../components/gruppe/FeltGruppe'; -import LocaleTekst from '../../language/LocaleTekst'; -import React from 'react'; -import { IPerson } from '../../models/søknad/person'; -import { hentTekst } from '../../utils/søknad'; -import { isIE } from 'react-device-detect'; -import Språkvelger from '../../components/språkvelger/Språkvelger'; -import { useSpråkContext } from '../../context/SpråkContext'; -import { useNavigate } from 'react-router-dom'; -import { LokalIntlShape } from '../../language/typer'; -import { - Accordion, - Alert, - BodyShort, - Button, - ConfirmationPanel, - Heading, -} from '@navikt/ds-react'; -import styled from 'styled-components'; -import { PortableText } from '@portabletext/react'; -import { PortableTextReactComponents } from '@portabletext/react/src/types'; - -const StyledConfirmationPanel = styled(ConfirmationPanel)` - margin-bottom: 2rem; -`; - -const DisclaimerTittel = styled(Heading)` - margin-bottom: 1rem; -`; - -interface InnholdProps { - seksjon?: any; - disclaimer?: any; - person: IPerson; - intl: LokalIntlShape; - harBekreftet: boolean; - settBekreftelse: (bekreftet: boolean) => void; - nesteSide: string; -} - -const components: Partial = { - marks: { - link: ({ children, value }) => { - return ( - - {children} - - ); - }, - }, -}; - -const Forsideinformasjon: React.FC = ({ - seksjon, - disclaimer, - person, - intl, - harBekreftet, - settBekreftelse, - nesteSide, -}) => { - const navigate = useNavigate(); - const [locale] = useSpråkContext(); - - return ( - <> - - - - {locale === 'en' && ( - - We are in the process of translating this application. The few missing - translations will appear in Norwegian until we've translated them. - - )} - {seksjon && - seksjon.map((blokk: any, index: number) => { - return blokk._type === 'dokumentasjonskrav' ? ( -
- - - {blokk.tittel} - - - - - - - -
- ) : ( -
- {blokk.tittel && ( - - {blokk.tittel} - - )} - - - -
- ); - })} - {disclaimer && !isIE && ( - <> - - {hentTekst('skjema.forside.disclaimer.tittel', intl)} - - settBekreftelse(!harBekreftet)} - > - - - - - - )} - - {harBekreftet ? ( - - - - ) : null} - - ); -}; - -export default Forsideinformasjon; diff --git "a/src/s\303\270knad/steg/9-kvittering/Erkl\303\246ringSamlivsbrudd.tsx" "b/src/s\303\270knad/steg/9-kvittering/Erkl\303\246ringSamlivsbrudd.tsx" index 6482d79f0..0855a362d 100644 --- "a/src/s\303\270knad/steg/9-kvittering/Erkl\303\246ringSamlivsbrudd.tsx" +++ "b/src/s\303\270knad/steg/9-kvittering/Erkl\303\246ringSamlivsbrudd.tsx" @@ -25,7 +25,7 @@ const StyledLenke = styled.div` const ErklæringSamlivsbrudd: FC = () => { const intl = useLokalIntlContext(); - const { locale } = useSpråkContext(); + const [locale] = useSpråkContext(); const hentÆrklæringBasertPåSpråk = (): string => { return hentFilePath(locale, { diff --git "a/src/s\303\270knad/steg/9-kvittering/SyktBarn.tsx" "b/src/s\303\270knad/steg/9-kvittering/SyktBarn.tsx" index eceab8cc6..e62412449 100644 --- "a/src/s\303\270knad/steg/9-kvittering/SyktBarn.tsx" +++ "b/src/s\303\270knad/steg/9-kvittering/SyktBarn.tsx" @@ -25,7 +25,7 @@ const StyledLenke = styled.div` const SyktBarn: FC = () => { const intl = useLokalIntlContext(); - const { locale } = useSpråkContext(); + const [locale] = useSpråkContext(); const hentSøknadBasertPåBrukerSpråk = (): string => { return hentFilePath(locale, { diff --git a/src/utils/hooks.ts b/src/utils/hooks.ts index 4d9fc8606..9d9d3e43d 100644 --- a/src/utils/hooks.ts +++ b/src/utils/hooks.ts @@ -1,12 +1,13 @@ import { useEffect, useRef, useState } from 'react'; -import { client } from './sanity'; -import { ForsideType } from '../models/søknad/stønadstyper'; import { DinSituasjonType } from '../models/steg/dinsituasjon/meromsituasjon'; import { leggTilSærligeBehov } from '../søknad/steg/6-meromsituasjon/SituasjonUtil'; import { ISøknad } from '../models/søknad/søknad'; import { IBarn } from '../models/steg/barn'; import { LokalIntlShape } from '../language/typer'; -import { byteTilKilobyte, filTypeOgFilStørrelseStreng } from './nedlastningFilformater'; +import { + byteTilKilobyte, + filTypeOgFilStørrelseStreng, +} from './nedlastningFilformater'; export const usePrevious = (value: any) => { const ref = useRef(); @@ -16,19 +17,6 @@ export const usePrevious = (value: any) => { return ref.current; }; -export const useForsideInnhold = (stønadstype: ForsideType): any => { - const [innhold, settInnhold] = useState({}); - useEffect(() => { - client - .fetch('*[_type == $type][0]', { type: stønadstype }) - .then((res: any) => { - settInnhold(res); - }); - // eslint-disable-next-line - }, []); - return innhold; -}; - export const useLeggTilSærligeBehovHvisHarEttBarMedSærligeBehov = ( søknad: ISøknad, intl: LokalIntlShape, @@ -66,18 +54,22 @@ export const useMount = (fn: () => void) => { }; export const useHentFilInformasjon = (path: string) => { - const [filInformasjon, settFilInformasjon] = useState("") + const [filInformasjon, settFilInformasjon] = useState(''); useEffect(() => { const hentFilInformasjon = (url: string) => { fetch(url, { method: 'HEAD' }).then((res) => { - const filStørrelse = byteTilKilobyte(((res).headers.get("Content-Length") ?? 0)) - const filType = ((res).headers.get("Content-Type") ?? "") - settFilInformasjon(filTypeOgFilStørrelseStreng(filType, Number(filStørrelse))) - }) - } - hentFilInformasjon(path) + const filStørrelse = byteTilKilobyte( + res.headers.get('Content-Length') ?? 0 + ); + const filType = res.headers.get('Content-Type') ?? ''; + settFilInformasjon( + filTypeOgFilStørrelseStreng(filType, Number(filStørrelse)) + ); + }); + }; + hentFilInformasjon(path); }, []); return { filInformasjon }; -}; \ No newline at end of file +}; diff --git a/src/utils/sanity.ts b/src/utils/sanity.ts deleted file mode 100644 index 58e11cb72..000000000 --- a/src/utils/sanity.ts +++ /dev/null @@ -1,7 +0,0 @@ -import sanityClient from '@sanity/client'; - -export const client = sanityClient({ - projectId: 'm3pb011r', - dataset: 'production', - useCdn: true, -});